Gestionar Sesiones y Reanudaciones de John the Ripper

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, explorará las características esenciales de John the Ripper (JtR) para la gestión de sesiones de cracking de contraseñas. Una gestión de sesiones eficaz es crucial para tareas de cracking de larga duración, ya que le permite pausar y reanudar operaciones, recuperarse de interrupciones inesperadas y realizar un seguimiento de su progreso. Aprenderá a iniciar una sesión de cracking, pausarla y reanudarla de forma controlada, comprenderá el papel de los archivos de sesión e incluso recuperará una sesión después de un fallo simulado. Finalmente, aprenderá a limpiar archivos de sesión antiguos para mantener un entorno de trabajo ordenado.

Iniciar una Sesión de Cracking con John the Ripper

En este paso, iniciará una sesión básica de cracking con John the Ripper. Utilizaremos un hash MD5 simple y una lista de palabras pequeña para demostrar el proceso. John the Ripper crea automáticamente un archivo de sesión al iniciar un proceso de cracking, lo cual es esencial para la gestión de la sesión.

Primero, creemos un archivo de lista de palabras simple llamado wordlist.txt en su directorio ~/project.

echo -e "test\npassword\n123456\nadmin" > ~/project/wordlist.txt

Ahora, inicie John the Ripper para crackear el archivo passwords.txt utilizando wordlist.txt. Usaremos la opción --session para darle un nombre específico a nuestra sesión, lo que facilita su gestión.

john --format=raw-md5 --wordlist=~/project/wordlist.txt --session=my_first_session ~/project/passwords.txt

Debería ver que John the Ripper inicia el proceso de cracking. Es probable que encuentre la contraseña rápidamente, ya que nuestra lista de palabras es pequeña y contiene la contraseña correcta.

Ejemplo de salida:

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (user1)
1g 0:00:00:00 DONE (2023-10-27 08:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed

Después de que la sesión se complete, puede ver las contraseñas crackeadas usando la opción --show.

john --show ~/project/passwords.txt

Ejemplo de salida:

user1:password

1 password hash cracked, 0 left

Pausar y Reanudar una Sesión de Cracking

En este paso, aprenderá cómo pausar una sesión de John the Ripper en curso y luego reanudarla. Esto es particularmente útil para tareas de cracking largas que podría necesitar interrumpir y continuar más tarde.

Primero, creemos una lista de palabras simulada más grande para asegurar que el proceso de cracking tome algún tiempo, permitiéndonos pausarlo.

seq 1000000 | sed "s/$/password/" > ~/project/large_wordlist.txt

Ahora, inicie una nueva sesión de John the Ripper utilizando esta lista de palabras grande. Llamaremos a esta sesión long_session.

john --format=raw-md5 --wordlist=~/project/large_wordlist.txt --session=long_session ~/project/passwords.txt

Una vez que comience el cracking, presione inmediatamente Ctrl+C para pausar la sesión. John the Ripper guardará su estado actual en el archivo de sesión.

Ejemplo de salida después de presionar Ctrl+C:

...
Press 'q' or Ctrl-C to abort, almost any other key for status
^C
Session aborted.

Para reanudar la sesión, use la opción --restore con el nombre de la sesión.

john --restore=long_session

John the Ripper continuará exactamente desde donde lo dejó. Puede dejarlo ejecutándose hasta que encuentre la contraseña o presionar Ctrl+C nuevamente para pausarlo.

Ejemplo de salida después de reanudar:

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
...
password         (user1)
1g 0:00:00:00 DONE (2023-10-27 08:35) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed

Comprender los Archivos de Sesión

En este paso, examinará los archivos de sesión creados por John the Ripper. Estos archivos almacenan el estado de sus sesiones de cracking, permitiendo pausar, reanudar y recuperar.

John the Ripper típicamente almacena los archivos de sesión en el directorio ~/.john. Listemos el contenido de este directorio para ver los archivos de sesión que ha creado.

ls -l ~/.john/

Debería ver archivos como my_first_session.rec y long_session.rec. La extensión .rec indica un archivo de recuperación (recovery file).

Ejemplo de salida:

total 16
-rw------- 1 labex labex 8192 Oct 27 08:30 my_first_session.rec
-rw------- 1 labex labex 8192 Oct 27 08:35 long_session.rec

También puede ver el contenido de un archivo de sesión, aunque en su mayoría son datos binarios. Sin embargo, puede usar strings para extraer cadenas legibles de él, lo que podría mostrar alguna información de la sesión.

strings ~/.john/long_session.rec | head -n 10

Ejemplo de salida (puede variar):

JtR session file
long_session
raw-md5
/home/labex/project/passwords.txt
/home/labex/project/large_wordlist.txt

Estos archivos de sesión son cruciales para la capacidad de John the Ripper de gestionar y recuperar procesos de cracking.

Recuperarse de una Sesión Caída

En este paso, aprenderá cómo recuperar una sesión de John the Ripper que podría haberse caído inesperadamente. Esto es similar a reanudar una sesión pausada, ya que John the Ripper guarda su estado automáticamente de forma periódica.

Primero, simulemos una caída. Inicie una nueva sesión, pero esta vez, mataremos el proceso abruptamente en lugar de pausarlo de forma controlada.

john --format=raw-md5 --wordlist=~/project/large_wordlist.txt --session=crash_test ~/project/passwords.txt &

Observe el & al final, que ejecuta el comando en segundo plano. Esto nos permitirá matarlo.
Ahora, encuentre el ID del proceso (PID) del proceso john.

pgrep john

Ejemplo de salida (el PID variará):

12345

Ahora, mate el proceso john usando su PID. Reemplace YOUR_PID con el PID real que encontró.

kill YOUR_PID

Es posible que vea un mensaje como Terminated o Killed. Esto simula una terminación abrupta inesperada.

Ahora, intente restaurar la sesión crash_test. John the Ripper debería poder continuar desde donde lo dejó, incluso después de una terminación abrupta.

john --restore=crash_test

Ejemplo de salida:

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iterations) is 10000 for Raw-MD5
Will run 4 OpenMP threads
...
password         (user1)
1g 0:00:00:00 DONE (2023-10-27 08:40) 100.0g/s 100.0p/s 100.0c/s 100.0C/s user1:password
Session completed

Esto demuestra las sólidas capacidades de recuperación de John the Ripper, que son vitales para las operaciones de cracking de larga duración.

Limpiar Archivos de Sesión Antiguos

En este paso, aprenderá cómo limpiar archivos de sesión antiguos de John the Ripper. Si bien estos archivos son útiles para la recuperación, pueden acumularse con el tiempo, especialmente si ejecuta muchas sesiones.

Para eliminar un archivo de sesión específico, puede usar la opción --remove con el nombre de la sesión. Eliminemos el archivo my_first_session.

john --remove=my_first_session

Se le pedirá que confirme la eliminación. Escriba y y presione Enter.

Ejemplo de salida:

Remove session file ~/.john/my_first_session.rec? y

Ahora, verifique que el archivo ha sido eliminado listando nuevamente el contenido del directorio ~/.john.

ls -l ~/.john/

Ya no debería ver my_first_session.rec.

Ejemplo de salida:

total 16
-rw------- 1 labex labex 8192 Oct 27 08:35 long_session.rec
-rw------- 1 labex labex 8192 Oct 27 08:40 crash_test.rec

También puede eliminar manualmente los archivos .rec si lo prefiere, pero usar john --remove es la forma recomendada, ya que garantiza una limpieza adecuada.

rm ~/.john/long_session.rec
rm ~/.john/crash_test.rec

Finalmente, verifique que todos los archivos de sesión han sido eliminados.

ls -l ~/.john/

Ejemplo de salida:

total 0

Mantener sus archivos de sesión organizados ayuda a gestionar sus tareas de cracking de manera eficiente.

Resumen

En este laboratorio, ha adquirido experiencia práctica en la gestión de sesiones de cracking de John the Ripper. Aprendió a iniciar una sesión, pausarla y reanudarla de manera efectiva, y a comprender el papel fundamental de los archivos de sesión para mantener el progreso del cracking. Además, exploró cómo recuperar una sesión de una caída inesperada, destacando la resiliencia de John the Ripper. Finalmente, practicó la limpieza de archivos de sesión antiguos para mantener su entorno de trabajo ordenado. Estas habilidades son fundamentales para cualquiera que realice tareas de auditoría o cracking de contraseñas de larga duración con John the Ripper.