Descifrar Archivos 7z Protegidos con Contraseña

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá el proceso fundamental para descifrar un archivo 7z protegido con contraseña. 7-Zip es un popular archivador de archivos con una alta relación de compresión, y permite a los usuarios cifrar archivos con una contraseña. Simularemos un escenario en el que necesita recuperar una contraseña olvidada.

Utilizará una combinación de herramientas potentes y estándar de la industria: p7zip para crear el archivo, la suite John the Ripper para extraer el hash de la contraseña y Hashcat para realizar el descifrado real. Esta experiencia práctica le guiará a través de la creación de un objetivo, la extracción de su hash criptográfico y el uso de un ataque de máscara para encontrar eficientemente la contraseña.

Crear un archivo 7z protegido con contraseña

En este paso, comenzaremos creando un archivo de ejemplo y luego lo comprimiremos en un archivo 7z protegido con contraseña. Este archivo será nuestro objetivo para el proceso de descifrado de contraseñas en los pasos subsiguientes.

Primero, creemos un archivo de texto simple llamado secret.txt en su directorio actual, ~/project.

echo "This is a secret file." > secret.txt

Ahora, usaremos el comando 7z para crear un archivo llamado secret.7z a partir de secret.txt. Lo protegeremos con la contraseña LabEx2024. La opción -p se utiliza para especificar la contraseña directamente.

7z a -pLabEx2024 secret.7z secret.txt

Debería ver una salida que indica que el archivo se creó y comprimió correctamente.

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs LE)

Scanning the drive:
1 file, 25 bytes (1 KiB)

Creating archive: secret.7z

Items to compress: 1


Files read from disk: 1
Archive size: 228 bytes (1 KiB)
Everything is Ok

Ahora ha creado con éxito el archivo protegido con contraseña con el que trabajaremos.

Usar 7z2john.pl para extraer el hash

En este paso, extraerá el hash de la contraseña del archivo secret.7z. Las herramientas de descifrado de contraseñas como Hashcat no funcionan directamente sobre el archivo de archivo; necesitan una representación de cadena específica de la clave de cifrado de la contraseña, conocida como hash.

Utilizaremos 7z2john, una utilidad de la suite John the Ripper, que está diseñada específicamente para extraer estos hashes de los archivos 7z.

Ejecute el siguiente comando para procesar secret.7z y guardar su hash en un nuevo archivo llamado hash.txt. El símbolo > redirige la salida del comando al archivo especificado.

/usr/sbin/7z2john secret.7z > hash.txt

El comando no producirá ninguna salida visible en la terminal porque ha sido redirigida. Para confirmar que el hash se extrajo, vea el contenido de hash.txt:

cat hash.txt

La salida será una cadena larga, que es el hash que representa la contraseña. Estará prefijado con el nombre del archivo.

secret.7z:$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301

Ahora tiene el hash listo para la siguiente etapa de preparación.

Limpiar el hash extraído para Hashcat

En este paso, necesitamos preparar el hash extraído para Hashcat. La salida de 7z2john está formateada para John the Ripper e incluye el nombre del archivo como prefijo (por ejemplo, secret.7z:). Hashcat, sin embargo, solo requiere la cadena de hash pura para funcionar correctamente.

Usaremos el comando cut para eliminar el prefijo del nombre del archivo. El comando cut es una utilidad simple para extraer secciones de líneas de archivos. Le indicaremos que use el dos puntos (:) como delimitador y que seleccione el segundo campo.

Ejecute el siguiente comando para limpiar el hash y guardarlo en un nuevo archivo, hashcat.txt:

cut -d':' -f2 hash.txt > hashcat.txt
  • -d':' establece el delimitador en dos puntos.
  • -f2 selecciona el segundo campo después de la división.

Verifiquemos el contenido de nuestro nuevo archivo para asegurarnos de que se ha eliminado el prefijo.

cat hashcat.txt

La salida ahora debería ser solo la cadena de hash, sin la parte secret.7z:.

$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301

El hash ahora está en el formato correcto para Hashcat.

Seleccionar el modo de hash para 7-Zip

En este paso, identificaremos el "modo de hash" correcto que Hashcat necesita para comprender y procesar nuestro hash de 7-Zip. Hashcat admite cientos de tipos de hash diferentes, y cada uno tiene un código numérico único. Debe especificar el código correcto para que Hashcat funcione.

Podemos encontrar el modo para 7-Zip buscando en el menú de ayuda de Hashcat. Usaremos grep para filtrar la salida por el término "7-Zip".

hashcat --help | grep -i "7-Zip"

La bandera -i en grep hace que la búsqueda no distinga entre mayúsculas y minúsculas. La salida le mostrará el número de modo asociado con los archivos 7-Zip.

11600 | 7-Zip                                          | Archives

Como puede ver en la salida, el modo de hash para 7-Zip es 11600. Usaremos este número en el siguiente paso cuando ejecutemos el ataque de descifrado.

Ejecutar un ataque de máscara para descifrar la contraseña de 7z

En este paso final, utilizaremos Hashcat para descifrar la contraseña. Realizaremos un "ataque de máscara", que es un tipo de ataque de fuerza bruta muy eficaz cuando se tiene cierto conocimiento sobre la estructura de la contraseña.

Nuestra contraseña es LabEx2024. Podemos describir su estructura con una máscara:

  • Comienza con una letra mayúscula (?u).
  • Seguido de dos letras minúsculas (?l?l).
  • Seguido de una letra mayúscula y una letra minúscula (?u?l).
  • Termina con cuatro dígitos (?d?d?d?d).

La máscara completa es ?u?l?l?u?l?d?d?d?d.

Ahora, construyamos el comando de Hashcat:

  • -m 11600: Especifica el modo de hash de 7-Zip que encontramos en el paso anterior.
  • -a 3: Establece el modo de ataque en "Fuerza bruta / Máscara".
  • hashcat.txt: Nuestro archivo que contiene el hash limpio.
  • ?u?l?l?u?l?d?d?d?d: La máscara de contraseña.

Ejecute el comando para iniciar el ataque:

hashcat -m 11600 -a 3 hashcat.txt ?u?l?l?u?l?d?d?d?d

Hashcat se iniciará y verá su pantalla de estado. Dado que la contraseña es simple y la máscara es precisa, debería descifrarse muy rápidamente.

...
Session..........: hashcat
Status...........: Cracked
...

Una vez que el estado muestre Cracked, se habrá encontrado la contraseña. Para ver la contraseña recuperada, puede usar la bandera --show con el mismo comando:

hashcat -m 11600 hashcat.txt --show

Esto mostrará el hash seguido de la contraseña descifrada.

$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301:LabEx2024

¡Felicitaciones! Ha descifrado con éxito la contraseña del archivo 7z.

Resumen

En este laboratorio, ha completado con éxito todo el proceso de descifrado de un archivo 7z protegido con contraseña.

Aprendió a:

  • Crear un archivo 7z protegido con contraseña utilizando el comando 7z.
  • Utilizar la utilidad 7z2john para extraer el hash de la contraseña del archivo.
  • Limpiar y formatear el hash extraído para su uso con Hashcat.
  • Identificar el modo de hash correcto en Hashcat para un tipo de hash específico.
  • Ejecutar un ataque de máscara dirigido con Hashcat para recuperar eficientemente la contraseña.

Este flujo de trabajo proporciona una base sólida para comprender los principios del descifrado de contraseñas y la aplicación práctica de herramientas potentes como John the Ripper y Hashcat.