Integritätsstufen in Windows

Windows und seine Integritätskultur

Eine feingranulare Kontrolle der Berechtigungen bei einem Betriebssystem ist für die IT-Sicherheit von zentraler Bedeutung. Für den Schutz vor unerlaubten Zugriffsrechten sorgt unter anderem ein Integritätsmodell, das in mehrere Integritätsstufen unterteilt wird. Diese Stufen sind Bestandteil des MIC-Modells (Mandatory Integrity Control) und bietet eine zusätzliche Sicherheitsebene. Im Vergleich zur diskreten Zugriffs-Kontrolliste (DACL) sind die Integritätsstufen „mächtiger“.

MIC-Modell

Die Mandatory Integrity Control (MIC) stellt einen Mechanismus zur Verfügung, der den Zugriff auf sicherheitskritische Objekte kontrolliert. Dieser Mechanismus ergänzt die diskretionäre Zugriffskontrolle und bewertet den Zugriff, bevor die Zugriffsrechte anhand der diskretionären Zugriffskontrollliste (DACL) eines Objekts überprüft werden.

MIC nutzt Integritätsstufen und obligatorische Richtlinien, um den Zugriff zu regulieren. Sowohl Sicherheitsprinzipalen als auch Objekten werden spezifische Integritätsstufen zugewiesen, die ihre Zugriffsrechte oder Schutzebenen definieren. Etwas mit einer niedriger Integritätsstufe darf zum Beispiel nicht auf ein Objekt mit mittlerer Integritätsstufe schreiben, selbst wenn die DACL ihm Schreibrechte einräumt.

Quelle: Mandatory Integrity Control

DACL

Wenn ein Windows-Objekt keine diskretionäre Zugriffssteuerungsliste (DACL) besitzt, gewährt das System allen Benutzern uneingeschränkten Zugriff. Hat das Objekt hingegen eine DACL, erlaubt das System nur den Zugriff, der in den Zugriffssteuerungseinträgen (ACEs) der DACL ausdrücklich genehmigt wurde. Sind keine ACEs in der DACL definiert, wird der Zugriff für jeden verweigert. Wenn ACEs den Zugang nur für eine bestimmte Gruppe von Benutzern oder Gruppen gestatten, wird allen anderen automatisch der Zugriff verwehrt.

Normalerweise steuern Sie den Zugriff über zugriffsberechtigende ACEs, ohne den Zugang explizit verweigern zu müssen. Eine Ausnahme besteht, wenn Sie einem Mitglied einer Gruppe, die Zugriff hat, den Zugang untersagen möchten. In diesem Fall sollten Sie einen ACE zur Zugriffsverweigerung für diesen Benutzer vor dem zugriffsberechtigenden ACE der Gruppe in die DACL einfügen. Da das System die ACEs der Reihenfolge nach auswertet, ist die Platzierung entscheidend. Der ACE zur Zugriffsverweigerung für den Benutzer muss zuerst kommen, sonst könnte das System dem Benutzer Zugriff gewähren, wenn es auf den zugriffsberechtigenden ACE der Gruppe stößt.

Quelle: DACLs und ACEs

Die Integritätsstufen

Aus der folgenden Tabelle können alle Integritätsstufen entnommen werden, die sich von oben (höchste Integritätsstufe) nach unten (niedrigste Integritätsstufe) anordnen:

IntegritätsstufeBezeichnung für das OSBedeutung
SystemMandatory Label\High
Man-datory Level
Höchste Integritätsstufe (Systemdienste)
HighMandatory Label\High
Man-datory Level
Administrative Prozesse
MediumMandatory Label\Medium
Mandatory Level
Standardbenutzerprozesse
LowMandatory Label\Low
Mandatory Level
Eingeschränkte Prozesse
AppContainerIsolierte Prozesse
UntrustedMandatory
Label\Untrusted
Mandatory Level
Prozesse mit den geringsten Rechten (Anonym)

Wie sieht es nun in einer realen Windows-Umgebung aus? Für die folgende Darstellung wird der Prozess-Explorer von SysinternalSuite verwendet:

Aus der oben aufgeführten Abbildung ist klar zu erkennen, welchen Prozessen welche Integritätsstufe zugewiesen wurde. Beispielsweise wurde die Powershell mit Administrationsrechten geöffnet und hat dadurch die Integritätsstufe „High“. Im Gegensatz dazu werden Unterprozesse von Firefox teilweise als „Untrusted“ eingestuft.

Die Integritätseinstufung kann auch in den Properties eines Prozesses eingesehen werden:

Integritätsstufen mit AccessChk

Das Tool AccessChk ist ebenfalls von SysinternalSuite und wird unter anderem zur Integritätsuntersuchung von mehreren Objekten verwendet. In einem kurzen „Wissensartikel“ von Microsoft werden die grundlegenden Kommandos beschrieben, die eine Anwendung des Tools sehr vereinfacht. Die folgende Tabelle enthält den Link zum Download des Programms und einen Verweis zum Artikel von Microsoft:

QuelleURL
Microsoft AccessChk v6.15https://learn.microsoft.com/de-de/sysinternals/downloads/accesschk
Download AccessChkhttps://download.sysinternals.com/files/AccessChk.zip

Wie schon beschreiben, kann mit AccessChk der Integritätsstatus überprüft werden. Am folgenden Beispiel wird AppData mit dem Tool geprüft, da die Unterordner auf Ebene 1 in der Regel unterschiedliche Integritätsstufen besitzen. Mit dem folgenden Kommando wird AccessChk gestartet:

.\accesschk.exe -v C:\Users\<USER>\AppData

Mit der Option -v (Verbose) werden die Ergebnisse detailliert dargestellt. Natürlich kann der Pfad je nach Anwendungsfall entsprechend variieren. Die Results werden wie folgt dargestellt:

.\accesschk.exe -v C:\Users\<USER>\AppData

Accesschk v6.15 - Reports effective permissions for securable objects
Copyright (C) 2006-2022 Mark Russinovich
Sysinternals - www.sysinternals.com

C:\Users\<USER>\AppData\Local
  Medium Mandatory Level (Default) [No-Write-Up]
  RW NT-AUTORIT─T\SYSTEM
        FILE_ALL_ACCESS
  RW VORDEFINIERT\Administratoren
        FILE_ALL_ACCESS
  RW <PC-NAME>\<USER>
        FILE_ALL_ACCESS
C:\Users\<USER>\AppData\LocalLow
  Niedrige Verbindlichkeitsstufe [No-Write-Up]
  RW NT-AUTORIT─T\SYSTEM
        FILE_ALL_ACCESS
  RW VORDEFINIERT\Administratoren
        FILE_ALL_ACCESS
  RW <PC-NAME>\<USER>
        FILE_ALL_ACCESS
C:\Users\<USER>\AppData\Roaming
  Medium Mandatory Level (Default) [No-Write-Up]
  RW NT-AUTORIT─T\SYSTEM
        FILE_ALL_ACCESS
  RW VORDEFINIERT\Administratoren
        FILE_ALL_ACCESS
  RW <PC-NAME>\<USER>
        FILE_ALL_ACCESS

Zum Schluss noch eine kurze Auflistung der Policies, die sich aus den Modelle Biba und Bell-LaPadula ergeben:

PolicyBedeutung
No-Write-UpProzesse mit niedriger Integritätsstufe können keine Änderungen an Objekten mit höherer Integritätsstufe vornehmen.
No-Write-DownProzesse mit höherer Integritätsstufe können keine Änderungen an Objekten mit niedrigerer Integritätsstufe vornehmen.
No-Read-UpVerbietet es Prozessen auf niedrigerer Integritätsstufe, auf Objekte mit höherer Integritätsstufe zuzugreifen.
No-Read-DownVerbietet Prozessen auf höherer Integritätsstufe das Lesen von Objekten mit niedrigerer Integritätsstufe.