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ätsstufe | Bezeichnung für das OS | Bedeutung |
---|---|---|
System | Mandatory Label\High Man-datory Level | Höchste Integritätsstufe (Systemdienste) |
High | Mandatory Label\High Man-datory Level | Administrative Prozesse |
Medium | Mandatory Label\Medium Mandatory Level | Standardbenutzerprozesse |
Low | Mandatory Label\Low Mandatory Level | Eingeschränkte Prozesse |
AppContainer | — | Isolierte Prozesse |
Untrusted | Mandatory 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:
Quelle | URL |
---|---|
Microsoft AccessChk v6.15 | https://learn.microsoft.com/de-de/sysinternals/downloads/accesschk |
Download AccessChk | https://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:
Policy | Bedeutung |
---|---|
No-Write-Up | Prozesse mit niedriger Integritätsstufe können keine Änderungen an Objekten mit höherer Integritätsstufe vornehmen. |
No-Write-Down | Prozesse mit höherer Integritätsstufe können keine Änderungen an Objekten mit niedrigerer Integritätsstufe vornehmen. |
No-Read-Up | Verbietet es Prozessen auf niedrigerer Integritätsstufe, auf Objekte mit höherer Integritätsstufe zuzugreifen. |
No-Read-Down | Verbietet Prozessen auf höherer Integritätsstufe das Lesen von Objekten mit niedrigerer Integritätsstufe. |