Cybersäkerhet är ett maktspel. Cyberbrottslingar och företag befinner sig i en ständig dragkamp, där privilegierad information som det åtråvärda priset. Samtidigt som företagen kämpar för att skydda känsliga data kämpar cyberbrottslingar för att få tillgång till dem. Varje sida väljer ett vapen efter eget val. I den här bloggen kommer vi att utforska ett vapen som är ett populärt val för båda sidor: PowerShell.

Innehåll:

Vad är PowerShell?

Att kalla Windows PowerShell för en kommandotolk vore att underskatta dess kapacitet. Även om PowerShell kan göra allt som ett skalprogram som Kommandotolken kan göra, är det också ett skriptspråk som används av administratörer för att automatisera uppgifter. Ett bra exempel är Active Directory-hantering. Administratörer kan spendera timmar på att manuellt hantera organisationens Active Directory, eller så kan de använda ett enda PowerShell-skript eller kommando för att utföra massåtgärder. Många administratörer föredrar PowerShell framför de GUI-verktyg de kan använda som AD Administrative Center eller AD Users and Computers.

5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattackerFig. 1: Ett PowerShell-fönster

PowerShell-skript är ett omfattande ämne. För att bättre förstå de koncept som tas upp i det här blogginlägget, låt oss titta närmare på tre viktiga komponenter inom PowerShell-skript.

  • Cmdlet: PowerShell använder lättviktskommandon som kallas cmdlets. En cmdlet (uttalas ”command-let”) känns igen på sin unika struktur, som vanligtvis skrivs i formatet verb-substantiv. Till exempel är cmdleten som används för att söka efter ett användarkonto i Active Directory Search-ADAccount. Här är Search verbet och ADAccount kommandot. Funktionen hos både kommandon och cmdlets är i grunden densamma – de talar om för datorn vad den ska göra.
  • Modul: En modul är en uppsättning kommandon, cmdlets, skript, funktioner med mera som har samlats ihop för ett specifikt syfte. En modul består av fyra viktiga komponenter: ett stycke kod, ytterligare skript- eller hjälpfiler som koden kan behöva, en manifestfil och en katalog. En manifestfil är som en innehållsförteckning: den listar innehållet i en modul och beskriver hur den behandlas.
  • Transkript: Ett transkript är en komplett sammanställning av vad som utfördes under en viss PowerShell-session. Om du vill skapa transkriptioner av PowerShell-sessioner måste administratören eller användaren aktivera åtgärden. Detta kan göras på två sätt: genom PowerShell-kommandon eller genom en ändring av grupprincipen. Administratörer kan lägga till kommandona Start-transkript och Stop-transkript för att aktivera transkription. Allt som körs mellan dessa två kommandon lagras som en textfil i mappen Mina dokument. Vi kommer att gå igenom hur man konfigurerar transkriberingsloggning via en ändring i grupprincipen senare i blogginlägget.

5 sätt som cyberbrottslingar använder PowerShell för att genomföra cyberattacker

Även om PowerShell är en administratörs favoritverktyg är det också hackerns vanligaste attackvektor. Detta beror på PowerShells spårbarhet, eller brist på spårbarhet, i en Windows-miljö. Eftersom PowerShell är ett tillåtet verktyg är det lättare för cyberkriminella att höja sina behörigheter och köra skadliga skript.

PowerShell används mest som ett verktyg efter exploatering. Detta beror på att PowerShell är aktiverat som standard i de flesta användarkonton. När en hackare väl har kommit in i nätverket kan han eller hon köra programmet som administratör eller enkelt använda ett par kommandon för att höja sina behörigheter. Låt oss titta närmare på fem sätt som cyberbrottslingar använder PowerShell för att utföra cyberattacker.

  1. PowerShell-skript: Enligt MITRE ATT&CK® framework-ramverket är PowerShell listad som en underteknik under Command and Scripting interpreter (kommandotolkar och skriptmotorer). Cyberbrottslingar missbrukar ofta PowerShell cmdlets för att få information om sina mål och köra skadlig kod på distans. PowerShell används också för att ladda ner och köra filer med skadlig kod i datorns minne utan att röra hårddisken. Vissa PowerShell-cmdlets som används för att utför cyberattacker inkluderar Invoke-Command eller Start-Process. Invoke-Command används för att köra ett kommando på distans, medan Start-Process används för att starta ett program eller en process lokalt i systemet.

  2. Domänupptäckt: När angriparna har tagit sig in i företagets nätverk kan de använda vissa cmdlets för att få en lista över befintliga domäner, grupper och användar- eller datorkonton i dessa domäner som lokal administratör. Detta hjälper dem att identifiera nästa mål baserat på de behörigheter som dessa konton eller grupper kan ha. I en Windows-miljö kan angripare använda cmdlets som Get-ADDomain för att få en lista över domäner i katalogen, Get-ADUser för att få en lista över användare, Get-ADComputer to för att få en lista över datorer i katalogen, och Get-ADGroupMember för att få en lista över användare i en viss grupp. Dessa cmdlets ger en hel del information om vart och ett av objekten, särskilt Get-ADComputer, som ger djupgående information om varje enskild värddator.

  3. Höja privilegier: Tillgång till PowerShell ger möjlighet att enkelt att höja privilegier. Som vi såg tidigare, när angriparen – som utger sig för att vara en lokal administratör – får information om listan över datorer i domänen och har valt ett mål, använder de cmdleten Get-Acl för att kontrollera målobjektets åtkomstkontrollista.

    När de har fått en lista med behörigheter väljer angriparna den användare eller användargrupp som har högre behörigheter till måldatorn. De får information om de medlemmar som tillhör den gruppen (med hjälp av cdmleten Get-ADGroupMember). De går sedan igenom listan över gruppmedlemmar för att kontrollera om något av kontona matchar de konton som de har fått tillgång till. När de väl har gjort det använder de PS-Exec-kommandot för att köra skript på distans på måldatorn via det aktuella systemet.

  4. Lateral förflyttning: Lateral förflyttning är en angreppsteknik som innebär att angriparen förflyttar sig från en komprometterad värd till en annan i nätverket. Vanligtvis innebär en lateral förflyttning att man använder ett av två verktyg: Windows Remote Management (WinRM) eller Cobalt Strike. WinRM är ett inbyggt verktyg i alla Windows-datorer som används för att upprätta fjärranslutningar, och Cobalt Strike är ett penetrationstestverktyg som används för att simulera attacker.

    Det finns två sätt att använda PowerShell för lateral förflyttning:

    • När angriparen har kommit in i nätverket kan de köra PowerShell som en lokal administratör, eskalera privilegier, använda kommandot PS-Exec för att köra ett skript på en annan värd och slutligen upprätta en fjärranslutning med förhöjda privilegier.
    • Det andra sättet innebär att WinRM används för att ansluta till en klient som angriparen vill styra. Om du vill använda WinRM för att ansluta till en annan klient måste den senare ha en lyssnare aktiverad. PowerShell kan användas för att aktivera lyssning i klienten. Alternativt, om Cobalt Strike används, kan PowerShell användas för att starta Cobalt Strike.
  5. Fillös skadlig kod: Fillös skadlig kod använder inbyggda verktyg som redan finns på offrets dator istället för att förlita sig på skadliga körbara filer som dess filbaserade motsvarigheter. Den körs i datorns minne istället för på hårddisken, vilket gör den svårare att upptäcka. Eftersom PowerShell används för att undvika att attacken ska kunna spåras används den i stor utsträckning för att köra fillös skadlig kod. En angripare kan använda PowerShell för att utföra kommandon i ett fjärranslutet målsystem med hjälp av cmdlet Invoke-Command.

PowerShell-loggning i Windows-system

Windows har tre typer av loggningssystem för att spåra PowerShell-aktivitet.

  • Modul-loggning: Dessa loggar spårar alla PowerShell-moduler som har utlösts. Låt oss ta Active Directory-modulen som exempel – en modul som Windows tillhandahåller för PowerShell. När en IT-administratör använder PowerShell för att skapa användare eller ändra grupprincipobjekt, körs Active Directory-modulen i bakgrunden. Detta spåras genom modul-loggning. Händelse-ID för dessa loggar är 4103. Även om modul­loggar ger viss information om den körda modulen, fångar de inte alltid på ett tillförlitligt sätt de kommandon som har körts.
  • Skriptblock-loggning: Skriptblock är block av skript eller cmdlets som körs på en gång. De skrivs vanligtvis inom klammerparenteser. Skriptblocksloggar registrerar hela skriptet, de kommandon som har utförts och vem som initierade körningen. Händelse-ID för skriptblocksloggar är 4104.
  • Transkriptionsloggning: Transkriptioner registrerar hela det skript som har körts under PowerShell-sessionen. Den här filen lagras sedan i användarens dokumentmapp. Transkriptioner lagras som textfiler med namn som börjar med ”PowerShell_transcript”. De registrerar metadata och tidsstämplar för de skript som har körts under den sessionen och kan användas vid forensisk analys. Den mesta av den data som genereras med hjälp av transkriptionsloggar samlas dock in i modul- och skriptblocksloggar.

PowerShell-loggning kan aktiveras via den lokala Grupprincipredigeraren för en specifik dator eller via Redigeraren Grupprinciphantering för en användargrupp eller organisationsenhet i en domän. Låt oss titta på hur man gör detta i sex enkla steg:

  1. Öppna Group Policy Management Editor.

    5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattackerFig. 2: Redigeraren Grupprinciphantering

  2. Klicka på Administrative Templates under Användarkonfiguration eller Datorkonfiguration, beroende på vad som krävs.

    5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattacker

  3. Klicka på Windows Components.

    5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattacker

  4. Skrolla ner och klicka på Windows PowerShell.

    5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattacker

  5. Välj de PowerShell-loggningsmekanismer som behöver aktiveras bland de som finns tillgängliga. Låt oss säga att du vill aktivera loggar för skriptblock.

    5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattacker

  6. Click Aktivera loggning av PowerShell-skriptblock. Välj Aktiverad bland de angivna alternativknapparna och klicka på Verkställ.

    5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattacker

En liknande process kan användas för att aktivera generering av andra PowerShell-loggar. Många organisationer inaktiverar PowerShell-loggning på grund av det stora antalet händelseloggar som genereras. Som en bästa praxis för cybersäkerhet rekommenderas att organisationer aktiverar PowerShell-loggning – om inte alla tre typerna, så åtminstone loggning av skriptblock.

Granskning av PowerShell med hjälp av funktionen för Active Directory-granskning i en SIEM-lösning

Det kan vara svårt för IT-administratörer att hålla reda på den mängd händelseloggar som genereras för att spåra PowerShell-skript. En SIEM-lösning som Log360, som har en Active Directory-granskningsfunktion, kan hjälpa IT-administratörer att göra processen enklare på följande sätt:

  • Övervaka nätverket efter körning av skadlig kod med hjälp av rapporter från modul­loggning och skriptblock-loggning.

    5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattackerFig. 3: Modulloggningsrapporter i ManageEngine Log360

    5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattackerFig. 4: Skriptblock-loggningsrapporter i ManageEngine Log360

  • Spåra alla processer som har körts av PowerShell med hjälp av specifika rapporter för PowerShell-processpårning.

    5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattackerFig. 5: Rapporter för spårning av PowerShell-processer i ManageEngine Log360

  • Få omedelbara säkerhetsvarningar via SMS och e-post med hjälp av varningsfunktionen.

    5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattackerFig. 6: Funktionen för konfiguration av varningsprofiler i ManageEngine Log360

  • Kör skript för att stoppa skadliga processer när varningar för dessa körningar utlöses.

    5 sätt som cyberbrottslingar använder PowerShell-skript för att genomföra cyberattackerFig. 7: Funktionen Kör skript i ManageEngine Log360

Om du vill ha mer information om PowerShell-granskning med Log360 kan du kontakta våra produktexperter för en personlig demo eller ladda ner en kostnadsfri 30-dagars utvärderingsversion och prova själv.

Vill du kolla in en SIEM-lösning?