Cracking Contraseñas
con Hashcat
Laboratorio práctico para aprender a identificar, seleccionar el modo correcto y crackear hashes reales usando diccionario, fuerza bruta, máscaras y reglas.
Tipos de ataque disponibles en hashcat:
Modos de hash más comunes (-m):
Caracteres de máscara más usados:
| Char | Juego de caracteres | Descripción |
|---|---|---|
| ?l | abcdefghijklmnopqrstuvwxyz | Minúsculas |
| ?u | ABCDEFGHIJKLMNOPQRSTUVWXYZ | Mayúsculas |
| ?d | 0123456789 | Dígitos |
| ?s | !@#$%^&*()... | Especiales |
| ?a | ?l?u?d?s | Todos los anteriores |
| ?h | 0-9 + a-f | Hex minúsculas |
| ?H | 0-9 + A-F | Hex mayúsculas |
Flags esenciales:
| Flag | Valor ejemplo | Descripción |
|---|---|---|
| -m | 0, 100, 1000… | Tipo de hash |
| -a | 0, 3, 6… | Modo de ataque |
| -o | cracked.txt | Guardar resultados en fichero |
| --show | — | Mostrar contraseñas ya crackeadas del potfile |
| -r | best64.rule | Aplicar reglas de mutación |
| --increment | — | Incrementar longitud de máscara automáticamente |
| --increment-min | 4 | Longitud mínima en modo incremento |
| --increment-max | 8 | Longitud máxima en modo incremento |
| -w | 3 | Nivel de carga de trabajo (1-4) |
| --force | — | Forzar ejecución (útil en VMs) |
| --potfile-disable | — | No usar/guardar el potfile |
sudo apt install hashcat. Para mejores resultados usa GPU, pero con --force funciona en CPU/VM.
Crea la estructura de ficheros del laboratorio:
/usr/share/wordlists/rockyou.txt
/usr/share/wordlists/fasttrack.txt
/usr/share/seclists/Passwords/
/usr/share/hashcat/rules/best64.rule
/usr/share/hashcat/rules/rockyou-30000.rule
/usr/share/hashcat/rules/d3ad0ne.rule
~/.local/share/hashcat/hashcat.potfile. Si repites un ejercicio, usa --potfile-disable o borra el potfile para volver a crackear el mismo hash.
Identificar y crackear tres hashes MD5 usando el diccionario rockyou.txt. Aprenderás a crear un fichero de hashes múltiple y a interpretar la salida de hashcat.
hashes/md5.txt5f4dcc3b5aa765d61d8327deb882cf99 → password
7c6a180b36896a0a8c02787eeafb0e4c → password1
d8578edf8458ce06fbc5bb76a58c5ca4 → qwerty
Crackear un hash SHA1. Además aprenderás a crear tu propia wordlist personalizada para un objetivo y a combinarla con rockyou.
hashes/sha1.txtaaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d → h
Crackear varios hashes SHA-256 a la vez. Hashcat es más eficiente cuando procesa múltiples hashes en una sola ejecución — aprende a organizar el fichero de entrada.
hashes/sha256.txt-a 3 ?d?d?d?d?d?d5e884898da... → password
8d969eef6e... → 123456
ef92b778ba... → password123
Los hashes NTLM se extraen del SAM o del NTDS.DIT en entornos Windows. Aprende a crackearlos, a distinguir LM vs NTLM y a usar reglas para mejorar la tasa de éxito.
secretsdump.py, mimikatz) obtienes líneas como:Administrator:500:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::El hash NTLM es la parte después del tercer
: (32 chars).
hashes/ntlm.txt31d6cfe0d16ae931b73c59d7e0c089c0 es el hash NTLM conocido de la contraseña vacía (cuenta deshabilitada o sin contraseña). Los otros dos están en rockyou.
8846f7eaee8fb117ad06bdd830b7586c → password
31d6cfe0d16ae931b73c59d7e0c089c0 → (vacía)
7a21990fcd3d759941e45c490f143d5f → 12345
bcrypt es deliberadamente lento. No se puede usar rockyou completo de forma práctica. Aprende a usar listas pequeñas y optimizadas para este tipo de hash.
hashes/bcrypt.txt$2a$05$LhayLxez... → password
Los usuarios suelen transformar palabras base añadiendo números, mayúsculas o caracteres especiales. Las reglas automatizan estas mutaciones. El ataque híbrido combina wordlist con máscara.
hashes/mutados.txt3fc0a7acf087f549... → dragon1
4ef6a9c2a9f3e7e9... → Letmein
f25a2fc72690b780... → Admin123
Dado un handshake WPA2 capturado con airodump-ng, conviértelo al formato hccapx y atácalo con hashcat. Aprende el flujo completo de ataque Wi-Fi.
github.com/brannondorsey/wifi-cracking o de los repositorios de CTF de HackTheBox/TryHackMe.
Los sistemas Linux almacenan contraseñas en /etc/shadow en formato sha512crypt ($6$). Aprende a extraerlas con unshadow y atacarlas con hashcat.
hashes/shadow.txtusesomesillysalt. La contraseña es corta.$6$rounds=5000$usesomesillysalt$... → password
Cuando conoces la política de contraseñas (p.ej. "exactamente 8 caracteres, primera mayúscula, termina en 2 dígitos") puedes diseñar una máscara precisa y eficiente.
hashes/mask_target.txte10adc3949ba59abbe56e057f20f883e → 123456
En un CTF real no te dicen el tipo de hash. Debes identificarlo, seleccionar el modo correcto en hashcat y adaptar la estrategia. Este ejercicio simula ese escenario con 5 hashes de tipos distintos.
hashid <hash> — lista posibles tipos con modo hashcat sugeridohash-identifier — alternativa interactivahashcat --example-hashes — ver formato de cada modo
$apr1$, $y$, $2a$ te dicen directamente el tipo. Para los hex puro, cuenta los caracteres y consulta la tabla de longitudes.
Hash A (32 chars) → MD5 (-m 0) → contraseña: test
Hash B (40 chars) → SHA1 (-m 100) → contraseña: test
Hash C (64 chars) → SHA-256 (-m 1400)
Hash D ($apr1$) → MD5-APR (-m 1600)
Hash E ($y$) → yescrypt (-m 25600)