Προστασίες Διαπιστευτηρίων Windows

Reading time: 11 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

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

When you running mimikatz privilege::debug sekurlsa::logonpasswords it'll probably fail with the error code 0x00000005 becasue of this.

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 ασφαλίζουν τα διαπιστευτήρια τομέα μέσω της Τοπικής Αρχής Ασφαλείας (LSA), υποστηρίζοντας τις διαδικασίες σύνδεσης με πρωτόκολλα ασφαλείας όπως το Kerberos και το NTLM. Μια βασική δυνατότητα των Windows είναι η ικανότητά τους να αποθηκεύουν στην κρυφή μνήμη τις τελευταίες δέκα συνδέσεις τομέα για να διασφαλίσουν ότι οι χρήστες μπορούν να έχουν πρόσβαση στους υπολογιστές τους ακόμη και αν ο διακομιστής τομέα είναι εκτός σύνδεσης—ένα πλεονέκτημα για τους χρήστες φορητών υπολογιστών που συχνά βρίσκονται μακριά από το δίκτυο της εταιρείας τους.

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

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

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

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

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

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

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

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

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

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

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

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