Dela via


Lär dig om säkerhet för PowerShell-skript

Gäller för: Konfigurationshanteraren (current branch)

Det är administratörens ansvar att verifiera den föreslagna powershell- och PowerShell-parameteranvändningen i deras miljö. Här är några användbara resurser som hjälper dig att utbilda administratörer om kraften i PowerShell och potentiella riskytor. Den här vägledningen hjälper dig att minimera potentiella riskytor och tillåta att säkra skript används.

PowerShell-skriptsäkerhet

Med funktionen Configuration Manager skript kan du visuellt granska och godkänna skript. En annan administratör kan begära att deras skript tillåts. Administratörer bör vara medvetna om att PowerShell-skript kan ha dolda skript. Ett dolt skript kan vara skadligt och svårt att identifiera med visuell inspektion under processen för skriptgodkännande. Granska PowerShell-skript visuellt och använd inspektionsverktyg för att identifiera misstänkta skriptproblem. Dessa verktyg kan inte alltid fastställa PowerShell-författarens avsikt, så det kan uppmärksamma ett misstänkt skript. Verktygen kräver dock att administratören bedömer om det är skadlig eller avsiktlig skriptsyntax.

Rekommendationer

  • Bekanta dig med PowerShell-säkerhetsvägledning med hjälp av de olika länkar som refereras nedan.
  • Signera dina skript: En annan metod för att skydda skript är att låta dem granskas och sedan signeras innan de importeras för användning.
  • Lagra inte hemligheter (till exempel lösenord) i PowerShell-skript och lär dig mer om hur du hanterar hemligheter.

Allmän information om PowerShell-säkerhet

Den här samlingen länkar har valts för att ge Configuration Manager administratörer en startpunkt för att lära sig mer om Säkerhetsrekommendationer för PowerShell-skript.

Försvara mot PowerShell-attacker

Skydda mot skadlig kodinmatning

PowerShell – Det blå teamet diskuterar djup skriptblocksloggning, skyddad händelseloggning, gränssnitt för genomsökning av program mot skadlig kod och API:er för generering av säker kod

API för gränssnitt för skanning mot skadlig kod

Säkerhet för PowerShell-parametrar

Att skicka parametrar är ett sätt att ha flexibilitet med dina skript och skjuta upp beslut till körning. Det öppnar också upp en annan riskyta.

Följande lista innehåller rekommendationer för att förhindra skadliga parametrar eller skriptinmatning:

  • Tillåt endast användning av fördefinierade parametrar.
  • Använd funktionen för reguljära uttryck för att verifiera parametrar som tillåts.
    • Exempel: Om endast ett visst värdeintervall tillåts använder du ett reguljärt uttryck för att endast söka efter de tecken eller värden som kan utgöra intervallet.
    • Genom att verifiera parametrar kan du förhindra att användare försöker använda vissa tecken som kan undvikas, till exempel citattecken. Det kan finnas flera typer av citattecken, så att använda reguljära uttryck för att verifiera vilka tecken som du har valt är tillåtna är ofta enklare än att försöka definiera alla indata som inte tillåts.
  • Använd PowerShell-modulen "injection hunter" i PowerShell-galleriet.
    • Det kan finnas falska positiva identifieringar, så leta efter avsikt när något flaggas som misstänkt för att avgöra om det är ett verkligt problem eller inte.
  • Microsoft Visual Studio har ett skriptanalysverktyg som kan hjälpa dig att kontrollera PowerShell-syntaxen.

Följande video med titeln: "DEF CON 25 - Lee Holmes - Get $pwnd: Attacking Battle Hardened Windows Server" ger en översikt över de typer av problem som du kan skydda dig mot (särskilt avsnitt 12:20 till 17:50):

Miljörekommendationer

Följande lista innehåller allmänna rekommendationer för PowerShell-administratörer:

  • Distribuera den senaste versionen av PowerShell, till exempel version 5 eller senare, som är inbyggd i Windows 10 eller senare. Du kan också distribuera Windows Management Framework.
  • Aktivera och samla in PowerShell-loggar, om du vill, inklusive loggning av skyddad händelse. Införliva dessa loggar i dina arbetsflöden för signaturer, jakt och incidenthantering.
  • Implementera just enough-administration på högvärdessystem för att eliminera eller minska obegränsad administrativ åtkomst till dessa system.
  • Distribuera Windows Defender principer för programkontroll för att tillåta förgodkända administrativa uppgifter att använda den fullständiga funktionen för PowerShell-språket, samtidigt som interaktiv och icke godkänd användning begränsas till en begränsad delmängd av PowerShell-språket.
  • Distribuera Windows 10 eller senare för att ge antivirusleverantören fullständig åtkomst till allt innehåll (inklusive innehåll som genereras eller fördunklas vid körning) som bearbetas av Windows-skriptvärdar, inklusive PowerShell.