jRAT strade alternative per una rapida analisi
jRAT
jRAT, noto anche come Adwind, è un Remote Access Trojan commerciale scritto in Java che nel corso degli anni si è evoluto nelle funzionalità, fino a diventare uno dei più noti RAT modulari e multipiattaforma.
Attivo e noto nel panorama italiano a partire dal 2018 con campagne mirate a tema “Delivery”, come quella riscontrata lunedì 12, jRAT utilizza più o meno sempre la solita tecnica di offuscamento in cui sono usati identificativi visivamente simili e in cui la funzionalità di spacchettamento del payload è divisa tra numerose funzioni.
Non si tratta di tecniche particolarmente complesse da aggirare ma sono comunque fastidiose ed utili al fine di scoraggiare le attività di reverse da parte degli analisti e tenere attiva la campagna il maggior tempo possibile.
Codice malevolo offuscato
Il malware viene solitamente veicolato tramite email con allegato .JAR opportunamente offuscato.
La funzione principale ha lo scopo di decodificare il contenuto di due file contenuti all’interno dell’archivio JAR.
Soluzioni ideali
Per ottenere il codice finale, la soluzione più elegante sarebbe quella di utilizzare un decryptor, nel tempo ne sono stati scritti diversi ma non risultano compatibili e correttamente funzionanti con tutte le varianti di jRAT, o in alternativa, riscrivere la funzione principale in modo da ottenere la lista delle stringhe decodificate, una pratica piuttosto comune ma richiede la modifica e la ricompilazione del sorgente.
Di seguito la soluzione proposta dal ricercatore @reecdeep.
Soluzione rapida
Analizzare un file JAR con strumenti di debug come ollydbg o x64dbg utilizzati normalmente per l’analisi dei file di tipo PE è possibile importando come eseguibile “java.exe
“, l’interprete per il file jar, e cambiando le istruzioni dalla line di comando. Quindi ricaricare il tutto.
Successivamente impostare un breakpoint su WriteFile e avviare il debug.
Alla seconda interruzione relativa alla chiamata della funzione WriteFile, dalla memoria cercare la stringa ASCII “node.exe” o “boot.js” e mostrare i risultati nel dump (la prima chiamata è usata per copiare il malware su un percorso temporaneo).
A questo punto è possibile estrarre il codice in chiaro salvato in memoria ma non ancora eseguito sulla macchina.
L’estrazione del codice JS utilizzato da questa variante di jRAT è disponibile su Pastebin.
Il malware provvede a scaricare una versione di NodeJS per sistemi Windows.
NodeJS verrà utilizzato per stabilire una connessione con il C2 controllato dai criminali da cui potrà ricevere nuove istruzioni o a cui invierà i dati sottratti.
Le connessioni al C2 avvengono esattamente a intervalli regolari di 5 minuti.
Gli argomenti passati al file node.exe sono i seguenti:
"arguments": ["--hub-domain", "localhost", "--hub-domain", "ramos01.hopto.org"]
La persistenza viene garantita dalle informazioni fornite nel file boot.js successivo alla prima connessione al C2 e salvato nella cartella “_qhub_node_” all’interno della cartella di sistema “Temp”. Le istruzioni riguardano l’esecuzione di cmd.exe per modificare specifiche chiavi nel registro di sistema.
Nota sulle esecuzioni non controllate
E’ buona norma, durante l’analisi manuale, evitare le esecuzioni non controllate dei malware. Lo scopo dell’analisi è infatti quello di avere un quadro quanto più completo delle funzionalità del campione e un’esecuzione non controllata può far perdere di vista comportamenti interessanti del malware.
Tuttavia un’analista, col tempo, si costruisce un certo intuito riguardo le possibili azioni di un malware (molti malware sono scontati, o comunque semplici, se visti dal punto di vista di un programmatore) e può, con questo, velocizzarsi l’analisi.
E’ quindi con cognizione di causa che devono essere usate le informazioni fornite.