LLMNR/NBT-NS Poisoning - from Windows
Last updated
Last updated
El envenenamiento de LLMNR y NBT-NS también es posible desde un host Windows. En la sección anterior, utilizamos Responder para capturar hashes. En esta sección, exploraremos la herramienta e intentaremos capturar otro conjunto de credenciales.
Si utilizamos un host Windows como equipo de ataque, nuestro cliente nos proporciona un equipo Windows para realizar pruebas, o si accedemos a un host Windows como administrador local mediante otro método de ataque y queremos ampliar nuestro acceso, la herramienta funciona de forma similar a Responder, pero está escrita en PowerShell y C#. Inveigh puede escuchar IPv4 e IPv6, así como otros protocolos, como LLMNR
DNS, mDNS
NBNS DHCPv6
, ICMPv6 HTTP
, HTTPS, SMB
LDAP WebDAV
y autenticación de proxy. La herramienta está disponible en el C:\Tools
directorio del host de ataque Windows proporcionado.
Podemos comenzar con la versión de PowerShell de la siguiente manera y luego enumerar todos los parámetros posibles. Existe una que incluye todos los parámetros e instrucciones de uso.
Iniciemos Inveigh con la suplantación de LLMNR y NBNS, y la salida a la consola y la escritura en un archivo. Dejaremos el resto de los valores predeterminados, que pueden verse .
Podemos ver que inmediatamente empezamos a recibir solicitudes LLMNR y mDNS. La siguiente animación muestra la herramienta en acción.
La versión de PowerShell de Inveigh es la original y ya no se actualiza. El autor de la herramienta mantiene la versión en C#, que combina el código original de la PoC en C# y una adaptación a C# de la mayor parte del código de la versión de PowerShell. Antes de poder usar la versión en C# de la herramienta, debemos compilar el ejecutable. Para ahorrar tiempo, hemos incluido una copia de la versión de PowerShell y del ejecutable compilado de la herramienta en la C:\Tools
carpeta del host de destino del laboratorio. Sin embargo, conviene realizar el ejercicio (y la práctica recomendada) de compilarlo usted mismo con Visual Studio.
Sigamos adelante y ejecutemos la versión C# con los valores predeterminados y comencemos a capturar hashes.
Como podemos ver, la herramienta se inicia y muestra qué opciones están habilitadas por defecto y cuáles no. Las opciones con un [+]
son predeterminadas y están habilitadas por defecto, mientras que las que tienen un [ ]
delante están deshabilitadas. La salida de la consola también muestra qué opciones están deshabilitadas y, por lo tanto, no se envían respuestas (mDNS en el ejemplo anterior). También podemos ver el mensaje Press ESC to enter/exit interactive console
, que resulta muy útil al ejecutar la herramienta. La consola nos da acceso a las credenciales/hashes capturados, nos permite detener Inveigh y mucho más.
Podemos pulsar la esc
tecla para entrar a la consola mientras Inveigh esté en ejecución.
Después de escribir HELP
y pulsar enter, se nos presentan varias opciones.
Podemos ver rápidamente hashes capturados únicos escribiendo GET NTLMV2UNIQUE
.
Podemos escribir GET NTLMV2USERNAMES
y ver qué nombres de usuario hemos recopilado. Esto es útil si queremos una lista de usuarios para realizar una enumeración adicional y ver cuáles vale la pena intentar descifrar sin conexión con Hashcat.
Comencemos Inveigh y luego interactuemos un poco con la salida para ponerlo todo junto.
Hay varias maneras de mitigar este ataque. Para garantizar que estos ataques de suplantación de identidad no sean posibles, podemos deshabilitar LLMNR y NBT-NS. Como precaución, siempre conviene probar lentamente y con cuidado un cambio significativo como este en su entorno antes de implementarlo por completo. Como expertos en pruebas de penetración, podemos recomendar estas medidas de remediación, pero debemos comunicar claramente a nuestros clientes que deben realizar pruebas exhaustivas de estos cambios para garantizar que la deshabilitación de ambos protocolos no afecte negativamente a la red.
Podemos desactivar LLMNR en la Política de grupo yendo a Configuración del equipo --> Plantillas administrativas --> Red --> Cliente DNS y habilitando "Desactivar la resolución de nombres de multidifusión".
NBT-NS no se puede deshabilitar mediante la directiva de grupo, sino que debe deshabilitarse localmente en cada host. Para ello, abra Network and Sharing Center
[en] Control Panel
, haga clic en [en Change adapter settings
], haga clic con el botón derecho en el adaptador para ver sus propiedades, seleccione [en] Internet Protocol Version 4 (TCP/IPv4)
y haga clic en el Properties
botón [en], luego haga clic en [en ] Advanced
y seleccione la WINS
pestaña [en] y, finalmente, seleccione [en] Disable NetBIOS over TCP/IP
.
Si bien no es posible deshabilitar NBT-NS directamente a través de GPO, podemos crear un script de PowerShell en Configuración del equipo --> Configuración de Windows --> Script (Inicio/Apagado) --> Inicio con algo como lo siguiente:
En el Editor de directivas de grupo local, deberemos hacer doble clic en [Nombre del grupo] Startup
, seleccionar la PowerShell Scripts
pestaña y seleccionar "Para esta GPO, ejecutar scripts en el siguiente orden" para [Nombre del grupo] Run Windows PowerShell scripts first
y, a continuación, hacer clic en [ Add
Nombre del grupo] y seleccionar el script. Para que estos cambios se apliquen, tendremos que reiniciar el sistema de destino o el adaptador de red.
Para enviar esto a todos los hosts de un dominio, podríamos crear un GPO usando Group Policy Management
el controlador de dominio y alojar el script en el recurso compartido SYSVOL en la carpeta de scripts y luego llamarlo a través de su ruta UNC como:
\inlanefreight.local\SYSVOL\INLANEFREIGHT.LOCAL\scripts
Una vez que se aplica el GPO a unidades organizativas específicas y se reinician esos hosts, el script se ejecutará en el próximo reinicio y deshabilitará NBT-NS, siempre que el script aún exista en el recurso compartido SYSVOL y el host pueda acceder a él a través de la red.
Otras medidas de mitigación incluyen el filtrado del tráfico de red para bloquear el tráfico LLMNR/NetBIOS y la habilitación de la firma SMB para prevenir ataques de retransmisión NTLM. Los sistemas de detección y prevención de intrusiones en la red también pueden utilizarse para mitigar esta actividad, mientras que la segmentación de la red permite aislar los hosts que requieren tener LLMNR o NetBIOS habilitados para funcionar correctamente.
Mitre ATT&CK enumera esta técnica como , Adversary-in-the-Middle: LLMNR/NBT-NS Poisoning and SMB Relay
.
No siempre es posible deshabilitar LLMNR y NetBIOS, por lo que necesitamos formas de detectar este tipo de ataque. Una forma de hacerlo es inyectando solicitudes LLMNR y NBT-NS para hosts inexistentes en diferentes subredes y alertando si alguna de las respuestas recibe respuestas que indiquen que un atacante está falsificando las respuestas de resolución de nombres. Esta explica este método con más detalle.
Además, se puede monitorizar el tráfico de los hosts en los puertos UDP 5355 y 137, así como los ID de evento y Finalmente, se puede monitorizar la clave de registro HKLM\Software\Policies\Microsoft\Windows NT\DNSClient
para detectar cambios en el EnableMulticast
valor DWORD. Un valor de 0
significaría que LLMNR está deshabilitado.