← Volver al inicio
Hashcat John The Ripper Cracking MD5 SHA GPU
Avanzado

John the Ripper y Hashcat: Cracking

01/04/2022

El Cracking de contraseñas no es adivinar contraseñas al azar contra un servidor web (eso es fuerza bruta online o Hydra). El cracking es un proceso offline: primero robas el archivo de la base de datos que contiene los "Hashes" y luego usas toda la potencia de tu CPU o tarjeta gráfica (GPU) para intentar revertirlos en tu propia máquina.

1. Teoría: Hashing vs Encriptación y el uso de "Salts"

A diferencia de la encriptación (que es reversible si tienes la llave), una función de Hash (como MD5 o SHA-256) es un camino de un solo sentido. Convierte cualquier texto en una cadena de longitud fija. Para "crackear" un hash, tienes que hashear millones de palabras por segundo hasta que una coincida con el hash robado.

El problema del Salt: Para evitar que usemos tablas precalculadas (Rainbow Tables), los sistemas operativos modernos añaden un "Salt" (una cadena aleatoria) a la contraseña antes de hashearla.

# Formato clásico de Linux (/etc/shadow):
$id$salt$hashed_string

# Los IDs indican el algoritmo usado:
$1$ = MD5
$2a$ o $2b$ = Bcrypt
$5$ = SHA-256
$6$ = SHA-512
$y$ = Yescrypt (Por defecto en Debian 11+ y Ubuntu 22.04+)

2. Extracción de Hashes (Windows y Linux)

Antes de crackear, necesitas obtener los hashes del sistema comprometido.

# LINUX: Necesitas ser root para leer /etc/shadow
# Debes combinar /etc/passwd y /etc/shadow para que John lo entienda:
unshadow /etc/passwd /etc/shadow > hashes_linux.txt

# WINDOWS: Los hashes NTLM se guardan en el archivo SAM. 
# Si eres Administrador o System, puedes volcarlo con Mimikatz, CrackMapExec o Impacket:
impacket-secretsdump ADMINISTRATOR:Password@192.168.1.50

3. John the Ripper (Jumbo Edition)

John the Ripper es una herramienta basada principalmente en CPU. Es excelente para cracking de bajo volumen o cuando no estás seguro del tipo de hash, ya que John intenta autodetectarlo maravillosamente.

# 1. Ataque de Diccionario (Wordlist):
john --wordlist=/usr/share/wordlists/rockyou.txt hashes_linux.txt

# 2. Especificar formato manualmente (acelera el proceso):
john --format=NT --wordlist=rockyou.txt hashes_windows.txt    # NTLM
john --format=sha512crypt --wordlist=rockyou.txt hashes.txt

# 3. Ataque Single Crack Mode (El modo más inteligente):
# Usa el nombre de usuario y datos GECOS (info del usuario) mutados como contraseñas.
john --single hashes_linux.txt

# 4. Ataque con Reglas de Mutación (Wordlist Manging):
# Toma "password" y prueba "Password1!", "p@ssword", etc.
john --wordlist=rockyou.txt --rules hashes.txt

# 5. Ver contraseñas crackeadas:
john --show hashes.txt

🔴 Operador de Hashcat

Acabas de extraer la línea del usuario root del archivo shadow de un servidor Ubuntu. Necesitas construir el comando exacto de Hashcat para reventarlo utilizando tu tarjeta gráfica, un ataque de diccionario y reglas de mutación.

>_ INICIAR RETO CTF 19

4. Hashcat — La Bestia del GPU Cracking

Hashcat es la herramienta de cracking más rápida del mundo. Utiliza el poder de procesamiento paralelo masivo de las tarjetas gráficas (NVIDIA/AMD) para probar miles de millones de hashes por segundo.

Tipos de Ataque (Attack Modes -a)

# Ataque de Diccionario Básico (-a 0):
# Sintaxis: hashcat -a [ataque] -m [modo_hash] [fichero_hashes] [diccionario]
hashcat -a 0 -m 1000 hashes.txt rockyou.txt      # NTLM Windows

# Ataque de Fuerza Bruta (-a 3) con Máscaras:
# ?l = minúscula, ?u = MAYÚSCULA, ?d = dígito, ?s = símbolo, ?a = todos
# Crackear cualquier contraseña de 8 letras minúsculas:
hashcat -a 3 -m 0 hash.txt ?l?l?l?l?l?l?l?l

# Ataque Híbrido (Diccionario + Máscara a la derecha):
# Palabra de rockyou + 4 números (ej: password2024)
hashcat -a 6 -m 0 hash.txt rockyou.txt ?d?d?d?d

5. Modos de Hash de Hashcat (Los más críticos)

Hashcat no autodetecta los hashes. Debes especificar el módulo exacto usando -m. Consulta hashcat --help para ver los más de 300 módulos.

Modo (-m)Tipo de hashContexto típico
0MD5Bases de datos antiguas web (WordPress viejo)
1000NTLMWindows SAM o volcado de Active Directory (NTDS.dit)
5600NetNTLMv2Robado interceptando tráfico de red (Responder)
1800sha512crypt ($6$)Contraseñas locales en Linux (Ubuntu/CentOS)
3200bcrypt ($2a$)Aplicaciones web modernas. MUY LENTO de crackear.
22000WPA/WPA2Handshakes de redes WiFi interceptadas.

6. Hardware Tuning y Optimización

Para aprovechar al máximo tu tarjeta gráfica (Rig de minería o Gaming PC) con Hashcat:

# Optimizar la carga de trabajo (-w 3 o -w 4):
# -w 3 bloquea el escritorio pero maximiza el rendimiento del GPU.
hashcat -a 0 -m 1000 hashes.txt rockyou.txt -w 3

# Forzar optimización del kernel de la GPU (-O):
# Limita la longitud máxima de contraseña a 31 caracteres, pero aumenta la velocidad un 20%.
hashcat -a 0 -m 1000 hashes.txt rockyou.txt -O

# Continuar una sesión interrumpida:
hashcat --session mi_ataque --restore

7. Preparar Diccionarios (Wordlists)

Rockyou.txt es legendario, pero si estás auditando una empresa española, rockyou (basado en fugas americanas) no será tan efectivo.

# Descomprimir rockyou en Kali Linux:
sudo gzip -d /usr/share/wordlists/rockyou.txt.gz

# CeWL: Crear un diccionario scrapeando las palabras de la web de tu objetivo.
cewl -d 2 -m 6 -w dicc_empresa.txt https://www.objetivo.com

# Crunch: Crear todas las combinaciones posibles de longitud específica:
crunch 8 8 0123456789 -o 8_digits.txt