Unter dem Begriff Exploit-Schutz versammelt Microsoft eine Reihe von Techniken, die Angriffe durch Malware erschweren sollen. Darunter finden sich auch alte Bekannte wie DEP. Während auf Systemebene die meisten Schutzmechanismen standardmäßig aktiv sind, sollte man die Einstellungen für einzelne Apps noch tunen.
Darüber hinaus kennt der Exploit-Schutz eine ganze Reihe von Einstellungen, die sich nur auf Applikationen anwenden lassen, um diese zu härten. Sie ergänzen die Maßnahmen, die man für Programme durch die Reduktion der Angriffsfläche ergreifen kann.
So kann man Anwendungen verbieten, Kindprozesse zu starten, nicht vertrauenswürdige Schriftarten blockieren, Win32k-Systemaufrufe deaktivieren oder verhindern, dass nicht von Microsoft signierte DLLs geladen werden.
System- versus App-Ebene
Diese Mechanismen lassen sich auf Systemebene aktivieren, so dass sie dann für alle Anwendungen automatisch greifen. Konfiguriert man eine Einstellung jedoch für bestimmte Apps, dann überschreibt man damit die systemweiten Vorgaben.
In der Regel wird man eher einzelne Anwendungen absichern, da globale Vorgaben unvorhergesehene Auswirkungen gerade auf ältere Programme haben können. Einen Audit-Modus, mit dessen Hilfe man die potenziellen Auswirkungen bestimmter Schutzmechanismen vorab untersuchen könnte, gibt es nur für die wenige Einstellungen.
Eventlog prüfen
Bevor man die Einstellungen von einem Referenz-PC auf andere Rechner verteilt, sollte man die Konfiguration ausgiebig testen. Dabei sind die Einträge im Eventlog hilfreich. In der Ereignisanzeige findet man diese unter Anwendungs- und Dienstprotokolle => Microsoft => Windows =>Security-Mitigations => Kernel Mode.
Alternativ kann man das Protokoll mit PowerShell auslesen:
Get-WinEvent -LogName 'Microsoft-Windows-Security-Mitigations/KernelMode' | Format-List
Aktuelle Einstellungen ermitteln
Die Einstellungen zum Exploit-Schutz lassen sich interaktiv in der Sicherheits-App unter App- und Browsersteuerung => Einstellungen für den Exploit-Schutz konfigurieren. Dort findet sich jeweils ein Reiter für die System- bzw. Programmeinstellungen.
Für gezielte Abfragen eignet sich indes PowerShell besser. Die systemweiten Standards für Exploit Protection lassen sich so anzeigen:
Get-ProcessMitigation -System
Die einzelnen Einstellungen sind unter den jeweiligen Schutzmechanismen zusammengefasst, die Ausgabe ist gerade für Anwendungen oft sehr umfangreich. Möchte man daher zum Beispiel nur jene zu Address space layout randomization (ASLR) anzeigen, dann kann man obigen Befehl so ergänzen:
Get-ProcessMitigation -System | select -ExpandProperty ASLR
Die spezifischen Einstellungen für Programme kann man mit diesem Cmdlet ebenfalls auslesen:
Get-ProcessMitigation -Name chrome.exe
Möchte man die laufenden Prozesse eines Programms untersuchen, dann fügt man noch den Schalter RunningProcesses hinzu.
Einstellungen mit PowerShell konfigurieren
Grundsätzlich kann man die meisten Einstellungen für den Exploit-Schutz auch über die GUI anpassen. Wenn man sich stattdessen für PowerShell entscheidet, dann ist das Cmdlet Set-ProcessMitigation dafür zuständig.
Auch hier kann man mit den Parametern System bzw. Name wahlweise die globalen Einstellungen oder jene für einzelne Apps ansprechen. Über Enable oder Disable aktiviert bzw. deaktiviert man dann eine oder mehrere Einstellungen:
Set-ProcessMitigation -System -Enable DisableNonSystemFonts
Dieses Beispiel würde generell das Laden von nicht vertrauenswürdigen Fonts unterbinden, sofern man sie nicht für bestimmte Anwendungen gezielt zulässt. Die Namen der Einstellungen für die Verwendung mit Enable und Disable kann man Microsofts Dokumentation entnehmen.
Einstellungen für Exploit-Schutz exportieren
Sobald man auf einem Referenz-PC die gewünschten Einstellungen für den Exploit-Schutz konfiguriert hat, kann man diese auf die anderen Rechner im Netz verteilen.
Dazu exportiert man im ersten Schritt die Konfiguration auf dem Muster-PC. Dies erfolgt in der App, in der man wie oben beschrieben den Exploit-Schutz anpassen kann. Dort findet sich am unteren Ende der Seite ein entsprechender Link. Der Export erfolgt im XML-Format, und er schreibt sowohl die System- als auch die App-Einstellungen in eine Datei.
Konfiguration im Netz verteilen
Grundsätzlich kann man die exportierte Konfiguration auch mittels PowerShell auf einem anderen Rechner importieren:
Set-ProcessMitigation -PolicyFilePath settings.xml
In den meisten Umgebungen wird man dafür jedoch die Gruppenrichtlinien nutzen. Dazu legt man die Datei mit der exportierten Konfiguration man auf einem Share ab, wo sie von allen Clients erreicht werden kann. Nun erstellt man ein GPO, das diese Einstellungen im Netz verteilt.
Zuständig dafür ist die Policy Allgemeine Richtlinie für den Exploit-Schutz verwenden. Sie findet sich unter Computerkonfiguration => Richtlinien => Administrative Vorlagen => Windows-Komponenten => Microsoft Defender Exploit Guard => Exploit-Schutz.
Wenn man die Einstellung aktiviert, dann kann man im entsprechenden Eingabefeld den Pfad zur XML-Datei hinterlegen.
Wenn man wieder zu den Standards zurückkehren möchte, dann reicht es nicht, einfach das GPO zu deaktivieren. Vielmehr muss man die Einstellungen aktiv zurücksetzen. Dazu verwendet man entweder den Export aus einem frisch installierten Windows oder die Datei EP-reset.xml aus der Windows Security Baseline.
Fazit
Der Exploit-Schutz versammelt eine Reihe von Mechanismen, die Windows gegen schädliche Programme und Angriffe härtet. Per Voreinstellung sind einige davon bereits aktiviert, aber eine maßgeschneiderte Konfiguration für kritische Anwendungen kann die Sicherheit zusätzlich erhöhen.
In verwalteten Umgebungen wird man eine solche individuelle Konfiguration erst auf einem Referenzsystem testen, bevor man sie exportiert und über ein GPO im Netzwerk verteilt. Leider unterstützen nur wenige Einstellungen einen Audit-Modus, so dass man die Kompatibilität von Applikationen mit strikteren Regeln für den Exploit-Schutz sicherstellen sollte.