XWorm e Remcos di nuovo in diffusione: ecco le campagne che usano script BAT per distribuire RAT

Al momento stai visualizzando XWorm e Remcos di nuovo in diffusione: ecco le campagne che usano script BAT per distribuire RAT

Traduzione dell’articolo di Vaibhav Billade e Rumana Siddiqui dei Seqrite Labs

Indice

  • Introduzione
  • Catena di infezione
  • Albero dei processi
  • Campagna 1
  • – persistenza
  • – file BATCH
  • – script PowerShell
  • – loader
  • – XWorm/Remcos
  • Campagna 2
  • Conclusione
  • IOCs
  • Rilevamenti
  • MITRE ATT&CK TTPs

Introduzione alle campagne XWorm e Remcos

Recenti campagne malware hanno dimostrato l’uso, in continua evoluzione, di loader basati su file BAT per distribuire RAT (remote access trojan). Le più recenti diffondono malware come XWorm e Remcos, notoriamente molto diffusi anche in Italia. Queste campagne, spesso, iniziano con un archivio ZIP ospitato su piattaforme dall’aspetto affidabile, come ImageKit. Sono strutturate per apparire come contenuti legittimi allo scopo di indurre l’interazione dell’utente.

Abbiamo analizzato una di queste campagne, per verificarne il funzionamento. Lo ZIP diffuso via email contiene uno script BAT altamente offuscato che funge da primo stadio della catena di infezione. Questi file BAT usano tecniche avanzate per sfuggire al rilevamento statico e distribuiscono loader PowerShell che iniettano il payload dei RAT direttamente in memoria. Questa tecnica conferma una tendenza ormai affermata: l’uso di malware che funzionano direttamente in memoria. Si parla di malware file-less, che non lasciano cioè alcun file nella memoria della macchina.

Un elemento rilevante di queste campagne è l’impiego di file SVG per distribuire gli script BAT malevoli. Gli SVG contengono un JavaScript incorporato che attiva la catena di esecuzione quando il file viene iniettato in ambienti vulnerabili o inserito in pagine di phishing. L’uso di formati “non tradizionali” per la consegna del malware ha lo scopo di ridurre la probabilità di rilevamento.

Catena d’infezione

Albero dei processi

Albero dei processi
Immagine 2: albero dei processi

Analisi della Campagna 1 di XWorm

Analizzando la prima campagna, sono stati identificati più script BAT collegati all’operazione. Evidenza, questa, che ribadisce un panorama delle minacce in costante evoluzione. Non a caso alcuni script sono in sviluppo attivo e contengono codice parziale o in prova; altri sono pienamente operativi e in grado di eseguire l’intera catena d’attacco, compresi download ed esecuzione del payload.

L’immagine seguente mostra due esempi di file BAT:

  • Esempio 1: consegnato direttamente come allegato EML.
  • Esempio 2: scaricato tramite URL ospitato su ImageKit.

La varietà nei metodi di consegna indica che gli attori stanno sperimentando approcci diversi per aumentare il successo dell’infezione e sfuggire ai controlli di sicurezza.

Persistenza

Il malware stabilisce persistenza creando un file BAT nella cartella di avvio di Windows (Startup). In questo modo lo script malevolo viene eseguito automaticamente ad ogni avvio del sistema o al login dell’utente.

meccanismo di persistenza tramite il file BAT in startup di Windows
Immagine 4: meccanismo di persistenza tramite il file BAT in startup di Windows

File BATCH

La figura mostra lo script BAT nella forma offuscata affiancato alla versione deoffuscata.

Script PowerShell

La figura seguente mostra la finestra del processo PowerShell e gli argomenti di riga di comando usati all’esecuzione. È così chiaro il modo in cui PowerShell venga usato per iniettare il payload in memoria. Analizzeremo lo script PowerShell nelle parti successive, per comprenderne il ruolo nella distribuzione di XWorm.

Il comando PowerShell esegue uno script decodificando una stringa Base64 ed eseguendola in memoria. Utilizza -nop per evitare il caricamento del profilo utente, -w hidden per nascondere la finestra e iex (Invoke-Expression) per eseguire il contenuto decodificato.

Ecco lo scirpt deoffuscato:

Per semplificare l’analisi, abbiamo suddiviso lo script deoffuscato in due parti.

Prima parte

La prima parte è progettata per trovare ed eseguire codice offuscato incorporato in un file batch (aoc.bat) nel profilo dell’utente corrente. Lo script ottiene il nome utente dalle variabili d’ambiente per costruire il percorso a aoc.bat, legge tutte le righe in UTF-8 e cerca righe che iniziano con il prefisso commento triplo ::: seguito da una stringa Base64. Trovata la riga, decodifica la stringa Base64 in un array di byte e la converte in una stringa Unicode assegnata a $ttzhae. Questa stringa decodificata contiene un ulteriore livello di script PowerShell che viene eseguito in memoria con Invoke-Expression. In questo modo un attaccante può nascondere logiche PowerShell multi-stadio all’interno di un commento di un file batch apparentemente innocuo, abilitando esecuzione stealth e fileless.

La prima parte disabilita programmaticamente due meccanismi chiave di sicurezza Windows: AMSI (Antimalware Scan Interface) ed ETW (Event Tracing for Windows). Lo script sfrutta reflection .NET e la creazione dinamica di delegate per risolvere funzioni native come GetProcAddress, GetModuleHandle, VirtualProtect e AmsiInitialize. Identifica e patcha in memoria AmsiScanBuffer con un’istruzione che forza il ritorno (mov eax, 0; ret), bypassando così la scansione AMSI. Allo stesso modo sovrascrive l’inizio di EtwEventWrite con un’istruzione di ritorno per disabilitare il tracciamento eventi. Queste modifiche in memoria permettono alle azioni PowerShell malevole di eseguirsi in modo furtivo senza essere scansionate dalle soluzioni endpoint.

Seconda parte

Nella seconda parte lo script recupera il nome utente e costruisce il percorso di aoc.bat. Esegue payload nascosti come assembly .NET criptati e compressi all’interno di quel batch. Cerca una riga di commento prefissata con :: che contiene una stringa payload Base64. La stringa viene suddivisa in due parti usando la barra inversa \ come delimitatore. Ciascuna parte viene decodificata da Base64, decriptata con AES usando una chiave e IV hardcoded (CBC con padding PKCS7) e quindi decompressa con GZIP. Il risultato sono due assembly .NET distinti, caricati ed eseguiti direttamente in memoria. Il primo assembly viene invocato senza argomenti; il secondo viene eseguito con '%*' passato come input simulato da riga di comando.

Il secondo payload è il loader che esegue il malware finale: il RAT XWorm.

Loader di XWorm

Il loader è progettato per eludere il rilevamento, disabilitare il logging degli eventi ed eseguire i payload incorporati direttamente in memoria. Può decriptare ed eseguire eseguibili .NET tramite Assembly.Load o eseguire shellcode decriptato modificando le protezioni di memoria con VirtualProtect e invocandolo tramite delegate.

Capacità del loader

  • Elusione del rilevamento
  • Disabilitazione del logging degli eventi
  • Estrazione ed esecuzione dei payload incorporati

Abbiamo identificato diversi loader che impiegano l’esecuzione in memoria per evitare il rilevamento e persistere in maniera più silenziosa possibile. Alcuni loader contengono eseguibili .NET criptati che vengono decriptati ed eseguiti dalla memoria usando Assembly.Load seguito da .EntryPoint.Invoke, permettendo l’esecuzione di codice gestito senza scrivere il file su disco (malware file less).

Altre varianti contengono shellcode criptato. Queste decriptano lo shellcode, cambiano le protezioni di memoria tramite VirtualProtect per renderlo eseguibile e poi lo eseguono usando un delegate creato con Marshal.GetDelegateForFunctionPointer.

Persistenza

XWorm e Remcos

Abbiamo già pubblicato un’analisi approfondita su XWorm e Remcos in questo anno. Entrambi offrono funzionalità avanzate: keylogging, esecuzione remota di comandi, esfiltrazione dati e tecniche di persistenza ed evasione.

Oltre a XWorm, varianti della stessa campagna hanno impiegato Remcos, un RAT commerciale noto che fornisce accesso desktop remoto, keylogging, esecuzione comandi, manipolazione file, cattura di screenshot ed esfiltrazione dati.

Campagna 2 di XWorm/ Remcos

La Campagna 2 introduce una variazione significativa nella distribuzione: l’uso di file SVG (Scalable Vector Graphics) con JavaScript incorporato, impiegati principalmente in attacchi di phishing. Gli SVG malevoli sono confezionati per sembrare immagini legittime e vengono renderizzati in software vulnerabili (visualizzatori obsoleti o client di posta) o inseriti in pagine di phishing costruite per attirare utenti ignari. Il JavaScript interno fa da trigger e avvia il download automatico di un archivio ZIP quando l’SVG viene aperto o visualizzato in anteprima.

Lo ZIP scaricato contiene poi uno script BAT offuscato che costituisce il vettore di accesso iniziale. Se l’utente esegue manualmente il BAT o è indotto a farlo mediante ingegneria sociale, attiva una catena multi-stadio simile a quella della Campagna 1. Il BAT invoca comandi PowerShell che decodificano ed eseguono un loader EXE direttamente in memoria. Il loader decripta e dispiega il payload finale, qui XWorm.

L’uso degli SVG è rilevante perché i file immagine sono spesso considerati benigni e talvolta esclusi da ispezioni approfondite. Sfruttando la capacità di scripting degli SVG, gli attori possono bypassare difese perimetrali e realizzare consegne stealth e fileless.

Conclusione

Queste campagne mostrano una tendenza crescente verso l’uso di script offuscati, l’esecuzione fileless e l’impiego di formati non tradizionali come gli SVG per veicolare RAT quali XWorm e Remcos. L’incapsulamento dei payload in BAT ed l’esecuzione tramite PowerShell permettono agli attaccanti di aggirare i controlli statici. La transizione dall’uso degli SVG negli attacchi di phishing alla loro adozione per la distribuzione di malware sottolinea la necessità di dotarsi di soluzioni di rilevamento comportamentale, di scansione dei contenuti e di formazione degli utenti per fronteggiare queste minacce in evoluzione.

IOCS:

MD5File
EDA018A9D51F3B09C20E88A15F630DF5BAT
23E30938E00F89BF345C9C1E58A6CC1DJS
1CE36351D7175E9244209AE0D42759D9LOADER
EC04BC20CA447556C3BDCFCBF6662C60XWORM
D439CB98CF44D359C6ABCDDDB6E85454REMCOS

Individuazione

  • Trojan.LoaderCiR
  • Trojan.GenericFC.S29960909

MITRE ATT&CK TTPs

TatticaTechnique ID & nameDescrizione
ExecutionT1059.001 – Command and Scripting Interpreter: PowerShellPowerShell è usato per interpretare comandi, decriptare dati e invocare payload.
ExecutionT1106 – Execution Through APILo script usa API .NET (es. Assembly.Load, Invoke) per eseguire payload in memoria.
Defense evasionT1027 – Obfuscated Files or InformationI payload sono codificati in Base64, criptati AES e compressi per bypassare rilevamenti statici.
Defense evasionT1140 – Deobfuscate/Decode Files or InformationLo script decodifica e decomprime i payload prima dell’esecuzione.
Defense evasionT1055.012 – Process Injection: .NET Assembly InjectionI payload vengono caricati in memoria.
Defense evasionT1036 – MasqueradingIl contenuto maligno è nascosto nel file batch.
PersistenceT1053 – Scheduled Task/JobPersistenza stabilita tramite startup menu.
Initial accessT1204 – User ExecutionL’esecuzione dipende dall’utente che avvia manualmente il batch.
Command and controlT1132 – Data EncodingBase64 e crittografia usati per codificare comandi/payload.
Command and controlT1219 – Remote Access SoftwareXWorm fornisce accesso remoto e controllo sull’host infetto.
Credential accessT1056.001 – Input Capture: KeyloggingXWorm include keylogging per rubare input e credenziali.
ExfiltrationT1041 – Exfiltration Over C2 ChannelI dati rubati vengono esfiltrati attraverso il canale C2 usato da XWorm.