Secciones
1. Introducción a Hashcat
Hashcat es la navaja suiza del descifrado de contraseñas. Como herramienta de código abierto, permite recuperar contraseñas a partir de hashes usando métodos como fuerza bruta, diccionarios y reglas personalizadas. Es esencial para pentesters, equipos rojos y defensores que buscan evaluar la robustez de las credenciales en sus sistemas.
1.1. ¿Por qué importa?
- Pruebas de penetración: Si obtienes un hash durante una evaluación, Hashcat te ayuda a convertirlo en texto plano.
- Seguridad proactiva: Identifica contraseñas débiles en tus sistemas antes de que un atacante lo haga.
- Flexibilidad: Soporta más de 300 algoritmos de hash, desde MD5 hasta bcrypt.
2. Hashing vs. Cifrado: Conceptos Clave
2.1. Hashing (Unidireccional)
- Ejemplo:
echo -n "p@sswOrd" | md5sum
0f359740bd1cda994f8b55330c86d845
- Características:
- No reversible.
- Misma longitud para cualquier entrada (ej: SHA-256 siempre genera 64 caracteres).
- Algoritmos comunes: MD5, SHA-1, bcrypt, Argon2.
2.2. Cifrado (Bidireccional)
- Ejemplo con XOR:
from pwn import xor xor("p@ssw0rd", "secret") → b'\x03%\x10\x01\x12D\x01\x01'
- Tipos:
- Simétrico: Misma clave para cifrar/descifrar (AES, Blowfish).
- Asimétrico: Clave pública y privada (RSA, ECDSA).
3. Identificando Hashes con HashID
Antes de atacar, debes saber qué tipo de hash tienes. HashID es tu aliado:
pip install hashid
hashid '$6$vb1tlY1qiY$M.1ZCqKtJBxBIZm1gRi8Bbkn39KU0YJW...'
Salida:
[+] SHA-512 Crypt
4. Tipos de Ataques en Hashcat
4.1. Ataque de Diccionario (-a 0
)
Uso básico:
hashcat -a 0 -m 1400 sha256_hash.txt rockyou.txt
Ejemplo práctico:
- Generar hash SHA-256 de «lacademy»:
echo -n 'lacademy' | sha256sum > hash.txt
- Descifrar:
hashcat -a 0 -m 1400 hash.txt /usr/share/wordlists/rockyou.txt
4.2. Ataque Combinado (-a 1
)
Combina dos listas de palabras:
hashcat -a 1 -m 0 combinacion.txt lista1.txt lista2.txt
Ejemplo:
- Si
lista1.txt
tiene [«super», «world»] ylista2.txt
tiene [«hello», «2023»], genera:
superhello world2023 ...
4.3. Ataque de Máscara (-a 3
)
Adivina contraseñas con patrones. Marcadores útiles:
?l
= letras minúsculas?d
= dígitos?s
= caracteres especiales
Ejemplo: Para contraseñas tipo «MIEMPRESA2023»:
hashcat -a 3 -m 0 hash.txt 'MIEMPRESA?d?d?d?d'
4.4. Modo Híbrido (-a 6
o -a 7
)
Combina listas con máscaras. Ejemplo: Añadir «123» al final de cada palabra:
hashcat -a 6 -m 0 hash.txt rockyou.txt '?d?d?d'
5. Creando Listas de Palabras Personalizadas
5.5. Herramientas Esenciales
- Crunch: Genera palabras por patrones.
bashCopyDownloadcrunch 8 8 -t password%%% >> custom_list.txt
- CUPP: Basado en ingeniería social (nombres, fechas, etc.).
python3 cupp.py -i
- CeWL: Extrae palabras de sitios web.
cewl -d 5 -m 6 https://empresa.com -w palabras_empresa.txt
6. Reglas de Modificación en Hashcat
Transforma palabras de una lista con operaciones como:
- Mayúsculas:
u
→ «pass» → «PASS». - Sustitución:
sai@
→ «password» → «p@ssword». - Añadir números:
$1 $2
→ «hola» → «hola1», «hola2».
Ejemplo de regla personalizada:
c $1 $3 $5
Aplica mayúscula al primer carácter y añade «135» al final.
7. Descifrando Hashes Comunes
7.1. Hashes de Linux (/etc/shadow
)
Ejemplo SHA-512:
$6$salt$hash
Comando:
hashcat -a 0 -m 1800 shadow_hash.txt rockyou.txt
7.2. NTLM (Windows)
Ejemplo: b4b9b02e6f09a9bd760f388b67351e2b
Comando:
hashcat -a 0 -m 1000 ntlm_hash.txt rockyou.txt
7.3. Archivos ZIP Protegidos
Extrae el hash con zip2john
:
zip2john archivo.zip > zip_hash.txt
Descifrar:
hashcat -a 0 -m 17200 zip_hash.txt rockyou.txt
8. Wireless: Crackeando WPA/WPA2
8.1. Paso 1: Capturar Handshake
Usa airodump-ng
para capturar un handshake de 4 vías.
8.2. Paso 2: Convertir a Formato HCCAPX
hcxpcapngtool -o handshake.hc22000 captura.pcap
8.3. Paso 3: Ataque con Hashcat
hashcat -a 0 -m 22000 handshake.hc22000 rockyou.txt
Ejemplo de éxito:
SESSION STATUS: CRACKED
HASH: cc:40:d0:a4:d0:96:ESSID:CORP-WIFI
PASSWORD: rockyou1
9. Conclusión
Hashcat es una herramienta poderosa, pero con gran poder viene gran responsabilidad. Úsala éticamente, siempre con permiso, y fortalece tus propias contraseñas. ¿Listo para convertirte en un maestro del descifrado? ¡El primer paso es experimentar!