Ed Wilson, technical writer di Microsoft per oltre vent’anni e tenutario del blog “Hey scripting guy!”, definisce PowerShell come “un ambiente interattivo e orientato agli oggetti con funzioni di linguaggio di scripting che utilizza piccoli programmi, chiamati cmdlet, per semplificare configurazione, amministrazione e gestione di ambienti eterogenei in tipologie sia stand-alone che di rete, utilizzando protocolli remoti basati su standard”.
È una definizione piuttosto criptica per chi non è avvezzo a PowerShell, ma che racchiude tutta la bellezza e la potenza di questa tecnologia.
Di base, si tratta di un command-line shell con annesso linguaggio di scripting, che nel corso del tempo ha assunto un ruolo di primaria importanza nell’automazione e gestione delle operazioni di amministrazione.
Indice degli argomenti
PowerShell: strumento storico in ambiente Windows
Tutti i sistemi operativi Microsoft hanno da sempre incluso un qualche ambiente per queste attività, tanto che anche il preistorico MS-DOS poteva contare su command.com, ma il seme da cui è germinato PowerShell risale al progetto Monad, del 2002.
All’epoca, il suo principale ideatore, Jeffrey Snover, voleva introdurre strumenti Unix in Windows, ma la diversa architettura dei due sistemi operativi lo obbligò alla creazione di un set completamente diverso di istruzioni. Da qui, Monad.
Il progetto cresce e migliora e nel 2006 è rinominato Windows PowerShell, il vero antesignano dell’attuale.
Nel 2016, Microsoft rende PowerShell open source e lo estende anche agli ambienti MacOS, Ubuntu e CentOS.
Da quel momento, PowerShell gode di una diffusione esponenziale. E benché vada vista come una notizia positiva, inizia a emergere un aspetto tutt’altro che benevolo: il mondo del crimerware lo adotta come strumento di elezione nella post-exploitation.
Un successo anche nel campo del crimeware
Che PowerShell fosse entrato nelle grazie dei cyber criminali, in realtà, è notizia di gran lunga precedente al 2016 (i primi report in proposito risalgono al 2013-2014), ma è solo negli ultimi anni che il suo utilizzo, in questo settore, è diventato quasi una certezza.
PowerShell offre un completo set di strumenti di amministrazione veloci, dall’ottima interfaccia, leggeri e facilmente integrabili. Non a caso, a fargli compagnia, anche nel mondo del crimeware, ci sono le leggendarie Sysinternals Utilities di Mark Russinovich e Bryce Cogswell.
Il concetto portante, in questa strategia, è innanzitutto quello di evitare i classici e più generalisti sistemi di protezione come quelli offerti dai moderni browser.
Questi ultimi, per esempio, verificano sempre se i file scaricati non contengano codice malevolo, mentre i sistemi operativi si occupano di verificare l’integrità di nuove applicazioni da installare e il rispetto delle permission.
Il potere dei cmdlet
Un attaccante cerca di bypassare questi primi controlli e uno dei metodi più efficaci per farlo è utilizzare un approccio file-less, infilando i payload nelle applicazioni già caricate in memoria, oppure sfruttando proprio lo scripting, molto più difficile da rilevare come malevolo.
PowerShell è uno strumento di amministrazione certificato, quindi del tutto legittimo, e distinguere cmdlet malevoli da autorevoli diventa difficile e rischierebbe di generare un’enorme quantità di falsi positivi.
Per intenderci, quel che viene fatto da PowerShell è un po’ come se venisse sempre giustificato dal sistema operativo.
Che è una conseguenza piuttosto ovvia, che vogliamo, ma allo stesso tempo un invito a nozze proprio per i criminali informatici.
Le prime avvisaglie del pericolo
Invito che non è certo rimasto inutilizzato. Già nel 2014 si diffonde la famiglia di malware CRIGENT, anche chiamata Power Worm, che sfrutta script in PowerShell per avviare le proprie attività malevole. Lo fa in modo raffinato: si parte con documenti Excel o Word infetti che, una volta aperti, scaricano dei componenti Tor e Polipo che avviano un collegamento a un server C2, dal quale viene scaricato proprio uno script PowerShell.
Ed è questo il vero cuore malevolo dell’attacco.
Lo script, interamente PowerShell, per prima cosa restituisce al server C&C una serie di informazioni sul sistema della vittima (indirizzo IP, paese, account attivi e relativi privilegi, versione di sistema operativo, applicazioni Microsoft Office installate e via dicendo).
PowerShell e i ransomware moderni
Da questo momento, a ogni avvio di sistema, lo script rimane in ascolto di eventuali comandi che vengono trasmessi del server C2, oltre a infettare altri eventuali file Word ed Excel presenti nel disco.
Nel farlo, delle specifiche istruzioni PowerShell agiscono sul registro di sistema disabilitando alcuni parametri di controllo della sicurezza dei documenti (in particolare quelli delle macro).
Tutti i comandi sono gestiti via PowerShell e agli occhi del sistema operativo è tutto normale e legittimo.
Nel corso del tempo svariate tecnologie di sicurezza hanno cercato di arginare il problema, ma tutt’oggi PowerShell è uno dei migliori alleati di sistemisti così come di cyber criminali.
Anche i recenti attacchi da parte del team Conti, alcuni dei quali ho avuto modo di gestire e analizzare per conto di alcuni clienti, fanno largo uso di script PowerShell nel post-exploitation del sistema, sia per agevolare l’esfiltrazione di dati, laddove sia operata, sia per dare avvio al processo crittografico dei file.
La weaponization di PowerShell
PowerShell è parte integrante di Windows e, per questo, offre il più veloce ed efficiente accesso all’API del sistema operativo di Microsoft, con poche e semplici righe di codice.
Al tempo stesso, questa sua giusta fama e diffusione, ha portato alla creazione di una quantità esorbitante di librerie pronte all’uso e personalizzabili per generare minacce di alto livello.
Al punto che si è soliti parlare di “weaponization” di Powershell.
Questa è una specialità tipica delle gang cybercriminali dell’est Europa, in particolare della Russia. Turla, per esempio, ne ha fatto un tratto distintivo.
Si tratta di un gruppo di cyber criminali noto per creare ottimi loader in PowerShell, sfruttando quasi sempre delle librerie open source. Posh-SecMod è una delle più utilizzate da Turla e, in genere, dagli sviluppatori di crimeware.
Il ruolo di PowerShell in attacchi eccellenti
Non che sia sempre necessario ricorrere a script sofisticati, intendiamoci.
Uno dei più celebri, e impattanti, attacchi della storia è quello che ha portato all’esfiltrazione delle e-mail della Democratic National Committeee, nel 2016: le indagini hanno rilevato che ha avuto inizio, in realtà, nel 2015 ed è stata resa possibile grazie a una backdoor installata con un singolo comando PowerShell.
Anche il celebre attacco a Equifax del 2017 si è basato su PowerShell, che in quel caso servì addirittura all’exploiting della famigerata vulnerabilità CVE-2017-5638 di Apache Struts.
Anche in quel caso, poche righe PowerShell furono sufficienti per mettere in ginocchio un colosso da oltre 4 miliardi di dollari di fatturato.