Stopy po použití PowerShellu na systéme, Časť 1 – Úvod do PowerShell

Singel-post cover image

PowerShell je obľúbeným nástrojom administrátorov infraštruktúr založených na operačnom systéme Windows. Široké pole jeho použitia neuniklo ani útočníkom, ktorí PowerShell častokrát používajú na vykonanie útoku. Forenzný analytik by preto mal vedieť, kde hľadať dôkazy o použití PowerShellu na legitímne i nelegitímne účely, ako vyzerajú útoky s PowerShellom, ako sa rýchlo prelúskať dostupnými logmi a kde hľadať stopy po jeho použití.

PowerShell 101

Pojem Windows PowerShell si môžeme vysvetliť rôzne: môžeme tým myslieť samotný shell, alebo skriptovací jazyk pre daný shell. V tomto blogu sa zameriame na hľadanie stôp po spustení PowerShell shellu – a prípadne identifikujeme aj aké konkrétne príkazy či skripty boli použité.

PowerShell ako skriptovací jazyk je v súčasnosti široko používaný na administráciu systémov s operačným systémom Windows. Jeho kapacity sú rovnako často zneužívané útočníkmi na uniknutie detekcii a infikovanie pracovnej stanice, spustenie škodlivého kódu na serveri či laterálny pohyb po infraštruktúre. Hľadanie stôp po potenciálnom zneužití PowerShellu útočníkmi sa preto stalo štandardnou súčasťou forenzného vyšetrovania.

Windows PowerShell vs. PowerShell Core

Na súčasných inštaláciách Windows OS sa spravidla stretávame s Windows PowerShellom. Ide o .NET framework s uzavretým zdrojovým kódom (Closed-source). Poskytuje veľké množstvo takzvaných cmdletov. PowerShell cmdlet je príkaz používaný v prostredí Windows PowerShell¹. Cmdlety sú obvykle založené na .NET triedach a operujú nad objektami.

PowerShell 2.0 bol integrovaný vo všetkých verziách Windows od Windows 7 a Windows Server 2008 R2. Nevýhodou Windows PowerShellu je, že funguje iba na OS Windows. Poslednou verziou “klasického” Windows PS je PowerShell 5.1. Ide zároveň o poslednú verziu, kde možno používať PowerShell Integrated Scripting Environment (ISE). PowerShell ISE je závislé na .NET frameworku, ktorý beží iba na Windowse – preto nie je ISE multiplatformové.

PowerShell je možné spustiť z príkazového riadku pomocou príkazu powershell.exe, alebo spustiť Powershell z ponuky Štart či pomocou “Spustiť” (vyvoláme klávesovou skratkou + R ).

Následníkom Windows PowerShell je tzv. PowerShell Core. Súhrnne tak nazývame PowerShell vo verziách 6.x. PowerShell Core je multiplatformový .NET framework, ktorý zatiaľ nie je predinštalovaný na OS Windows. Paleta dostupných cmdletov a funkcií je nateraz užšia ako v prípade Windows Powershellu. Je možné ho nainštalovať a používať na OS Windows, Linux a MacOS. Nateraz platí, že PowerShell Core koexistuje so štandardným Windows PowerShellom. Ak na zariadení s nainštalovaným PS Core spustíme štandardný PowerShell, nespustíme Core verziu. Tú je potrebné špecificky spustiť použitím príkazu pwsh.exe z príkazového riadku, prípadne z ponuky Štart alebo nástrojom “Spustiť…” namiesto normálneho PS. V budúcnosti bude najnovší rad PowerShell v7.x dodávaný v inštaláciách spolu s Windows PowerShell 5.1. Ak začínate byť zmätení, vedzte, že PS 7.x sa častokrát označuje len ako “PowerShell”. Ide o nasledovníka PS Core, teda PowerShellu 6.x.

PS 6+ už nemá ISE. Rátajte s tým, že vývoj svojich skriptov budete čoskoro musieť preniesť do iného vývojového prostredia - napríklad Visual Studio Code.

Odkazy