Usar John the Ripper para Descifrar Archivos ZIP

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, obtendrá experiencia práctica en técnicas de cracking de contraseñas dirigidas específicamente a archivos ZIP. Utilizará John the Ripper, una potente herramienta de cracking de contraseñas de código abierto, junto con zip2john, una utilidad para convertir archivos ZIP a un formato hash que John the Ripper pueda entender. Este laboratorio lo guiará a través de la creación de un archivo ZIP protegido por contraseña, la extracción de su hash y luego el intento de crackearlo. Además, aprenderá sobre las debilidades inherentes en los métodos de cifrado ZIP más antiguos y descubrirá alternativas más seguras para proteger sus datos sensibles.

Crear un archivo ZIP protegido por contraseña

En este paso, creará un archivo de texto simple y luego lo comprimirá en un archivo ZIP protegido por contraseña. Este archivo ZIP servirá como nuestro objetivo para los intentos de cracking posteriores. Utilizaremos una contraseña simple y fácil de adivinar para fines de demostración.

Primero, asegúrese de estar en la carpeta project de su directorio de inicio.

cd ~/project

Ahora, cree un archivo llamado secret.txt con algún contenido.

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

A continuación, cree un archivo ZIP protegido por contraseña llamado archive.zip que contenga secret.txt. Cuando se le solicite, ingrese password123 como contraseña.

zip -e archive.zip secret.txt

Se le pedirá que ingrese una contraseña:

Enter password:
Verify password:
  adding: secret.txt (deflated 29%)

Puede verificar la creación del archivo ZIP listando el contenido del directorio actual.

ls -l

Debería ver archive.zip y secret.txt listados.

Extraer el hash del archivo ZIP usando zip2john

En este paso, utilizará la utilidad zip2john para extraer el hash de la contraseña del archivo archive.zip. Este hash es una representación de la contraseña que John the Ripper puede usar para intentar descifrar la contraseña original.

Primero, asegúrese de estar en el directorio ~/project.

cd ~/project

Ahora, ejecute zip2john en archive.zip y redirija su salida a un archivo llamado zip_hash.txt.

zip2john archive.zip > zip_hash.txt

Este comando extraerá el hash y lo guardará en zip_hash.txt. La salida de zip2john generalmente se ve así (el hash real será diferente):

archive.zip:$zip$*0*1*0*...*secret.txt*$/zip$

Puede ver el contenido del archivo zip_hash.txt para confirmar que el hash ha sido extraído.

cat zip_hash.txt

La salida debería mostrar la cadena de hash extraída.

Descifrar el hash ZIP con John the Ripper

Ahora que ha extraído el hash, utilizará John the Ripper para intentar descifrar la contraseña. Utilizaremos una lista de palabras simple para esta demostración, que incluye la contraseña que establecimos anteriormente.

Primero, asegúrese de estar en el directorio ~/project.

cd ~/project

John the Ripper a menudo utiliza una lista de palabras para probar contraseñas comunes. Para este laboratorio, crearemos una pequeña lista de palabras personalizada que incluya nuestra contraseña objetivo.

echo -e "test\npassword\n123456\npassword123\nadmin" > wordlist.txt

Ahora, ejecute John the Ripper utilizando el archivo zip_hash.txt y wordlist.txt.

john --wordlist=wordlist.txt zip_hash.txt

John the Ripper procesará el hash y la lista de palabras. Si tiene éxito, mostrará la contraseña descifrada. La salida será similar a esta:

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
password123      (archive.zip)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123

También puede verificar las contraseñas descifradas que John ha encontrado ejecutando:

john --show zip_hash.txt

Este comando mostrará cualquier contraseña que John the Ripper haya descifrado con éxito y almacenado en su archivo pot interno.

archive.zip:password123

1 password hash cracked, 0 left

Comprender las debilidades de la encriptación ZIP

En este paso, aprenderá sobre las debilidades inherentes en el método de encriptación estándar ZIP 2.0, que se utilizó en los pasos anteriores. Comprender estas debilidades es crucial para apreciar por qué son necesarios métodos de encriptación más fuertes.

La encriptación predeterminada utilizada por el comando zip (a menudo denominada "encriptación PKZIP tradicional" o "encriptación ZIP 2.0") se sabe que es débil. Utiliza un algoritmo propietario que es susceptible a varios ataques, incluidos ataques de texto plano conocido (known-plaintext attacks) y ataques de fuerza bruta (brute-force attacks), especialmente con el poder de cómputo moderno.

Debilidades Clave:

  • Algoritmo Propietario: El algoritmo no está validado públicamente como los estándares criptográficos modernos (por ejemplo, AES).
  • Derivación de Clave Débil: La función de derivación de clave es simple y facilita que los atacantes adivinen o descifren contraseñas por fuerza bruta.
  • Ataques de Texto Plano Conocido (Known-Plaintext Attacks): Si un atacante tiene acceso tanto al archivo ZIP encriptado como a una versión sin encriptar de al menos un archivo dentro de él (incluso uno pequeño), a menudo puede recuperar la clave de encriptación muy rápidamente. Esta es una vulnerabilidad significativa.
  • Espacio de Clave Limitado: Para contraseñas más cortas, el espacio de clave efectivo es pequeño, lo que hace que los ataques de fuerza bruta sean factibles.

Debido a estas debilidades, se desaconseja encarecidamente el uso de la encriptación ZIP 2.0 estándar para datos sensibles. Incluso una contraseña moderadamente compleja puede ser descifrada relativamente rápido si un atacante tiene suficientes recursos o un texto plano conocido.

Este paso no requiere la ejecución de ningún comando, pero es importante comprender estos conceptos para el manejo seguro de datos.

Asegurar Archivos ZIP de Forma Efectiva

Dadas las debilidades de la encriptación ZIP tradicional, es esencial utilizar métodos más fuertes al asegurar datos sensibles. En este paso, aprenderá y utilizará un estándar de encriptación más robusto: AES-256.

Muchas implementaciones modernas de zip, incluida la instalada en su VM de LabEx, admiten la encriptación AES. Al crear un archivo ZIP, puede especificar el método de encriptación.

Para crear un archivo ZIP con encriptación AES-256, normalmente se utiliza la opción -P para la contraseña y la opción -m para el método, o se confía en la encriptación fuerte predeterminada si está disponible. Sin embargo, la opción -e del comando zip a menudo utiliza por defecto la encriptación PKZIP 2.0, que es más débil. Para una encriptación más fuerte como AES-256, a menudo es mejor usar 7z (7-Zip) o WinRAR, que la admiten explícitamente.

Dado que 7z es una herramienta ampliamente utilizada para la archivación segura, demostremos cómo crear un archivo encriptado con AES-256 usando 7z. Primero, instale p7zip-full.

sudo apt-get install -y p7zip-full

Ahora, cree un nuevo archivo para esta demostración.

echo "This is a highly secret message." > super_secret.txt

A continuación, cree un archivo 7z llamado secure_archive.7z con encriptación AES-256. Cuando se le solicite, ingrese una contraseña segura (por ejemplo, StrongPassword!23).

7z a -p secure_archive.7z super_secret.txt

Se le pedirá que ingrese una contraseña:

Enter password (will not be echoed):
Verify password (will not be echoed):

Este comando crea un archivo 7z utilizando encriptación AES-256 por defecto, que es significativamente más seguro que la encriptación ZIP 2.0 tradicional. Los archivos 7z son mucho más difíciles de descifrar debido a sus fuertes algoritmos de encriptación y funciones de derivación de clave.

Puede verificar la creación del archivo 7z.

ls -l

Debería ver secure_archive.7z listado.

Mejores Prácticas para Archivos Seguros:

  • Utilice Encriptación Fuerte: Prefiera siempre la encriptación AES-256 (por ejemplo, con 7z o herramientas zip modernas que admitan explícitamente AES).
  • Utilice Contraseñas Fuertes: Combine letras mayúsculas y minúsculas, números y símbolos. Apunte a una longitud de al menos 12-16 caracteres.
  • Evite Texto Plano Conocido: No incluya archivos fácilmente adivinables o disponibles públicamente en sus archivos encriptados.
  • Actualice Herramientas Regularmente: Asegúrese de que su software de archivación esté actualizado para beneficiarse de los últimos parches y mejoras de seguridad.

Siguiendo estas prácticas, puede mejorar significativamente la seguridad de sus datos archivados.

Resumen

En este laboratorio, ha aprendido con éxito a crear archivos ZIP protegidos con contraseña, extraer sus hashes utilizando zip2john y luego descifrar esos hashes con John the Ripper. Esta experiencia práctica demostró el proceso de descifrado de contraseñas y resaltó las vulnerabilidades de los métodos de encriptación más antiguos. Fundamentalmente, también adquirió una comprensión de las debilidades inherentes a la encriptación ZIP 2.0 tradicional y aprendió sobre alternativas más seguras como la encriptación AES-256 utilizando herramientas como 7z. Al aplicar las mejores prácticas discutidas, puede asegurarse de que sus datos sensibles estén protegidos con estándares criptográficos robustos.