Verwenden der Windows Defender-Anwendungssteuerung

Windows 10 umfasst zwei Technologien: Windows Defender Application Control (WDAC) und AppLocker, die für die Anwendungssteuerung verwendet werden können. Sie ermöglichen es Ihnen, eine Sperrumgebung zu erstellen, um Ihre PowerShell-Umgebung zu schützen.

AppLocker basiert auf den Anwendungssteuerungsfeatures der Richtlinien für Softwareeinschränkungen. AppLocker enthält Funktionen und Erweiterungen, mit denen Sie Regeln erstellen können, um die Ausführung von Apps auf der Grundlage eindeutiger Identitäten von Dateien zuzulassen oder zu verweigern, und um die Benutzer oder Gruppen festzulegen, die diese Apps ausführen dürfen.

Hinweis

Bei der Entscheidung zwischen WDAC und AppLocker empfehlen wir, die Anwendungssteuerung eher mit WDAC als mit AppLocker zu implementieren. Microsoft verbessert WDAC ständig, und Microsoft-Verwaltungsplattformen erweitern ihre Unterstützung für WDAC. Auch wenn AppLocker ständig Sicherheitskorrekturen erhält, erhält es keine Funktionserweiterungen.

WDAC wurde mit Windows 10 eingeführt und ermöglicht Unternehmen die Kontrolle über die Treiber und Anwendungen, die auf ihren Windows 10-Geräten ausgeführt werden dürfen. WDAC ist als Sicherheitsfeature gemäß den vom Microsoft Security Response Center (MSRC) definierten Wartungskriterien konzipiert.

Weitere Informationen zu AppLocker und WDAC finden Sie unter Anwendungssteuerung für Windows und Featureverfügbarkeit für WDAC und AppLocker.

Durchsetzung von WDAC-Richtlinien

Wenn PowerShell unter einer WDAC-Richtlinie ausgeführt wird, ändert es sein Verhalten basierend auf der definierten Sicherheitsrichtlinie. Unter einer WDAC-Richtlinie führt PowerShell vertrauenswürdige Skripts und Module aus, die von der Richtlinie im vollständigen Sprachmodus zugelassen sind. Alle anderen Skripts und Skriptblöcke sind nicht vertrauenswürdig und werden im eingeschränkten Sprachmodus ausgeführt. PowerShell löst Fehler aus, wenn die nicht vertrauenswürdigen Skripts versuchen, Aktionen auszuführen, die im eingeschränkten Sprachmodus nicht zulässig sind. Es kann schwierig sein herauszufinden, warum ein Skript im eingeschränkten Sprachmodus nicht ordnungsgemäß ausgeführt werden kann.

WDAC-Richtlinienüberwachung

PowerShell 7.4 hat eine neue Funktion zur Unterstützung von WDAC-Richtlinien im Überwachungsmodus hinzugefügt. Im Überwachungsmodus führt PowerShell die nicht vertrauenswürdigen Skripts im eingeschränkten Sprachmodus ohne Fehler aus, protokolliert jedoch Meldungen im Ereignisprotokoll. In den Protokollmeldungen wird beschrieben, welche Einschränkungen gelten, wenn sich die Richtlinie im Erzwingungsmodus befindet.

Anzeigen von Überwachungsereignissen

PowerShell protokolliert Überwachungsereignisse im PowerShellCore/Analytic-Ereignisprotokoll. Sie müssen das Analyseprotokoll aktivieren. Um das Analyseprotokoll in der Windows-Ereignisanzeige zu aktivieren, klicken Sie mit der rechten Maustaste auf das PowerShellCore/Analytic-Protokoll, und wählen Sie Protokoll aktivieren aus.

Sie können auch den folgenden Befehl in einer PowerShell-Sitzung mit erhöhten Rechten ausführen.

wevtutil.exe sl PowerShellCore/Analytic /enabled:true /quiet

Sie können die Ereignisse in der Windows-Ereignisanzeige anzeigen oder das Get-WinEvent-Cmdlet verwenden, um die Ereignisse abzurufen.

Get-WinEvent -LogName PowerShellCore/Analytic -Oldest |
    Where-Object Id -eq 16387 | Format-List
TimeCreated  : 4/19/2023 10:11:07 AM
ProviderName : PowerShellCore
Id           : 16387
Message      : WDAC Audit.

    Title: Method or Property Invocation
    Message: Method or Property 'WriteLine' on type 'System.Console' invocation will not
        be allowed in ConstrainedLanguage mode.
        At C:\scripts\Test1.ps1:3 char:1
        + [System.Console]::WriteLine("pwnd!")
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    FullyQualifiedId: MethodOrPropertyInvocationNotAllowed

Die Ereignismeldung enthält die Skriptposition, an der die Einschränkung angewendet wird. Diese Informationen helfen Ihnen zu verstehen, wo Sie Ihr Skript ändern müssen, damit es unter der WDAC-Richtlinie ausgeführt wird.

Wichtig

Nachdem Sie die Überwachungsereignisse überprüft haben, sollten Sie das Analyseprotokoll deaktivieren. Analyseprotokolle wachsen schnell und erfordern große Mengen an Speicherplatz.

Anzeigen von Überwachungsereignissen im PowerShell-Debugger

Wenn Sie die $DebugPreference-Variable für eine interaktive PowerShell-Sitzung auf Break festlegen, wird der Befehlszeilenskript-Debugger von PowerShell an der aktuellen Stelle im Skript unterbrochen, an der das Überwachungsereignis aufgetreten ist. Dadurch können Sie Ihren Code debuggen und den aktuellen Status des Skripts in Echtzeit überprüfen.