GhostAcademy logo GhostAcademy
Práctica de Laboratorio · Ciberseguridad

Descifrado de Hashes
con Hashcat

Instalación · Tipos de ataque · Hashes reales · Optimización · Informes

Kali Linux / Ubuntu MD5 · SHA1 · SHA256 · bcrypt GPU + CPU Nivel: Iniciación
🎯

Introducción y Objetivos

00 / 17

En 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.

Instalar
Configurar
Diccionario
Fuerza bruta
Máscaras
Reglas
Resultados

Al finalizar este laboratorio serás capaz de:

💻

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 / 17

Un hash criptográfico es el resultado de aplicar una función matemática unidireccional a unos datos. Sus propiedades fundamentales son:

¿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.

AlgoritmoLongitudVelocidad (GPU RTX 3080)Estado actual
MD532 hex~50.000 MH/s❌ Obsoleto, no usar
SHA140 hex~17.000 MH/s⚠️ Desaconsejado
SHA25664 hex~8.000 MH/s✅ Aceptable (solo)
SHA512128 hex~2.800 MH/s✅ Aceptable (solo)
bcrypt60 chars~70 KH/s✅✅ Recomendado
Argon2variablemuy 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 / 17
🚨

USO EXCLUSIVAMENTE EN ENTORNOS AUTORIZADOS

Usar Hashcat contra hashes obtenidos sin autorización es un delito en la mayoría de países (en España, Código Penal Art. 197 y siguientes). Este laboratorio usa únicamente hashes generados por nosotros mismos con contraseñas conocidas, con fines exclusivamente educativos.

Los casos de uso legítimos de Hashcat en ciberseguridad son:

📦

Instalar Hashcat

03 / 17

Hashcat viene preinstalado en Kali Linux. Si usas Ubuntu o necesitas reinstalarlo, sigue estos pasos.

1

Crear el directorio de trabajo del laboratorio:

mkdir -p ~/lab-hashcat && cd ~/lab-hashcat
2

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.

3

Verificar la instalación comprobando la versión:

hashcat --version
Salida esperada
v6.2.6

Si ves el número de versión, Hashcat está correctamente instalado. También puedes consultar la ayuda completa con hashcat --help.

4

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ámetroFunción
--forceFuerza la ejecución ignorando advertencias menores (útil en VMs)
--opencl-device-types=1,2Habilita CPU (tipo 1) y GPU (tipo 2) como dispositivos de cómputo
--workload-profile=3Perfil de rendimiento: 1=bajo, 2=medio, 3=alto, 4=máximo
🖥️

Detectar GPU y CPU Disponibles

04 / 17

Antes de atacar, es importante saber con qué hardware contamos. Hashcat usa OpenCL para acceder a las GPUs.

1

Listar todos los dispositivos OpenCL disponibles:

hashcat -I
Salida de ejemplo (con GPU NVIDIA)
OpenCL Platform #1: NVIDIA Corporation
* 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 / 17

El benchmark mide la velocidad real de tu hardware para cada algoritmo. Esto te permite estimar cuánto tardará un ataque antes de lanzarlo.

1

Ejecutar benchmark completo (puede tardar 1-2 minutos):

hashcat -b
Extracto de salida típica
CUDA API (CUDA 11.7)
* 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)
2

Benchmark solo de MD5 (más rápido, para una prueba rápida):

hashcat -b -m 0
⚔️

Modos de Ataque de Hashcat

06 / 17

Hashcat soporta múltiples estrategias de ataque, seleccionables con el flag -a. Cada modo tiene su caso de uso óptimo:

-a 0
Diccionario
Prueba cada palabra de una wordlist. Rápido y efectivo contra contraseñas comunes.
-a 1
Combinación
Combina palabras de dos diccionarios: "palabra1" + "palabra2".
-a 3
Fuerza Bruta
Prueba todas las combinaciones posibles según una máscara de caracteres.
-a 6
Dict + Máscara
Wordlist seguida de un sufijo de fuerza bruta. Ej: "password123!"
-a 7
Máscara + Dict
Un prefijo de fuerza bruta seguido de palabra del diccionario.
-a 9
Asociación
Prueba la contraseña asociada específicamente a cada hash.
🔑

Hashes de Práctica (Ejemplos Reales)

07 / 17

A 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)

HashTipoContraseña
5f4dcc3b5aa765d61d8327deb882cf99MD5password
098f6bcd4621d373cade4e832627b4f6MD5test
827ccb0eea8a706c4c34a16891f84e7bMD512345
e10adc3949ba59abbe56e057f20f883eMD5123456
25f9e794323b453885f5181f1b624d0bMD5123456789
d8578edf8458ce06fbc5bb76a58c5ca4MD5qwerty
5e8048c8049d7b2c4b2af60de89406f8MD5dragon
3858f62230ac3c915f300c664312c11fMD5effortless

Hashes SHA1 (modo -m 100)

HashTipoContraseña
5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8SHA1password
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3SHA1test
7c4a8d09ca3762af61e59520943dc26494f8941bSHA1123456
b1b3773a05c0ed0176787a4f1574ff0075f7521eSHA1warrior

Hashes SHA256 (modo -m 1400)

HashTipoContraseña
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8SHA256password
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92SHA256123456
ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94fSHA256password1

Hashes bcrypt (modo -m 3200)

HashTipoContraseña
$2y$10$OeEMSHMZPEQdA5odHm6NmuM0/YT0hh6G6zm/kPCiXX3KXLB/BXWSbcrypthello
$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igibcryptpassword
💡

¿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 / 17

El 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.

1

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
2

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
FlagValorSignificado
-m 00Tipo de hash: MD5. Cada algoritmo tiene su número en Hashcat.
-a 00Modo 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)
3

Ver el estado en tiempo real: Mientras Hashcat se ejecuta, puedes pulsar s para ver el estado sin interrumpir el proceso.

Pantalla de progreso de Hashcat
Session..........: hashcat
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
4

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 / 17

La 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.

1

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
2

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 / 17

Las 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

?lLetras minúsculas a-z
?uLetras mayúsculas A-Z
?dDígitos 0-9
?sEspeciales !@#$%...
?aTodos los anteriores
?bBytes 0x00-0xff
?1Charset personalizado 1
?2Charset personalizado 2

Ejemplos de máscaras prácticas

1

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
2

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.

3

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
4

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 / 17

Las 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 reglasDescripciónMutaciones
best64.ruleLas 64 mejores reglas para uso general~64
rockyou-30000.ruleDerivado del análisis de rockyou30.000
OneRuleToRuleThemAll.ruleRegla superconjunto (muy popular)~50.000
d3ad0ne.ruleReglas exhaustivas para contraseñas complejas~35.000
1

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.

2

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
ReglaEfecto sobre "password"
:Sin cambio → password
uTodo mayúsculas → PASSWORD
cPrimera mayúscula → Password
$1Añade "1" al final → password1
$2024Añade "2024" → password2024
sa@Sustituye a→@ → p@ssword
so0Sustituye o→0 → passw0rd
c $1Primera mayúscula + añade "1" → Password1
3

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 / 17

El 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

1

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

2

Ataque de diccionario contra hashes SHA256 (-m 1400):

hashcat -m 1400 -a 0 \
  ~/lab-hashcat/hashes_sha256.txt \
  /usr/share/wordlists/rockyou.txt \
  --force
3

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

-mAlgoritmoUso típico
0MD5Aplicaciones web antiguas, bases de datos filtradas
100SHA1Git commits, tokens de aplicación
1400SHA256Aplicaciones modernas sin salting
1700SHA512Sistemas Linux, aplicaciones modernas
1800sha512crypt $6$Contraseñas de usuarios Linux (/etc/shadow)
3200bcrypt $2*$PHP, Laravel, WordPress (por defecto)
400phpassWordPress MD5, Joomla
1000NTLMWindows Active Directory
5500NetNTLMv1Capturas de red Windows (responder)
5600NetNTLMv2Capturas de red Windows (responder)
13100KerberoastTickets TGS de Active Directory
🐢

bcrypt: El Hash Lento

13 / 17

bcrypt 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.

1

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 / 17

La calidad del diccionario es tan importante como la velocidad del hardware. Aquí tienes los más usados en pentesting:

WordlistTamañoContenidoUbicación en Kali
rockyou.txt133 MB (14M passwords)Contraseñas reales de la filtración de RockYou 2009/usr/share/wordlists/rockyou.txt
darkweb2017.txt~100 MBContraseñas de filtraciones recientesSecLists
common.txt4.6 KB (951 entries)Contraseñas más comunes/usr/share/wordlists/dirb/
SecLists~25 GB totalColecció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 / 17

Hashcat guarda automáticamente todas las contraseñas descifradas en el potfile (~/.local/share/hashcat/hashcat.potfile). Esto evita repetir trabajo en sesiones futuras.

1

Ver el contenido del potfile:

cat ~/.local/share/hashcat/hashcat.potfile
Ejemplo de potfile
5f4dcc3b5aa765d61d8327deb882cf99:password
098f6bcd4621d373cade4e832627b4f6:test
827ccb0eea8a706c4c34a16891f84e7b:12345
e10adc3949ba59abbe56e057f20f883e:123456
2

Ver hashes descifrados de un fichero específico (consulta el potfile sin relanzar el ataque):

hashcat -m 0 ~/lab-hashcat/hashes_md5.txt --show
3

Ver hashes que aún no se han descifrado:

hashcat -m 0 ~/lab-hashcat/hashes_md5.txt --left
4

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 / 17

En una auditoría real, necesitas documentar los resultados. Hashcat puede exportar a varios formatos.

1

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
2

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-formatContenido
1Solo el hash
2Solo la contraseña en claro
3hash:contraseña (por defecto)
4hex:contraseña
6hash:hex_contraseña
3

Generar estadísticas del ataque:

hashcat -m 0 ~/lab-hashcat/hashes_md5.txt --status 2>/dev/null
Estadísticas finales
Session.Name.....: hashcat
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

🔴

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.