UAC - User Account Control
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)
Verwende Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Erhalte heute Zugang:
Benutzerkontensteuerung (UAC) ist eine Funktion, die eine Zustimmungsmeldung für erhöhte Aktivitäten ermöglicht. Anwendungen haben unterschiedliche Integritäts
-stufen, und ein Programm mit einem hohen Niveau 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:
Integrity LevelsWenn 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 wird. Die verschiedenen Einstellungen werden hier ausführlich besprochen. Es gibt 10 Gruppenrichtlinieneinstellungen, die für UAC festgelegt werden können. Die folgende Tabelle bietet zusätzliche Details:
FilterAdministratorToken
Deaktiviert
EnableUIADesktopToggle
Deaktiviert
ConsentPromptBehaviorAdmin
Aufforderung zur Zustimmung für Nicht-Windows-Binärdateien
ConsentPromptBehaviorUser
Aufforderung zur Eingabe von Anmeldeinformationen auf dem sicheren Desktop
EnableInstallerDetection
Aktiviert (Standard für Home) Deaktiviert (Standard für Enterprise)
ValidateAdminCodeSignatures
Deaktiviert
EnableSecureUIAPaths
Aktiviert
EnableLUA
Aktiviert
PromptOnSecureDesktop
Aktiviert
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 mittlerer Integritätsstufe zu hoher zu erhöhen) zu umgehen, verwenden einige Angreifer diese Art von Binärdateien, um beliebigen Code auszuführen, da er von einem Prozess mit hoher Integritätsstufe ausgeführt wird.
Du kannst das Manifest einer Binärdatei mit dem Tool sigcheck.exe von Sysinternals überprüfen. Und du kannst die Integritätsstufe der Prozesse mit Process Explorer oder Process Monitor (von Sysinternals) sehen.
Um zu bestätigen, ob UAC aktiviert ist, führe Folgendes aus:
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:
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
wie 1
, aber nicht unbedingt auf Secure Desktop
Wenn 4
wie 2
, 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, dann 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
kann das eingebaute Administratorkonto nicht Remote-Administrationsaufgaben durchführen, es sei denn, LocalAccountTokenFilterPolicy
ist auf 1
gesetzt.
Wenn EnableLUA=0
oder nicht vorhanden, kein UAC für niemanden
Wenn EnableLua=1
und LocalAccountTokenFilterPolicy=1
, kein UAC für niemanden
Wenn EnableLua=1
und LocalAccountTokenFilterPolicy=0
und FilterAdministratorToken=0
, kein UAC für RID 500 (eingebauter Administrator)
Wenn EnableLua=1
und LocalAccountTokenFilterPolicy=0
und FilterAdministratorToken=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ätslevel abrufen:
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-Eingabeaufforderung 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.
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:
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).
Es scheint, dass dieser Trick nicht mehr funktioniert
Die Cobalt Strike-Techniken funktionieren nur, wenn UAC nicht auf dem maximalen Sicherheitsniveau eingestellt ist.
Empire und Metasploit haben auch mehrere Module, um die UAC zu umgehen.
Dokumentation und Tool in https://github.com/wh0amitz/KRBUACBypass
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 warnen, 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:
Auch mit dieser Seite erhalten Sie die Windows-Version 1607
aus den Build-Versionen.
Alle hier verwendeten Techniken zur Umgehung von AUC 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)
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.
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.
Wenn Sie sich UACME ansehen, werden Sie feststellen, dass die meisten UAC-Umgehungen eine Dll Hijacking-Schwachstelle ausnutzen (hauptsächlich das Schreiben der bösartigen dll in C:\Windows\System32). Lesen Sie dies, um zu lernen, wie man eine Dll Hijacking-Schwachstelle findet.
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.
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).
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)