Integrity Levels
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
In Windows Vista und späteren Versionen haben alle geschützten Elemente ein Integritätsstufen-Tag. Diese Konfiguration weist Dateien und Registrierungsschlüsseln in der Regel eine "mittlere" Integritätsstufe zu, mit Ausnahme bestimmter Ordner und Dateien, auf die Internet Explorer 7 mit einer niedrigen Integritätsstufe schreiben kann. Das Standardverhalten ist, dass Prozesse, die von Standardbenutzern initiiert werden, eine mittlere Integritätsstufe haben, während Dienste typischerweise auf einer Systemintegritätsstufe arbeiten. Ein Hochintegritätslabel schützt das Wurzelverzeichnis.
Eine wichtige Regel ist, dass Objekte nicht von Prozessen mit einer niedrigeren Integritätsstufe als der des Objekts modifiziert werden können. Die Integritätsstufen sind:
Untrusted: Diese Stufe ist für Prozesse mit anonymen Anmeldungen. %%%Beispiel: Chrome%%%
Low: Hauptsächlich für Internetinteraktionen, insbesondere im geschützten Modus von Internet Explorer, der betroffene Dateien und Prozesse sowie bestimmte Ordner wie den Temporären Internetordner betrifft. Prozesse mit niedriger Integrität unterliegen erheblichen Einschränkungen, einschließlich des fehlenden Zugriffs auf die Registrierung und eingeschränktem Zugriff auf das Benutzerprofil.
Medium: Die Standardstufe für die meisten Aktivitäten, die Standardbenutzern und Objekten ohne spezifische Integritätsstufen zugewiesen ist. Selbst Mitglieder der Administratorgruppe arbeiten standardmäßig auf dieser Stufe.
High: Reserviert für Administratoren, die es ihnen ermöglichen, Objekte mit niedrigeren Integritätsstufen zu modifizieren, einschließlich solcher auf der hohen Stufe selbst.
System: Die höchste Betriebsstufe für den Windows-Kernel und die Kernservices, die selbst für Administratoren unerreichbar ist und den Schutz wichtiger Systemfunktionen gewährleistet.
Installer: Eine einzigartige Stufe, die über allen anderen steht und es 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 die Registerkarte "Sicherheit" anzeigen:
Sie können auch Ihre aktuelle Integritätsstufe mit whoami /groups
abrufen.
Ein Objekt im Dateisystem kann eine Mindestanforderung an die Integritätsstufe benötigen, und wenn ein Prozess diese Integritätsstufe nicht hat, kann er nicht mit ihm interagieren. Zum Beispiel, lassen Sie uns eine reguläre Datei von einer regulären Benutzerkonsole erstellen und die Berechtigungen überprüfen:
Jetzt weisen wir dem Datei ein minimales Integritätslevel von Hoch zu. Dies muss von einer Konsole ausgeführt werden, die als Administrator läuft, da eine reguläre Konsole im Integritätslevel Mittel läuft und nicht erlaubt sein wird, ein hohes Integritätslevel einem Objekt zuzuweisen:
Dies ist der Punkt, an dem es interessant wird. Sie können sehen, dass der Benutzer DESKTOP-IDJHTKP\user
VOLLSTÄNDIGE Berechtigungen über die Datei hat (tatsächlich war dies der Benutzer, der die Datei erstellt hat), jedoch wird er aufgrund des implementierten minimalen Integritätsniveaus die Datei nicht mehr ändern können, es sei denn, er läuft innerhalb eines hohen Integritätsniveaus (beachten Sie, dass er sie lesen kann):
Daher, wenn eine Datei ein minimales Integritätsniveau hat, müssen Sie mindestens auf diesem Integritätsniveau arbeiten, um sie zu ändern.
Ich habe eine Kopie von cmd.exe
in C:\Windows\System32\cmd-low.exe
erstellt und ihr ein Integritätsniveau von niedrig aus einer Administratorkonsole zugewiesen:
Jetzt, wenn ich cmd-low.exe
ausführe, wird es unter einem niedrigen Integritätslevel anstelle eines mittleren ausgeführt:
Für Neugierige, wenn Sie einem Binärprogramm ein hohes 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 von einem mittleren Integritätslevel aus aufrufen -- standardmäßig -- wird es unter einem mittleren Integritätslevel ausgeführt).
Nicht alle Dateien und Ordner haben ein minimales Integritätslevel, aber alle Prozesse laufen unter einem Integritätslevel. Und ähnlich wie beim Dateisystem, wenn ein Prozess in einen anderen Prozess schreiben möchte, muss er mindestens das gleiche 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 kommentierten Einschränkungen ist es aus sicherheitstechnischer Sicht immer empfohlen, einen Prozess im niedrigsten möglichen Integritätslevel auszuführen.