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

Gäller för: Configuration Manager (aktuell gren)

Det är administratörens ansvar att verifiera föreslagen användning av PowerShell- och PowerShell-parametrar i sin miljö. Här är några användbara resurser för att utbilda administratörer om kraften i PowerShell och potentiella riskytor. Den här vägledningen är till för att hjälpa dig att minimera potentiella riskytor och tillåta att säkra skript används.

PowerShell-skriptsäkerhet

Med skriptfunktionen Configuration Manager kan du visuellt granska och godkänna skript. En annan administratör kan begära att deras skript ska tillåtas. Administratörer bör vara medvetna om att PowerShell-skript kan innehålla dolda skript. Ett dolt skript kan vara skadligt och svårt att upptäcka med visuell inspektion under skriptgodkännandeprocessen. 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å de 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änkarna nedan.
  • Signera dina skript: En annan metod för att skydda skript är att granska dem och sedan signera dem innan du importerar dem 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 valdes för att ge Configuration Manager administratörer en utgångspunkt för att lära sig mer om säkerhetsrekommendationer för PowerShell-skript.

Försvara sig mot PowerShell-attacker

Skydda mot injicering av skadlig kod

PowerShell – Det blå teamet, diskuterar blockering av djupa skript, loggning av skyddade händelser, gränssnitt för felsökning med program mot skadlig kod och API:er för säker kodgenerering

API för gränssnitt mot skadlig programvara

Säkerhet för PowerShell-parametrar

Att skicka parametrar är ett sätt att få flexibilitet med skripten och skjuta upp beslut till körningstiden. 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 är tillåtna.
    • Exempel: Om endast ett visst intervall med värden tillåts använder du ett reguljärt uttryck för att endast söka efter de tecken eller värden som intervallet kan bestå av.
    • Genom att validera parametrar kan du förhindra att användare försöker använda vissa tecken som kan undantas, till exempel citattecken. Det kan finnas flera typer av citattecken, så det är ofta enklare att använda reguljära uttryck för att verifiera vilka tecken som du har bestämt är tillåtna än att försöka definiera alla indata som inte är tillåtna.
  • 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 mot (särskilt avsnittet 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, inklusive loggning av skyddade händelser. Införliva dessa loggar i dina arbetsflöden för signaturer, jakt och incidenthantering.
  • Implementera Just Enough Administration på system med högt värde för att eliminera eller minska obegränsad administrativ åtkomst till dessa system.
  • Distribuera principer för Windows Defender-programreglering för att tillåta att i förväg godkända administrativa uppgifter utnyttjar PowerShell-språkets fulla kapacitet, 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 tas bort vid körning) som bearbetas av Windows Scripting Hosts inklusive PowerShell.