Missbrauch von Tokens
Reading time: 10 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)
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
Wenn Sie nicht wissen, was Windows Access Tokens sind, lesen Sie diese Seite, bevor Sie fortfahren:
Vielleicht könnten Sie in der Lage sein, Privilegien durch den Missbrauch der Tokens, die Sie bereits haben, zu eskalieren.
SeImpersonatePrivilege
Dies ist ein Privileg, das von jedem Prozess gehalten wird und die Impersonation (aber nicht die Erstellung) eines Tokens ermöglicht, vorausgesetzt, ein Handle dafür kann erlangt werden. Ein privilegiertes Token kann von einem Windows-Dienst (DCOM) erworben werden, indem man ihn dazu bringt, eine NTLM-Authentifizierung gegen einen Exploit durchzuführen, was anschließend die Ausführung eines Prozesses mit SYSTEM-Privilegien ermöglicht. Diese Schwachstelle kann mit verschiedenen Tools ausgenutzt werden, wie juicy-potato, RogueWinRM (was erfordert, dass winrm deaktiviert ist), SweetPotato und PrintSpoofer.
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato
SeAssignPrimaryPrivilege
Es ist sehr ähnlich zu SeImpersonatePrivilege, es wird die gleiche Methode verwendet, um ein privilegiertes Token zu erhalten.
Dann ermöglicht dieses Privileg das Zuweisen eines primären Tokens zu einem neuen/ausgesetzten Prozess. Mit dem privilegierten Impersonation-Token können Sie ein primäres Token ableiten (DuplicateTokenEx).
Mit dem Token können Sie einen neuen Prozess mit 'CreateProcessAsUser' erstellen oder einen Prozess aussetzen und das Token setzen (im Allgemeinen können Sie das primäre Token eines laufenden Prozesses nicht ändern).
SeTcbPrivilege
Wenn Sie dieses Token aktiviert haben, können Sie KERB_S4U_LOGON verwenden, um ein Impersonation-Token für jeden anderen Benutzer zu erhalten, ohne die Anmeldeinformationen zu kennen, eine beliebige Gruppe (Admins) zum Token hinzuzufügen, das Integritätslevel des Tokens auf "medium" zu setzen und dieses Token dem aktuellen Thread zuzuweisen (SetThreadToken).
SeBackupPrivilege
Das System wird durch dieses Privileg dazu veranlasst, allen Lesezugriff auf jede Datei (beschränkt auf Leseoperationen) zu gewähren. Es wird verwendet, um die Passwort-Hashes von lokalen Administrator-Konten aus der Registrierung zu lesen, wonach Tools wie "psexec" oder "wmiexec" mit dem Hash (Pass-the-Hash-Technik) verwendet werden können. Diese Technik schlägt jedoch unter zwei Bedingungen fehl: wenn das lokale Administratorkonto deaktiviert ist oder wenn eine Richtlinie besteht, die den administrativen Zugriff von lokalen Administratoren, die sich remote verbinden, entfernt.
Sie können dieses Privileg missbrauchen mit:
- https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1
- https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug
- folgender IppSec in https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
- Oder wie im Abschnitt Privilegieneskalation mit Backup-Operatoren erklärt:
SeRestorePrivilege
Dieses Privileg gewährt die Berechtigung für Schreibzugriff auf jede Systemdatei, unabhängig von der Access Control List (ACL) der Datei. Es eröffnet zahlreiche Möglichkeiten zur Eskalation, einschließlich der Fähigkeit, Dienste zu modifizieren, DLL Hijacking durchzuführen und Debugger über die Image File Execution Options unter verschiedenen anderen Techniken festzulegen.
SeCreateTokenPrivilege
SeCreateTokenPrivilege ist eine mächtige Berechtigung, die besonders nützlich ist, wenn ein Benutzer die Fähigkeit hat, Tokens zu impersonieren, aber auch in Abwesenheit von SeImpersonatePrivilege. Diese Fähigkeit hängt von der Möglichkeit ab, ein Token zu impersonieren, das denselben Benutzer repräsentiert und dessen Integritätslevel nicht höher ist als der des aktuellen Prozesses.
Wichtige Punkte:
- Impersonation ohne SeImpersonatePrivilege: Es ist möglich, SeCreateTokenPrivilege für EoP zu nutzen, indem Tokens unter bestimmten Bedingungen impersoniert werden.
- Bedingungen für die Token-Impersonation: Erfolgreiche Impersonation erfordert, dass das Ziel-Token demselben Benutzer gehört und ein Integritätslevel hat, das kleiner oder gleich dem Integritätslevel des Prozesses ist, der die Impersonation versucht.
- Erstellung und Modifikation von Impersonation-Tokens: Benutzer können ein Impersonation-Token erstellen und es verbessern, indem sie eine SID (Security Identifier) einer privilegierten Gruppe hinzufügen.
SeLoadDriverPrivilege
Dieses Privileg ermöglicht das Laden und Entladen von Gerätetreibern durch die Erstellung eines Registrierungseintrags mit spezifischen Werten für ImagePath
und Type
. Da der direkte Schreibzugriff auf HKLM
(HKEY_LOCAL_MACHINE) eingeschränkt ist, muss stattdessen HKCU
(HKEY_CURRENT_USER) verwendet werden. Um HKCU
jedoch für die Kernel-Konfiguration von Treibern erkennbar zu machen, muss ein spezifischer Pfad eingehalten werden.
Dieser Pfad ist \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
, wobei <RID>
der Relative Identifier des aktuellen Benutzers ist. Innerhalb von HKCU
muss dieser gesamte Pfad erstellt werden, und zwei Werte müssen gesetzt werden:
ImagePath
, der Pfad zur auszuführenden BinärdateiType
, mit dem WertSERVICE_KERNEL_DRIVER
(0x00000001
).
Schritte, die zu befolgen sind:
- Greifen Sie auf
HKCU
anstelle vonHKLM
zu, da der Schreibzugriff eingeschränkt ist. - Erstellen Sie den Pfad
\Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
innerhalb vonHKCU
, wobei<RID>
den relativen Identifikator des aktuellen Benutzers darstellt. - Setzen Sie den
ImagePath
auf den Ausführungspfad der Binärdatei. - Weisen Sie den
Type
alsSERVICE_KERNEL_DRIVER
(0x00000001
) zu.
# 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)
Mehr Möglichkeiten, dieses Privileg auszunutzen in https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
SeTakeOwnershipPrivilege
Dies ist ähnlich wie SeRestorePrivilege. Seine Hauptfunktion ermöglicht es einem Prozess, das Eigentum an einem Objekt zu übernehmen, wodurch die Anforderung für expliziten Ermessenszugang durch die Bereitstellung von WRITE_OWNER-Zugriffsrechten umgangen wird. Der Prozess umfasst zunächst die Sicherstellung des Eigentums an dem beabsichtigten Registrierungsschlüssel zu Schreibzwecken, gefolgt von der Änderung der DACL, um Schreibvorgänge 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 es, andere Prozesse zu debuggen, einschließlich das Lesen und Schreiben im Speicher. Verschiedene Strategien zur Speicherinjektion, die in der Lage sind, die meisten Antiviren- und Host-Intrusion-Prevention-Lösungen zu umgehen, können mit diesem Privileg eingesetzt werden.
Dump-Speicher
Sie können ProcDump aus der SysInternals Suite verwenden, um den Speicher eines Prozesses zu erfassen. Dies kann speziell für den Prozess Local Security Authority Subsystem Service (LSASS) gelten, der dafür verantwortlich ist, Benutzeranmeldeinformationen zu speichern, sobald ein Benutzer erfolgreich in ein System eingeloggt ist.
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 Sie eine NT SYSTEM
-Shell erhalten möchten, können Sie Folgendes verwenden:
# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)
Überprüfen der Berechtigungen
whoami /priv
Die Tokens, die als Deaktiviert erscheinen, können aktiviert werden, Sie können tatsächlich Aktivierte und Deaktivierte Tokens ausnutzen.
Alle Tokens aktivieren
Wenn Sie Tokens deaktiviert haben, können Sie das Skript EnableAllTokenPrivs.ps1 verwenden, um alle Tokens zu aktivieren:
.\EnableAllTokenPrivs.ps1
whoami /priv
Oder das Skript eingebettet in diesem Beitrag.
Tabelle
Vollständige Token-Berechtigungen Cheatsheet unter https://github.com/gtworek/Priv2Admin, die Zusammenfassung unten listet nur direkte Möglichkeiten auf, um das Privileg auszunutzen, um eine Admin-Sitzung zu erhalten oder sensible Dateien zu lesen.
Privileg | Auswirkung | Tool | Ausführungspfad | Anmerkungen |
---|---|---|---|---|
SeAssignPrimaryToken | Admin | 3rd party tool | "Es würde einem Benutzer erlauben, Tokens zu impersonieren und Privilegien auf das NT-System mit Tools wie potato.exe, rottenpotato.exe und juicypotato.exe zu erhöhen" | Danke Aurélien Chalot für das Update. Ich werde versuchen, es bald in etwas Rezeptartiges umzuformulieren. |
SeBackup | Bedrohung | Eingebaute Befehle | Sensible Dateien mit robocopy /b lesen | - Könnte interessanter sein, wenn Sie %WINDIR%\MEMORY.DMP lesen können |
SeCreateToken | Admin | 3rd party tool | Erstellen Sie ein beliebiges Token, einschließlich lokaler Administratorrechte mit NtCreateToken . | |
SeDebug | Admin | PowerShell | Duplizieren Sie das Token von lsass.exe . | Skript zu finden unter FuzzySecurity |
SeLoadDriver | Admin | 3rd party tool | 1. Laden Sie einen fehlerhaften Kernel-Treiber wie | 1. Die |
SeRestore | Admin | PowerShell | 1. Starten Sie PowerShell/ISE mit dem SeRestore-Privileg. | Der Angriff kann von einiger AV-Software erkannt werden. Die alternative Methode beruht auf dem Ersetzen von Dienstbinaries, die in "Program Files" gespeichert sind, unter Verwendung desselben Privilegs. |
SeTakeOwnership | Admin | Eingebaute Befehle | 1. | Der Angriff kann von einiger AV-Software erkannt werden. Die alternative Methode beruht auf dem Ersetzen von Dienstbinaries, die in "Program Files" gespeichert sind, unter Verwendung desselben Privilegs. |
SeTcb | Admin | 3rd party tool | Manipulieren Sie Tokens, um lokale Administratorrechte einzuschließen. Möglicherweise ist SeImpersonate erforderlich. Zu überprüfen. |
Referenz
- Werfen Sie einen Blick auf diese Tabelle, die Windows-Token definiert: https://github.com/gtworek/Priv2Admin
- Werfen Sie einen Blick auf dieses Papier über Privilegienerweiterung mit Tokens.
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)
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.