Integrar John the Ripper con Otras Herramientas

Kali LinuxBeginner
Practicar Ahora

Introducción

John the Ripper (JtR) es una herramienta potente y popular de código abierto para descifrar contraseñas. Si bien es muy eficaz por sí sola, su verdadero potencial se desbloquea cuando se integra en un flujo de trabajo de pruebas de seguridad más amplio con otras herramientas. La automatización mediante scripts puede mejorar aún más su eficiencia, permitiendo tareas de auditoría y recuperación de contraseñas optimizadas y repetibles.

En este laboratorio, explorará cómo John the Ripper se puede integrar con otras herramientas de seguridad comunes. Cubriremos los flujos de trabajo conceptuales para usar JtR con Hashcat, Metasploit y Aircrack-ng. Luego, obtendrá experiencia práctica escribiendo un script simple de bash para automatizar una sesión de descifrado de JtR.

Uso de John the Ripper con Hashcat (Conceptual)

En este paso, discutiremos la integración conceptual de John the Ripper y Hashcat. Ambas son herramientas líderes para descifrar contraseñas, pero tienen fortalezas diferentes. John the Ripper es conocido por su rendimiento de descifrado basado en CPU y su capacidad para detectar automáticamente muchos tipos de hash. Hashcat, por otro lado, es el descifrador de contraseñas más rápido del mundo, destacando en ataques basados en GPU.

Si bien a menudo se ven como alternativas, se pueden usar juntas en un flujo de trabajo. Por ejemplo, podría usar las utilidades de John the Ripper, como unshadow, para extraer y combinar archivos de contraseñas y shadow de un sistema Linux.

Flujo de trabajo de ejemplo:

  1. Obtener los archivos /etc/passwd y /etc/shadow de un sistema Linux objetivo.
  2. Usar la utilidad unshadow de JtR para combinarlos en un solo archivo que contenga nombres de usuario y hashes: unshadow passwd shadow > hashes_for_cracking.txt.
  3. Alimentar el archivo resultante hashes_for_cracking.txt a Hashcat para aprovechar sus potentes capacidades de descifrado por GPU.

Este paso es puramente conceptual para ayudarle a comprender las sinergias potenciales. No hay comandos que ejecutar aquí. La conclusión clave es que las utilidades de una herramienta se pueden usar para preparar datos para otra.

Integrar John the Ripper con Metasploit (Conceptual)

En este paso, exploraremos la integración conceptual de John the Ripper con el Metasploit Framework. Metasploit es un potente framework de pruebas de penetración utilizado para descubrir, explotar y validar vulnerabilidades. Una tarea común de post-explotación es volcar los hashes de contraseñas de un sistema comprometido. Aquí es donde JtR se convierte en una parte crucial del flujo de trabajo.

Flujo de trabajo de ejemplo:

  1. Un atacante obtiene acceso inicial a un sistema utilizando un exploit de Metasploit.
  2. Utilizando un módulo de post-explotación dentro de una sesión de Meterpreter, como run post/windows/gather/hashdump, el atacante vuelca los hashes de contraseñas (por ejemplo, hashes NTLM de una base de datos SAM de Windows).
  3. El atacante guarda estos hashes en un archivo en su máquina local.
  4. John the Ripper se utiliza posteriormente sin conexión para descifrar estos hashes, utilizando diversas técnicas como ataques de listas de palabras (wordlist attacks) o fuerza bruta (brute-force).
  5. Una vez descifrada una contraseña, se puede utilizar para escalar privilegios o pivotar a otros sistemas en la red, potencialmente utilizando otros módulos de Metasploit como psexec.

Esta integración demuestra un ciclo de vida de ataque típico en el que Metasploit se utiliza para el acceso y JtR se utiliza para el descifrado de credenciales sin conexión. Este paso es conceptual y no es necesario ejecutar ningún comando.

Uso de John the Ripper con Aircrack-ng (Conceptual)

En este paso, discutiremos cómo John the Ripper puede ser utilizado con la suite Aircrack-ng para descifrar contraseñas de Wi-Fi. Aircrack-ng es un conjunto de herramientas para auditar redes inalámbricas. Una parte clave de una auditoría WPA/WPA2 es la captura del handshake de 4 vías, que ocurre cuando un cliente se conecta a un punto de acceso. Este handshake contiene un hash que puede ser descifrado para revelar la clave precompartida (PSK) de la red.

Flujo de trabajo de ejemplo:

  1. Utilizar herramientas de la suite Aircrack-ng, como airodump-ng, para monitorear el tráfico inalámbrico y capturar el handshake WPA/WPA2. Esto se guarda típicamente como un archivo .cap.
  2. El archivo .cap en sí mismo no es un hash. Debe ser convertido a un formato que un descifrador de contraseñas pueda entender. Puede usar aircrack-ng u otras herramientas como hcxpcaptool para esta conversión.
  3. Por ejemplo, puede usar aircrack-ng con la opción -J para crear un archivo compatible con Hashcat (.hccapx), que John the Ripper también puede procesar. El comando se vería algo así como: aircrack-ng your_capture.cap -J output_hash_file.
  4. Finalmente, utiliza John the Ripper para descifrar el archivo de hash utilizando una lista de palabras (wordlist): john --wordlist=passwords.txt output_hash_file.hccapx.

Este flujo de trabajo muestra cómo una herramienta especializada para un dominio (Wi-Fi) puede proporcionar la materia prima para que una herramienta de propósito general como JtR la procese. Este paso es conceptual y no se requieren comandos.

Script de John the Ripper para Automatización

En este paso, pasaremos de la teoría a la práctica. La forma más común de "integrar" John the Ripper es encapsulando su interfaz de línea de comandos en scripts. Esto le permite automatizar tareas repetitivas y construirlo en cadenas de herramientas más grandes. Crearemos un script simple de bash para ejecutar un ataque de lista de palabras y luego mostraremos los resultados.

Primero, creemos el script de automatización. Utilice el editor nano para crear un nuevo archivo llamado crack.sh en su directorio actual, ~/project.

nano crack.sh

Ahora, agregue el siguiente contenido al archivo. Este script tomará un archivo de hash y una lista de palabras como entrada, ejecutará John y luego mostrará cualquier contraseña descifrada.

#!/bin/bash

if [ "$#" -ne 2 ]; then
  echo "Usage: $0 <hash_file> <wordlist_file>"
  exit 1
fi

HASH_FILE=$1
WORDLIST=$2

echo "[-] Starting John the Ripper..."
john --wordlist="$WORDLIST" "$HASH_FILE" > /dev/null 2>&1

echo "[+] Cracking attempt finished."
echo "[+] Showing cracked passwords:"
john --show "$HASH_FILE"

Guarde el archivo y salga de nano presionando Ctrl+X, luego Y, y luego Enter.

A continuación, debemos hacer que el script sea ejecutable.

chmod +x crack.sh

Ahora, creemos un archivo de lista de palabras simple para nuestra prueba. El script de configuración para este laboratorio ya ha creado un archivo llamado hashes.txt que contiene un hash de ejemplo. La contraseña para este hash es password123.

echo "password123" > wordlist.txt

Finalmente, ejecute su script de automatización. Proporciónele el archivo hashes.txt y su nuevo wordlist.txt.

./crack.sh hashes.txt wordlist.txt

Debería ver la siguiente salida, que indica que el script ejecutó John con éxito y encontró la contraseña.

[-] Starting John the Ripper...
[+] Cracking attempt finished.
[+] Showing cracked passwords:
user1:password123

1 password hash cracked, 0 left

¡Ahora ha creado con éxito un script simple para automatizar John the Ripper!

Comprender la API de John the Ripper (si aplica)

En este último paso, aclararemos el concepto de una "API de John the Ripper". Cuando los desarrolladores hablan de APIs (Interfaces de Programación de Aplicaciones), a menudo se refieren a una API REST para servicios web o a una biblioteca bien documentada para un lenguaje de programación específico.

John the Ripper no tiene una API pública formal y estable en este sentido. Su interfaz principal es la línea de comandos (CLI), que es potente, flexible y está diseñada para la interacción y la creación de scripts, como demostró en el paso anterior.

La funcionalidad principal de JtR está contenida dentro de una biblioteca, a veces denominada libjohn. Técnicamente es posible que programadores avanzados de C enlacen contra esta biblioteca para crear aplicaciones personalizadas. Sin embargo, esta es una tarea compleja, no un caso de uso típico, y no está soportada como una API pública.

Por lo tanto, para la gran mayoría de los usuarios e integraciones, "usar la API de JtR" significa:

  • Llamar al ejecutable de JtR desde un script (por ejemplo, Bash, Python, Perl).
  • Analizar la salida de la línea de comandos de la herramienta.
  • Interactuar con sus archivos, como el archivo de hash de entrada y el archivo john.pot donde se almacenan las contraseñas descifradas.

La conclusión clave es que la integración y la automatización con John the Ripper se logran a través de la creación de scripts de CLI, no de una biblioteca de programación tradicional o una API web.

Resumen

En este laboratorio, exploró cómo mejorar las capacidades de John the Ripper integrándolo con otras herramientas y automatizando su ejecución.

Aprendió los flujos de trabajo conceptuales para combinar JtR con otras herramientas de seguridad importantes:

  • Uso de las utilidades de JtR para preparar hashes para el cracking basado en GPU de Hashcat.
  • Uso de JtR para descifrar hashes obtenidos durante la post-explotación con el Metasploit Framework.
  • Uso de JtR para descifrar handshakes de Wi-Fi capturados por la suite Aircrack-ng.

Luego puso la teoría en práctica escribiendo y ejecutando un script de bash para automatizar una sesión de descifrado de contraseñas, que es el método principal para integrar JtR en flujos de trabajo más grandes. Finalmente, aclaró que la "API" de JtR es su potente interfaz de línea de comandos, que es la clave de su flexibilidad y potencial de integración.