Windows Credentials Protections

Reading time: 11 minutes

Credentials Protections

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

WDigest

Το WDigest πρωτόκολλο, που εισήχθη με τα Windows XP, έχει σχεδιαστεί για αυθεντικοποίηση μέσω του Πρωτοκόλλου HTTP και είναι ενεργοποιημένο από προεπιλογή στα Windows XP μέχρι Windows 8.0 και Windows Server 2003 μέχρι Windows Server 2012. Αυτή η προεπιλεγμένη ρύθμιση έχει ως αποτέλεσμα αποθήκευση κωδικών πρόσβασης σε απλό κείμενο στο LSASS (Local Security Authority Subsystem Service). Ένας επιτιθέμενος μπορεί να χρησιμοποιήσει το Mimikatz για να εξάγει αυτά τα διαπιστευτήρια εκτελώντας:

bash
sekurlsa::wdigest

Για να απενεργοποιήσετε ή να ενεργοποιήσετε αυτή τη δυνατότητα, τα UseLogonCredential και Negotiate κλειδιά μητρώου μέσα στο HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest πρέπει να ρυθμιστούν σε "1". Εάν αυτά τα κλειδιά είναι απουσία ή ρυθμισμένα σε "0", το WDigest είναι απενεργοποιημένο:

bash
reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential

LSA Protection (PP & PPL protected processes)

Protected Process (PP) και Protected Process Light (PPL) είναι προστασίες επιπέδου πυρήνα Windows σχεδιασμένες για να αποτρέπουν την μη εξουσιοδοτημένη πρόσβαση σε ευαίσθητες διαδικασίες όπως το LSASS. Εισήχθησαν στο Windows Vista, το μοντέλο PP δημιουργήθηκε αρχικά για την επιβολή DRM και επέτρεπε μόνο σε δυαδικά αρχεία που ήταν υπογεγραμμένα με ένα ειδικό πιστοποιητικό μέσων να προστατεύονται. Μια διαδικασία που έχει χαρακτηριστεί ως PP μπορεί να προσπελαστεί μόνο από άλλες διαδικασίες που είναι επίσης PP και έχουν ίσο ή υψηλότερο επίπεδο προστασίας, και ακόμη και τότε, μόνο με περιορισμένα δικαιώματα πρόσβασης εκτός αν επιτραπεί συγκεκριμένα.

PPL, που εισήχθη στο Windows 8.1, είναι μια πιο ευέλικτη έκδοση του PP. Επιτρέπει ευρύτερες περιπτώσεις χρήσης (π.χ., LSASS, Defender) εισάγοντας "επίπεδα προστασίας" βασισμένα στο πεδίο EKU (Enhanced Key Usage) της ψηφιακής υπογραφής. Το επίπεδο προστασίας αποθηκεύεται στο πεδίο EPROCESS.Protection, το οποίο είναι μια δομή PS_PROTECTION με:

  • Type (Protected ή ProtectedLight)
  • Signer (π.χ., WinTcb, Lsa, Antimalware, κ.λπ.)

Αυτή η δομή είναι συμπιεσμένη σε ένα μόνο byte και καθορίζει ποιος μπορεί να προσπελάσει ποιον:

  • Υψηλότερες τιμές υπογραφής μπορούν να προσπελάσουν χαμηλότερες
  • PPLs δεν μπορούν να προσπελάσουν PPs
  • Μη προστατευμένες διαδικασίες δεν μπορούν να προσπελάσουν κανένα PPL/PP

Τι πρέπει να γνωρίζετε από επιθετική προοπτική

  • Όταν το LSASS εκτελείται ως PPL, οι απόπειρες να το ανοίξετε χρησιμοποιώντας OpenProcess(PROCESS_VM_READ | QUERY_INFORMATION) από κανονικό περιβάλλον διαχειριστή αποτυγχάνουν με 0x5 (Access Denied), ακόμη και αν είναι ενεργοποιημένο το SeDebugPrivilege.
  • Μπορείτε να ελέγξετε το επίπεδο προστασίας του LSASS χρησιμοποιώντας εργαλεία όπως το Process Hacker ή προγραμματισμένα διαβάζοντας την τιμή EPROCESS.Protection.
  • Το LSASS θα έχει συνήθως PsProtectedSignerLsa-Light (0x41), το οποίο μπορεί να προσπελαστεί μόνο από διαδικασίες που είναι υπογεγραμμένες με έναν υπογράφοντα υψηλότερου επιπέδου, όπως το WinTcb (0x61 ή 0x62).
  • Το PPL είναι μια περιορισμένη μόνο για το Userland; ο κωδικός επιπέδου πυρήνα μπορεί να το παρακάμψει πλήρως.
  • Το LSASS που είναι PPL δεν αποτρέπει την εξαγωγή διαπιστευτηρίων αν μπορείτε να εκτελέσετε κώδικα πυρήνα ή να εκμεταλλευτείτε μια διαδικασία υψηλής προνομιακής πρόσβασης με κατάλληλη πρόσβαση.
  • Η ρύθμιση ή η αφαίρεση του PPL απαιτεί επανεκκίνηση ή ρυθμίσεις Secure Boot/UEFI, οι οποίες μπορούν να διατηρήσουν τη ρύθμιση PPL ακόμη και μετά την αναστροφή των αλλαγών μητρώου.

Επιλογές παράκαμψης προστασιών PPL:

Αν θέλετε να εξάγετε το LSASS παρά το PPL, έχετε 3 κύριες επιλογές:

  1. Χρησιμοποιήστε έναν υπογεγραμμένο οδηγό πυρήνα (π.χ., Mimikatz + mimidrv.sys) για να αφαιρέσετε τη σημαία προστασίας του LSASS:

  1. Φέρτε τον δικό σας ευάλωτο οδηγό (BYOVD) για να εκτελέσετε προσαρμοσμένο κώδικα πυρήνα και να απενεργοποιήσετε την προστασία. Εργαλεία όπως το PPLKiller, gdrv-loader ή kdmapper καθιστούν αυτό εφικτό.
  2. Κλέψτε μια υπάρχουσα λαβή LSASS από άλλη διαδικασία που την έχει ανοιχτή (π.χ., μια διαδικασία AV), στη συνέχεια αντιγράψτε την στη διαδικασία σας. Αυτό είναι η βάση της τεχνικής pypykatz live lsa --method handledup.
  3. Καταχραστείτε κάποια προνομιακή διαδικασία που θα σας επιτρέψει να φορτώσετε αυθαίρετο κώδικα στο χώρο διευθύνσεών της ή μέσα σε άλλη προνομιακή διαδικασία, παρακάμπτοντας αποτελεσματικά τους περιορισμούς PPL. Μπορείτε να ελέγξετε ένα παράδειγμα αυτού στο bypassing-lsa-protection-in-userland ή https://github.com/itm4n/PPLdump.

Ελέγξτε την τρέχουσα κατάσταση της προστασίας LSA (PPL/PP) για το LSASS:

bash
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA /v RunAsPPL

Όταν εκτελείτε mimikatz privilege::debug sekurlsa::logonpasswords πιθανότατα θα αποτύχει με τον κωδικό σφάλματος 0x00000005 λόγω αυτού.

Credential Guard

Credential Guard, μια δυνατότητα αποκλειστική για Windows 10 (Enterprise και Education εκδόσεις), ενισχύει την ασφάλεια των διαπιστευτηρίων μηχανής χρησιμοποιώντας Virtual Secure Mode (VSM) και Virtualization Based Security (VBS). Εκμεταλλεύεται τις επεκτάσεις εικονικοποίησης CPU για να απομονώσει βασικές διαδικασίες εντός ενός προστατευμένου χώρου μνήμης, μακριά από την προσέγγιση του κύριου λειτουργικού συστήματος. Αυτή η απομόνωση διασφαλίζει ότι ακόμη και ο πυρήνας δεν μπορεί να έχει πρόσβαση στη μνήμη στο VSM, προστατεύοντας αποτελεσματικά τα διαπιστευτήρια από επιθέσεις όπως το pass-the-hash. Η Local Security Authority (LSA) λειτουργεί εντός αυτού του ασφαλούς περιβάλλοντος ως trustlet, ενώ η διαδικασία LSASS στο κύριο OS λειτουργεί απλώς ως επικοινωνητής με την LSA του VSM.

Από προεπιλογή, Credential Guard δεν είναι ενεργό και απαιτεί χειροκίνητη ενεργοποίηση εντός ενός οργανισμού. Είναι κρίσιμο για την ενίσχυση της ασφάλειας κατά εργαλείων όπως το Mimikatz, τα οποία περιορίζονται στην ικανότητά τους να εξάγουν διαπιστευτήρια. Ωστόσο, οι ευπάθειες μπορούν να εκμεταλλευτούν μέσω της προσθήκης προσαρμοσμένων Security Support Providers (SSP) για να καταγράψουν διαπιστευτήρια σε καθαρό κείμενο κατά τις προσπάθειες σύνδεσης.

Για να επαληθεύσετε την κατάσταση ενεργοποίησης του Credential Guard, μπορεί να ελεγχθεί το κλειδί μητρώου LsaCfgFlags κάτω από HKLM\System\CurrentControlSet\Control\LSA. Μια τιμή "1" υποδηλώνει ενεργοποίηση με UEFI lock, "2" χωρίς κλείδωμα, και "0" δηλώνει ότι δεν είναι ενεργοποιημένο. Αυτός ο έλεγχος μητρώου, αν και είναι ισχυρός δείκτης, δεν είναι το μόνο βήμα για την ενεργοποίηση του Credential Guard. Λεπτομερείς οδηγίες και ένα σενάριο PowerShell για την ενεργοποίηση αυτής της δυνατότητας είναι διαθέσιμα online.

bash
reg query HKLM\System\CurrentControlSet\Control\LSA /v LsaCfgFlags

Για μια ολοκληρωμένη κατανόηση και οδηγίες σχετικά με την ενεργοποίηση του Credential Guard στα Windows 10 και την αυτόματη ενεργοποίησή του σε συμβατά συστήματα των Windows 11 Enterprise και Education (έκδοση 22H2), επισκεφθείτε την τεκμηρίωση της Microsoft.

Περισσότερες λεπτομέρειες σχετικά με την υλοποίηση προσαρμοσμένων SSP για την καταγραφή διαπιστευτηρίων παρέχονται σε αυτόν τον οδηγό.

RDP RestrictedAdmin Mode

Windows 8.1 και Windows Server 2012 R2 εισήγαγαν αρκετές νέες δυνατότητες ασφαλείας, συμπεριλαμβανομένης της Restricted Admin mode για RDP. Αυτή η λειτουργία σχεδιάστηκε για να ενισχύσει την ασφάλεια μειώνοντας τους κινδύνους που σχετίζονται με τις επιθέσεις pass the hash.

Παραδοσιακά, όταν συνδέεστε σε έναν απομακρυσμένο υπολογιστή μέσω RDP, τα διαπιστευτήριά σας αποθηκεύονται στη στοχοθετημένη μηχανή. Αυτό συνιστά σημαντικό κίνδυνο ασφαλείας, ειδικά όταν χρησιμοποιούνται λογαριασμοί με αυξημένα δικαιώματα. Ωστόσο, με την εισαγωγή της Restricted Admin mode, αυτός ο κίνδυνος μειώνεται σημαντικά.

Όταν ξεκινάτε μια σύνδεση RDP χρησιμοποιώντας την εντολή mstsc.exe /RestrictedAdmin, η αυθεντικοποίηση στον απομακρυσμένο υπολογιστή πραγματοποιείται χωρίς να αποθηκεύονται τα διαπιστευτήριά σας σε αυτόν. Αυτή η προσέγγιση διασφαλίζει ότι, σε περίπτωση μόλυνσης από κακόβουλο λογισμικό ή αν ένας κακόβουλος χρήστης αποκτήσει πρόσβαση στον απομακρυσμένο διακομιστή, τα διαπιστευτήριά σας δεν θα διακυβευτούν, καθώς δεν αποθηκεύονται στον διακομιστή.

Είναι σημαντικό να σημειωθεί ότι στη Restricted Admin mode, οι προσπάθειες πρόσβασης σε πόρους δικτύου από τη συνεδρία RDP δεν θα χρησιμοποιούν τα προσωπικά σας διαπιστευτήρια. Αντίθετα, χρησιμοποιείται η ταυτότητα της μηχανής.

Αυτή η δυνατότητα σηματοδοτεί ένα σημαντικό βήμα προς τα εμπρός στην ασφάλιση των απομακρυσμένων συνδέσεων επιφάνειας εργασίας και στην προστασία ευαίσθητων πληροφοριών από την έκθεση σε περίπτωση παραβίασης ασφαλείας.

Για περισσότερες λεπτομέρειες επισκεφθείτε αυτή την πηγή.

Cached Credentials

Τα Windows ασφαλίζουν τα domain credentials μέσω της Local Security Authority (LSA), υποστηρίζοντας τις διαδικασίες σύνδεσης με πρωτόκολλα ασφαλείας όπως το Kerberos και το NTLM. Μια βασική δυνατότητα των Windows είναι η ικανότητά τους να αποθηκεύουν στην κρυφή μνήμη τις τελευταίες δέκα συνδέσεις τομέα για να διασφαλίσουν ότι οι χρήστες μπορούν να έχουν πρόσβαση στους υπολογιστές τους ακόμη και αν ο domain controller είναι εκτός λειτουργίας—ένα πλεονέκτημα για τους χρήστες φορητών υπολογιστών που συχνά βρίσκονται μακριά από το δίκτυο της εταιρείας τους.

Ο αριθμός των αποθηκευμένων συνδέσεων μπορεί να ρυθμιστεί μέσω ενός συγκεκριμένου registry key ή group policy. Για να δείτε ή να αλλάξετε αυτή τη ρύθμιση, χρησιμοποιείται η παρακάτω εντολή:

bash
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON" /v CACHEDLOGONSCOUNT

Η πρόσβαση σε αυτές τις αποθηκευμένες διαπιστεύσεις ελέγχεται αυστηρά, με μόνο τον λογαριασμό SYSTEM να έχει τις απαραίτητες άδειες για να τις δει. Οι διαχειριστές που χρειάζονται πρόσβαση σε αυτές τις πληροφορίες πρέπει να το κάνουν με προνόμια χρήστη SYSTEM. Οι διαπιστεύσεις αποθηκεύονται στη διεύθυνση: HKEY_LOCAL_MACHINE\SECURITY\Cache

Η Mimikatz μπορεί να χρησιμοποιηθεί για την εξαγωγή αυτών των αποθηκευμένων διαπιστεύσεων χρησιμοποιώντας την εντολή lsadump::cache.

Για περισσότερες λεπτομέρειες, η αρχική πηγή παρέχει εκτενή πληροφορίες.

Προστατευμένοι Χρήστες

Η συμμετοχή στην ομάδα Protected Users εισάγει αρκετές βελτιώσεις ασφαλείας για τους χρήστες, εξασφαλίζοντας υψηλότερα επίπεδα προστασίας από κλοπή και κακή χρήση διαπιστεύσεων:

  • Delegation Διαπιστεύσεων (CredSSP): Ακόμα και αν η ρύθμιση Πολιτικής Ομάδας για Allow delegating default credentials είναι ενεργοποιημένη, οι διαπιστεύσεις κειμένου απλού των Προστατευμένων Χρηστών δεν θα αποθηκευτούν.
  • Windows Digest: Από Windows 8.1 και Windows Server 2012 R2, το σύστημα δεν θα αποθηκεύει τις διαπιστεύσεις κειμένου απλού των Προστατευμένων Χρηστών, ανεξάρτητα από την κατάσταση του Windows Digest.
  • NTLM: Το σύστημα δεν θα αποθηκεύει τις διαπιστεύσεις κειμένου απλού των Προστατευμένων Χρηστών ή τις λειτουργίες NT one-way (NTOWF).
  • Kerberos: Για τους Προστατευμένους Χρήστες, η πιστοποίηση Kerberos δεν θα δημιουργεί DES ή RC4 keys, ούτε θα αποθηκεύει διαπιστεύσεις κειμένου απλού ή μακροχρόνιων κλειδιών πέρα από την αρχική απόκτηση του Ticket-Granting Ticket (TGT).
  • Offline Sign-In: Οι Προστατευμένοι Χρήστες δεν θα έχουν έναν αποθηκευμένο επαληθευτή που θα δημιουργείται κατά την είσοδο ή την ξεκλείδωμα, πράγμα που σημαίνει ότι η offline είσοδος δεν υποστηρίζεται για αυτούς τους λογαριασμούς.

Αυτές οι προστασίες ενεργοποιούνται τη στιγμή που ένας χρήστης, ο οποίος είναι μέλος της ομάδας Protected Users, συνδέεται στη συσκευή. Αυτό διασφαλίζει ότι κρίσιμα μέτρα ασφαλείας είναι σε εφαρμογή για την προστασία από διάφορες μεθόδους παραβίασης διαπιστεύσεων.

Για περισσότερες λεπτομέρειες, ανατρέξτε στην επίσημη τεκμηρίωση.

Πίνακας από τα έγγραφα.

Windows Server 2003 RTMWindows Server 2003 SP1+

Windows Server 2012,
Windows Server 2008 R2,
Windows Server 2008

Windows Server 2016
Account OperatorsAccount OperatorsAccount OperatorsAccount Operators
AdministratorAdministratorAdministratorAdministrator
AdministratorsAdministratorsAdministratorsAdministrators
Backup OperatorsBackup OperatorsBackup OperatorsBackup Operators
Cert Publishers
Domain AdminsDomain AdminsDomain AdminsDomain Admins
Domain ControllersDomain ControllersDomain ControllersDomain Controllers
Enterprise AdminsEnterprise AdminsEnterprise AdminsEnterprise Admins
Enterprise Key Admins
Key Admins
KrbtgtKrbtgtKrbtgtKrbtgt
Print OperatorsPrint OperatorsPrint OperatorsPrint Operators
Read-only Domain ControllersRead-only Domain Controllers
ReplicatorReplicatorReplicatorReplicator
Schema AdminsSchema AdminsSchema AdminsSchema Admins
Server OperatorsServer OperatorsServer OperatorsServer Operators

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