Sniffing out a Foothold — LLMNR/NBT-NS Poisoning
LLMNR/NBT-NS Poisoning
LLMNR (Link-Local Multicast Name Resolution) y NBT-NS (NetBIOS Name Service) son protocolos de resolución de nombres que Windows usa como respaldo cuando una consulta DNS normal falla — por ejemplo, cuando un usuario escribe mal el nombre de un recurso compartido, o cuando una aplicación intenta resolver un nombre que no existe en DNS. En vez de fallar silenciosamente, el host hace un broadcast/multicast a toda la red local preguntando "¿alguien sabe la IP de este nombre?".
El problema: cualquier host de la red puede responder a esa consulta, sin ninguna autenticación ni verificación. Si un atacante responde afirmativamente (haciéndose pasar por el recurso solicitado), la víctima intentará autenticarse contra el host del atacante — enviando su hash NTLMv2 como parte del proceso de autenticación NTLM. Ese hash puede crackearse offline o reenviarse en un ataque de relay (ver smb.md, sección de explotación adicional, para NTLM Relay).
Este es, en la práctica, uno de los vectores de compromiso inicial más comunes y efectivos en redes Windows/Active Directory: no requiere ninguna vulnerabilidad de software, solo el comportamiento por defecto de estos protocolos legacy.
Desde Linux — Responder
- Repositorio: https://github.com/lgandx/Responder
Levantar Responder en la interfaz de red
❯ sudo responder -I ens224-I: interfaz de red en la que escuchar y envenenar. Confirmar la interfaz correcta conip aantes de lanzar (envenenar la interfaz equivocada no captura nada del segmento objetivo).
Modo análisis — escuchar sin envenenar (pasivo/seguro)
❯ sudo responder -I ens224 -AEl flag -A activa el modo análisis: Responder escucha y registra las solicitudes LLMNR/NBT-NS/MDNS que observa en la red, pero no responde ni envenena activamente. Es la forma correcta de hacer reconocimiento pasivo inicial:
- Confirma que el protocolo está efectivamente en uso en la red (si no se ve tráfico LLMNR/NBT-NS en modo análisis, envenenar no servirá de nada).
- No genera ningún efecto secundario sobre los hosts de la red — útil en fases tempranas de un engagement donde se busca minimizar el ruido, o cuando el alcance aún no autoriza técnicas activas de intercepción.
Envenenamiento activo — captura de hashes
Sin el flag -A, Responder responde activamente a las consultas, forzando a las víctimas a autenticarse contra el atacante:
❯ sudo responder -I ens224Los hashes NTLMv2 capturados aparecen en pantalla en tiempo real y se guardan automáticamente en /usr/share/responder/logs/, organizados por tipo de protocolo (SMB, HTTP, MSSQL, etc.) y por IP de origen.
Opciones adicionales útiles de Responder
❯ sudo responder -I ens224 -wrf-w: habilita el servidor WPAD (Web Proxy Auto-Discovery), capturando también hosts que buscan configuración de proxy automática — un vector de envenenamiento adicional más allá de LLMNR/NBT-NS puro.-r: habilita respuestas a consultas NetBIOS del tipo "workstation" (además de las de servicio de archivos por defecto), ampliando la superficie de captura.-f: intenta hacer fingerprinting del sistema operativo de cada host que envía una consulta.
❯ sudo responder -I ens224 --lm--lm: fuerza también la captura del hash LM (más débil y fácil de crackear que NTLMv2) cuando el cliente lo soporte — irrelevante contra Windows moderno (que no envía LM por defecto), pero útil contra sistemas legacy.
Crackear el hash capturado
❯ hashcat -m 5600 jsmith_ntlmv2 /usr/share/wordlists/rockyou.txt- El modo
5600de hashcat corresponde específicamente a NTLMv2. Si el crackeo tiene éxito, se obtienen credenciales de dominio válidas en texto plano — utilizables directamente para autenticación normal (a diferencia de un hash NTLM simple, que solo sirve para pass-the-hash).
Si rockyou.txt no da resultado, ampliar con reglas de mutación (mayúsculas, sufijos numéricos/año, típico de políticas corporativas):
❯ hashcat -m 5600 jsmith_ntlmv2 /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.ruleCuando el crackeo falla: NTLM Relay como alternativa
Si el hash no se crackea, no está todo perdido: si el objetivo (u otro host de la red) tiene SMB signing deshabilitado, se puede reenviar la autenticación capturada en tiempo real en vez de crackearla, obteniendo acceso sin conocer la contraseña — ver la sección de "Relay de autenticación NTLM con ntlmrelayx" en smb.md para el flujo completo de esta técnica complementaria.
Desde Windows — Inveigh
Alternativa nativa de Windows a Responder, útil en escenarios de post-explotación donde ya se tiene una sesión en un host Windows dentro de la red objetivo (sin necesidad de pivotar a una máquina Linux/Kali para el envenenamiento).
- Inveigh.ps1 — versión PowerShell.
- InveighZero (C#) — versión C# con consola interactiva, generalmente más rápida y con más funciones que la versión PowerShell.
Ver parámetros disponibles
Import-Module .\Inveigh.ps1
(Get-Command Invoke-Inveigh).ParametersLanzar Inveigh con captura LLMNR y NBNS
Invoke-Inveigh Y -NBNS Y -ConsoleOutput Y -FileOutput YYtras el nombre del comando habilita la captura LLMNR (parámetro posicional);-NBNS Yhabilita adicionalmente NBT-NS.-ConsoleOutput Y -FileOutput Y: muestra los hashes capturados en la consola en tiempo real y los guarda en disco simultáneamente.
Opciones adicionales relevantes:
Invoke-Inveigh Y -NBNS Y -HTTP Y -Proxy Y -ConsoleOutput Y -FileOutput Y-HTTP Y: habilita también el listener HTTP (captura NTLM sobre HTTP, no solo SMB).-Proxy Y: habilita el envenenamiento WPAD, equivalente al-wde Responder.
Versión C# (InveighZero)
.\Inveigh.exe- La versión C# corre como un ejecutable independiente con consola interactiva propia, generalmente preferida en operaciones reales por su menor huella de PowerShell (relevante si hay Script Block Logging/AMSI activo monitoreando ejecución de PowerShell).
Comandos interactivos dentro de Inveigh C#
GET NTLMV2 # ver hashes NTLMv2 capturados
GET NTLMV2UNIQUE # un hash por usuario (deduplica capturas repetidas del mismo usuario)
GET NTLMV2USERNAMES # usuarios y IPs de origen observados
GET CLEARTEXT # credenciales en texto claro (capturadas vía HTTP Basic Auth si el listener HTTP está activo)
STOP # detener InveighExportar hashes capturados para crackear
Una vez detenido Inveigh, los hashes quedan en los archivos de log correspondientes (ubicación configurable, por defecto en el directorio de ejecución) — transferirlos a Kali y crackearlos con la misma sintaxis de hashcat mostrada en la sección de Responder.
Remediación
Deshabilitar NBT-NS vía PowerShell
$regkey = "HKLM:SYSTEM\CurrentControlSet\services\NetBT\Parameters\Interfaces"
Get-ChildItem $regkey | foreach { Set-ItemProperty -Path "$regkey\$($_.pschildname)" -Name NetbiosOptions -Value 2 -Verbose }- El valor
2deshabilita NBT-NS en todas las interfaces de red del host (0= habilitado por DHCP,1= habilitado siempre,2= deshabilitado siempre). - Aplicar este cambio vía GPO a nivel de dominio es más eficiente que host por host — buscar la plantilla administrativa correspondiente o desplegar el cambio de registro vía Group Policy Preferences.
Deshabilitar LLMNR vía GPO
Computer Configuration → Administrative Templates → Network → DNS Client → Turn Off Multicast Name Resolution → EnabledMitigaciones complementarias (cuando deshabilitar por completo no es viable)
- SMB Signing obligatorio: aunque no evita la captura del hash, sí evita que ese hash pueda reenviarse en un ataque de NTLM Relay — mitiga el impacto más crítico incluso si LLMNR/NBT-NS siguen activos.
- Filtrado de red por VLAN/segmentación: LLMNR/NBT-NS son protocolos de alcance local (broadcast/multicast dentro del mismo segmento de red) — segmentar la red limita el radio de un envenenamiento exitoso a un solo segmento en vez de toda la red corporativa.
- Políticas de contraseña robustas: dado que el ataque en última instancia depende de poder crackear el hash NTLMv2 capturado offline, contraseñas suficientemente largas/complejas hacen inviable el crackeo incluso si el hash se captura exitosamente.
- Monitoreo de tráfico LLMNR/NBT-NS anómalo: un volumen inusual de tráfico de resolución de nombres hacia un único host de la red (el atacante respondiendo a todo) es una señal detectable por soluciones de monitoreo de red — vale la pena correlacionar esto en el reporte como recomendación de detección, además de la de prevención.