
Reverse engineering di Rusty Stealer: un RAT basato su Rust che offre keylogging avanzato, streaming dello schermo in tempo reale ed evasione aggressiva delle difese (terminazione di Windows Defender e dirottamento dei servizi) per mantenere la persistenza.
Il reverse engineering iniziale del campione di Rusty Stealer in Ghidra rivela un modulo keylogger dedicato compilato in Rust. La vista decompilata mostra chiaramente il malware che si aggancia all'input dell'utente risolvendo i codici dei tasti e mappandoli su azioni specifiche. Ciò conferma che lo stealer registra attivamente le sequenze di tasti per raccogliere credenziali, chat e dati sensibili dell'utente.
Logica del keylogger (vista pseudo-C): FUN_140020ffe(&Var29, pHVar44, "key_press", 9) – risolve dinamicamente la stringa dell'evento "key_press". Controlli di condizione per tasti specifici: "Enter", "Escape", "Esc", "Tab", "Backspace", "Back". *HKEY__ pHVar37 = ... – risoluzione dell'handle del registro (potenzialmente lettura del layout della tastiera o persistenza) Vista assembly (disassembly): LEA R8, [local_4a8] / MOV qword ptr [R8], RAX – carica la struttura dell'evento tasto in memoria. CALL FUN_140020ffe – funzione principale di elaborazione dei tasti. JZ LAB_14000f309 – salti condizionali basati sui codici dei tasti (verifica di tasti specifici).
Cattura attiva delle sequenze di tasti: i controlli espliciti per "Enter", "Tab", "Backspace", ecc. dimostrano che il malware registra ogni sequenza di tasti, compresi i tasti speciali, per ricostruire password e messaggi. Interazione con il registro: l'handle HKEY__ suggerisce che il keylogger potrebbe leggere configurazioni di sistema o memorizzare i propri log nel registro. Raccolta di credenziali: la registrazione degli eventi "key_press" insieme ai titoli delle finestre (visti nelle fasi successive) consente all'attaccante di mappare le sequenze di tasti su applicazioni specifiche (ad es. browser, app bancarie).

La seconda vista di decompilazione Ghidra di Rusty Stealer rivela una capacità che lo spinge oltre un semplice info-stealer nel territorio dei RAT (Remote Access Trojan). Il malware include routine per la cattura dello schermo e lo streaming live, consentendo all'attaccante di monitorare visivamente il desktop della vittima in tempo reale, oltre a rubare file e sequenze di tasti.
Logica di cattura dello schermo: FUN_140020ffe(..., "screen_stream", 0xd) – inizializza esplicitamente il modulo di streaming dello schermo. FUN_14000d9eb7("fps", 3, ...) – imposta una frequenza di fotogrammi (FPS) per lo stream live, probabilmente per bilanciare l'uso della CPU e la qualità video. FUN_14000c87a(..., "done", 4) / FUN_14000c87a(..., "streaming", 9) – marcatori di stato per le operazioni di avvio/arresto dello streaming. Gestione di memoria e buffer: if (uVar69 < 5) { uVar47 = uVar69; } – logica di buffering interna per i fotogrammi dello schermo. Riferimenti assembly (riferimenti incrociati): LEA R8, [s_screen_stream_14001592a] – carica la stringa "screen_stream" in memoria per il confronto. CALL FUN_140020ffe – gestore principale della logica di streaming.
Sorveglianza live: le stringhe "screen_stream" e "fps" dimostrano che il malware può trasmettere in live streaming lo schermo della vittima. Questo è un tratto distintivo dei RAT completi (come njRAT o Quasar), non dei semplici stealer. Esfiltrazione dei dati (visiva): mentre i keylogger catturano testo, lo streaming dello schermo cattura visivamente sessioni bancarie, wallet di criptovalute e messaggi privati — aggirando completamente la crittografia. Ottimizzazione delle risorse: impostare un FPS specifico (ad es. 3 FPS) significa che il malware è progettato per funzionare silenziosamente in background senza allertare l'utente tramite un elevato uso della CPU.

La terza vista decompilata di Rusty Stealer espone routine altamente aggressive di evasione delle difese e di dirottamento delle sessioni. Il malware include funzioni specifiche per terminare Windows Defender e dirottare sessioni attive di rete/streaming (probabilmente per intercettare il traffico o interrompere il monitoraggio della sicurezza). Ciò conferma che Rusty Stealer è progettato non solo per rubare dati, ma per accecare attivamente gli strumenti di sicurezza.
Windows Defender terminato: FUN_140020ffe(..., "kill_defender", 0xd) – risolve dinamicamente la stringa per terminare i processi di Defender. FUN_14001add55() – probabilmente la routine di esecuzione che arresta forzatamente i servizi o i processi di Defender. Dirottamento degli stream: FUN_140020ffe(..., "hijack_stream", 0xc) – risolve la logica per dirottare gli stream attivi (traffico di rete o condivisione dello schermo). Manipolazione della memoria ed esecuzione: MOVUPS xmmword ptr [R12] / MOVUPS xmmword ptr [RDX + local_550] – istruzioni SIMD utilizzate per la copia rapida della memoria (probabilmente per preparare shellcode o buffer di stream). CALL FUN_14000d55() – esegue la routine di dirottamento o di terminazione.
Accecare il Defender: kill_defender dimostra che lo stealer prende di mira attivamente la sicurezza integrata di Windows. Se riesce, disabilita la protezione in tempo reale, consentendo al resto del malware (keylogger, streamer dello schermo) di operare senza interferenze. Dirottamento della sessione: hijack_stream suggerisce che il malware può intercettare o assumere il controllo degli stream di rete attivi. Questo potrebbe essere usato per rubare cookie di sessione in tempo reale, intercettare transazioni bancarie o compromettere strumenti di amministrazione remota. Evasione per progettazione: la presenza di error_pinned mostra che il malware prevede difese in cui i processi critici non possono essere terminati. Probabilmente ritenta o cambia tecnica.

La quarta vista decompilata di Rusty Stealer espone il suo modulo di ricognizione del sistema. Prima di rubare dati o esfiltrare file, il malware raccoglie informazioni dettagliate sulla macchina della vittima, tra cui hostname, username, versione del sistema operativo e indirizzi IP locali/esterni. Questi dati di profilazione vengono probabilmente inviati al server C2 per categorizzare la vittima e adattare la fase successiva dell'attacco.
Stringhe di profilazione del sistema:
"hostname" – recupera il nome del computer della vittima. "username" – recupera l'account utente connesso. "os_ver" – cattura la versione e la build esatte di Windows. "local_ip" – identifica l'indirizzo IP della rete interna della vittima. "external_ip" – risolve l'indirizzo IP pubblico (probabilmente tramite un'API esterna). "stream_id" – genera un identificatore univoco per la sessione di streaming dello schermo.
Logica decompilata:
FUN_1400084d2(uStack_570, "hostname", 8, ...) – memorizza l'hostname in una struttura.
FUN_1400084d2(uStack_570, "username", 8, ...) – memorizza lo username.