Analisi di una campagna StrRat veicolata in Italia

23/10/2023

StrRat
Email con mittente spoofato

Sono trascorsi circa quattro mesi dall’ultima campagna StrRat osservata in Italia. L’e-mail circolata in data odierna è scritta in lingua inglese ma sembra provenire da una nota azienda italiana che si occupa di progettare macchinari industriali ed ha sede a Brescia. Naturalmente il mittente è spoofato ed il contenuto dell’e-mail è confezionato ad arte.

Un gioco a Base64

Il file allegato all’e-mail, la presunta fattura che si invita a consultare, presenta una doppia estensione “.doc.jar“. In realtà dal file JAR viene estratto ed eseguito un nuovo file con doppia estensione “.doc.js

File contenuto nell’archivio Java

Il codice JavaScript è offuscato ma è evidente la presenza di un lungo testo che somiglia molto ad una stringa Base64 mancante di alcuni pezzi (tre variabili).

Codice JavaScript offuscato – si evidenziano le variabili

Analizzando meglio il codice, poco più giù della lunga stringa individuata, è possibile scorgere i valori delle tre variabili (“I”, “y”, “X”) che andranno sostituite per completare la stringa.

Utilizzando CyberChef sostituiamo i tre valori e decodifichiamo il codice da Base64:

Sostituzione delle variabili e decodifica da base64

Siamo nuovamente di fronte ad un nuovo file JavaScript. Nella seconda riga è visibile la variabile “longText” che a seguito delle dovute sostituzioni (visibili nelle righe successive) diventa una stringa Base64.

Sostituzione della stringa e decodifica da base64

Questa volta siamo di fronte ad un file JAR. Scrutando tra le risorse del file JAR troviamo una file denominato “config.txt” all’interno del quale è presente, ancora una volta, una nuova stringa Base64.

File di configurazione StrRat

Trattasi del file di configurazione di StrRat ma questa volta la decodifica non è diretta in quanto, si scoprirà più avanti, il testo è cifrato con algoritmo AES.

In realtà ci si potrebbe fermare qui con l’analisi, come mostrato di seguito è sufficiente utilizzare lo script decrypt-strrat.py per decifrare automaticamente il file di configurazione ed ottenere il C2.

Configurazione in chiaro

Deoffuscare il file JAR

Il codice del file JAR non è correttamente visibile in quanto è stato fatto uso di un offuscatore. Utilizzando Java-Deobfuscator possiamo provare ad individuare il nome dell’offuscatore utilizzato (se supportato).

Preparazione del file config.yml per individuare offuscatore

input: strrat.jar detect: true

La presenza di “detect: true” nel file di configurazione indica allo script di rilevare il tipo di offuscatore utilizzato. Si scopre così che è stato utilizzato Zelix.

$ java -jar deobfuscator.jar --config config.yml [main] INFO com.javadeobfuscator.deobfuscator.Deobfuscator - Loading classpath [main] INFO com.javadeobfuscator.deobfuscator.Deobfuscator - Loading input [main] INFO com.javadeobfuscator.deobfuscator.Deobfuscator - Detecting known obfuscators ..... [main] INFO com.javadeobfuscator.deobfuscator.Deobfuscator - com.javadeobfuscator.deobfuscator.transformers.zelix.StringEncryptionTransformer

Preparazione del file config.yml per deoffuscare il file JAR

input: strat.jar output: strrat-deob.jar transformers: - com.javadeobfuscator.deobfuscator.transformers.zelix.StringEncryptionTransformer

Adesso il codice del file JAR è totalmente in chiaro. Quanto mostrato di seguito riguarda l’algoritmo di decifratura (AES/CBC) con password “strigoi” utilizzato per riportare in chiaro il file config.txt presente nelle risorse.

Codice offuscato con Zelix (sx) e deoffuscato (dx)

Il codice di StrRat è abbastanza semplice ma essendo stato ampiamente analizzato si rimanda ad una analisi dettagliata dei comandi progettati per attivare le seguenti funzionalità remote:

  • Keylogging
  • Privilege escalation
  • Password stealing
  • Fake ransomware

Indicatori di Compromissione

Al fine di rendere pubblici i dettagli della campagna odierna si riportano di seguito gli IoC rilevati:

Link: Download IoC

Taggato  StrRat