Monitorizarea execuției comenzilor și scripturilor Powershell, logarea execuției și crearea de reguli pentru detectarea execuției comenzilor ce au conținut codificat

Monitorizarea execuției comenzilor și scripturilor Powershell, logarea execuției și crearea de reguli pentru detectarea execuției comenzilor ce au conținut codificat

Siguranța împotriva atacurilor cibernetice și a infecțiilor cu malware-uri, inclusiv ransomware, poate fi consolidată prin implementarea unor strategii avansate în mediul PowerShell. Acest articol analizează o serie de soluții pentru diverse aspecte legate de securitatea datelor în acest context specific.

Rating: 5.0 (2 voturi)
Noutăți 31.10.2023

Ce oferă Powershell?

PowerShell include deja unele funcționalități "standard" pentru a crește securitatea și a preveni atacurile infractorilor, cum ar fi monitorizarea execuției comenzilor și scripturilor Powershell, logarea execuției acestora și crearea de reguli pentru detecția execuției de comenzi cu conținut codificat.

PowerShell este un program de automatizare a sarcinilor și de gestionare a configurațiilor dezvoltat de Microsoft, care constă într-un shell de linie de comandă și limbajul de scriptare asociat. A fost creat pentru a facilita administrarea și automatizarea operațiunilor în mediul sistemelor de operare Windows. PowerShell permite utilizatorilor să execute comenzi și să creeze scripturi complexe pentru gestionarea resurselor și pentru administrarea sistemelor, oferind o gamă largă de funcționalități și facilități pentru gestionarea eficientă a infrastructurii IT.

A fost inclus implicit în sistemele Windows începând cu Windows 7 SP1 și Windows Server 2008 R2 SP. PowerShell cuprinde un shell de linie de comandă, un limbaj de scriptare și un cadru de gestionare a configurațiilor și rulează pe sistemele de operare Windows, Linux și macOS.

 

Execuția comenzilor și scripturilor

În PowerShell, securitatea începe cu politicile de execuție. Aceste politici specifică condițiile ce trebuie îndeplinite pentru ca PowerShell să execute scripturi. Aici puteți defini diferite niveluri, precum faptul că scripturile locale pot fi rulate fără semnătură digitală, în timp ce cele descărcate trebuie să fie semnate digital. În esență, această funcție este utilă pentru a preveni rularea accidentală a scripturilor.

Dacă utilizați Politicile de Execuție, controlați-le prin intermediul Politicilor de Grup. Acestea sunt mereu deasupra permisiunilor locale și, prin urmare, sunt mai puternice în lupta împotriva execuțiilor nedorite.

Verificați politicile setate cu "Get-ExecutionPolicy -list". Dacă setările sunt configurate ca RemoteSigned, aceasta înseamnă că scripturile locale sunt întotdeauna executate, iar scripturile descărcate doar dacă au o semnătură digitală.

Această politică de execuție asigură că doar scripturile de încredere, semnate digital, pot fi executate, protejând astfel sistemul împotriva potențialelor amenințări provenite de la scripturile necunoscute sau malitioase. Este important să fie implementată și monitorizată constant pentru a asigura o securitate robustă în mediul PowerShell.

 

Monitorizare & logare

În PowerShell, jurnalizarea și monitorizarea sunt incluse. Aici vă puteți asigura că execuția scripturilor este urmărită prin intermediul Jurnalului Evenimentelor Windows. Cu toate acestea, este important să faceți acest lucru și prin intermediul Politicilor de Grup, cum am precizat mai sus, deoarece urmărirea activității poate fi realizată doar printr-o centralizare adecvată.

 

Cum colectăm jurnalele PowerShell?

În mod implicit, PowerShell nu înregistrează nimic și trebuie activat. Acest ghid oferă instrucțiuni privind implementarea jurnalizării prin Obiectele Politicilor de Grup (GPO), astfel încât aceasta să poată fi distribuită prin Active Directory.

 

Crearea configurației Politicii de Grup

1. Deschideți Managementul Politicilor de Grup din Instrumente Administrative (Group Policy Management from Administrative Tools).

2. Alegeți Unitatea Organizațională (OU) la care să aplicați GPO-ul, faceți clic dreapta și „Creați o GPO în acest domeniu și legați-o aici…” (Create a GPO in this domain, and Link it here…), dați-i un nume corespunzător și faceți clic dreapta pentru a edita politica. Aceasta va deschide Editorul de Management al Politicilor de Grup, permițându-ne să modificăm setările.

3. Sub Configurația Computerului > Politici > Setări Administrative > Componente Windows > PowerShell (Computer Configuration > Policies > Administrative Settings > Windows Components > Windows PowerShell), veți găsi setările pentru activarea jurnalizării.

Există două zone principale pe care să le luați în considerare pentru jurnalizarea PowerShell: „Activarea Jurnalizării Modulului” (Turn on Module Logging) și „Activarea Jurnalizării Blocurilor de Script PowerShell” (Turn on PowerShell Script Block Logging). Acestea două vor înregistra acțiunile PowerShell, însă sunt ușor diferite în ceea ce privește ceea ce înregistrează.


Jurnalizarea Modulului

Jurnalizarea Modulului are loc atunci când PowerShell înregistrează detaliile execuției conductei pe măsură ce execută comenzile, inclusiv orice inițializare a variabilelor și invocarea comenzilor. Puteți filtra pentru a include doar anumite Module PowerShell. De exemplu, puteți limita jurnalizarea PowerShell doar la anumite module (găsite folosind comanda PowerShell Get-Module -ListAvailable). Astfel, dacă ați activat Jurnalizarea Modulului pentru modulul NetAdapter, veți primi jurnale pentru lucruri precum Disable-NetAdapter, dar nu și pentru Get-ChildItem, deoarece acesta aparține modulului de Management.

 

Iată pașii pentru a activa Jurnalizarea Modulului:

Dublu clic pe "Activarea Jurnalizării Modulului" (Turn on Module Logging) în Editorul de Management al Politicilor de Grup.

Schimbați configurația pentru a selecta "Activat" (Enabled).

Aceasta activează configurația Opțiunilor de mai jos, selectați butonul "Afișați..." (Show...).

În fereastra pop-up, există o tabelă pentru a introduce numele modulului de monitorizat. Adăugați un asterisc (*) pe prima linie, faceți clic pe „OK” și apoi din nou pe „OK” pentru a salva.

Aceste setări vor începe să înregistreze comenzile PowerShell în Jurnalul Evenimentelor Windows PowerShell, găsit sub folderul Application and Services Logs în Event Viewer. Numele complet pentru acest jurnal este "Windows PowerShell”.

 

Detecția execuției de comenzi cu conținut codificat

Comenzile PowerShell care lansează noi procese declanșează Windows-ul utilizând ID-ul evenimentului 4688 (a fost creat un nou proces). Organizațiile pot monitoriza comenzile care generează noi procese sau emiterea de comenzi cu risc ridicat sau cele asociate cu recunoaștere sau activități malițioase. Cu toate acestea, PowerShell poate accepta și comenzi codificate în Base64 pentru a susține comenzile care necesită caractere neacceptate în mod normal, cum ar fi ghilimelele complexe, acoladele și așa mai departe.

1.     Înțelegerea encoding-ului în PowerShell: encoding-ul înseamnă transformarea unui text sau a unei comenzi într-un alt format, fără a schimba semnificația. În cazul PowerShell, Base64 encoding este o tehnică comună, unde textul comenzii este transformat într-un format dificil de citit. De exemplu, comanda "Get-Process" encoded în Base64 devine "R2V0LVBhcnNl".

2.     Identificarea tiparelor de encoding: identificați tiparele specifice de encoding, cum ar fi Base64, și învățați cum arată comenzi encoded. Cu cât înțelegeți mai bine aceste tipare, cu atât veți fi mai eficienți în detectarea lor.

3.     Utilizarea funcționalităților de jurnalizare din PowerShell: activarea jurnalizării în PowerShell vă permite să înregistrați comenzile executate, inclusiv cele cu conținut encoded. Acest lucru furnizează o evidență digitală utilă în cazul unui incident de securitate.

4.     Utilizarea Event Triggers în sistemele Windows: Event Triggers sunt instrumente care pot rula scripturi sau trimite alerte în funcție de evenimente specifice, precum execuția comenzilor encoded. Configurați un Event Trigger pentru a răspunde la astfel de evenimente.

5.     Crearea unor scripturi Powershell personalizate pentru detectare: scrieți un script PowerShell care să utilizeze expresii regulate pentru a căuta tiparele specifice de encoding în comenzile PowerShell. Acest script poate alerta administratorul sau poate înregistra activitatea într-un fișier de jurnalizare.

6.     Actualizarea și testarea regulilor: actualizați regulile în funcție de noile tipare de encoding și amenințări. Testați-le periodic pentru a vă asigura că funcționează așa cum trebuie și pot identifica comportamentele suspecte.

 

Prin implementarea politiciilor de execuție și controlul lor prin intermediul Politicilor de Grup, organizațiile pot limita rularea scripturilor nesemnate digital și pot crea un filtru puternic împotriva potențialelor amenințări. De asemenea, jurnalizarea detaliată a comenzilor și monitorizarea activității PowerShell, în special folosind funcțiile de logare a modulelor și a blocurilor de script, oferă o transparență esențială asupra acțiunilor desfășurate în sistem. Detectarea comenzilor cu conținut codificat adaugă un strat suplimentar de securitate, permițând organizațiilor să identifice și să investigheze potențialele amenințări ascunse.



Sursa1, sursa2, sursa3