hacktricks/windows-hardening/windows-local-privilege-escalation/integrity-levels.md
2024-02-10 15:36:32 +00:00

8.5 KiB

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Integritätsstufen

In Windows Vista und späteren Versionen sind alle geschützten Objekte mit einem Integritätsstufen-Tag versehen. In der Regel wird die Integritätsstufe "Medium" für Dateien und Registrierungsschlüssel zugewiesen, mit Ausnahme bestimmter Ordner und Dateien, auf die Internet Explorer 7 mit niedriger Integritätsstufe schreiben kann. Das Standardverhalten besteht darin, dass Prozesse, die von Standardbenutzern gestartet werden, eine mittlere Integritätsstufe haben, während Dienste in der Regel mit einer Systemintegritätsstufe arbeiten. Ein Label mit hoher Integrität schützt das Stammverzeichnis.

Eine wichtige Regel besagt, dass Objekte nicht von Prozessen mit einer niedrigeren Integritätsstufe als der des Objekts geändert werden können. Die Integritätsstufen sind:

  • Untrusted: Diese Stufe gilt für Prozesse mit anonymen Anmeldungen. %%%Beispiel: Chrome%%%
  • Low: Hauptsächlich für Internetinteraktionen, insbesondere im geschützten Modus von Internet Explorer, der sich auf zugehörige Dateien und Prozesse sowie bestimmte Ordner wie den Temporary Internet Folder auswirkt. Prozesse mit niedriger Integrität unterliegen erheblichen Einschränkungen, einschließlich des Fehlens von Schreibzugriff auf die Registrierung und begrenztem Schreibzugriff auf Benutzerprofile.
  • Medium: Die Standardstufe für die meisten Aktivitäten, zugewiesen an Standardbenutzer und Objekte ohne spezifische Integritätsstufen. Selbst Mitglieder der Administratorengruppe arbeiten standardmäßig auf dieser Stufe.
  • High: Für Administratoren reserviert, ermöglicht es ihnen, Objekte auf niedrigeren Integritätsstufen zu ändern, einschließlich solcher auf der hohen Stufe selbst.
  • System: Die höchste Betriebsstufe für den Windows-Kernel und Kernservices, selbst für Administratoren unerreichbar, um den Schutz wichtiger Systemfunktionen zu gewährleisten.
  • Installer: Eine einzigartige Stufe, die über allen anderen steht und Objekten auf dieser Stufe ermöglicht, jedes andere Objekt zu deinstallieren.

Sie können die Integritätsstufe eines Prozesses mit Process Explorer von Sysinternals abrufen, indem Sie die Eigenschaften des Prozesses aufrufen und den Tab "Sicherheit" anzeigen:

Sie können auch Ihre aktuelle Integritätsstufe mit whoami /groups abrufen.

Integritätsstufen im Dateisystem

Ein Objekt im Dateisystem kann eine Mindestintegritätsstufenanforderung haben, und wenn ein Prozess diese Integritätsstufe nicht hat, kann er nicht damit interagieren.
Zum Beispiel erstellen wir eine reguläre Datei aus einer regulären Benutzerkonsole und überprüfen die Berechtigungen:

echo asd >asd.txt
icacls asd.txt
asd.txt BUILTIN\Administrators:(I)(F)
DESKTOP-IDJHTKP\user:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\INTERACTIVE:(I)(M,DC)
NT AUTHORITY\SERVICE:(I)(M,DC)
NT AUTHORITY\BATCH:(I)(M,DC)

Jetzt weisen wir der Datei ein Mindestintegritätslevel von Hoch zu. Dies muss von einer Konsole ausgeführt werden, die als Administrator läuft, da eine normale Konsole im Medium-Integritätslevel ausgeführt wird und nicht berechtigt ist, dem Objekt ein Hoch-Integritätslevel zuzuweisen:

icacls asd.txt /setintegritylevel(oi)(ci) High
processed file: asd.txt
Successfully processed 1 files; Failed processing 0 files

C:\Users\Public>icacls asd.txt
asd.txt BUILTIN\Administrators:(I)(F)
DESKTOP-IDJHTKP\user:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\INTERACTIVE:(I)(M,DC)
NT AUTHORITY\SERVICE:(I)(M,DC)
NT AUTHORITY\BATCH:(I)(M,DC)
Mandatory Label\High Mandatory Level:(NW)

Hier wird es interessant. Sie können sehen, dass der Benutzer DESKTOP-IDJHTKP\user VOLLSTÄNDIGE Berechtigungen für die Datei hat (tatsächlich hat dieser Benutzer die Datei erstellt). Aufgrund des implementierten Mindestintegritätslevels kann er die Datei jedoch nicht mehr ändern, es sei denn, er führt sie mit einem hohen Integritätslevel aus (beachten Sie, dass er sie weiterhin lesen kann):

echo 1234 > asd.txt
Access is denied.

del asd.txt
C:\Users\Public\asd.txt
Access is denied.

{% hint style="info" %} Daher müssen Sie, um eine Datei mit einem Mindestintegritätslevel zu ändern, mindestens in diesem Integritätslevel ausgeführt werden. {% endhint %}

Integritätslevel in Binärdateien

Ich habe eine Kopie von cmd.exe in C:\Windows\System32\cmd-low.exe erstellt und ihm einen Integritätslevel von niedrig aus einer Administrator-Konsole zugewiesen:

icacls C:\Windows\System32\cmd-low.exe
C:\Windows\System32\cmd-low.exe NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Administrators:(I)(F)
BUILTIN\Users:(I)(RX)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APP PACKAGES:(I)(RX)
Mandatory Label\Low Mandatory Level:(NW)

Jetzt, wenn ich cmd-low.exe ausführe, wird es unter einem niedrigen Integritätslevel anstatt eines mittleren ausgeführt:

Für neugierige Menschen, wenn Sie einem Binärdatei einen hohen Integritätslevel zuweisen (icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high), wird es nicht automatisch mit hohem Integritätslevel ausgeführt (wenn Sie es aus einem mittleren Integritätslevel aufrufen - standardmäßig - wird es unter einem mittleren Integritätslevel ausgeführt).

Integritätslevel in Prozessen

Nicht alle Dateien und Ordner haben einen Mindestintegritätslevel, aber alle Prozesse laufen unter einem Integritätslevel. Und ähnlich wie bei dem, was mit dem Dateisystem passiert ist, muss ein Prozess, der in einen anderen Prozess schreiben möchte, mindestens den gleichen Integritätslevel haben. Das bedeutet, dass ein Prozess mit niedrigem Integritätslevel keinen Handle mit vollem Zugriff auf einen Prozess mit mittlerem Integritätslevel öffnen kann.

Aufgrund der in diesem und im vorherigen Abschnitt genannten Einschränkungen wird aus Sicherheitsgründen immer empfohlen, einen Prozess mit dem niedrigsten möglichen Integritätslevel auszuführen.

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: