Usar John the Ripper para Crackear Hashes MD5

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, explorará las capacidades de John the Ripper, una herramienta de cracking de contraseñas de código abierto ampliamente utilizada. Se centrará en el cracking de hashes MD5, que se utilizan comúnmente para almacenar representaciones de contraseñas. Comprender cómo hacer cracking de hashes es crucial para que los profesionales de la seguridad evalúen la fortaleza de las contraseñas e identifiquen vulnerabilidades. Aprenderá a generar hashes MD5, prepararlos para John the Ripper y luego utilizar diferentes técnicas de cracking, incluidos ataques de lista de palabras (wordlist attacks) y modo incremental (incremental mode).

Generar Hashes MD5 a partir de Contraseñas

En este paso, generará hashes MD5 para algunas contraseñas de ejemplo. Esto simulará un escenario en el que tiene acceso a contraseñas hasheadas y necesita hacerles cracking. Utilizará el comando echo canalizado a md5sum para crear estos hashes.

Primero, generemos un hash MD5 para la contraseña password123:

echo -n "password123" | md5sum

Debería ver una salida similar a esta:

202cb962ac59075b964b07152d234b70  -

A continuación, genere hashes MD5 para algunas contraseñas más: labex y secret.

echo -n "labex" | md5sum
echo -n "secret" | md5sum

Las salidas serán:

202cb962ac59075b964b07152d234b70  -
a0b923820dcc509a86619210ed1572e4  -
5ebe2294ecd0e0f08eab7690d2a6ee69  -

Estos hashes generados se utilizarán en los pasos posteriores para el cracking.

Crear un Archivo de Hashes para MD5

En este paso, creará un archivo que contiene los hashes MD5 que generó. John the Ripper normalmente toma un archivo como entrada, donde cada línea contiene un hash para ser crackeado. Creará un archivo llamado hashes.txt en su directorio ~/project y lo poblará con los hashes MD5.

Primero, creemos el archivo hashes.txt y agreguemos los hashes MD5. Solo agregaremos la parte del hash, no el - ni el nombre del archivo.

echo "202cb962ac59075b964b07152d234b70" > ~/project/hashes.txt
echo "a0b923820dcc509a86619210ed1572e4" >> ~/project/hashes.txt
echo "5ebe2294ecd0e0f08eab7690d2a6ee69" >> ~/project/hashes.txt

Ahora, verifique el contenido del archivo hashes.txt usando el comando cat:

cat ~/project/hashes.txt

La salida debería verse así:

202cb962ac59075b964b07152d234b70
a0b923820dcc509a86619210ed1572e4
5ebe2294ecd0e0f08eab7690d2a6ee69

Este archivo servirá como entrada para John the Ripper.

Especificar el Tipo de Hash para John the Ripper

En este paso, aprenderá cómo indicarle a John the Ripper con qué tipo de hash está trabajando. John the Ripper soporta una amplia variedad de tipos de hash, y especificar el tipo correcto es crucial para un cracking exitoso. Para los hashes MD5, utilizará el formato raw-md5.

Para verificar si John the Ripper reconoce raw-md5 y ver otros formatos soportados, puede usar la opción --list=formats. Sin embargo, para este laboratorio, utilizaremos directamente el formato raw-md5.

Puede probar John the Ripper con un solo hash y especificar el formato usando la opción --format. Esto aún no lo crackeará, pero confirma que John puede procesar el formato.

john --format=raw-md5 ~/project/hashes.txt --stdout

Este comando intentará procesar los hashes en hashes.txt como raw-md5 y los imprimirá en la salida estándar. Aún no verá contraseñas crackeadas, pero confirma que el formato es reconocido. La salida serán los propios hashes, ya que John simplemente los está procesando sin crackear.

202cb962ac59075b964b07152d234b70
a0b923820dcc509a86619210ed1572e4
5ebe2294ecd0e0f08eab7690d2a6ee69

Este paso asegura que John the Ripper esté correctamente configurado para manejar hashes MD5.

Crackear Hashes MD5 con Wordlist

En este paso, utilizará una wordlist (lista de palabras) para crackear los hashes MD5. Un ataque de wordlist intenta crackear contraseñas probando cada palabra de una lista predefinida. Este es un método común y a menudo efectivo para crackear contraseñas débiles.

Primero, necesita una wordlist. Para este laboratorio, creará un archivo de wordlist simple llamado wordlist.txt en su directorio ~/project que contiene contraseñas comunes, incluidas las que hasheó anteriormente.

echo "password123" > ~/project/wordlist.txt
echo "labex" >> ~/project/wordlist.txt
echo "secret" >> ~/project/wordlist.txt
echo "test" >> ~/project/wordlist.txt
echo "admin" >> ~/project/wordlist.txt

Ahora, use John the Ripper con la opción wordlist para crackear los hashes:

john --format=raw-md5 --wordlist=~/project/wordlist.txt ~/project/hashes.txt

John the Ripper procesará el archivo hashes.txt, probando cada palabra de wordlist.txt contra los hashes MD5. Si se encuentra una coincidencia, mostrará la contraseña crackeada.

La salida debería mostrar las contraseñas crackeadas:

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts (raw-md5 [MD5])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (202cb962ac59075b964b07152d234b70)
labex            (a0b923820dcc509a86619210ed1572e4)
secret           (5ebe2294ecd0e0f08eab7690d2a6ee69)
3g 0:00:00:00 DONE (2023-10-27 10:30) 100.0% (ETA: 00:00:00) 3.000g/s 15.00p/s 15.00c/s 15.00C/s password123 labex secret
Session completed.

También puede usar john --show para mostrar las contraseñas crackeadas del archivo pot de John the Ripper:

john --show ~/project/hashes.txt

Salida:

202cb962ac59075b964b07152d234b70:password123
a0b923820dcc509a86619210ed1572e4:labex
5ebe2294ecd0e0f08eab7690d2a6ee69:secret

3 password hashes cracked, 0 left

Esto demuestra la efectividad de los ataques de wordlist contra contraseñas comunes o fáciles de adivinar.

Crackear Hashes MD5 con Modo Incremental

En este paso, utilizará el modo incremental de John the Ripper para crackear hashes MD5. El modo incremental es un potente ataque de fuerza bruta que prueba combinaciones de caracteres basándose en un conjunto de caracteres (por ejemplo, letras minúsculas, números, símbolos). Es útil cuando un ataque de wordlist falla, ya que no depende de palabras preexistentes.

Primero, vamos a limpiar el archivo pot de John para asegurarnos de que empezamos de cero para este intento de cracking. Esto es importante porque John almacena las contraseñas crackeadas, y queremos ver el proceso de cracking de nuevo.

john --session=my_session --restore=NONE

Ahora, intentemos crackear los hashes usando el modo incremental. Para fines de demostración, utilizaremos un conjunto de caracteres muy pequeño y una longitud máxima corta para mantener el tiempo de cracking manejable. En un escenario real, el modo incremental puede llevar mucho tiempo dependiendo de la complejidad y longitud de la contraseña.

john --format=raw-md5 --incremental=alnum --max-len=8 ~/project/hashes.txt

Aquí:

  • --incremental=alnum: Indica a John que use caracteres alfanuméricos (a-z, A-Z, 0-9). John tiene modos incrementales predefinidos como alnum, alpha, digits, etc.
  • --max-len=8: Limita la longitud máxima de la contraseña a 8 caracteres. Esto es crucial para mantener el tiempo de cracking corto para este laboratorio.

John the Ripper comenzará a generar y probar combinaciones. Dado que nuestras contraseñas (password123, labex, secret) están dentro del conjunto de caracteres alnum y max-len=8 (para labex y secret), John eventualmente debería crackearlas. password123 tiene 11 caracteres de longitud, por lo que no será crackeada con max-len=8.

La salida mostrará las contraseñas crackeadas a medida que John las encuentre:

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts (raw-md5 [MD5])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
labex            (a0b923820dcc509a86619210ed1572e4)
secret           (5ebe2294ecd0e0f08eab7690d2a6ee69)
2g 0:00:00:00 DONE (2023-10-27 10:35) 100.0% (ETA: 00:00:00) 2.000g/s 10.00p/s 10.00c/s 10.00C/s labex secret
Session completed.

Puede usar nuevamente john --show para mostrar las contraseñas crackeadas:

john --show ~/project/hashes.txt

Salida:

a0b923820dcc509a86619210ed1572e4:labex
5ebe2294ecd0e0f08eab7690d2a6ee69:secret

2 password hashes cracked, 1 left

Observe que password123 no fue crackeada esta vez porque su longitud (11 caracteres) excedió el límite --max-len=8. Esto resalta la importancia de establecer parámetros apropiados para los ataques incrementales.

Resumen

En este laboratorio, utilizó con éxito John the Ripper para crackear hashes MD5. Comenzó generando hashes MD5 a partir de contraseñas de ejemplo y luego creó un archivo de hashes para que John the Ripper lo procesara. Aprendió a especificar el tipo de hash (raw-md5) y luego aplicó dos técnicas de cracking diferentes: ataque de wordlist y modo incremental.

Observó que los ataques de wordlist son efectivos contra contraseñas comunes encontradas en diccionarios, mientras que el modo incremental proporciona un enfoque de fuerza bruta para contraseñas más complejas o desconocidas, aunque con tiempos de cracking potencialmente mucho más largos. Este laboratorio proporciona una comprensión fundamental de las técnicas de cracking de contraseñas utilizando John the Ripper, lo cual es una habilidad valiosa para los profesionales de la ciberseguridad.