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.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för