Abusing Tokens
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wenn du nicht weißt, was Windows Access Tokens sind, lies diese Seite, bevor du fortfährst:
Vielleicht kannst du Privilegien eskalieren, indem du die Tokens, die du bereits hast, ausnutzt.
Dies ist ein Privileg, das von jedem Prozess gehalten wird und die Impersonation (aber nicht die Erstellung) eines Tokens erlaubt, vorausgesetzt, ein Handle dafür kann erlangt werden. Ein privilegiertes Token kann von einem Windows-Dienst (DCOM) erworben werden, indem man ihn dazu bringt, 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.
Es ist sehr ähnlich zu SeImpersonatePrivilege, es wird die gleiche Methode verwendet, um ein privilegiertes Token zu erhalten. Dann erlaubt dieses Privileg, ein primäres Token einem neuen/ausgesetzten Prozess zuzuweisen. Mit dem privilegierten Impersonation-Token kannst du ein primäres Token ableiten (DuplicateTokenEx). Mit dem Token kannst du einen neuen Prozess mit 'CreateProcessAsUser' erstellen oder einen Prozess aussetzen und das Token setzen (im Allgemeinen kannst du das primäre Token eines laufenden Prozesses nicht ändern).
Wenn du dieses Token aktiviert hast, kannst du 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).
Das System wird durch dieses Privileg dazu gebracht, 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 verwendet werden können (Pass-the-Hash-Technik). Diese Technik schlägt jedoch unter zwei Bedingungen fehl: wenn das lokale Administratorkonto deaktiviert ist oder wenn eine Richtlinie besteht, die den lokalen Administratoren, die sich remote verbinden, die administrativen Rechte entzieht. Du kannst dieses Privileg ausnutzen mit:
Oder wie im Abschnitt Privilegieneskalation mit Backup-Operatoren erklärt:
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 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.
Dieses Privileg erlaubt es, Gerätetreiber zu laden und zu entladen, indem ein Registrierungseintrag mit spezifischen Werten für ImagePath
und Type
erstellt wird. 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ärdatei
Type
, mit dem Wert SERVICE_KERNEL_DRIVER
(0x00000001
).
Schritte, die zu befolgen sind:
Greife auf HKCU
anstelle von HKLM
zu, aufgrund des eingeschränkten Schreibzugriffs.
Erstelle den Pfad \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
innerhalb von HKCU
, wobei <RID>
den relativen Identifikator des aktuellen Benutzers darstellt.
Setze den ImagePath
auf den Ausführungspfad der Binärdatei.
Weisen den Type
als SERVICE_KERNEL_DRIVER
(0x00000001
) zu.
Mehr Möglichkeiten, dieses Privileg auszunutzen in https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
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 diskretionären Zugriff durch die Bereitstellung von WRITE_OWNER-Zugriffsrechten umgangen wird. Der Prozess besteht darin, zunächst das Eigentum an dem beabsichtigten Registrierungsschlüssel für Schreibzwecke zu sichern und dann die DACL zu ändern, um Schreibvorgänge zu ermöglichen.
Dieses Privileg erlaubt es, andere Prozesse zu debuggen, einschließlich das Lesen und Schreiben im Speicher. Verschiedene Strategien für die Speicherinjektion, die in der Lage sind, die meisten Antiviren- und Hostintrusionsschutzlösungen zu umgehen, können mit diesem Privileg eingesetzt werden.
Sie können ProcDump aus der SysInternals Suite verwenden, um den Speicher eines Prozesses zu erfassen. Dies kann insbesondere für den Local Security Authority Subsystem Service (LSASS) Prozess gelten, der dafür verantwortlich ist, Benutzeranmeldeinformationen zu speichern, sobald sich ein Benutzer erfolgreich in ein System eingeloggt hat.
Sie können diesen Dump dann in mimikatz laden, um Passwörter zu erhalten:
Wenn Sie eine NT SYSTEM
-Shell erhalten möchten, können Sie Folgendes verwenden:
Die Tokens, die als Deaktiviert erscheinen, können aktiviert werden, Sie können tatsächlich Aktivierte und Deaktivierte Tokens ausnutzen.
Wenn Sie Tokens deaktiviert haben, können Sie das Skript EnableAllTokenPrivs.ps1 verwenden, um alle Tokens zu aktivieren:
Or das Skript eingebettet in diesem Beitrag.
Vollständige Token-Berechtigungen Cheatsheet unter https://github.com/gtworek/Priv2Admin, die Zusammenfassung unten listet nur direkte Möglichkeiten zur Ausnutzung der Berechtigung, um eine Admin-Sitzung zu erhalten oder sensible Dateien zu lesen.
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 erlangen"
SeBackup
Bedrohung
Eingebaute Befehle
Sensible Dateien mit robocopy /b
lesen
- Könnte interessanter sein, wenn Sie %WINDIR%\MEMORY.DMP lesen können
- SeBackupPrivilege
(und robocopy) sind nicht hilfreich, wenn es um geöffnete Dateien geht.
- Robocopy benötigt sowohl SeBackup als auch SeRestore, um mit dem /b-Parameter zu arbeiten.
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
.
SeLoadDriver
Admin
3rd party tool
1. Laden Sie einen fehlerhaften Kernel-Treiber wie szkg64.sys
2. Nutzen Sie die Treibersicherheitsanfälligkeit aus
Alternativ kann die Berechtigung verwendet werden, um sicherheitsrelevante Treiber mit dem ftlMC
eingebauten Befehl zu entladen. d.h.: fltMC sysmondrv
SeRestore
Admin
PowerShell
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 derselben Berechtigung.
SeTakeOwnership
Admin
Eingebaute Befehle
1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. Benennen Sie cmd.exe in utilman.exe um
4. Sperren Sie die Konsole und drücken Sie Win+U
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 derselben Berechtigung.
SeTcb
Admin
3rd party tool
Manipulieren Sie Tokens, um lokale Administratorrechte einzuschließen. Möglicherweise ist SeImpersonate erforderlich.
Zu überprüfen.
Werfen Sie einen Blick auf diese Tabelle, die Windows-Token definiert: https://github.com/gtworek/Priv2Admin
Werfen Sie einen Blick auf dieses Papier über Privilegieneskalation mit Tokens.
Danke für das Update. Ich werde versuchen, es bald in etwas Rezeptartiges umzuformulieren.
Skript zu finden unter
1. Die szkg64
Sicherheitsanfälligkeit ist als aufgeführt.
2. Der szkg64
wurde von erstellt.
1. Starten Sie PowerShell/ISE mit der SeRestore-Berechtigung. 2. Aktivieren Sie die Berechtigung mit . 3. Benennen Sie utilman.exe in utilman.old um 4. Benennen Sie cmd.exe in utilman.exe um 5. Sperren Sie die Konsole und drücken Sie Win+U
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)