Powershell: il paradiso dei cyber attaccanti

Al momento stai visualizzando Powershell: il paradiso dei cyber attaccanti
  • Autore dell'articolo:
  • Categoria dell'articolo:news

PowerShell era stato originariamente concepito come programma per automatizzare le attività di gestione e configurazione per gli amministratori di sistema. Tuttavia, non c’è voluto molto perché gli attaccanti prendessero consapevolezza del grande potenziale offensivo per eseguire operazioni dannose senza essere scoperti.

Grazie alla sua versatilità, PowerShell può essere usato per tutte le fasi di attacco:

  • come vettore iniziale di un’infezione;
  • nascosto nelle macro dei documenti Office;
  • per il dumping di credenziali, in fase post-exploit, utilizzando il famigerato modulo mimikatz Powershell.

Esaminiamo alcuni scenari in cui PowerShell viene usato non come strumento legittimo ma con intenti dannosi e come è possibile rilevare e minimizzare tali tipi di attacchi. In dettaglio vedremo come viene usato un comando PowerShell altamente offuscato per eseguire shellcode. Quindi vedremo come gli aggressori possono aggirare le funzionalità di rilevamento dei malware.

Perché gli attaccanti usano PowerShell?

  • Powershell è firmato da Microsoft ed è virtualmente presente su qualsiasi. La sua onnipresenza sui sistemi Windows lo rende la scelta ideale, per un attaccante, per evadere l’individuazione e eliminare la necessitò di utilizzare più tool ampliando il proprio arsenale di attacco;
  • PowerShell consente l’esecuzione di comandi senza la necessità di scaricare alcun file sul disco. La tecnica dell’offuscamento consente così di eseguire attacchi più furtivi, difficili da individuare;
  • Powershell può essere usato in tutte le fasi di un attacco. Il suo utilizzo va dall’uso delle macro dannose nei documenti Office, come vettore iniziale d’attacco, all’uso, in fase post-exploit, di Mimikatz per il dumping delle credenziali;
  • in Powershell sono disponibili vari operatori bit per bit e operazioni su stringhe che possono essere usate per raggiungere un alto livello di offuscamento. Un esempio? “bxor, bor, join, replace” possono essere usate per alterare stringhe e comandi per evitare il rilevamento da parte delle soluzioni di sicurezza;
  • ci sono anche casi di uso più avanzati come l’esecuzione di shellcode o l’iniezione di DLL, eseguibili comunque piuttosto facilmente. Esistono infatti infiniti progetti open source disponibili sul web che sono adatti a tali scopi.

Differenti tipi di attacchi con PowerShell

Utilizzo in macro dannose

PowerShell è spesso usato come vettore di attacco iniziale in documenti contenenti macro dannose. La complessità di questa tipologia di attacchi varia dal semplice download ed esecuzione del payload di seconda fase ad usi più avanzati come nel caso di attacchi di tipo Process Hollowing.

 funzione nella macro scaria un payload / shellcode addizionale

Nell’esempio sopra, la funzione nella macro scaria un payload / shellcode addizionale, che viene quindi eseguito per ottenere l’accesso al sistema della vittima. 

Disabilitare l’Antimalware Scan Interface (AMSI) per evadere l’individuazione

Abbiamo visto come alcuni attacchi PowerShell disabilitino prima la protezione AMSI fornita da Microsoft. Infatti tutti gli script / comandi PowerShell sono sottoposti a una scansion AMSI per prevenire l’esecuzione di malware.

Codice dannoso

Il codice dannoso sopra disabilita l’interfaccia AMSI patchando la funzione  ‘AmsiScanBuffer’  nel file  ‘amsi.dll’ prima modificando le permissioni nella memoria, quindi scrivendo i byte desiderati. 

Usare Mimikatz nella fase post-exploit

Mimikatz è uno dei tool post-exploit più utilizzato da attaccanti e autori di malware. Solitamente è usato per rubare credenziali o eseguire l’escalation dei privilegi. 

Mimikatz originariamente poteva sfruttare una singola vulnerabilità nel distema di autenticazione di Windows. Tuttavia si è evoluto parecchio nel tempo e la sua ultima versione contiene una miriade di funzionalità aggiuntive.

esecuzione Mimiikatz

L’esempio sopra mostra una delle possibilità modalità di esecuzione di Mimikatz.  Lo script è scaricato direttamente dal repository GitHub ed eseguito sulla macchina bersaglio.

Comandi codificati e compressi

Una delle più potenti funzionalità di PowerShell è quella di poter usare comandi codificati come input senza dover scaricare alcun file sul disco. Non solo: Mimikatz consente anche l’uso della compressione (Gzip nella maggior parte dei casi) che contribuisce ulteriormente ad offuscare i comandi.

input Powershell

Nella figura 4 possiamo vedere che l’input al PowerShell è un blocco di comandi in base64, che viene eseguito usando lo switch ‘EncodedCommand’. Il comando in base64, quando decodificato, risulta in un altro set di comandi codificati e compressi elencati come output. 

input Powershell

Eseguire la decodifica e la decompressione sull’output delle precedenti operazioni rivela il set finale di comandi, che viene usato per eseguire una shellcode usando varie API Windows, come si vede nella figura sopra. 

Le difficoltà nell’individuare un attacco PowerShell

  • Molti applicativi legittimi usano PowerShell per varie attività. Quindi bloccare semplicemente PowerShell non è una soluzione ottimale, in quanto impedirebbe ad amministratori ed utenti di ottimizzare e automatizzare attività legittime e necessarie;
  • è molto complesso distinguere usi legittimi e usi dannosi di PowerShell. Gli admin di sistema lo usano per automatizzare attività specifiche come la creazione di utenti o per molte attività di manutenzione. Un attore dannoso potrebbe tentare le stesse operazioni nella fase post-exploit. Tale somiglianza tra attività legittime e dannose rende molto complesso identificare gli attacchi PowerShell e rispondere;
  • è molto complesso distinguere usi legittimi e usi dannosi di PowerShell. Gli admin di sistema lo usano per automatizzare attività specifiche come la creazione di utenti o per molte attività di manutenzione. Un attore dannoso potrebbe tentare le stesse operazioni nella fase post-exploit. Tale somiglianza tra attività legittime e dannose rende molto complesso identificare gli attacchi PowerShell e rispondere;
  • molti attacchi sono eseguiti direttamente in memoria usando comandi senza che ci sia mai bisogno di toccare il disco. Fatto che complica molto la raccolta e l’analisi degli artefatti relativi agli attacchi, visto che non sono scritti sul disco;
  • la maggior parte degli attacchi usa alcuni schemi di codifica per rimanere invisibili ed evitare l’individuazione. Per rilevarli in modo efficace è necessario supportare più schemi di codifica;
  • PowerShell fornisce una vastissima superficie di attacco. Può utilizzare programmi come WMIC per ottenere informazioni come il livello di patch di sistema, molti utili per lanciare attacchi ulteriori. Può anche usare WScript e CScript per lanciare payload di seconda fase.

Come Quick Heal protegge gli utenti

Quick Heal e Seqrite proteggono i propri utenti da malware multi-stage e da attacchi che abusano dell’uso di PowerShell. Oltre al meccanismo di protezione comportamentale, Quick Heal impedisce l’esecuzione dannosa di PowerShell con altri moduli, come l’URL Filtering, la protezione Anti malware e cloud, la protezione Anti Ransomware. 

Protezione Quick Heal

Conclusione

Difendersi da attacchi PowerShell è complicato. A causa della sua disponibilità e alla facilità d’uso, fornisce ai cyber attaccanti un’ampia superficie di attacco. Tuttavia la protezione fornita da alcune tecnologie di rilevamento può aiutarci a mitigare i rischi.

Come utenti, possiamo proteggerci non eseguendo script PowerShell non attendibili, abilitando le più recenti funzionalità di sicurezza e mantenendo aggiornati il sistema e l’antivirus Quick Heal.