Använda Windows Defender-programkontroll

Windows 10 innehåller två tekniker, Windows Defender Application Control (WDAC) och AppLocker som du kan använda för att styra program. De gör att du kan skapa en låsningsupplevelse för att skydda din PowerShell-miljö

AppLocker bygger på funktionerna för programkontroll i principer för begränsning av programvara. AppLocker innehåller funktioner och tillägg som gör att du kan skapa regler för att tillåta eller neka appar från att köras baserat på unika identiteter för filer och ange de användare eller grupper som tillåts köra dessa appar.

Kommentar

När du väljer mellan WDAC eller AppLocker rekommenderar vi att du implementerar programkontroll med hjälp av WDAC i stället för AppLocker. Microsoft förbättrar kontinuerligt WDAC och Microsofts hanteringsplattformar utökar sitt stöd för WDAC. Även om AppLocker kan fortsätta att få säkerhetskorrigeringar får det inte några funktionsförbättringar.

WDAC introducerades med Windows 10 och gör det möjligt för organisationer att styra drivrutinerna och programmen tillåts köras på sina Windows-enheter. WDAC är utformat som en säkerhetsfunktion enligt de underhållskriterier som definieras av Microsoft Security Response Center (MSRC).

Mer information om AppLocker och WDAC finns i Programkontroller för windows - och WDAC- och AppLocker-funktionstillgänglighet.

WDAC-principframtvingande

När PowerShell körs under en WDAC-princip ändras dess beteende baserat på den definierade säkerhetsprincipen. Under en WDAC-princip kör PowerShell betrodda skript och moduler som tillåts av principen i fullständigt språkläge. Alla andra skript och skriptblock är inte betrodda och körs i begränsat språkläge. PowerShell utlöser fel när de obetrodda skripten försöker utföra åtgärder som inte tillåts i begränsat språkläge. Det kan vara svårt att veta varför ett skript inte kunde köras korrekt i begränsat språkläge.

Granskning av WDAC-princip

PowerShell 7.4 har lagt till en ny funktion för att stödja WDAC-principer i granskningsläge . I granskningsläge kör PowerShell de ej betrodda skripten i begränsat språkläge utan fel, men loggar meddelanden till händelseloggen i stället. Loggmeddelandena beskriver vilka begränsningar som skulle gälla om principen var i framtvinga läge.

Visa granskningshändelser

PowerShell loggar granskningshändelser till händelseloggen PowerShellCore/Analys . Du måste aktivera analysloggen. Om du vill aktivera analysloggen i Windows-Loggboken högerklickar du på PowerShellCore/Analysloggen och väljer Aktivera logg.

Du kan också köra följande kommando från en upphöjd PowerShell-session.

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

Du kan visa händelserna i Windows Loggboken eller använda cmdleten Get-WinEvent för att hämta händelserna.

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

Händelsemeddelandet innehåller skriptpositionen där begränsningen skulle tillämpas. Den här informationen hjälper dig att förstå var du behöver ändra skriptet så att det körs under WDAC-principen.

Viktigt!

När du har granskat granskningshändelserna bör du inaktivera analysloggen. Analysloggar växer snabbt och förbrukar stora mängder diskutrymme.

Visa granskningshändelser i PowerShell-felsökningsprogrammet

Om du anger variabeln $DebugPreference till Break för en interaktiv PowerShell-session bryter PowerShell in i felsökningsprogrammet för kommandoradsskriptet på den aktuella platsen i skriptet där granskningshändelsen inträffade. På så sätt kan du felsöka koden och kontrollera skriptets aktuella tillstånd i realtid.