Analisi di una campagna StrRat veicolata in Italia
StrRat
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“
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).
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:
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.
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.
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.
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.
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