Abusing Tokens
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Αν δεν ξέρετε τι είναι τα Windows Access Tokens διαβάστε αυτή τη σελίδα πριν συνεχίσετε:
Access TokensΊσως να μπορείτε να αναβαθμίσετε τα δικαιώματα σας καταχρώντας τα tokens που ήδη έχετε
Αυτό είναι το δικαίωμα που κατέχει οποιαδήποτε διαδικασία που επιτρέπει την προσωποποίηση (αλλά όχι τη δημιουργία) οποιουδήποτε token, εφόσον μπορεί να αποκτηθεί ένα handle σε αυτό. Ένα προνομιακό token μπορεί να αποκτηθεί από μια υπηρεσία Windows (DCOM) προκαλώντας την να εκτελέσει NTLM authentication κατά ενός exploit, επιτρέποντας στη συνέχεια την εκτέλεση μιας διαδικασίας με δικαιώματα SYSTEM. Αυτή η ευπάθεια μπορεί να εκμεταλλευτεί χρησιμοποιώντας διάφορα εργαλεία, όπως juicy-potato, RogueWinRM (το οποίο απαιτεί να είναι απενεργοποιημένο το winrm), SweetPotato, και PrintSpoofer.
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotatoJuicyPotatoΕίναι πολύ παρόμοιο με το SeImpersonatePrivilege, θα χρησιμοποιήσει την ίδια μέθοδο για να αποκτήσει ένα προνομιακό token. Στη συνέχεια, αυτό το δικαίωμα επιτρέπει να αναθέσει ένα πρωτεύον token σε μια νέα/ανασταλμένη διαδικασία. Με το προνομιακό token προσωποποίησης μπορείτε να παραγάγετε ένα πρωτεύον token (DuplicateTokenEx). Με το token, μπορείτε να δημιουργήσετε μια νέα διαδικασία με 'CreateProcessAsUser' ή να δημιουργήσετε μια διαδικασία ανασταλμένη και να ορίσετε το token (γενικά, δεν μπορείτε να τροποποιήσετε το πρωτεύον token μιας εκτελούμενης διαδικασίας).
Αν έχετε ενεργοποιήσει αυτό το token μπορείτε να χρησιμοποιήσετε KERB_S4U_LOGON για να αποκτήσετε ένα token προσωποποίησης για οποιονδήποτε άλλο χρήστη χωρίς να γνωρίζετε τα διαπιστευτήρια, να προσθέσετε μια αυθαίρετη ομάδα (admins) στο token, να ορίσετε το επίπεδο ακεραιότητας του token σε "medium", και να αναθέσετε αυτό το token στο τρέχον νήμα (SetThreadToken).
Το σύστημα προκαλεί να παρέχει πλήρη πρόσβαση ανάγνωσης σε οποιοδήποτε αρχείο (περιορισμένο σε λειτουργίες ανάγνωσης) μέσω αυτού του δικαιώματος. Χρησιμοποιείται για ανάγνωση των hash κωδικών πρόσβασης των τοπικών λογαριασμών Διαχειριστή από το μητρώο, μετά από το οποίο, εργαλεία όπως το "psexec" ή το "wmiexec" μπορούν να χρησιμοποιηθούν με το hash (τεχνική Pass-the-Hash). Ωστόσο, αυτή η τεχνική αποτυγχάνει υπό δύο συνθήκες: όταν ο λογαριασμός τοπικού διαχειριστή είναι απενεργοποιημένος, ή όταν υπάρχει πολιτική που αφαιρεί τα διοικητικά δικαιώματα από τους τοπικούς διαχειριστές που συνδέονται απομακρυσμένα. Μπορείτε να καταχραστείτε αυτό το δικαίωμα με:
ακολουθώντας τον IppSec στο https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
Ή όπως εξηγείται στην ενότητα αναβάθμιση δικαιωμάτων με Backup Operators:
Η άδεια για πρόσβαση εγγραφής σε οποιοδήποτε αρχείο συστήματος, ανεξαρτήτως της Λίστας Ελέγχου Πρόσβασης (ACL) του αρχείου, παρέχεται από αυτό το δικαίωμα. Ανοίγει πολλές δυνατότητες για αναβάθμιση, συμπεριλαμβανομένης της δυνατότητας τροποποίησης υπηρεσιών, εκτέλεσης DLL Hijacking, και ρύθμισης debuggers μέσω των Επιλογών Εκτέλεσης Αρχείων Εικόνας μεταξύ άλλων τεχνικών.
Το SeCreateTokenPrivilege είναι μια ισχυρή άδεια, ιδιαίτερα χρήσιμη όταν ένας χρήστης έχει τη δυνατότητα να προσωποποιεί tokens, αλλά και στην απουσία του SeImpersonatePrivilege. Αυτή η ικανότητα εξαρτάται από την ικανότητα να προσωποποιεί ένα token που αντιπροσωπεύει τον ίδιο χρήστη και του οποίου το επίπεδο ακεραιότητας δεν υπερβαίνει αυτό της τρέχουσας διαδικασίας.
Κύρια Σημεία:
Προσωποποίηση χωρίς SeImpersonatePrivilege: Είναι δυνατόν να αξιοποιηθεί το SeCreateTokenPrivilege για EoP μέσω της προσωποποίησης tokens υπό συγκεκριμένες συνθήκες.
Συνθήκες για Προσωποποίηση Token: Η επιτυχής προσωποποίηση απαιτεί το στοχευμένο token να ανήκει στον ίδιο χρήστη και να έχει επίπεδο ακεραιότητας που είναι μικρότερο ή ίσο με το επίπεδο ακεραιότητας της διαδικασίας που προσπαθεί να προσωποποιήσει.
Δημιουργία και Τροποποίηση Προσωποποιημένων Tokens: Οι χρήστες μπορούν να δημιουργήσουν ένα προσωποποιημένο token και να το ενισχύσουν προσθέτοντας ένα SID (Αναγνωριστικό Ασφαλείας) προνομιακής ομάδας.
Αυτό το δικαίωμα επιτρέπει να φορτώνονται και να ξεφορτώνονται οδηγοί συσκευών με τη δημιουργία μιας καταχώρησης μητρώου με συγκεκριμένες τιμές για το ImagePath
και το Type
. Δεδομένου ότι η άμεση πρόσβαση εγγραφής στο HKLM
(HKEY_LOCAL_MACHINE) είναι περιορισμένη, πρέπει να χρησιμοποιηθεί το HKCU
(HKEY_CURRENT_USER). Ωστόσο, για να γίνει το HKCU
αναγνωρίσιμο από τον πυρήνα για τη ρύθμιση του οδηγού, πρέπει να ακολουθηθεί μια συγκεκριμένη διαδρομή.
Αυτή η διαδρομή είναι \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
, όπου <RID>
είναι ο Σχετικός Αναγνωριστής του τρέχοντος χρήστη. Μέσα στο HKCU
, αυτή η ολόκληρη διαδρομή πρέπει να δημιουργηθεί, και δύο τιμές πρέπει να οριστούν:
ImagePath
, που είναι η διαδρομή προς το δυαδικό αρχείο που θα εκτελεστεί
Type
, με τιμή SERVICE_KERNEL_DRIVER
(0x00000001
).
Βήματα που πρέπει να ακολουθηθούν:
Πρόσβαση στο HKCU
αντί για HKLM
λόγω περιορισμένης πρόσβασης εγγραφής.
Δημιουργία της διαδρομής \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
εντός του HKCU
, όπου <RID>
αντιπροσωπεύει τον Σχετικό Αναγνωριστή του τρέχοντος χρήστη.
Ορισμός του ImagePath
στη διαδρομή εκτέλεσης του δυαδικού αρχείου.
Ανάθεση του Type
ως SERVICE_KERNEL_DRIVER
(0x00000001
).
Περισσότεροι τρόποι για να καταχραστεί αυτό το προνόμιο στο https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
Αυτό είναι παρόμοιο με το SeRestorePrivilege. Η κύρια λειτουργία του επιτρέπει σε μια διαδικασία να αναλάβει την ιδιοκτησία ενός αντικειμένου, παρακάμπτοντας την απαίτηση για ρητή διακριτική πρόσβαση μέσω της παροχής δικαιωμάτων πρόσβασης WRITE_OWNER. Η διαδικασία περιλαμβάνει πρώτα την εξασφάλιση της ιδιοκτησίας του προοριζόμενου κλειδιού μητρώου για σκοπούς εγγραφής, και στη συνέχεια την τροποποίηση του DACL για να επιτραπούν οι λειτουργίες εγγραφής.
Αυτό το προνόμιο επιτρέπει την αποσφαλμάτωση άλλων διεργασιών, συμπεριλαμβανομένης της ανάγνωσης και εγγραφής στη μνήμη. Διάφορες στρατηγικές για την ένεση μνήμης, ικανές να παρακάμψουν τις περισσότερες λύσεις antivirus και πρόληψης εισβολών φιλοξενίας, μπορούν να χρησιμοποιηθούν με αυτό το προνόμιο.
Μπορείτε να χρησιμοποιήσετε το ProcDump από τη SysInternals Suite για να καταγράψετε τη μνήμη μιας διεργασίας. Συγκεκριμένα, αυτό μπορεί να εφαρμοστεί στη διεργασία Local Security Authority Subsystem Service (LSASS), η οποία είναι υπεύθυνη για την αποθήκευση των διαπιστευτηρίων χρήστη μόλις ο χρήστης έχει συνδεθεί επιτυχώς σε ένα σύστημα.
Μπορείτε στη συνέχεια να φορτώσετε αυτό το dump στο mimikatz για να αποκτήσετε κωδικούς πρόσβασης:
Αν θέλετε να αποκτήσετε ένα NT SYSTEM
shell μπορείτε να χρησιμοποιήσετε:
Τα tokens που εμφανίζονται ως Απενεργοποιημένα μπορούν να ενεργοποιηθούν, μπορείτε πραγματικά να εκμεταλλευτείτε τα Ενεργοποιημένα και Απενεργοποιημένα tokens.
Αν έχετε tokens που είναι απενεργοποιημένα, μπορείτε να χρησιμοποιήσετε το σενάριο EnableAllTokenPrivs.ps1 για να ενεργοποιήσετε όλα τα tokens:
Or the script embed in this post.
Full token privileges cheatsheet at https://github.com/gtworek/Priv2Admin, summary below will only list direct ways to exploit the privilege to obtain an admin session or read sensitive files.
SeAssignPrimaryToken
Admin
3rd party tool
"Θα επέτρεπε σε έναν χρήστη να μιμηθεί τα tokens και να αποκτήσει δικαιώματα nt system χρησιμοποιώντας εργαλεία όπως το potato.exe, rottenpotato.exe και juicypotato.exe"
Ευχαριστώ Aurélien Chalot για την ενημέρωση. Θα προσπαθήσω να το ξαναδιατυπώσω σε κάτι πιο συνταγές σύντομα.
SeBackup
Threat
Built-in commands
Διαβάστε ευαίσθητα αρχεία με robocopy /b
- Μπορεί να είναι πιο ενδιαφέρον αν μπορείτε να διαβάσετε το %WINDIR%\MEMORY.DMP
- SeBackupPrivilege
(και robocopy) δεν είναι χρήσιμο όταν πρόκειται για ανοιχτά αρχεία.
- Το Robocopy απαιτεί τόσο το SeBackup όσο και το SeRestore για να λειτουργήσει με την παράμετρο /b.
SeCreateToken
Admin
3rd party tool
Δημιουργήστε αυθαίρετο token που περιλαμβάνει δικαιώματα τοπικού διαχειριστή με NtCreateToken
.
SeDebug
Admin
PowerShell
Διπλασιάστε το token του lsass.exe
.
Το σενάριο μπορεί να βρεθεί στο FuzzySecurity
SeLoadDriver
Admin
3rd party tool
1. Φορτώστε ελαττωματικό πυρηνικό οδηγό όπως το szkg64.sys
2. Εκμεταλλευτείτε την ευπάθεια του οδηγού
Εναλλακτικά, το δικαίωμα μπορεί να χρησιμοποιηθεί για να ξεφορτωθείτε οδηγούς που σχετίζονται με την ασφάλεια με την εντολή ftlMC
.
δηλαδή: fltMC sysmondrv
1. Η ευπάθεια szkg64
αναφέρεται ως CVE-2018-15732
2. Ο κώδικας εκμετάλλευσης szkg64
δημιουργήθηκε από Parvez Anwar
SeRestore
Admin
PowerShell
1. Εκκινήστε το PowerShell/ISE με το δικαίωμα SeRestore παρόν. 2. Ενεργοποιήστε το δικαίωμα με Enable-SeRestorePrivilege. 3. Μετονομάστε το utilman.exe σε utilman.old 4. Μετονομάστε το cmd.exe σε utilman.exe 5. Κλειδώστε την κονσόλα και πατήστε Win+U
Η επίθεση μπορεί να ανιχνευθεί από κάποιο λογισμικό AV.
Η εναλλακτική μέθοδος βασίζεται στην αντικατάσταση των δυαδικών αρχείων υπηρεσίας που αποθηκεύονται στα "Program Files" χρησιμοποιώντας το ίδιο δικαίωμα.
SeTakeOwnership
Admin
Built-in commands
1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. Μετονομάστε το cmd.exe σε utilman.exe
4. Κλειδώστε την κονσόλα και πατήστε Win+U
Η επίθεση μπορεί να ανιχνευθεί από κάποιο λογισμικό AV.
Η εναλλακτική μέθοδος βασίζεται στην αντικατάσταση των δυαδικών αρχείων υπηρεσίας που αποθηκεύονται στα "Program Files" χρησιμοποιώντας το ίδιο δικαίωμα.
SeTcb
Admin
3rd party tool
Manipulate tokens to have local admin rights included. May require SeImpersonate.
To be verified.
Take a look to this table defining Windows tokens: https://github.com/gtworek/Priv2Admin
Take a look to this paper about privesc with tokens.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)