Introducción y Objetivos
00 / 17En este laboratorio aprenderás a utilizar Hashcat, la herramienta de recuperación de contraseñas por GPU más rápida del mundo. Hashcat es una herramienta fundamental en cualquier auditoría de seguridad: permite comprobar la fortaleza de las contraseñas almacenadas en una organización.
Al finalizar este laboratorio serás capaz de:
- Instalar y verificar Hashcat en Kali Linux / Ubuntu
- Identificar el tipo de hash de un fichero
- Ejecutar los cuatro modos de ataque principales
- Aplicar máscaras y reglas para ataques dirigidos
- Descifrar hashes MD5, SHA1, SHA256 y bcrypt reales
- Leer e interpretar el potfile y generar informes
Entorno recomendado: Kali Linux 2023+ o Ubuntu 22.04/24.04. Todos los comandos funcionan en ambas distribuciones. Si no tienes GPU, Hashcat puede funcionar en modo CPU (-D 1), aunque más lento.
¿Qué es un Hash Criptográfico?
01 / 17Un hash criptográfico es el resultado de aplicar una función matemática unidireccional a unos datos. Sus propiedades fundamentales son:
- Determinista: la misma entrada siempre produce el mismo hash.
- Unidireccional: no es posible obtener la entrada a partir del hash (matemáticamente).
- Longitud fija: independientemente del tamaño de la entrada, el hash tiene siempre el mismo número de caracteres.
- Efecto avalancha: un pequeño cambio en la entrada produce un hash completamente diferente.
¿Por qué se pueden "romper"?
Los sistemas no descifran el hash (eso es matemáticamente imposible con buenos algoritmos). Lo que hacen es calcular el hash de millones de contraseñas candidatas y comparar si el resultado coincide con el hash objetivo. Por eso la velocidad de la GPU es tan importante.
| Algoritmo | Longitud | Velocidad (GPU RTX 3080) | Estado actual |
|---|---|---|---|
MD5 | 32 hex | ~50.000 MH/s | ❌ Obsoleto, no usar |
SHA1 | 40 hex | ~17.000 MH/s | ⚠️ Desaconsejado |
SHA256 | 64 hex | ~8.000 MH/s | ✅ Aceptable (solo) |
SHA512 | 128 hex | ~2.800 MH/s | ✅ Aceptable (solo) |
bcrypt | 60 chars | ~70 KH/s | ✅✅ Recomendado |
Argon2 | variable | muy bajo | ✅✅✅ Mejor opción |
Dato clave: con una GPU moderna, MD5 se puede probar a 50 billones de combinaciones por segundo. Una contraseña de 6 letras minúsculas (~309 millones de combinaciones) se descifraría en menos de 1 milisegundo. Esto justifica por qué las contraseñas débiles son tan peligrosas.
Ética y Legalidad
02 / 17Los casos de uso legítimos de Hashcat en ciberseguridad son:
- Auditorías de contraseñas en la propia organización, con autorización escrita.
- Pruebas de penetración dentro del alcance acordado con el cliente.
- Recuperación de contraseñas de sistemas propios a los que se ha perdido el acceso.
- Investigación y formación en entornos de laboratorio controlados.
Instalar Hashcat
03 / 17Hashcat viene preinstalado en Kali Linux. Si usas Ubuntu o necesitas reinstalarlo, sigue estos pasos.
Crear el directorio de trabajo del laboratorio:
mkdir -p ~/lab-hashcat && cd ~/lab-hashcat
Actualizar repositorios e instalar Hashcat:
sudo apt update && sudo apt install -y hashcat
La flag -y confirma automáticamente la instalación sin requerir intervención manual.
Verificar la instalación comprobando la versión:
hashcat --version
Si ves el número de versión, Hashcat está correctamente instalado. También puedes consultar la ayuda completa con hashcat --help.
Crear el directorio de configuración y el archivo de configuración por defecto:
mkdir -p ~/.hashcat
nano ~/.hashcat/hashcat.conf
Añade este contenido al archivo (guarda con Ctrl+O → Enter → Ctrl+X):
--force
--opencl-device-types=1,2
--workload-profile=3
| Parámetro | Función |
|---|---|
--force | Fuerza la ejecución ignorando advertencias menores (útil en VMs) |
--opencl-device-types=1,2 | Habilita CPU (tipo 1) y GPU (tipo 2) como dispositivos de cómputo |
--workload-profile=3 | Perfil de rendimiento: 1=bajo, 2=medio, 3=alto, 4=máximo |
Detectar GPU y CPU Disponibles
04 / 17Antes de atacar, es importante saber con qué hardware contamos. Hashcat usa OpenCL para acceder a las GPUs.
Listar todos los dispositivos OpenCL disponibles:
hashcat -I
* Device #1: NVIDIA GeForce RTX 3080, 9984/10240 MB allocatable, 68MCU
OpenCL Platform #2: Intel Corporation
* Device #2: Intel Core i7-12700K, 16384 MB allocatable, 20MCU
Si no tienes GPU dedicada (entorno de VM o equipo sin gráfica discreta), Hashcat usará la CPU. Funciona igual pero más lento. Para forzar uso solo de CPU usa: hashcat --opencl-device-types 1
Benchmark de Rendimiento
05 / 17El benchmark mide la velocidad real de tu hardware para cada algoritmo. Esto te permite estimar cuánto tardará un ataque antes de lanzarlo.
Ejecutar benchmark completo (puede tardar 1-2 minutos):
hashcat -b
* Device #1: NVIDIA GeForce RTX 3080, skipped
OpenCL API (OpenCL 3.0) - Platform #1
* Device #1: NVIDIA GeForce RTX 3080, 9984/10240 MB, 68MCU
Benchmark relevant OpenCL kernels:
Speed.#1.........: 50234.1 MH/s (MD5, 98ms)
Speed.#1.........: 17812.4 MH/s (SHA1, 93ms)
Speed.#1.........: 8011.2 MH/s (SHA256, 88ms)
Speed.#1.........: 71.3 kH/s (bcrypt $2*$05, 59ms)
Benchmark solo de MD5 (más rápido, para una prueba rápida):
hashcat -b -m 0
Modos de Ataque de Hashcat
06 / 17Hashcat soporta múltiples estrategias de ataque, seleccionables con el flag -a. Cada modo tiene su caso de uso óptimo:
Hashes de Práctica (Ejemplos Reales)
07 / 17A continuación tienes hashes reales que usaremos durante toda la práctica. Cada uno corresponde a una contraseña conocida que deberás descifrar con Hashcat.
Todos estos hashes han sido generados específicamente para este ejercicio. Puedes verificarlos en crackstation.net o generarlos tú mismo con echo -n "contraseña" | md5sum
Hashes MD5 (modo -m 0)
| Hash | Tipo | Contraseña |
|---|---|---|
| 5f4dcc3b5aa765d61d8327deb882cf99 | MD5 | password |
| 098f6bcd4621d373cade4e832627b4f6 | MD5 | test |
| 827ccb0eea8a706c4c34a16891f84e7b | MD5 | 12345 |
| e10adc3949ba59abbe56e057f20f883e | MD5 | 123456 |
| 25f9e794323b453885f5181f1b624d0b | MD5 | 123456789 |
| d8578edf8458ce06fbc5bb76a58c5ca4 | MD5 | qwerty |
| 5e8048c8049d7b2c4b2af60de89406f8 | MD5 | dragon |
| 3858f62230ac3c915f300c664312c11f | MD5 | effortless |
Hashes SHA1 (modo -m 100)
| Hash | Tipo | Contraseña |
|---|---|---|
| 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 | SHA1 | password |
| a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 | SHA1 | test |
| 7c4a8d09ca3762af61e59520943dc26494f8941b | SHA1 | 123456 |
| b1b3773a05c0ed0176787a4f1574ff0075f7521e | SHA1 | warrior |
Hashes SHA256 (modo -m 1400)
| Hash | Tipo | Contraseña |
|---|---|---|
| 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 | SHA256 | password |
| 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 | SHA256 | 123456 |
| ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f | SHA256 | password1 |
Hashes bcrypt (modo -m 3200)
| Hash | Tipo | Contraseña |
|---|---|---|
| $2y$10$OeEMSHMZPEQdA5odHm6NmuM0/YT0hh6G6zm/kPCiXX3KXLB/BXWS | bcrypt | hello |
| $2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi | bcrypt | password |
¿Cómo identificar el tipo de hash? Puedes usar hashid o hash-identifier (incluidas en Kali) para averiguar qué algoritmo generó un hash desconocido:
hashid '5f4dcc3b5aa765d61d8327deb882cf99'
hash-identifier
Preparar los ficheros de hashes
Crea los ficheros necesarios para los ejercicios siguientes:
# Crear fichero con hashes MD5
cat > ~/lab-hashcat/hashes_md5.txt << EOF
5f4dcc3b5aa765d61d8327deb882cf99
098f6bcd4621d373cade4e832627b4f6
827ccb0eea8a706c4c34a16891f84e7b
e10adc3949ba59abbe56e057f20f883e
25f9e794323b453885f5181f1b624d0b
d8578edf8458ce06fbc5bb76a58c5ca4
5e8048c8049d7b2c4b2af60de89406f8
3858f62230ac3c915f300c664312c11f
EOF
# Crear fichero con hashes SHA1
cat > ~/lab-hashcat/hashes_sha1.txt << EOF
5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
7c4a8d09ca3762af61e59520943dc26494f8941b
b1b3773a05c0ed0176787a4f1574ff0075f7521e
EOF
# Crear fichero con hashes SHA256
cat > ~/lab-hashcat/hashes_sha256.txt << EOF
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f
EOF
# Crear fichero con hashes bcrypt
cat > ~/lab-hashcat/hashes_bcrypt.txt << EOF
\$2y\$10\$OeEMSHMZPEQdA5odHm6NmuM0/YT0hh6G6zm/kPCiXX3KXLB/BXWS
\$2y\$10\$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi
EOF
En los hashes bcrypt escritos en shell, el símbolo $ debe escaparse con \$ dentro de comillas dobles, o usar comillas simples. En el fichero guardado los \$ se convertirán en $ correctamente.
Ataque con Diccionario (-a 0)
08 / 17El ataque de diccionario es el más efectivo en la práctica. Prueba cada palabra de una lista contra todos los hashes del fichero objetivo. El 60-70% de las contraseñas de bases de datos filtradas se descifran en minutos con un buen diccionario.
Verificar que rockyou.txt está disponible:
ls /usr/share/wordlists/rockyou.txt* 2>/dev/null || \
ls /usr/share/wordlists/rockyou.txt.gz
En Kali, rockyou puede estar comprimido. Descomprímelo si es necesario:
sudo gunzip /usr/share/wordlists/rockyou.txt.gz
Ataque de diccionario contra hashes MD5 usando rockyou.txt:
hashcat -m 0 -a 0 \
~/lab-hashcat/hashes_md5.txt \
/usr/share/wordlists/rockyou.txt \
--force
| Flag | Valor | Significado |
|---|---|---|
-m 0 | 0 | Tipo de hash: MD5. Cada algoritmo tiene su número en Hashcat. |
-a 0 | 0 | Modo de ataque: Diccionario (wordlist) |
hashes_md5.txt | — | Fichero con los hashes objetivo (uno por línea) |
rockyou.txt | — | Wordlist con contraseñas candidatas |
--force | — | Ignora advertencias (necesario en muchas VMs) |
Ver el estado en tiempo real: Mientras Hashcat se ejecuta, puedes pulsar s para ver el estado sin interrumpir el proceso.
Status...........: Running
Hash.Mode........: 0 (MD5)
Hash.Target......: hashes_md5.txt
Time.Started.....: Mon Jan 01 10:00:00 2025
Time.Estimated...: 0 secs
Speed.#1.........: 412.3 MH/s
Recovered........: 6/8 (75.00%)
Progress.........: 14344385/14344385 (100.00%)
Rejected.........: 0/14344385
5f4dcc3b5aa765d61d8327deb882cf99:password
098f6bcd4621d373cade4e832627b4f6:test
827ccb0eea8a706c4c34a16891f84e7b:12345
e10adc3949ba59abbe56e057f20f883e:123456
Ver los resultados descifrados tras finalizar:
hashcat -m 0 ~/lab-hashcat/hashes_md5.txt --show
Controles de teclado durante la ejecución:
- s → mostrar estado actual
- p → pausar / reanudar
- q → salir (se guarda el punto de restauración)
- r → restaurar sesión guardada:
hashcat --restore
Ataque de Fuerza Bruta (-a 3)
09 / 17La fuerza bruta prueba todas las combinaciones posibles de caracteres. Es exhaustiva pero costosa en tiempo según la longitud y el juego de caracteres. Se usa cuando no hay diccionario adecuado o se conoce el patrón de la contraseña.
Fuerza bruta sobre contraseñas de exactamente 4 caracteres (letras + números + especiales):
hashcat -m 0 -a 3 \
~/lab-hashcat/hashes_md5.txt \
?a?a?a?a \
--force
Fuerza bruta sobre contraseñas de 1 a 6 caracteres numéricos (PINs):
hashcat -m 0 -a 3 \
~/lab-hashcat/hashes_md5.txt \
?d?d?d?d?d?d \
--increment --increment-min 1 \
--force
La flag --increment hace que Hashcat pruebe desde 1 carácter hasta el máximo definido en la máscara.
Cuidado con la longitud: el tiempo de fuerza bruta crece exponencialmente con la longitud. ?a?a?a?a?a?a?a?a (8 caracteres, todo el juego) puede tardar años incluso con GPU.
- 4 chars
?a→ ~130M combinaciones → segundos - 6 chars
?a→ ~735.000M combinaciones → minutos/horas - 8 chars
?a→ ~6.700.000.000M → inviable
Máscaras Inteligentes
10 / 17Las máscaras permiten definir exactamente qué caracteres pueden aparecer en cada posición. Son la clave para hacer la fuerza bruta eficiente cuando conocemos el patrón de las contraseñas.
Caracteres de máscara disponibles
Ejemplos de máscaras prácticas
Patrón "Mayúscula + 5 minúsculas + 2 dígitos" (muy común en contraseñas corporativas):
hashcat -m 0 -a 3 \
~/lab-hashcat/hashes_md5.txt \
?u?l?l?l?l?l?d?d \
--force
Charset personalizado: solo vocales minúsculas (para contraseñas con palabras en ciertos idiomas):
hashcat -m 0 -a 3 \
~/lab-hashcat/hashes_md5.txt \
-1 aeiou \
?1?1?1?1?1 \
--force
Con -1 aeiou defines el charset personalizado ?1. En este ejemplo buscamos contraseñas de 5 caracteres formadas solo por vocales.
Patrón: 4 letras + 4 números (formato típico de contraseñas tipo "word2024"):
hashcat -m 0 -a 3 \
~/lab-hashcat/hashes_md5.txt \
?l?l?l?l?d?d?d?d \
--force
Usar un fichero de máscaras (.hcmask) para probar varios patrones seguidos:
# Crear el fichero de máscaras
cat > ~/lab-hashcat/patrones.hcmask << 'EOF'
?u?l?l?l?l?d?d
?l?l?l?l?d?d?d?d
?u?l?l?l?d?d?d?d
?d?d?d?d?d?d
?l?l?l?l?l?l?d?d
EOF
# Lanzar Hashcat con el fichero de máscaras
hashcat -m 0 -a 3 \
~/lab-hashcat/hashes_md5.txt \
~/lab-hashcat/patrones.hcmask \
--force
Ataque con Reglas (-r)
11 / 17Las reglas transforman las palabras del diccionario aplicando mutaciones: mayúsculas, sustituciones, añadir prefijos/sufijos, invertir, etc. Son la técnica más avanzada y efectiva porque imitan cómo los humanos modifican contraseñas simples.
Reglas incluidas en Kali / Hashcat
| Fichero de reglas | Descripción | Mutaciones |
|---|---|---|
best64.rule | Las 64 mejores reglas para uso general | ~64 |
rockyou-30000.rule | Derivado del análisis de rockyou | 30.000 |
OneRuleToRuleThemAll.rule | Regla superconjunto (muy popular) | ~50.000 |
d3ad0ne.rule | Reglas exhaustivas para contraseñas complejas | ~35.000 |
Ataque con rockyou + reglas best64:
hashcat -m 0 -a 0 \
~/lab-hashcat/hashes_md5.txt \
/usr/share/wordlists/rockyou.txt \
-r /usr/share/hashcat/rules/best64.rule \
--force
Con best64, cada palabra de rockyou (~14M) genera 64 variantes → ~900M candidatas en una sola pasada.
Crear tus propias reglas para patrones específicos. Crea el fichero:
cat > ~/lab-hashcat/mis_reglas.rule << 'EOF'
:
u
c
$1
$123
$!
^1
sa@
so0
se3
si1
$1$
$2024
$2025
c $1
c $123
EOF
| Regla | Efecto sobre "password" |
|---|---|
: | Sin cambio → password |
u | Todo mayúsculas → PASSWORD |
c | Primera mayúscula → Password |
$1 | Añade "1" al final → password1 |
$2024 | Añade "2024" → password2024 |
sa@ | Sustituye a→@ → p@ssword |
so0 | Sustituye o→0 → passw0rd |
c $1 | Primera mayúscula + añade "1" → Password1 |
Lanzar ataque con tus reglas personalizadas:
hashcat -m 0 -a 0 \
~/lab-hashcat/hashes_md5.txt \
/usr/share/wordlists/rockyou.txt \
-r ~/lab-hashcat/mis_reglas.rule \
--force
Descifrar SHA1 y SHA256
12 / 17El proceso es idéntico al de MD5, solo cambia el número de modo (-m). Hashcat soporta más de 350 algoritmos; aquí trabajamos con los más comunes en bases de datos de aplicaciones web.
Atacar hashes SHA1
Ataque de diccionario contra hashes SHA1 (-m 100):
hashcat -m 100 -a 0 \
~/lab-hashcat/hashes_sha1.txt \
/usr/share/wordlists/rockyou.txt \
--force
Atacar hashes SHA256
Ataque de diccionario contra hashes SHA256 (-m 1400):
hashcat -m 1400 -a 0 \
~/lab-hashcat/hashes_sha256.txt \
/usr/share/wordlists/rockyou.txt \
--force
Combinar diccionario + reglas para SHA256 (el ejemplo más realista de auditoría):
hashcat -m 1400 -a 0 \
~/lab-hashcat/hashes_sha256.txt \
/usr/share/wordlists/rockyou.txt \
-r /usr/share/hashcat/rules/best64.rule \
--force
Referencia rápida: números de modo (-m) más comunes
| -m | Algoritmo | Uso típico |
|---|---|---|
0 | MD5 | Aplicaciones web antiguas, bases de datos filtradas |
100 | SHA1 | Git commits, tokens de aplicación |
1400 | SHA256 | Aplicaciones modernas sin salting |
1700 | SHA512 | Sistemas Linux, aplicaciones modernas |
1800 | sha512crypt $6$ | Contraseñas de usuarios Linux (/etc/shadow) |
3200 | bcrypt $2*$ | PHP, Laravel, WordPress (por defecto) |
400 | phpass | WordPress MD5, Joomla |
1000 | NTLM | Windows Active Directory |
5500 | NetNTLMv1 | Capturas de red Windows (responder) |
5600 | NetNTLMv2 | Capturas de red Windows (responder) |
13100 | Kerberoast | Tickets TGS de Active Directory |
bcrypt: El Hash Lento
13 / 17bcrypt está diseñado intencionalmente para ser lento: incorpora un factor de coste (cost factor) que determina cuántas rondas de hashing se aplican. Esto hace que descifrar por fuerza bruta sea prácticamente inviable con contraseñas medianamente buenas.
El formato de bcrypt es: $2y$10$salt22chars... donde el 10 es el cost factor. Factor 10 = 2¹⁰ = 1024 iteraciones. Factor 12 = 4096 iteraciones. A mayor factor, más seguro y más lento de descifrar.
Con factor 10 una GPU moderna solo puede probar ~70.000 hashes/s, frente a los 50.000 millones/s de MD5.
Ataque de diccionario contra bcrypt (solo es viable con contraseñas muy cortas/comunes):
hashcat -m 3200 -a 0 \
~/lab-hashcat/hashes_bcrypt.txt \
/usr/share/wordlists/rockyou.txt \
--force
Con los hashes de práctica (hello y password), este ataque debería tener éxito ya que están en rockyou.txt. Sin embargo, notarás que es mucho más lento que con MD5.
Conclusión práctica: bcrypt con factor ≥ 12 y una contraseña de 12+ caracteres aleatorios es prácticamente inrompible con la tecnología actual. Esta es la razón por la que frameworks como Laravel, Django o ASP.NET usan bcrypt o Argon2 por defecto.
Wordlists y Diccionarios Útiles
14 / 17La calidad del diccionario es tan importante como la velocidad del hardware. Aquí tienes los más usados en pentesting:
| Wordlist | Tamaño | Contenido | Ubicación en Kali |
|---|---|---|---|
rockyou.txt | 133 MB (14M passwords) | Contraseñas reales de la filtración de RockYou 2009 | /usr/share/wordlists/rockyou.txt |
darkweb2017.txt | ~100 MB | Contraseñas de filtraciones recientes | SecLists |
common.txt | 4.6 KB (951 entries) | Contraseñas más comunes | /usr/share/wordlists/dirb/ |
SecLists | ~25 GB total | Colección enorme: passwords, usernames, subdomains, etc. | /usr/share/seclists/ |
Crear tu propio diccionario con CeWL
CeWL (Custom Word List generator) genera un diccionario personalizado extrayendo palabras de un sitio web. Es muy útil cuando el objetivo tiene contraseñas relacionadas con su empresa o temática.
# Generar wordlist a partir de un sitio web (profundidad 2, mínimo 6 chars)
cewl https://ejemplo.com -d 2 -m 6 -w ~/lab-hashcat/wordlist_custom.txt
# Ver cuántas palabras generó
wc -l ~/lab-hashcat/wordlist_custom.txt
# Usar el wordlist personalizado
hashcat -m 0 -a 0 \
~/lab-hashcat/hashes_md5.txt \
~/lab-hashcat/wordlist_custom.txt \
-r /usr/share/hashcat/rules/best64.rule \
--force
Potfile: Base de Datos de Contraseñas Descifradas
15 / 17Hashcat guarda automáticamente todas las contraseñas descifradas en el potfile (~/.local/share/hashcat/hashcat.potfile). Esto evita repetir trabajo en sesiones futuras.
Ver el contenido del potfile:
cat ~/.local/share/hashcat/hashcat.potfile
098f6bcd4621d373cade4e832627b4f6:test
827ccb0eea8a706c4c34a16891f84e7b:12345
e10adc3949ba59abbe56e057f20f883e:123456
Ver hashes descifrados de un fichero específico (consulta el potfile sin relanzar el ataque):
hashcat -m 0 ~/lab-hashcat/hashes_md5.txt --show
Ver hashes que aún no se han descifrado:
hashcat -m 0 ~/lab-hashcat/hashes_md5.txt --left
Limpiar el potfile (úsalo si quieres repetir los ejercicios desde cero):
hashcat -m 0 ~/lab-hashcat/hashes_md5.txt --potfile-disable
La flag --potfile-disable hace que Hashcat ignore el potfile en esa ejecución (ni lee ni escribe). Para borrar el potfile completamente: rm ~/.local/share/hashcat/hashcat.potfile
Generar Informe de Resultados
16 / 17En una auditoría real, necesitas documentar los resultados. Hashcat puede exportar a varios formatos.
Exportar resultados en formato legible (hash:contraseña):
hashcat -m 0 \
~/lab-hashcat/hashes_md5.txt \
--show \
--outfile ~/lab-hashcat/resultados.txt
cat ~/lab-hashcat/resultados.txt
Exportar con metadatos (formato 2 = hash:plain):
hashcat -m 0 \
~/lab-hashcat/hashes_md5.txt \
--show \
--outfile-format 2 \
--outfile ~/lab-hashcat/informe_completo.txt
cat ~/lab-hashcat/informe_completo.txt
| --outfile-format | Contenido |
|---|---|
1 | Solo el hash |
2 | Solo la contraseña en claro |
3 | hash:contraseña (por defecto) |
4 | hex:contraseña |
6 | hash:hex_contraseña |
Generar estadísticas del ataque:
hashcat -m 0 ~/lab-hashcat/hashes_md5.txt --status 2>/dev/null
Status...........: Exhausted
Hash.Mode........: 0 (MD5)
Hash.Target......: hashes_md5.txt
Recovered........: 8/8 (100.00%)
Progress.........: 14344385/14344385 (100.00%)
Speed.#1.........: 412.3 MH/s
Resumen y Hoja de Referencia Rápida
17 / 17¡Laboratorio completado! Has aprendido a usar Hashcat para descifrar hashes MD5, SHA1, SHA256 y bcrypt usando diccionarios, fuerza bruta, máscaras inteligentes y reglas de transformación.
Comandos esenciales de referencia
───────────────────────────────────────────────────────
HASHCAT – CHEATSHEET RÁPIDO
───────────────────────────────────────────────────────
# Verificar versión
hashcat --version
# Listar dispositivos disponibles
hashcat -I
# Benchmark de rendimiento (todos los algoritmos)
hashcat -b
# Identificar tipo de hash
hashid 'hash_aqui'
───────────────────────────────────────────────────────
# ATAQUE -a 0: Diccionario
hashcat -m 0 -a 0 hashes.txt wordlist.txt
# ATAQUE -a 0: Diccionario + Reglas
hashcat -m 0 -a 0 hashes.txt wordlist.txt -r rules/best64.rule
# ATAQUE -a 3: Fuerza bruta con máscara
hashcat -m 0 -a 3 hashes.txt ?a?a?a?a?a?a
# ATAQUE -a 3: Fuerza bruta incremental
hashcat -m 0 -a 3 hashes.txt ?a?a?a?a?a?a --increment
# ATAQUE -a 6: Diccionario + sufijo máscara
hashcat -m 0 -a 6 hashes.txt wordlist.txt ?d?d?d?d
───────────────────────────────────────────────────────
# Ver resultados descifrados
hashcat -m 0 hashes.txt --show
# Ver hashes pendientes
hashcat -m 0 hashes.txt --left
# Exportar resultados a fichero
hashcat -m 0 hashes.txt --show --outfile resultados.txt
# Restaurar sesión interrumpida
hashcat --restore
───────────────────────────────────────────────────────
MÁSCARAS DE REFERENCIA
───────────────────────────────────────────────────────
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?a = ?l?u?d?s (todos)
───────────────────────────────────────────────────────
Lo que has aprendido en este laboratorio
- ✅ Instalar y verificar Hashcat en Linux
- ✅ Configurar el soporte de GPU/CPU mediante OpenCL
- ✅ Ejecutar benchmarks para medir el rendimiento del hardware
- ✅ Identificar el tipo de hash con
hashid - ✅ Crear ficheros de hashes para prácticas
- ✅ Lanzar ataques de diccionario con rockyou.txt
- ✅ Ejecutar fuerza bruta controlada con máscaras
- ✅ Usar y crear reglas de transformación personalizadas
- ✅ Descifrar MD5, SHA1, SHA256 y bcrypt
- ✅ Leer el potfile y exportar resultados
Recuerda siempre: las técnicas aprendidas en este laboratorio solo deben aplicarse en sistemas propios o con autorización explícita por escrito. El uso no autorizado de herramientas de recuperación de contraseñas es un delito tipificado en el Código Penal.