PowerShell, Sicherheit, Windows 10

Windows 10: Device Guard Code Integrity

Eine neue Sicherheitsfunktion von Windows 10 ist Device Guard. Diese besteht im Grund aus zwei teilen. Zum einen dem Credential Guard und zum anderen die Code Integrity. Den Credential Guard habe ich hier beschrieben.

Mit Hilfe von Code Integrity (kurz UMCI) wird in Windows 10 Enterprise die Ausführung des Codes dahingehend beschränkt, das nur Code mit vertrauenswürdigen Signaturen ausgeführt werden können. Dies gilt für Anwendungen im User- Mode als wie auch für Treiber.
Anwendungen oder Treiber welche nicht über einen vertrauenswürdigen Signaturgebern signiert wurden, können nicht ausgeführt werden.

Die Funktion an sich wird wie beim Credential Guard über eine GPO geregelt beziehungsweise aktiviert:
Virtualisierungsbasierte Sicherheit aktivieren  unter Computerkonfiguration -> Administrative Vorlagen -> System -> Device Guard
Dort die Option Virtualisirungsbasierten Schutz für Codeintegrität aktivieren.

Zusätzlich gibt es eine auf dem jeweiligen System gespeicherte Ausführungsrichtlinie. Diese befindet sich z.b. unter C:\Windows\System32\CodeIntegrity\CIpolicyBIN.p7b (Wird in der GPO unter Codeintegritätsrichtlinie bereitstellen definiert)

Diese Richtlinie muss anhand eines Golden Master erstellt werden. Auf diesen sollten nur zugelassene Anwendungen installiert sein. Diese Policy kann wiederum im Audit Mode geschaltet werden um das System zu testen und mögliche Blockaden in der Event- Log zu sehen: Applications and Services Logs\Microsoft\Windows\CodeIntegrity\Operational

Eine Auflistung der erlaubten (nicht signierten) Anwendungen wird in einer XML Datei gesammelt und anschließen in die CIPolicyBIN.p7b überführt. Die Auswertung erfolgt anhand einer Analyse aller EXE Dateien oder durch das auswerten der Event- Log.
Wenn die CIPolicyBIN.p7b wie gewünscht funktioniert, kann der Audit- Mode deaktiviert und zur Sicherheit die CIPolicyBIN.p7b selbst signiert werden.

Hier nun eine Übersicht der Befehle zum erstellen einer CIPolicyBin.bin auf einen Golden Master:

Alle EXE Dateien im System überprüfen:
New-CIPolicy -Level PcaCertificate -FilePath InitialCIPolicy.xml –UserPEs   

Event-Log nach geblockten Code durchsuchen:
New-CIPolicy -Audit -Level Hash -FilePath EventCIPolicy.xml –UserPEs 

Mehrere XML Dateien zusammenführen:
Merge-CIPolicy -PolicyPaths InitialCIPolicy.xml,EventCIPolicy.xml -OutputFilePath MergedCIPolicy.xml  

XML Datei in DeviceGuardPolicy.bin umwandeln:
ConvertFrom-CIPolicy MergedCIPolicy.xml C:\Windows\System32\CodeIntegrity\CIPolicyBIN.p7b 

Diese Datei läuft nun im Audit- Mode und das System sollte ausgiebig getestet werden. Wenn im Event- Log keine verdächtigen Einträge vorhanden sind, kann diese Policy scharf geschaltet werden:

Copy MergedCIPolicy.xml EnforcedCIPolicy.xml 
Set-RuleOption -FilePath EnforcedCIPolicy.xml -Option 9  # aktiviere “Advanced Boot Options Menu”  
Set-RuleOption -FilePath EnforcedCIPolicy.xml -Option 10 # aktiviere “Boot Audit on Failure”   
Set-RuleOption -FilePath EnforcedCIPolicy.xml -Option 3 -Delete # Audit Mode ausschalten 
ConvertFrom-CIPolicy EnforcedCIPolicy.xml CIPolicyBIN.p7b  

Zur Erhöhung der Sicherheit sollte die CIPolicyBIN.p7b signiert werden:

Add-SignerRule -FilePath EnforcedCIPolicy.xml -CertificatePath <Path to exported .cer certificate> -Kernel -User –Update
Set-RuleOption -FilePath EnforcedCIPolicy.xml -Option 6 –Delete # remove the unsigned policy rule option
ConvertFrom-CIPolicy EnforcedCIPolicy.xml CIPolicyBin.bin
<Path to signtool.exe> sign -v /n „ContosoDGSigningCert“ -p7 . -p7co 1.3.6.1.4.1.311.79.1 -fd sha256 CIPolicyBIN.p7b

Achtung: signtool.exe ist Bestandteil der Windows SDK.

Microsoft stellt ein PowerShell Script zum Testen und Aktivieren von Device Guard zu Verfügung: Readiness Tool Version 2.1
Ideal für alle die ohne GPO die Funktion von Device Guard aktiveren wollen.

Über die Systeminformationen kann geprüft werden ob DG aktiviert ist und funktioniert:
dgci

Links:

Übersicht Device Guard
Device Guard aktivieren
Erstellen einer CIpolicy

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s