Una nuova campagna del malware Stealit viene analizzata dai ricercatori di FortiGuard Labs, che rivelano un’evoluzione tecnica inedita: l’abuso della funzione Single Executable Application (SEA) di Node.js, capace di impacchettare codice JavaScript in un unico eseguibile autonomo. È un cambio di paradigma per il malware, che in passato si basava su framework come Electron o installer NSIS, e che ora sfrutta una funzionalità legittima dell’ecosistema Node per aggirare le difese.

L’adozione di SEA consente a Stealit di essere eseguito senza richiedere un runtime preinstallato. Gli autori confezionano gli script in binari indipendenti che imitano installer di giochi o VPN, distribuiti su piattaforme pubbliche come Mediafire e Discord. La catena di distribuzione, apparentemente innocua, si integra in archivi compressi creati con PyInstaller, e inizia con un eseguibile che scarica componenti aggiuntivi da un server di comando remoto.

Dietro l’apparenza di un normale software si nasconde una struttura commerciale. Il dominio iloveanimals.shop, utilizzato come pannello C2 e vetrina pubblica, propone servizi di “estrazione dati professionale” e abbonamenti per sistemi Windows e Android. L’interfaccia pubblicizza funzionalità come controllo webcam, monitoraggio schermo, accesso remoto e persino distribuzione ransomware, venduti come strumenti “legittimi” di gestione IT. I costi vanno dai 458 euro a vita per Windows fino a 1.834 euro per Android. Il canale Telegram StealitPublic, gestito da un utente con alias @deceptacle, diffonde aggiornamenti, promozioni e collegamenti diretti agli installer.

L’analisi tecnica condotta da Fortinet mostra un’architettura stratificata. Lo script principale incluso nel binario SEA contiene più livelli di offuscamento, con codice che viene decodificato ed eseguito interamente in memoria. In un primo stadio, lo script carica un blob criptato contrassegnato come NODE_SEA_BLOB
. Da qui parte una sequenza di decrittazione e caricamento in memoria che culmina nell’attivazione del modulo principale, incaricato di scaricare componenti dal server remoto. Ogni esecuzione viene registrata in un file di log, mentre l’intero processo è protetto da un esteso sistema di anti-analisi, che interrompe l’esecuzione in presenza di ambienti virtuali, debugger, tool come Wireshark o IDA Pro, o configurazioni hardware minime.

Quando il malware rileva un ambiente reale, installa moduli aggiuntivi come save_data, stats_db e game_cache, salvandoli all’interno delle directory utente con nomi casuali e creando chiavi di autenticazione temporanee. Tali moduli, scaricati dal dominio iloveanimals.shop, consentono di esfiltrare file dai browser basati su Chromium, estrarre credenziali da applicazioni come Telegram, WhatsApp, Steam, Epic Games, Growtopia e sottrarre wallet di criptovalute come Atomic, Exodus, Metamask e Trust. Tutti i dati vengono compressi e inviati al server di comando in formato JSON, accompagnati da identificatori univoci del sistema infetto.

La comunicazione con il C2 è continua e gestita dal componente game_cache.exe, che riceve comandi dinamici dagli operatori per mantenere il controllo remoto. La macchina infetta può essere sorvegliata in tempo reale attraverso la condivisione dello schermo o della webcam, mentre il modulo di gestione consente di eseguire comandi diretti, riprodurre suoni, modificare il wallpaper o inviare falsi messaggi di sistema. In scenari di estorsione, Stealit integra un sistema di chat diretta con la vittima e la possibilità di crittografare file per finalità ransomware, dimostrando come un’unica infrastruttura possa servire sia campagne di spionaggio che operazioni di estorsione economica. L’efficacia di questa campagna deriva dalla capacità di unire tecniche di evasione e strumenti open-source in un unico ecosistema. L’uso di Node.js SEA riduce la necessità di librerie esterne, consentendo un’esecuzione pulita e invisibile ai controlli superficiali. Stealit include controlli di latenza e scansioni hardware per rilevare se è in corso un’analisi dinamica: quando individua processi tipici di sandbox, misura il tempo d’esecuzione di operazioni matematiche o controlla chiavi di registro sospette. Se anche solo uno di questi indicatori viene rilevato, l’esecuzione viene interrotta immediatamente. FortiGuard segnala che i domini C2 attivi includono iloveanimals.shop e infrastrutture correlate con indirizzi collegati a host temporanei. I file malevoli principali, come save_data.exe, stats_db.exe e game_cache.exe, sono riconosciuti dai sistemi antivirus Fortinet come W64/Litseat.A!tr, con varianti successive etichettate come B, C e D. Gli hash noti e la struttura modulare permettono di identificare più build del malware, alcune delle quali sono già tornate a essere impacchettate in Electron con crittografia AES-256-GCM, segno che gli autori stanno sperimentando formati multipli per aggirare le firme statiche. L’analisi di FortiGuard conferma che Stealit non è un esperimento isolato, ma un esempio emblematico di come i criminali informatici stiano riutilizzando strumenti legittimi di sviluppo software per scopi malevoli. La capacità di Node.js di creare eseguibili standalone, combinata con funzioni di offuscamento avanzato, rende difficile distinguere i binari puliti da quelli infetti. Gli esperti raccomandano di mantenere sempre aggiornate le firme antivirus, applicare filtri web proattivi e formare gli utenti a riconoscere campagne malevole mascherate da installer o tool legittimi. La formazione di base, sottolinea Fortinet, rimane uno degli strumenti più efficaci per contrastare campagne di questo tipo, che si basano in gran parte sull’inganno e sull’ingegneria sociale. Stealit rappresenta una dimostrazione di come il confine tra software legittimo e malware stia diventando sempre più sottile: un codice nativo Node.js, nato per semplificare lo sviluppo di applicazioni moderne, diventa un veicolo perfetto per attacchi invisibili, distribuiti come innocui eseguibili.