Comprender la Salida y el Estado de John the Ripper

Kali LinuxBeginner
Practicar Ahora

Introducción

John the Ripper es una popular herramienta de cracking de contraseñas de código abierto. Al realizar auditorías de contraseñas o intentos de cracking, comprender su salida y estado es crucial para monitorear el progreso, identificar contraseñas descifradas y solucionar problemas. Este laboratorio lo guiará a través de la interpretación de los diversos mensajes de salida de John the Ripper, la verificación de su estado de cracking en tiempo real, la visualización de los resultados de una sesión de cracking, la comprensión de sus estadísticas de rendimiento y el registro de su salida para análisis posteriores.

Interpretar los Mensajes de Salida de John the Ripper

En este paso, aprenderá a comprender los diversos mensajes que John the Ripper muestra durante una sesión de cracking. Estos mensajes brindan información sobre su progreso, el modo de cracking y cualquier problema encontrado.

Primero, iniciemos una sesión de cracking simple usando una lista de palabras (wordlist). Utilizaremos el archivo passwords.txt creado en la configuración y un pequeño wordlist.txt.

Ejecute el siguiente comando en su terminal:

john --wordlist=wordlist.txt passwords.txt

Verá una salida similar a esta:

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts to the same type of crypt (sha512crypt, crypt(3) $6$)
Remaining 3 password hashes with no different salts
Press 'q' or Ctrl-C to abort, almost any other key for status
user1 (user1)
user2 (user2)
user3 (user3)
3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% 3.000g/s 18.00p/s 18.00c/s 18.00C/s user1 user2 user3
Session completed

Analicemos las partes clave de esta salida:

  • Using default input encoding: UTF-8: Indica la codificación de caracteres que está utilizando John.
  • Loaded 3 password hashes...: Muestra cuántos hashes se cargaron desde el archivo de entrada.
  • Press 'q' or Ctrl-C to abort, almost any other key for status: Este es un aviso importante. Le indica cómo interactuar con John durante una sesión.
  • user1 (user1): Esta es una contraseña descifrada. user1 es el nombre de usuario (o identificador del hash), y (user1) es la contraseña descifrada. John mostrará cada contraseña descifrada a medida que las encuentre.
  • 3g 0:00:00:00 DONE ...: Esta es la línea de resumen.
    • 3g: Número de hashes descifrados (3 intentos).
    • 0:00:00:00 DONE: El tiempo transcurrido y que la sesión está completa.
    • 100.0%: Porcentaje del proceso de cracking completado.
    • 3.000g/s: Intentos por segundo.
    • 18.00p/s: Contraseñas por segundo (número de contraseñas candidatas probadas).
    • 18.00c/s: Criptos por segundo (número de cálculos de hash).
    • 18.00C/s: Candidatos por segundo (número de contraseñas candidatas únicas generadas).
    • user1 user2 user3: Las últimas contraseñas descifradas.
  • Session completed: Confirma que la sesión de cracking ha finalizado.

Comprender estos mensajes le ayuda a monitorear el progreso y los resultados de sus operaciones con John the Ripper.

Comprobar el Estado de Cracking Durante una Sesión

En este paso, aprenderá a comprobar el estado en tiempo real de una sesión de cracking de John the Ripper. Esto es particularmente útil para sesiones de larga duración para monitorear el progreso sin interrumpir el proceso.

Primero, limpiemos el estado de la sesión anterior para que John comience de nuevo.

john --session=test_session --restore=NONE --wordlist=wordlist.txt passwords.txt --force-load-hashes

Ahora, inicie una nueva sesión de cracking. Esta vez, utilizaremos una lista de palabras un poco más grande para asegurar que la sesión se ejecute el tiempo suficiente para que podamos verificar su estado. Usaremos el archivo passwords.txt y el archivo wordlist.txt.

Ejecute el siguiente comando. Tenga en cuenta que estamos usando --session=test_session para darle un nombre a esta sesión, lo cual es útil para restaurar o verificar el estado más tarde.

john --session=test_session --wordlist=wordlist.txt passwords.txt

Mientras John se está ejecutando (podría terminar rápidamente con la lista de palabras pequeña, pero imagine que es una grande), abra una nueva pestaña de terminal (o una nueva ventana de terminal si no está en el entorno de LabEx). En la nueva terminal, puede verificar el estado de la sesión en ejecución.

Para verificar el estado, use la opción --status con el nombre de la sesión:

john --session=test_session --status

Verá una salida similar a esta (los números exactos variarán según el progreso):

Session test_session (john)
Progress: 3/3 (100%)
Speed: 3.000g/s (words), 18.00p/s (passwords), 18.00c/s (crypts), 18.00C/s (candidates)
Remaining: 0:00:00:00
Cracked: 3

Esta salida proporciona una instantánea del progreso de la sesión, incluido el número de hashes descifrados, la velocidad de cracking y el tiempo estimado restante.

Después de verificar el estado, puede cerrar la nueva pestaña de terminal. La sesión original de John the Ripper continuará ejecutándose hasta que se complete.

Si la sesión ya se ha completado, el comando --status indicará que la sesión ha terminado.

Session test_session (john)
Session completed

Esta función es invaluable para gestionar operaciones de cracking de larga duración.

Ver Contraseñas Descifradas de una Sesión

Después de que una sesión de John the Ripper se completa, las contraseñas descifradas se guardan en un archivo llamado john.pot (a menudo ubicado en ~/.john/john.pot). En este paso, aprenderá a ver estas contraseñas descifradas.

Primero, asegúrese de tener un archivo john.pot con contraseñas descifradas. Si siguió los pasos anteriores, ya debería existir. Si no es así, ejecute el comando de cracking nuevamente:

john --wordlist=wordlist.txt passwords.txt

Una vez que la sesión se complete, puede ver las contraseñas descifradas usando la opción --show. Esta opción le indica a John que muestre todas las contraseñas descifradas que ha almacenado para el archivo de hashes dado.

Ejecute el siguiente comando:

john --show passwords.txt

Verá una salida similar a esta:

user1:user1

user2:user2

user3:user3

3 password hashes cracked, 0 left

La salida lista cada hash descifrado en el formato nombre_de_usuario:contraseña. La línea 3 password hashes cracked, 0 left resume los resultados.

El archivo john.pot es un componente crucial de John the Ripper, ya que almacena todas las contraseñas descifradas con éxito. John verifica automáticamente este archivo antes de intentar descifrar un hash, evitando trabajo redundante. También puede inspeccionar directamente el archivo john.pot usando cat:

cat ~/.john/john.pot

El contenido se verá similar a esto:

user1:user1
user2:user2
user3:user3

Este paso demuestra cómo recuperar y revisar la valiosa salida de sus esfuerzos de cracking.

Comprender las Estadísticas de John the Ripper

John the Ripper proporciona estadísticas detalladas sobre su rendimiento de cracking. Comprender estas estadísticas le ayuda a evaluar la eficiencia de sus intentos de cracking y a comparar diferentes estrategias de cracking.

Ejecutemos una sesión de cracking nuevamente para generar algunas estadísticas. Usaremos el mismo comando que antes.

john --wordlist=wordlist.txt passwords.txt

Observe la línea de resumen final que aparece después de que la sesión se completa:

3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% 3.000g/s 18.00p/s 18.00c/s 18.00C/s user1 user2 user3
Session completed

Reexaminemos las métricas estadísticas clave:

  • 3g: Esto indica el número de "guesses" (intentos) realizados, que en este contexto corresponde al número de hashes descifrados con éxito.
  • 0:00:00:00 DONE: El tiempo total transcurrido para la sesión. Para sesiones cortas, podría mostrar 0.
  • 100.0%: El porcentaje del proceso de cracking completado.
  • 3.000g/s (guesses/s): La tasa a la que John realiza intentos por segundo. Esta suele ser la medida más directa de la velocidad de cracking.
  • 18.00p/s (passwords/s): El número de contraseñas candidatas probadas por segundo. Esto puede ser mayor que g/s si se prueban múltiples hashes contra la misma contraseña candidata.
  • 18.00c/s (crypts/s): El número de cálculos de hash (operaciones criptográficas) realizados por segundo. Esta es una medida de la potencia computacional bruta que se está utilizando.
  • 18.00C/s (candidates/s): El número de contraseñas candidatas únicas generadas por segundo. Esto puede diferir de p/s si la misma candidata se prueba contra múltiples hashes.

Estas estadísticas son cruciales para:

  • Evaluación de Rendimiento: Comprender la rapidez con la que John descifra contraseñas.
  • Utilización de Recursos: Evaluar cuánta potencia de CPU se está utilizando para los cálculos de hash.
  • Comparación de Estrategias: Comparar la efectividad de diferentes listas de palabras o modos de cracking.

Al prestar atención a estos números, puede obtener información valiosa sobre sus esfuerzos de auditoría de contraseñas.

Registrar la Salida de John the Ripper en un Archivo

Para sesiones de larga duración o para fines de auditoría, a menudo es beneficioso registrar la salida de John the Ripper en un archivo. Esto le permite revisar el progreso y los resultados más tarde sin tener que mantener una terminal abierta.

Puede redirigir la salida estándar de John a un archivo utilizando la redirección estándar del shell (>).

Primero, limpiemos cualquier archivo de sesión anterior para asegurar un nuevo comienzo.

john --session=log_session --restore=NONE --wordlist=wordlist.txt passwords.txt --force-load-hashes

Ahora, ejecute John the Ripper y redirija su salida a un archivo llamado john_output.log en su directorio ~/project.

john --session=log_session --wordlist=wordlist.txt passwords.txt > john_output.log

Observe que después de ejecutar este comando, su terminal parecerá no hacer nada. Esto se debe a que toda la salida que normalmente se mostraría en la pantalla ahora se está escribiendo en john_output.log.

Una vez que el comando finalice (lo cual será casi instantáneo con nuestra pequeña lista de palabras), puede ver el contenido del archivo de registro usando cat:

cat john_output.log

Verá la salida completa de la sesión de John the Ripper, idéntica a lo que habría visto en la pantalla, pero ahora almacenada en el archivo:

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts to the same type of crypt (sha512crypt, crypt(3) $6$)
Remaining 3 password hashes with no different salts
Press 'q' or Ctrl-C to abort, almost any other key for status
user1 (user1)
user2 (user2)
user3 (user3)
3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% 3.000g/s 18.00p/s 18.00c/s 18.00C/s user1 user2 user3
Session completed

Registrar la salida es una buena práctica para cualquier operación de línea de comandos de larga duración o crítica, ya que proporciona un registro persistente de eventos y resultados.

Resumen

En este laboratorio, ha adquirido una comprensión completa de cómo interpretar la salida de John the Ripper y gestionar sus sesiones. Aprendió a descifrar los diversos mensajes que se muestran durante una sesión de cracking, a verificar el estado en tiempo real de una sesión en ejecución y a recuperar contraseñas descifradas del archivo john.pot. Además, exploró cómo comprender las estadísticas de rendimiento de John y cómo registrar su salida en un archivo para mantener un registro persistente. Estas habilidades son fundamentales para utilizar eficazmente John the Ripper en auditorías de contraseñas y pruebas de seguridad.