5353/UDP Multicast DNS (mDNS) y DNS-SD

Reading time: 8 minutes

tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Información Básica

Multicast DNS (mDNS) permite la resolución de nombres y el descubrimiento de servicios similar a DNS dentro de un enlace local sin un servidor DNS unicast. Utiliza UDP/5353 y las direcciones multicast 224.0.0.251 (IPv4) y FF02::FB (IPv6). DNS Service Discovery (DNS-SD, típicamente utilizado con mDNS) proporciona una forma estandarizada de enumerar y describir servicios a través de registros PTR, SRV y TXT.

PORT     STATE SERVICE
5353/udp open  zeroconf

Detalles clave del protocolo que a menudo aprovecharás durante los ataques:

  • Los nombres en la zona .local se resuelven a través de mDNS.
  • El bit QU (Query Unicast) puede solicitar respuestas unicast incluso para preguntas multicast.
  • Las implementaciones deben ignorar paquetes que no provengan del enlace local; algunas pilas aún los aceptan.
  • La sondeo/anuncio refuerza nombres de host/servicio únicos; interferir aquí crea condiciones de DoS/"name squatting".

Modelo de servicio DNS-SD

Los servicios se identifican como _._tcp o _._udp bajo .local, por ejemplo, _ipp._tcp.local (impresoras), _airplay._tcp.local (AirPlay), _adb._tcp.local (Android Debug Bridge), etc. Descubre tipos con _services._dns-sd._udp.local, luego resuelve las instancias descubiertas a SRV/TXT/A/AAAA.

Exploración y enumeración de red

  • escaneo de objetivo nmap (mDNS directo en un host):
bash
nmap -sU -p 5353 --script=dns-service-discovery <target>
  • descubrimiento por broadcast nmap (escuchar el segmento y enumerar todos los tipos/instancias de DNS-SD):
bash
sudo nmap --script=broadcast-dns-service-discovery
  • avahi-browse (Linux):
bash
# Listar tipos de servicio
avahi-browse -bt _services._dns-sd._udp
# Navegar todos los servicios y resolver a host/puerto
avahi-browse -art
  • Apple dns-sd (macOS):
bash
# Navegar todos los servicios HTTP
dns-sd -B _http._tcp
# Enumerar tipos de servicio
dns-sd -B _services._dns-sd._udp
# Resolver una instancia específica a SRV/TXT
dns-sd -L "My Printer" _ipp._tcp local
  • Captura de paquetes con tshark:
bash
# Captura en vivo
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# Solo consultas de lista de servicios DNS-SD
sudo tshark -i <iface> -f "udp port 5353" -Y "dns.qry.name == \"_services._dns-sd._udp.local\""

Consejo: Algunos navegadores/WebRTC utilizan nombres de host mDNS efímeros para enmascarar IPs locales. Si ves candidatos random-UUID.local en la red, resuélvelos con mDNS para pivotar a IPs locales.

Ataques

Interferencia de sondeo de nombres mDNS (DoS / name squatting)

Durante la fase de sondeo, un host verifica la unicidad del nombre. Responder con conflictos falsificados lo obliga a elegir nuevos nombres o fallar. Esto puede retrasar o prevenir el registro y descubrimiento de servicios.

Ejemplo con Pholus:

bash
# Block new devices from taking names by auto-faking responses
sudo python3 pholus3.py <iface> -afre -stimeout 1000

Suplantación de servicios e impersonación (MitM)

Impersonar servicios DNS-SD anunciados (impresoras, AirPlay, HTTP, comparticiones de archivos) para forzar a los clientes a conectarse a ti. Esto es especialmente útil para:

  • Capturar documentos suplantando _ipp._tcp o _printer._tcp.
  • Atraer a los clientes a servicios HTTP/HTTPS para recolectar tokens/cookies o entregar cargas útiles.
  • Combinar con técnicas de retransmisión NTLM cuando los clientes de Windows negocian autenticación a servicios suplantados.

Con el módulo zerogod de bettercap (suplantador/impersonador mDNS/DNS-SD):

bash
# Start mDNS/DNS-SD discovery
sudo bettercap -iface <iface> -eval "zerogod.discovery on"

# Show all services seen from a host
> zerogod.show 192.168.1.42

# Impersonate all services of a target host automatically
> zerogod.impersonate 192.168.1.42

# Save IPP print jobs to disk while impersonating a printer
> set zerogod.ipp.save_path ~/.bettercap/zerogod/documents/
> zerogod.impersonate 192.168.1.42

# Replay previously captured services
> zerogod.save 192.168.1.42 target.yml
> zerogod.advertise target.yml

También vea la suplantación genérica de LLMNR/NBNS/mDNS/WPAD y flujos de trabajo de captura/retransmisión de credenciales:

Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks

Notas sobre problemas de implementación recientes (útil para DoS/persistencia durante compromisos)

  • Los errores de afirmación de accesibilidad de Avahi y los errores de bloqueo de D-Bus (2023) pueden terminar con avahi-daemon en distribuciones de Linux (por ejemplo, CVE-2023-38469..38473, CVE-2023-1981), interrumpiendo el descubrimiento de servicios en los hosts objetivo hasta el reinicio.
  • La puerta de enlace mDNS del controlador de LAN inalámbrica Cisco IOS XE DoS (2024, CVE-2024-20303) permite a atacantes adyacentes provocar un alto uso de CPU y desconectar APs. Si encuentra una puerta de enlace mDNS entre VLANs, tenga en cuenta su estabilidad bajo mDNS malformado o de alta tasa.

Consideraciones defensivas y OPSEC

  • Límites de segmento: No enrute 224.0.0.251/FF02::FB entre zonas de seguridad a menos que se requiera explícitamente una puerta de enlace mDNS. Si debe unir el descubrimiento, prefiera listas de permitidos y límites de tasa.
  • Puntos finales/servidores de Windows:
  • Para deshabilitar completamente la resolución de nombres a través de mDNS, establezca el valor del registro y reinicie:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
  • En entornos gestionados, desactive la regla de firewall de Windows Defender “mDNS (UDP-In)” (al menos en el perfil de Dominio) para evitar el procesamiento de mDNS entrante mientras se preserva la funcionalidad de hogar/itinerante.
  • En versiones más nuevas de Windows 11/plantillas de GPO, use la política “Configuración del equipo > Plantillas administrativas > Red > Cliente DNS > Configurar el protocolo DNS multicast (mDNS)” y configúrelo en Deshabilitado.
  • Linux (Avahi):
  • Restringa la publicación cuando no sea necesaria: establezca disable-publishing=yes, y restrinja las interfaces con allow-interfaces= / deny-interfaces= en /etc/avahi/avahi-daemon.conf.
  • Considere check-response-ttl=yes y evite enable-reflector=yes a menos que sea estrictamente necesario; prefiera listas de permitidos reflect-filters= al reflejar.
  • macOS: Restringa el mDNS entrante en firewalls de host/red cuando el descubrimiento Bonjour no sea necesario para subredes específicas.
  • Monitoreo: Alerta sobre aumentos inusuales en consultas de _services._dns-sd._udp.local o cambios repentinos en SRV/TXT de servicios críticos; estos son indicadores de suplantación o suplantación de servicios.

Referencia rápida de herramientas

  • nmap NSE: dns-service-discovery y broadcast-dns-service-discovery.
  • Pholus: escaneo activo, barridos de mDNS inversos, ayudantes de DoS y suplantación.
bash
# Sniffing pasivo (segundos de tiempo de espera)
sudo python3 pholus3.py <iface> -stimeout 60
# Enumerar tipos de servicio
sudo python3 pholus3.py <iface> -sscan
# Enviar solicitudes mDNS genéricas
sudo python3 pholus3.py <iface> --request
# Barrido mDNS inverso de una subred
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
  • bettercap zerogod: descubrir, guardar, anunciar y suplantar servicios mDNS/DNS-SD (ver ejemplos arriba).

Suplantación/MitM

El ataque más interesante que puede realizar sobre este servicio es llevar a cabo un MitM en la comunicación entre el cliente y el servidor real. Podría obtener archivos sensibles (MitM la comunicación con la impresora) o incluso credenciales (autenticación de Windows).
Para más información consulte:

Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks

Referencias

tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks