Злоумышленники эксплуатируют протоколы обнаружения сервисов (mDNS/DNS-SD, UPnP/SSDP, Consul/Etcd/K8s Service Discovery) для скрытой разведки, бокового перемещения, туннелирования C2 или распространения вредоносной нагрузки. Трафик выглядит легитимным, что затрудняет детекцию.
Причины
1. Отсутствие мониторинга и сегментации широковещательных/мультикастовых протоколов (mDNS на UDP 5353, SSDP на UDP 1900).
2. Доверие к ответам от неавторизованных узлов в локальной сети (запросы \_services._dns-sd._udp.local).
3. Использование аномальных SRV-записей, нестандартных TTL, поддельных полей TXT с payload’ами (base64-encoded команды).
4. Чрезмерная частота запросов (>10/мин от хоста, обычно не являющегося службой).
Решение
1. Сбор и фильтрация трафика
- Захват mDNS/DNS-SD:
bash
tcpdump -i eth0 -nn "udp port 5353" -w mdns.pcap- Wireshark фильтр аномалий (нестандартные имена служб):
`mdns.qry.name contains "\.local$" and !(mdns.qry.name matches "(ipp|pdl|airplay|homekit) ")`
- Проверка частоты запросов в SIEM: `events | where source_port == 5353 | stats count by source_ip | where count > 10`.
2. Анализ ответов
- Искать SRV-записи с необычными целевыми хостами (не .local, а публичные IP):
`dns.resp.type == 33 and dns.resp.name contains "_tcp.local" and !(dns.resp.target matches ".\.local$")`
- TXT-записи, содержащие base64, URL или shell-команды:
`mdns.txt.len > 200 or mdns.txt contains ("http://", "bash ", "powershell")`.
3. Мониторинг сервисов в контейнерных средах
- Kubernetes: поиск необычных сервисных записей через `kubectl get endpoints --all-namespaces` и сравнение с известными workload’ами.
- Consul/Etcd: проверка `consul catalog services` на наличие записей с именами, не соответствующими шаблону (например, случайные hex-строки).
4. Корреляция с другими индикаторами
- MAC-адрес отправителя mDNS не совпадает с ARP-таблицей (признак ARP-spoofing + mDNS).
- TTL пакета mDNS/SSDP > 255 (NAT, многоузловая сеть).
5. Профилактика**
- Запретить мультикаст mDNS между VLAN (ACL на L3).
- Отключить UPnP на граничных устройствах.
- Настроить политику сетевого обнаружения (Network Policy) в Kubernetes, блокирующую неавторизованные `Service`-записи.