NTLM
Βασικές Πληροφορίες
Σε περιβάλλοντα όπου λειτουργούν τα Windows XP και Server 2003, χρησιμοποιούνται τα hashes του LM (Lan Manager), αν και είναι γνωστό ότι αυτά μπορούν εύκολα να διαρρεύσουν. Ένα συγκεκριμένο hash του LM, AAD3B435B51404EEAAD3B435B51404EE
, υποδηλώνει μια περίπτωση όπου δεν χρησιμοποιείται το LM, αντιπροσωπεύοντας το hash για μια κενή συμβολοσειρά.
Από προεπιλογή, το πρωτόκολλο πιστοποίησης Kerberos είναι η κύρια μέθοδος που χρησιμοποιείται. Το NTLM (NT LAN Manager) εμφανίζεται σε συγκεκριμένες περιπτώσεις: απουσία του Active Directory, μη ύπαρξη του τομέα, δυσλειτουργία του Kerberos λόγω εσφαλμένης ρύθμισης ή όταν γίνονται προσπάθειες σύνδεσης χρησιμοποιώντας μια διεύθυνση IP αντί για ένα έγκυρο όνομα κεντρικού υπολογιστή.
Η παρουσία του κεφαλίδας "NTLMSSP" στα πακέτα δικτύου υποδεικνύει ένα διαδικασία πιστοποίησης NTLM.
Η υποστήριξη για τα πρωτόκολλα πιστοποίησης - LM, NTLMv1 και NTLMv2 - διευκολύνεται από ένα συγκεκριμένο DLL που βρίσκεται στη διαδρομή %windir%\Windows\System32\msv1\_0.dll
.
Βασικά Σημεία:
Τα hashes του LM είναι ευάλωτα και ένα κενό hash του LM (
AAD3B435B51404EEAAD3B435B51404EE
) υποδηλώνει τη μη χρήση του.Το Kerberos είναι η προεπιλεγμένη μέθοδος πιστοποίησης, με το NTLM να χρησιμοποιείται μόνο υπό συγκεκριμένες συνθήκες.
Τα πακέτα πιστοποίησης NTLM είναι αναγνωρίσιμα από τον κεφαλίδα "NTLMSSP".
Τα πρωτόκολλα LM, NTLMv1 και NTLMv2 υποστηρίζονται από το αρχείο συστήματος
msv1\_0.dll
.
LM, NTLMv1 και NTLMv2
Μπορείτε να ελέγξετε και να ρυθμίσετε ποιο πρωτόκολλο θα χρησιμοποιηθεί:
Γραφική Διεπαφή Χρήστη (GUI)
Εκτελέστε το secpol.msc -> Τοπικές πολιτικές -> Επιλογές ασφάλειας -> Ασφάλεια δικτύου: Επίπεδο πιστοποίησης LAN Manager. Υπάρχουν 6 επίπεδα (από 0 έως 5).
Μητρώο (Registry)
Αυτό θα ορίσει το επίπεδο 5:
Δυνατές τιμές:
Βασική διαδικασία ελέγχου ταυτότητας NTLM Domain
Ο χρήστης εισάγει τα διαπιστευτήριά του
Η μηχανή πελάτης στέλνει ένα αίτημα ελέγχου ταυτότητας αποστέλλοντας το όνομα του τομέα και το όνομα χρήστη
Ο διακομιστής στέλνει την πρόκληση
Ο πελάτης κρυπτογραφεί την πρόκληση χρησιμοποιώντας το κατακερματισμένο συνθηματικό ως κλειδί και την αποστέλλει ως απάντηση
Ο διακομιστής αποστέλλει στον ελεγκτή τομέα το όνομα του τομέα, το όνομα χρήστη, την πρόκληση και την απάντηση. Εάν δεν έχει ρυθμιστεί ένας ενεργός κατάλογος ή το όνομα του τομέα είναι το όνομα του διακομιστή, τα διαπιστευτήρια ελέγχονται τοπικά.
Ο ελεγκτής τομέα ελέγχει εάν όλα είναι σωστά και αποστέλλει τις πληροφορίες στον διακομιστή
Ο διακομιστής και ο ελεγκτής τομέα μπορούν να δημιουργήσουν ένα ασφαλές κανάλι μέσω του διακομιστή Netlogon, καθώς ο ελεγκτής τομέα γνωρίζει το συνθηματικό του διακομιστή (βρίσκεται μέσα στη βάση δεδομένων NTDS.DIT).
Τοπική διαδικασία ελέγχου ταυτότητας NTLM
Ο έλεγχος ταυτότητας είναι όπως αναφέρθηκε προηγουμένως, αλλά ο διακομιστής γνωρίζει τον κατακερματισμένο κωδικό του χρήστη που προσπαθεί να ελεγχθεί μέσα στο αρχείο SAM. Έτσι, αντί να ζητήσει από τον ελεγκτή τομέα, ο διακομιστής θα ελέγξει μόνος του εάν ο χρήστης μπορεί να ελεγχθεί.
Πρόκληση NTLMv1
Το μήκος της πρόκλησης είναι 8 bytes και η απάντηση είναι 24 bytes.
Το κατακερματισμένο NT (16bytes) διαιρείται σε 3 μέρη των 7bytes έκαστο (7B + 7B + (2B+0x00*5)): το τελευταίο μέρος γεμίζει με μηδενικά. Στη συνέχεια, η πρόκληση κρυπτογραφείται ξεχωριστά με κάθε μέρος και τα αποτελέσματα της κρυπτογράφησης συνδέονται. Σύνολο: 8B + 8B + 8B = 24Bytes.
Προβλήματα:
Έλλειψη τυχαιότητας
Τα 3 μέρη μπορούν να επιτεθούν ξεχωριστά για να βρεθεί το κατακερματισμένο NT
Το DES είναι ευάλωτο σε επίθεση
Το 3ο κλειδί αποτελείται πάντα από 5 μηδενικά
Δεδομένης της ίδιας πρόκλησης, η απάντηση θα είναι ίδια. Έτσι, μπορείτε να δώσετε ως πρόκληση στο θύμα τον χαρακτήρα "1122334455667788" και να επιτεθείτε στην απάντηση χρησιμοποιώντας προ-υπολογισμένους πίνακες ουράνιου τόξου.
Επίθεση NTLMv1
Σήμερα είναι λιγότερο συνηθισμένο να βρείτε περιβάλλοντα με ρυθμισμένη Απεριόριστη Ανάθεση, αλλά αυτό δεν σημαίνει ότι δεν μπορείτε να καταχραστείτε έναν υπηρεσία εκτύπωσης που έχει ρυθμιστεί.
Μπορείτε να καταχραστείτε ορισμένα διαπιστευτήρια/συνεδρίες που ήδη έχετε στον AD για να ζητήσετε από τον εκτυπωτή να ελεγχθεί έναν κόμβο υπό τον έλεγχό σας. Στη συνέχεια, χρησιμοποιώντας το metasploit auxiliary/server/capture/smb
ή το responder
, μπορείτε να ορίσετε την πρόκληση ελέγχου ταυτότητας σε 1122334455667788, να καταγράψετε την προσπάθεια ελέγχου ταυτότητας και αν αυτή έγινε χρησιμοποιώντας NTLMv1 θα μπορέσετε να την αποκρυπτογραφήσετε.
Εάν χρησιμοποιείτε το responder
, μπορείτε να δοκιμάσετε να χρησιμοποιήσετε τη σημαία --lm
για να προσπαθήσετε να υποβαθμίσετε τον έλεγχο ταυτότητας.
Σημειώστε ότι για αυτήν την τεχνική ο έλεγχος ταυτότητας πρέπει να γίνεται χρησιμοποιώντας NTLMv1 (το NTLMv2 δεν είναι έγκυρο).
Να θυμάστε ότι ο εκτυπωτής θα χρησιμοποιήσει τον λογαριασμό υπολογιστή κατά τη διάρκεια του ελέγχου ταυτότητας και οι λογαριασμοί υπολογιστών χρησιμοποιούν μακριά και τυχαία συνθηματικά που πιθανότατα δεν θα μπορέσετε να αποκρυπτογραφήσετε χρησιμοποιώντας συνηθισμένα λεξικά. Ωστόσο, ο έλεγχος ταυτότητας NTLMv1 χρησιμοποιεί το DES (περισσότερες πληροφορίες εδώ), οπότε χρησιμοποιώντας ορισμένες υπηρεσίες που είναι ειδικά αφιερωμένες στην αποκρυπτογράφηση DES θα μπορέσετε να το αποκ
Θα εξάγατε το παρακάτω:
Δημιουργήστε ένα αρχείο με το περιεχόμενο:
Εκτελέστε το hashcat (καλύτερα διανεμημένο μέσω ενός εργαλείου όπως το hashtopolis), διότι αλλιώς θα χρειαστούν αρκετές ημέρες.
Σε αυτήν την περίπτωση γνωρίζουμε ότι ο κωδικός πρόσβασης είναι "password", οπότε θα κάνουμε απάτη για διαδικαστικούς λόγους:
Τώρα πρέπει να χρησιμοποιήσουμε τα εργαλεία του hashcat για να μετατρέψουμε τα σπασμένα κλειδιά des σε μέρη του NTLM hash:
Τελικά η τελευταία μέρα:
Το ακόλουθο περιεχόμενο είναι από ένα βιβλίο για χάκινγκ σχετικά με τεχνικές χάκινγκ. Το παρακάτω περιεχόμενο είναι από το αρχείο /hive/hacktricks/windows-hardening/ntlm/README.md. Μεταφράστε το σχετικό αγγλικό κείμενο στα ελληνικά και επιστρέψτε τη μετάφραση διατηρώντας ακριβώς την ίδια σύνταξη markdown και html. Μην μεταφράσετε πράγματα όπως κώδικας, ονόματα τεχνικών χάκινγκ, χάκινγκ λέξεις, ονόματα πλατφορμών cloud/SaaS (όπως Workspace, aws, gcp...), η λέξη 'διαρροή', pentesting και ετικέτες markdown. Επίσης, μην προσθέσετε κανένα επιπλέον περιεχόμενο εκτός από τη μετάφραση και τη σύνταξη markdown.
NTLMv2 Πρόκληση
Το μήκος της πρόκλησης είναι 8 bytes και στέλνονται 2 απαντήσεις: Μία είναι 24 bytes και το μήκος της άλλης είναι μεταβλητό.
Η πρώτη απάντηση δημιουργείται κρυπτογραφώντας χρησιμοποιώντας HMAC_MD5 το string που αποτελείται από τον πελάτη και τον τομέα και χρησιμοποιώντας ως κλειδί το hash MD4 του NT hash. Στη συνέχεια, το αποτέλεσμα θα χρησιμοποιηθεί ως κλειδί για να κρυπτογραφηθεί χρησιμοποιώντας HMAC_MD5 η πρόκληση. Σε αυτό, θα προστεθεί μια πρόκληση πελάτη 8 bytes. Σύνολο: 24 B.
Η δεύτερη απάντηση δημιουργείται χρησιμοποιώντας αρκετές τιμές (μια νέα πρόκληση πελάτη, ένα χρονικό σημείο για να αποφευχθούν επαναληπτικές επιθέσεις...).
Εάν έχετε ένα pcap που έχει καταγράψει ένα επιτυχημένο διαδικασία πιστοποίησης, μπορείτε να ακολουθήσετε αυτόν τον οδηγό για να λάβετε τον τομέα, το όνομα χρήστη, την πρόκληση και την απάντηση και να προσπαθήσετε να αποκτήσετε τον κωδικό πρόσβασης: https://research.801labs.org/cracking-an-ntlmv2-hash/
Pass-the-Hash
Μόλις έχετε το hash του θύματος, μπορείτε να το χρησιμοποιήσετε για να προσομοιώσετε το θύμα.
Χρειάζεστε ένα εργαλείο που θα πραγματοποιήσει την πιστοποίηση NTLM χρησιμοποιώντας αυτό το hash, ή μπορείτε να δημιουργήσετε ένα νέο sessionlogon και να εισαγάγετε αυτό το hash μέσα στο LSASS, έτσι ώστε όταν πραγματοποιείται οποιαδήποτε πιστοποίηση NTLM, θα χρησιμοποιηθεί αυτό το hash. Η τελευταία επιλογή είναι αυτό που κάνει το mimikatz.
Παρακαλώ, θυμηθείτε ότι μπορείτε να πραγματοποιήσετε επιθέσεις Pass-the-Hash χρησιμοποιώντας επίσης λογαριασμούς Υπολογιστή.
Mimikatz
Πρέπει να εκτελεστεί ως διαχειριστής
Αυτό θα ξεκινήσει ένα διεργασία που θα ανήκει στους χρήστες που έχουν εκτελέσει το mimikatz, αλλά εσωτερικά στο LSASS, οι αποθηκευμένες πιστοποιητικές πληροφορίες είναι αυτές που βρίσκονται μέσα στις παραμέτρους του mimikatz. Έπειτα, μπορείτε να έχετε πρόσβαση σε δικτυακούς πόρους ως αν ήσασταν αυτός ο χρήστης (παρόμοιο με το κόλπο runas /netonly
, αλλά δεν χρειάζεται να γνωρίζετε τον κωδικό πρόσβασης σε απλό κείμενο).
Pass-the-Hash από το Linux
Μπορείτε να αποκτήσετε εκτέλεση κώδικα σε μηχανήματα Windows χρησιμοποιώντας το Pass-the-Hash από το Linux. Προσπελάστε εδώ για να μάθετε πώς να το κάνετε.
Εργαλεία Impacket για Windows
Μπορείτε να κατεβάσετε δυαδικά αρχεία impacket για Windows εδώ: https://github.com/ropnop/impacket_static_binaries/releases/tag/0.9.21-dev-binaries.
psexec_windows.exe
C:\AD\MyTools\psexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.my.domain.local
wmiexec.exe
wmiexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local
atexec.exe (Σε αυτήν την περίπτωση πρέπει να καθορίσετε μια εντολή, οι cmd.exe και powershell.exe δεν είναι έγκυρες για να αποκτήσετε μια διαδραστική κέλυφος)
C:\AD\MyTools\atexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local 'whoami'
Υπάρχουν και άλλα δυαδικά αρχεία Impacket...
Invoke-TheHash
Μπορείτε να αποκτήσετε τα scripts powershell από εδώ: https://github.com/Kevin-Robertson/Invoke-TheHash
Invoke-SMBExec
Invoke-WMIExec
Ο Invoke-WMIExec
είναι ένα εργαλείο PowerShell που χρησιμοποιείται για να εκτελέσει εντολές σε απομακρυσμένους υπολογιστές μέσω του πρωτοκόλλου WMI (Windows Management Instrumentation). Αυτό το εργαλείο εκμεταλλεύεται την αδυναμία του πρωτοκόλλου WMI να απαιτεί ελέγχους ταυτότητας, επιτρέποντας σε έναν επιτιθέμενο να εκτελέσει κακόβουλο κώδικα σε έναν απομακρυσμένο υπολογιστή.
Για να χρησιμοποιήσετε το Invoke-WMIExec
, απλά εκτελέστε το PowerShell script και παρέχετε τις απαραίτητες παραμέτρους, όπως το όνομα χρήστη και ο κωδικός πρόσβασης για τον απομακρυσμένο υπολογιστή. Το εργαλείο θα εκτελέσει την εντολή που έχετε καθορίσει στον απομακρυσμένο υπολογιστή και θα επιστρέψει τα αποτελέσματα στον υπολογιστή εκτέλεσης.
Είναι σημαντικό να σημειωθεί ότι η χρήση του Invoke-WMIExec
για εκτέλεση εντολών σε απομακρυσμένους υπολογιστές απαιτεί δικαιώματα διαχειριστή στον απομακρυσμένο υπολογιστή. Επίσης, πρέπει να ληφθούν υπόψη οι επιπτώσεις ασφαλείας και να χρησιμοποιηθεί με προσοχή.
Εκτέλεση-SMBClient
Εκτέλεση-SMBEnum
Invoke-TheHash
Αυτή η συνάρτηση είναι ένας συνδυασμός όλων των άλλων. Μπορείτε να περάσετε πολλούς υπολογιστές, να αποκλείσετε κάποιους και να επιλέξετε τη επιλογή που θέλετε να χρησιμοποιήσετε (SMBExec, WMIExec, SMBClient, SMBEnum). Εάν επιλέξετε οποιαδήποτε από τις SMBExec και WMIExec, αλλά δεν δώσετε κανένα παράμετρο Command, απλώς θα ελέγξει αν έχετε επαρκή δικαιώματα.
Επεξεργαστής Πιστοποιητικών των Windows (WCE)
Πρέπει να εκτελεστεί ως διαχειριστής
Αυτό το εργαλείο θα κάνει το ίδιο πράγμα με το mimikatz (τροποποίηση της μνήμης του LSASS).
Εκτέλεση απομακρυσμένων εντολών σε Windows με όνομα χρήστη και κωδικό πρόσβασης
pageLateral MovementΕξαγωγή διαπιστευτηρίων από έναν Windows υπολογιστή
Για περισσότερες πληροφορίες σχετικά με το πώς να αποκτήσετε διαπιστευτήρια από έναν Windows υπολογιστή, πρέπει να διαβάσετε αυτήν τη σελίδα εδώ.
NTLM Relay και Responder
Διαβάστε περισσότερες λεπτομερείς οδηγίες σχετικά με το πώς να πραγματοποιήσετε αυτές τις επιθέσεις εδώ:
pageSpoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay AttacksΑνάλυση προκλήσεων NTLM από ένα καταγραφή δικτύου
Μπορείτε να χρησιμοποιήσετε το https://github.com/mlgualtieri/NTLMRawUnHide
Last updated