Abusing Tokens
Reading time: 11 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Tokens
If you don't know what are Windows Access Tokens read this page before continuing:
Vielleicht kannst du Privilegien eskalieren, indem du die Tokens, die du bereits hast, missbrauchst
SeImpersonatePrivilege
This is privilege that is held by any process allows the impersonation (but not creation) of any token, given that a handle to it can be obtained. A privileged token can be acquired from a Windows service (DCOM) by inducing it to perform NTLM authentication against an exploit, subsequently enabling the execution of a process with SYSTEM privileges. This vulnerability can be exploited using various tools, such as juicy-potato, RogueWinRM (which requires winrm to be disabled), SweetPotato, and PrintSpoofer.
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato
SeAssignPrimaryPrivilege
It is very similar to SeImpersonatePrivilege, it will use the same method to get a privileged token.
Then, this privilege allows to assign a primary token to a new/suspended process. With the privileged impersonation token you can derivate a primary token (DuplicateTokenEx).
With the token, you can create a new process with 'CreateProcessAsUser' or create a process suspended and set the token (in general, you cannot modify the primary token of a running process).
SeTcbPrivilege
If you have enabled this token you can use KERB_S4U_LOGON to get an impersonation token for any other user without knowing the credentials, add an arbitrary group (admins) to the token, set the integrity level of the token to "medium", and assign this token to the current thread (SetThreadToken).
SeBackupPrivilege
Dieses Privileg veranlasst das System, vollen Lesezugriff auf jede Datei zu gewähren (beschränkt auf Leseoperationen). Es wird genutzt, um die Passwort-Hashes lokaler Administrator-Konten aus der Registry zu lesen, wonach Tools wie "psexec" oder "wmiexec" mit dem Hash verwendet werden können (Pass-the-Hash-Technik). Diese Methode schlägt jedoch in zwei Fällen fehl: wenn das Local Administrator-Konto deaktiviert ist oder wenn eine Richtlinie vorhanden ist, die Administratorrechte von Local Administrators bei Remote-Verbindungen entfernt.
Du kannst dieses Privileg ausnutzen mit:
- https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1
- https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug
- following IppSec in https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
- Or as explained in the escalating privileges with Backup Operators section of:
SeRestorePrivilege
Dieses Privileg gewährt Schreibzugriff auf jede Systemdatei, unabhängig von der Access Control List (ACL) der Datei. Es eröffnet viele Eskalationsmöglichkeiten, darunter Dienste zu ändern, DLL Hijacking durchzuführen und Debugger über Image File Execution Options zu setzen, sowie verschiedene andere Techniken.
SeCreateTokenPrivilege
SeCreateTokenPrivilege ist ein mächtiges Recht, besonders nützlich, wenn ein Benutzer die Fähigkeit besitzt, Tokens zu impersonieren, aber auch ohne SeImpersonatePrivilege. Diese Fähigkeit hängt davon ab, ein Token zu impersonieren, das denselben Benutzer repräsentiert und dessen integrity level das des aktuellen Prozesses nicht übersteigt.
Wichtige Punkte:
- Impersonation ohne SeImpersonatePrivilege: Es ist möglich, SeCreateTokenPrivilege für EoP zu nutzen, indem man Tokens unter bestimmten Bedingungen impersoniert.
- Bedingungen für Token-Impersonation: Erfolgreiche Impersonation erfordert, dass das Zieltoken zum selben Benutzer gehört und ein integrity level hat, das kleiner oder gleich dem integrity level des Prozesses ist, der die Impersonation versucht.
- Erstellung und Modifikation von Impersonation-Tokens: Benutzer können ein impersonation token erstellen und es erweitern, indem sie die SID (Security Identifier) einer privilegierten Gruppe hinzufügen.
SeLoadDriverPrivilege
This privilege allows to load and unload device drivers with the creation of a registry entry with specific values for ImagePath
and Type
. Since direct write access to HKLM
(HKEY_LOCAL_MACHINE) is restricted, HKCU
(HKEY_CURRENT_USER) must be utilized instead. However, to make HKCU
recognizable to the kernel for driver configuration, a specific path must be followed.
This path is \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
, where <RID>
is the Relative Identifier of the current user. Inside HKCU
, this entire path must be created, and two values need to be set:
ImagePath
, which is the path to the binary to be executedType
, with a value ofSERVICE_KERNEL_DRIVER
(0x00000001
).
Steps to Follow:
- Access
HKCU
instead ofHKLM
due to restricted write access. - Create the path
\Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
withinHKCU
, where<RID>
represents the current user's Relative Identifier. - Set the
ImagePath
to the binary's execution path. - Assign the
Type
asSERVICE_KERNEL_DRIVER
(0x00000001
).
# Example Python code to set the registry values
import winreg as reg
# Define the path and values
path = r'Software\YourPath\System\CurrentControlSet\Services\DriverName' # Adjust 'YourPath' as needed
key = reg.OpenKey(reg.HKEY_CURRENT_USER, path, 0, reg.KEY_WRITE)
reg.SetValueEx(key, "ImagePath", 0, reg.REG_SZ, "path_to_binary")
reg.SetValueEx(key, "Type", 0, reg.REG_DWORD, 0x00000001)
reg.CloseKey(key)
More ways to abuse this privilege in https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
SeTakeOwnershipPrivilege
Das ist ähnlich wie SeRestorePrivilege. Seine Hauptfunktion erlaubt es einem Prozess, die Eigentümerschaft eines Objekts zu übernehmen und damit die Notwendigkeit expliziter diskretionärer Zugriffsrechte zu umgehen, indem WRITE_OWNER-Zugriffsrechte vergeben werden. Der Vorgang besteht darin, zunächst die Eigentümerschaft des vorgesehenen registry key für Schreibzwecke zu erlangen und anschließend die DACL zu ändern, um Schreibzugriffe zu ermöglichen.
takeown /f 'C:\some\file.txt' #Now the file is owned by you
icacls 'C:\some\file.txt' /grant <your_username>:F #Now you have full access
# Use this with files that might contain credentials such as
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software
%WINDIR%\repair\security
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
c:\inetpub\wwwwroot\web.config
SeDebugPrivilege
Dieses Privileg erlaubt das debug other processes, einschließlich des Lesens und Schreibens im Speicher. Verschiedene Strategien für memory injection, die die meisten antivirus- und host intrusion prevention solutions umgehen können, lassen sich mit diesem Privileg einsetzen.
Speicher auslesen
Sie können ProcDump aus der SysInternals Suite verwenden, um den Speicher eines Prozesses zu erfassen. Dies kann sich speziell auf den Prozess Local Security Authority Subsystem Service (LSASS) beziehen, der dafür verantwortlich ist, Benutzeranmeldeinformationen zu speichern, nachdem sich ein Benutzer erfolgreich an einem System angemeldet hat.
Sie können diesen Dump dann in mimikatz laden, um Passwörter zu erhalten:
mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords
RCE
Wenn du eine NT SYSTEM
-Shell erhalten möchtest, kannst du Folgendes verwenden:
# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)
SeManageVolumePrivilege
Dieses Recht (Perform volume maintenance tasks) erlaubt das Öffnen von rohen Volume-Geräte-Handles (z. B. \.\C:) für direkten Festplatten-I/O, der NTFS ACLs umgeht. Damit können Sie die Bytes beliebiger Dateien auf dem Volume kopieren, indem Sie die zugrunde liegenden Blöcke lesen, was das beliebige Lesen von Dateien mit sensiblen Inhalten ermöglicht (z. B. private Maschinenschlüssel in %ProgramData%\Microsoft\Crypto, Registry-Hives, SAM/NTDS via VSS). Dies ist besonders gravierend auf CA-Servern, wo das Exfiltrieren des CA-Private-Keys das Fälschen eines Golden Certificate ermöglicht, um sich als jeden Principal auszugeben.
See detailed techniques and mitigations:
Semanagevolume Perform Volume Maintenance Tasks
Privilegien prüfen
whoami /priv
Die tokens, die als Disabled angezeigt werden, können aktiviert werden; tatsächlich kann man sowohl Enabled- als auch Disabled-tokens ausnutzen.
Alle tokens aktivieren
Wenn du deaktivierte tokens hast, kannst du das script EnableAllTokenPrivs.ps1 verwenden, um alle tokens zu aktivieren:
.\EnableAllTokenPrivs.ps1
whoami /priv
Oder das in diesem post eingebettete script.
Tabelle
Vollständiges Cheatsheet für Token-Privilegien unter https://github.com/gtworek/Priv2Admin, die folgende Zusammenfassung listet nur direkte Wege auf, das Privileg auszunutzen, um eine Admin-Sitzung zu erhalten oder sensible Dateien zu lesen.
Privileg | Auswirkung | Tool | Ausführungspfad | Bemerkungen |
---|---|---|---|---|
SeAssignPrimaryToken | Admin | Tool eines Drittanbieters | "Es würde einem Benutzer erlauben, Tokens zu impersonifizieren und privesc zum nt system durchzuführen, indem Tools wie potato.exe, rottenpotato.exe und juicypotato.exe verwendet werden" | Danke an Aurélien Chalot für das Update. Ich werde versuchen, es bald etwas rezeptartig umzuformulieren. |
SeBackup | Bedrohung | Built-in commands | Sensible Dateien mit robocopy /b lesen. | - Kann interessanter sein, wenn Sie %WINDIR%\MEMORY.DMP lesen können |
SeCreateToken | Admin | Tool eines Drittanbieters | Einen beliebigen Token erstellen, einschließlich lokaler Admin-Rechte, mit NtCreateToken . | |
SeDebug | Admin | PowerShell | Den Token von lsass.exe duplizieren. | Script ist zu finden bei FuzzySecurity |
SeLoadDriver | Admin | Tool eines Drittanbieters | 1. Lade einen fehlerhaften Kernel-Treiber wie | 1. Die |
SeRestore | Admin | PowerShell | 1. Starte PowerShell/ISE mit vorhandenem SeRestore-Privileg. | Angriff kann von einigen AV-Programmen erkannt werden. Eine alternative Methode beruht darauf, Service-Binärdateien im Ordner "Program Files" mit demselben Privileg zu ersetzen |
SeTakeOwnership | Admin | Built-in commands | 1. | Angriff kann von einigen AV-Programmen erkannt werden. Alternative Methode beruht darauf, Service-Binärdateien im Ordner "Program Files" mit demselben Privileg zu ersetzen. |
SeTcb | Admin | Tool eines Drittanbieters | Tokens manipulieren, um lokale Admin-Rechte einzuschließen. Kann SeImpersonate erfordern. Zu verifizieren. |
Referenz
- Siehe diese Tabelle, die Windows-Tokens definiert: https://github.com/gtworek/Priv2Admin
- Siehe dieses Paper über privesc mit tokens.
- Microsoft – Durchführung von Volume-Wartungsaufgaben (SeManageVolumePrivilege): https://learn.microsoft.com/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/perform-volume-maintenance-tasks
- 0xdf – HTB: Zertifikat (SeManageVolumePrivilege → CA key exfil → Golden Certificate): https://0xdf.gitlab.io/2025/10/04/htb-certificate.html
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.