La maggior parte degli utenti di Microsoft Windows (in particolare, gli amministratori di sistema) avrà sentito parlare, almeno una volta, di Windows PowerShell, un interprete dei comandi (più propriamente definito “shell”, in maniera molto simile a interpreti come Bash su Linux) attraverso cui è possibile “pilotare” diverse funzionalità del sistema operativo. Tali funzionalità includono, ad esempio, la possibilità di copiare e spostare i file, di scaricare applicazioni da remoto, ma anche di controllare la lista dei servizi attualmente in esecuzione. I comandi PowerShell sono detti anche cmdlets, e rappresentano una combinazione di funzioni racchiuse, tipicamente, in un unico comando. Ad esempio, il cmdlet ConvertTo-XML crea una rappresentazione in XML di un oggetto.
Ciò che è sicuramente meno noto per gli addetti ai lavori è il fatto che PowerShell viene spesso utilizzato per espletare funzionalità malevole. L’idea è semplice: le funzionalità fornite dalla shell consentono di eseguire comandi di sistema avanzati, che possono essere anche dannosi per il sistema stesso se usati impropriamente (ad esempio, caricare file aggiuntivi in memoria, scaricare file malevoli dalla rete, etc.). Questo costituisce un enorme vantaggio nell’attaccare i sistemi Windows rispetto alle tradizionali tecniche di vulnerability exploitation, le quali prevedono l’esecuzione di codice malevolo attraverso lo sfruttamento di vulnerabilità in programmi già presenti nella macchina target (tipicamente non aggiornati). Attraverso PowerShell, quindi, non è necessario sfruttare vulnerabilità specifiche di un’applicazione o del sistema operativo, ma è possibile eseguire direttamente gli attacchi.
PowerShell viene spesso utilizzato indirettamente attraverso l'uso di vettori d'infezione, spesso rappresentati da file Word ed Excel. Tali file contengono, infatti, delle macro, ovvero delle procedure automatiche che normalmente dovrebbero facilitare la scrittura di documenti o fogli di calcolo (ad esempio, riempire automaticamente certe celle o eseguire determinati calcoli su più celle). Anche in questo caso, tali macro sono spesso utilizzate in contesti assolutamente “benigni”, ma possono implementare funzionalità per generare, appunto, codici PowerShell. Inoltre, PowerShell può anche essere utilizzato direttamente, attraverso la creazione di una reverse shell che può consentire ad un attaccante di usarne appieno le funzionalità.
Un’altra caratteristica del codice PowerShell è la capacità di “nascondersi” agli occhi di un analista, in modo tale da non rendere evidenti le proprie azioni. Tale caratteristica prende, in gergo, il nome di offuscamento. È possibile, pertanto, prendere del codice anche molto semplice e complicarlo enormemente, senza però modificarne la semantica (ovvero, il programma funziona nello stesso identico modo della versione non offuscata).
Per contrastare ed analizzare i malware PowerShell offuscati, la ricerca scientifica ha, negli ultimi anni, fatto dei passi da gigante. In particolare, due studi dell’Università di Cagliari [1,2] hanno sviluppato delle tecniche efficienti per poter de-offuscare questi attacchi. In particolare, è stato da poco rilasciato uno strumento open-source, chiamato PowerDecode, capace di ottenere il codice PowerShell originale dalla sua variante offuscata. PowerDecode può essere scaricato liberamente [3].
I malware PowerShell costituiscono, quindi, un importante rischio per i sistemi Windows, soprattutto quando caricati da documenti Office. La ricerca è comunque attiva per proporre soluzioni sempre più efficienti per poter analizzare e rilevare questa categoria di attacchi.
Riferimenti
[1] D. Ugarte, D.Maiorca, F. Cara e G. Giacinto. PowerDrive: Accurate De-Obfuscation and Analysis of PowerShell Malware, 16th Conference on Detection of Intrusions and Malware & Vulnerability Assessment (DIMVA). Springer, Gothenburg, Sweden, pagg. 240-259, 2019.
[2] G. M. Malandrone, G. Virdis, G. Giacinto e D. Maiorca. PowerDecode: a PowerShell Script Decoder Dedicated to Malware Analysis. In 5th Italian Conference on CyberSecurity (ITASEC), 2021.
[3] PowerDecode. https://github.com/Malandrone/PowerDecode