Elementi importanti dell’analisi:
- Distribuzione del codice sorgente di malware Stealers e RATs via forums Darknet
- Presenza di tasks di persistenza
- Moduli di data logging e data stealing
- Tentativi di .NET obfuscation
- Cryptowallets stealing
- Connessioni C&C
- Sottrazione delle credenziali Wi-Fi
- Threats vendibili sul mercato nero e personalizzabili da qualunque threat actor
- Falsi Proof of Concept Exploits che distribuiscono minacce VenomRAT
- Attributi dell’infection kill chain hardcoded nel codice sorgente
- Anti-Analysis, Anti-VM, Anti-Sandboxing ed evasion
- Remote access management con i protocolli RDP e VNC
- Mutexes hardcoded nel codice sorgente
Introduzione
Nella presente analisi è stato preso in considerazione un sample VenomRAT ottenuto da un forum Darknet che permette il download del codice sorgente e dei samples compilati solo nel caso in cui vi è una reaction del post da parte di un utente.
VenomRAT (aggiornato alla versione 6.0.3) è stato notato in wild per la prima volta nel Giugno 2020, viene distribuito maggiormente tramite mails di Phishing e malspam mediante allegati macro offuscati che effettuando files dropping, possiede encryption e ransomware feature ed è stato sviluppato in .NET. Anche in questo caso vi sono sottrazioni di credenziali, cryptowallets, remote management malevolo e sembra far riferimento al deployment di Qasar RAT threats. [0]
Di recente sono stati individuati falsi Proof of Concept di exploits su GitHub che distribuiscono scripts malevoli di distribuzione ed infection deployment di samples VenomRAT in maniera schedulata. [1]
Analisi VenomRAT
Il sample Venom RAT sottoposto ad analisi è contenuto in un archivio, l’eseguibile estratto dal medesimo è 3b3a304c6fc7a3a1d9390d7cbff56634.
A seguire alcuni parametri esadecimali estraibili dalle stringhe dell’artefatto:
Qui i dettagli di alcune funzioni di encryption e compression CryptoStreamMode, CompressionMode e CipherMode:
Vi sono riferimenti a socket types, FileShares, LogonFailures e Server_Certificate ai fini dei tasks di discovery e malicious connections:
A seguire alcuni dettagli inerenti NetworkCredentials, il namespace System.Security.Principal che può definire in modo granulare le utenze e i permessi.
Qui un dettaglio relativo ad IsAdmin per il controllo se un’utenza è amministrativa o meno e Paste_bin per le consequenziali connessioni C&C.
Qui un’evidenza di host information gathering, che includono i dettagli del filesystem e del disco.
A seguire alcuni riferimenti di encryption con oggetti di tipo MD5CryptoServiceProvider, RSACryptoServiceProvider ed AesCryptoServiceProvider ma anche al metodo GetEncoder.
I metodi InitializeClient, get_SslClient, set_SslClient, get_TcpClient, set_TcpClient e AuthenticateAsClient vengono utilizzati per connessioni C&C.
Contestualmente agli assembly details vi sono stringhe codificate ed offuscate:
La sezione .text non risulta essere in “packed” status dipendentemente anche dal coefficiente d’entropia:
Con una disamina del codice esadecimale dell’artefatto è possibile notare queries SQL di system information gathering, creazione di scheduled tasks, management di chiave di registro di OS Autostart per la persistenza di uno script .BAT per il killing di processi di monitoring, come ad esempio Taskmgr, Process Hacker e Process Explorer. Vi sono anche riferimenti al bypassing del processo di Windows Defender MpCmdRun.
Qui un dettaglio dell’attributo Master Key di encryption:
All’interno della classe CGRInfo vi sono metodi di ottenimento delle informazioni relative alla CPU, RAM e GPU mediante queries WMI con oggetti ManagementObjectSearcher:
All’interno della classe main Program possiamo notare che, contestualmente allo startup del threat vi sono esecuzioni di registry setting ed AntiAnalysis routines:
Successivamente vi sono controlli per verificare se l’utenza possiede permessi amministrativi ed in caso positivo reinizializza le settings per l’infezione. Vi è poi un ciclo while true al fine di verificare continuamente se il client con la Socket è connesso, in caso negativo viene stoppato il servizio VNC e viene riconnesso il client mediante Socket, successivamente vi è un Thread.Sleep di 3 secondi.
Il metodo statico void StopHVNC termina tutti i processi che hanno come nome “cvtres” (Microsoft Resource File To COFF Object Conversion Utility):
Il metodo booleano statico InitializeSettings() permette di inizializzare e gestire gli attributi di encryption AES, malicious connections, AntiAnalysis ed hardware information.
All’interno della classe Aes256 possiamo notare la presenza dell’array di bytes statico e privato Salt per la crittografia e decrittografia dei dati presi in input.
All’interno della classe ClientSocket, nel caso in cui l’attributo Paste_bin sia uguale a null viene generato in modo randomico il dominio mediante la variabile di tipo string text, dopodichè viene effettuata la connessione TCP.
A seconda delle opzioni ed attributi passati come argomenti in input viene cambiato il message pack inviato tramite Socket:
Il pacchetto inviato viene estratto contestualmente all’invio del medesimo, nel caso in cui la variabile denominata asString sia uguale a hvnc viene stoppato il modulo HVNC e viene eseguita una connessione verso la porta (dopo un cast as Integer) HPort.
Il modulo di Anti_Analysis controlla la tipologia di sistema operativo della macchina in questione al fine di verificare se essa è un server oppure una macchina virtuale.
Successivamente vengono ottenuti i dettagli della cache interna ed esterna mediante la query WMI Select * from Win32_CacheMemory:
Vengono controllati alcuni processi specifici di monitoring e di Windows Defender, questi vengono immediatamente terminati al fine di bypassare la fase di analisi dinamica e protection:
La classe Camera ottiene i dettagli dei dispositivi WebCam tramite i GUID delle interfacce, la classe HwidGen viene adoperata per ottenere gli ID dell’hardware della macchina infetta:
Qui i dettagli della classe IdSender che contiene il metodo statico di tipo byte[], esso ritorna la variabile msgPack codificata che contiene i dettagli raccolti durante la fase di information stealing dell’host compromesso.
La classe MutexControl permette di gestire mutexes per la corretta concorrenzialità in esecuzione:
La classe ProcessCritical verifica se è avvenuto un evento BSOD oppure l’utenza è amministrativa, in caso positivo il processo chiama il metodo Exit(), il quale setta il processo come critico ed in caso di eccezione vi è un Thread.Sleep di 100 secondi infinito, vi è un handler della session ending, il processo entra in debug mode e viene impostato come processo critico. Ciò viene effettuato al fine di evitare analisi dinamica del malware.
Viene salvato nella chiave di registro Software\\ l’ID hardware della macchina, la classe NormalStartup provvede a creare uno scheduled task in merito:
Qui invece la gestione della chiave di registro di startup SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\:
Attraverso un costrutto using di una variabile di tipo StreamWriter viene creato uno script batch al fine di effettuare un’esecuzione esterna, change directory e delete forzato rispettivamente delle variabili fileInfo.FullName, Path.GetTempPath() e Path.GetFileName(text).
Il Portable Executable crack.exe è stato sviluppato in .NET e provvede ad effettuare l’handling di eventi di clipboard management e file information gathering.
A seguire le evidenze di diverse stringhe estraibili dall’eseguibile relative alle caratteristiche sopra citate:
La sezione .text possiede come coefficiente d’entropia 5.18915, pertanto non è in uno status di “packed”.
Da un’estrazione del codice esadecimale possiamo notare un’evidenza di un Bitcoin address ed il modulo Clipper:
La configurazione del Clipper include alcuni attributi: autorun_enabled (variabile booleana che indica se va effettuato il task di persistenza o meno), il nome del task di autorun, se deve essere “hidden” (nascosto), se deve essere un task di sistema, il check del ritardo d’esecuzione ed infine un dizionario contenente diversi indirizzi di cryptovalute, quali ad esempio Bitcoin, Ethereum, XMR. Tale dizionario è seguito poi da un mutex utilizzato per concorrenzialità.
La classe Program effettua un controllo inerente al mutex creato ma anche in merito all’Autorun setting, hidden e system attributes ed infine inizializza il metodo di clipboard logging ClipboardMonitor.run().
La classe Clipboard ottiene il testo ed il contenuto della clipboard attraverso l’utilizzo di threads:
La classe RegexPatterns effettua un task di parsing al fine di individuare le varie tipologie di cryptovalute.
La classe Chrome avvia processi di Chrome (nel caso in cui non sia già aperta un’istanza) e provvede a monitorare i dati contenuti in LocalAppData e User Data.
A seguire i dettagli delle classi Outils e MutexControl che provvedono rispettivamente ad effettuare il monitoring di keystrokes e creazione di oggetti mutex.
L’array di Keys composto da 17 celle permette di individuare ed enumerare i pulsanti digitati:
Al fine di gestire il keyboard hooks monitoring vengono utilizzati costrutti di DllImport per richiamare le funzioni SetWindowsHookEx, CallNextHookEx e GetKeyboardState:
La classe KeylogParams contiene al suo interno attributi ed opzioni di salvataggio di files di logging, nome del mutex e il metodo void di caricamento del file di configurazione LoadFromFile():
A seguire i dettagli dei files di logging (online ed offline) ed il file di configurazione:
La classe HandleNetstat contiene il metodo void NetstatList che ritorna una lista di processi con i relativi PID e le porte utilizzate contestualmente alle connessioni TCP stabilite, vi è contezza dell’array allTcpConnections. Il metodo void Kill, invece, provvede a terminare un processo avente un PID specifico preso come argomento in input:
La classe TcpConnectionTableHelper permette di ottenere i dettagli delle connessioni TCP, come ad esempio gli indirizzi IP associati, effettuare un’enumerazione delle connessioni TCP stabilite, il metodo booleano verifica se il server di Venom RAT è valido o meno. Esso prende come argomento in input un oggetto X509Certificate.
A seguire l’inizializzazione del client e delle connessioni TCP tramite socket per iniziare la fase di Remote Management malevolo.
Il metodo statico void ReadServertData prende come input un argomento di tipo IAsyncResult, vengono ottenuti i bytes letti tramite pacchetti di rete e SSL clients.
Il metodo statico void Send ha un coefficiente d’arietà pari a 1, ovvero un array di bytes denominato msg, viene lockata la risorsa SendSync, l’oggetto TcpClient effettua un poll della sezione di dati interessata, effettua tasks di write con offsets pari a bytes.Length.
Il metodo statico void CheckServer possiede come argomento in input un oggetto di tipo object denominato obj, viene effettuato un ping dell’oggetto “Pac_ket”.
Il modulo Packet effettua la lettura e la decodifica da bytes dell’oggetto Pac_ket, nel momento in cui viene letta la stringa regManager viene inizializzato un nuovo oggetto RegManager che prende come argomento in input la variabile msgPack.
La classe Plugin possiede il metodo void Run, il quale prende come argomento in input alcuni oggetti, tra cui l’oggetto Socket, il certificato X509Certificate2, l’hardware ID, l’array di bytes msgPack. Successivamente viene inizializzata la connessione verso il server di Venom RAT ed inizializzato il thread associato. Vi è poi un ciclo while che, fino a quando il client risulta essere connesso, effettua un Thread.Sleep di 1 secondo.
La classe RegistryEditor contiene diversi metodi statici e booleani (i quali danno come risultato true nel caso in cui non vi siano errori) e che permettono di creare nuove chiavi di registro (utilizzabili in fase di persistence), eliminare chiavi di registro, rinominarle.
La classe RegistrySeeker permette invece di effettuare ricerche all’interno del registro di sistema partendo da una root key. Il metodo void privato ProcessKey ha un’arietà pari a 2 ed effettua un’enumerazione mediante un ciclo foreach per le chiavi di registro prese in considerazione.
Il modulo RemoteCamera possiede una classe Packet che permette di codificare in immagini i dati e le informazioni ottenute da dispositivi di webcamera enumerate ed identificate.
Il modulo RemoteDesktop contiene il metodo void Run sopra menzionato.
La classe ReverseProxy permette di effettuare tasks di serializzazione e deserializzazione dei messaggi in formato JSON.
All’interno della classe ReverseProxyClient, all’interno del costruttore, prende come argomento in input una variabile di tipo ReverseProxyConnect al fine di ottenere gli attributi di connessione necessari.
Nel caso in cui la connessione sia stata stabilita (e controllata con la variabile Handle) vengono utilizzati il buffer e gli attributi di sockets connections al fine di ricevere i dati di comunicazione. Nel caso in cui vi è un errore d’eccezione viene eseguita un’istanza Connection.Send all’interno del costrutto catch con il fine di inviare attributi di connection down ed IsConnected uguale a false.
Il metodo void RemoveProxyClient possiede come arietà 1 e il parametro preso in input corrisponde all’ID della connessione da rimuovere, difatti viene eseguito il metodo _proxyClients.RemoveAt(i).
La classe HandleSendTo contiene metodi utilizzabili per inviare files contenuti nell’oggetto unpack_msgpack passato come argomento in input (in forma decompressa). Per tale scopo viene inizializzato un nuovo processo con argomenti in input comandi PowerShell con bypass execution policies con finestra nascosta con il fine di eseguire il file utilizzato come attributo e specificato sopra. Nel caso in cui la child malicious execution vada a buon fine viene eseguito un log di tale esecuzione nel path Temp\\.
Il metodo void pubblico FakeBinder ottiene come argomento in input il MsgPack compresso, quest’ultimo viene decompresso e, nel caso in cui la Current Directory non contenga AppData o altri paths temporanei viene effettuata un’esecuzione di Path.Combine per un path temporaneo e la generazione di una stringa randomica concatenata e generata mediante il metodo Methods.GetRandomString(6).
Viene eseguito un filtro per l’estensione PowerShell .ps1:
La classe SendToMemory permette di scrivere in memoria il dump di un processo eseguito mediante due parametri presi in input: path e l’array di bytes data. Per raggiungere tale scopo VenomRAT esegue le funzioni CreateProcessA, Wow64GetThreadContext, GetThreadContext (al fine di ottenere i dettagli dei contesti di esecuzioni di threads a 32 e 64 bit), nonché la funzione ReadProcessMemory, la quale effettua un return booleano al fine di controllare se la lettura del dump sia andata a buon fine o meno. In caso negativo viene lanciata un’eccezione con la chiamata a funzione throw new Exception();
Il metodo ToMemory, presente all’interno della classe HandleSendTo, effettua un’injection mediante Framework e Framework64 di un file eseguito mediante thread, mentre l’oggetto Assembly assembly carica il buffer (array di bytes) decompresso.
Cuore della minaccia VenomRAT è sicuramente la presenza di metodi e dizionari di information stealing e gathering utilizzando regex e dizionari per ottenere, ad esempio, informazioni di carte di credito e carte bancarie.
La classe Banking appende valori estensioni .org a domini .com nel caso in cui il dominio preso in considerazione sia diverso da alcune entries specifiche, come ad esempio Google, Bing e Yandex.
I seguenti metodi statici void permettono di ottenere i dettegli di cryptocurrencies, servizi bancari di homebanking ed eventuali servizi che contengono contenuti per adulti:
A seconda del numero identificativo del tipo di carta, i quali sono contenuti nella lista KeyValuePair string e Regex CreditCardTypes. Nel caso in cui vi sia un match tra creditCardType.Value e la variabile number presa come argomento in input viene ritornata la variabile creditCardType.Key.
La classe Config contiene al suo interno i necessari parametri ed attributi di configurazione in forma statica per la gestione di AntiAnalysis, logging, stealing, Discord URL, Usernames, dizionari di attributi string specifici per identificare banking services e porn services.
Qui un dettaglio di un hook Discord incluso hardcoded all’interno della variabile Webhook:
La classe DiscordWebHook permette di gestire le connessioni e sessioni specifiche verso Discord, tra cui ad esempio la location dell’ultimo message ID (variabile msgid.dat) e la cronologia salvata nel file history.dat.
Il metodo statico string SendMessage prende come argomento in input la variabile text che permette la creazione di un WebClient per la compilazione della lista nameValueCollection e l’invio degli attributi Username, Avatar_URL e content.
A seguire la chiamata al metodo File.ReadAllLines per la lettura di riga per riga del file di keylogging history KeyLogsHistory, successivamente viene impostato il Latest Message ID.
Il metodo statico void Replace all’interno della classe Buffer provvede ad impostare il contenuto della clipboard con il valore Config.ClipperAddresses[key] nel caso in cui l’attributo Key dei patterns passati come argomento in input siano presenti all’interno del contenuto della Clipboard.
Successivamente viene gestito il logging ed il salvataggio del contenuto della Clipboard nel file clipboard_logs.txt:
Il dizionario associato ai regex patterns vengono decriptati i vari attributi degli arrays di bytes raw di dimensioni di 48 o 32 celle.
Qui i dettagli delle strutture di browsers loggers AutoFill e Bookmark:
La classe ClipboardManager utilizza threads e mutexes con il fine di gestire il contenuto della clipboard monitorata:
La classe Counter contiene i default values degli attributi utilizzati, sia interi che booleani:
La struttura CreditCard contiene i dettagli di Get e Set degli attributi relativi Number, ExpYear, ExpMonth e Name.
VenomRAT ha a disposizione diversi metodi di files e folders management, quali ad esempio RecursiveDelete (per l’eliminazione ricorsiva partendo da un path), copiare directories specifiche, ottenere le proprietà di dimensioni di una directory e la creazione di un archivio con password:
La password dell’archivio sopra citato viene generata in maniera randomica con il metodo GenerateRandomData():
La classe sealed Paths contiene i riferimenti a diversi paths speciali presi in considerazione durante la fase di infection, stealing e remote access, quali ad esempio Chromium Paths, Edge Paths, AppData.
La classe Report provvede (previo inserimento di un percorso di salvataggio dei dati ottenuti sSavePath) degli attributi ottenuti dai vari tools e folders prese in considerazione mediante l’utilizzo ed esecuzione di threads. Possiamo notare il grabbing di dettagli relativi a Discord, Pidgin, Outlook, Telegram, Skype, Minecraft, CryptoWallets, FileZilla, ProtonVPN, OpenVPN e NordVPN:
Qui un salvataggio del product key di sistema:
VenomRAT utilizza moduli SQLite al fine di effettuare values gathering, all’interno del costruttore della classe viene preso in considerazione il file poi letto su tutti i bytes, nello specifico l’attributo filename.
A seguire i dettagli della classe AntiAnalysis che rileva i moduli di Sandboxie, Avast e COMODO per il bypass delle protection solutions:
La classe SelfDestruct permette di eseguire uno script batch che richiama il comando chcp 65001 per settare come page code la codifica UTF-8, termina forzatamente i processi con ID specifici tramite il comando taskkill /F /IM ed imposta un timeout.
Il threat esegue un delay per un numero randomico di millisecondi che va dall’intervallo tra 0 e 10000 millisecondi:
Qui i dettagli della classe di Startup OS setting per il task di persistenza (anche in folders di chiavi di registro), files hiding e controllo nel caso in cui un file è installato nella chiave di OS startup.
Qui i dettagli della classe StringsCrypt che contiene metodi di generazione randomica e decryption RijndaelManaged.
Qui i dettagli di gathering delle credenziali di servers FTP con FileZilla:
La classe Passwords provvede ad eliminare vecchie passwords tramite la chiamata al metodo Filemanager.RecursiveDelete(PasswordsStoreDirectory):
A seguire i dettagli di enumerazioni con cicli foreach per il gathering dei wallets di cryptocurrencies, come ad esempio Litecoin, Dash e Bitcoin.
Qui i dettagli della classe CBrowserUtils per la gestione e formattazione dei dettagli ottenuti da istanze dei browser, come ad esempio credit cards, cookies, autofills data, segnalibri e passwords.
Il metodo statico booleano WritePasswords prende come argomenti in input la lista di oggetti Password pPasswords e sFile per salvare su file le passwords ottenute nel caso in cui le credenziali siano diverse da valori stringa vuoti.
Le passwords ottenute da motori di browsing Chromium vengono decriptate e codificate in UTF-8:
La classe CbCrypt contiene oggetti di encryption BCrypt, come ad esempio BCRYPT_KEY_DATA_BLOB_MAGIC da importare nei contexts di encryption, e diverse funzioni importate dalla libreria esterna bcrypt.dll
VenomRAT ottiene i dettagli dei wallets e delle estensioni di Chrome legate a cryptocurrencies:
Tramite un’istanza del modulo SqLite viene ottenuta la cronologia dei browsers ed aggiunto ogni sito all’interno della list.
La classe Recovery contiene al suo interno il metodo void statico Run che ha come parametro sSavePath che permette di salvare diverse informazioni e dettagli sottratti alle vittime, tra cui Web Data, dati di login, cronologia, AutoFills, Cookies, carte di credito:
A seguire la metodologia di parsing di VenomRAT, la quale effettua tasks di Split mediante oggetti Regex per dividere i dati presi in input (variabile string data) con caratteri “/”.
Il RAT contiene numerosi riferimenti hardcoded ad URLs ed extension IDs di estensioni di cryptowallets di Edge salvate in una lista di string:
Vengono gestiti files di login keys .db e .json e vengono copiati e salvati nella folder sSavePath:
La seguente classe permette die enumerare e salvare le versioni e mods installate di Minecraft in AppData concatenato con il folder pattern .minecraft.
Vengono anche salvati altri files del profilo, opzioni e servers:
Vengono inoltre salvati i dettagli di sessioni correnti di Steam e vengono loggate le medesime:
Il medesimo task avviene anche per UPlay:
Al fine di ottenere i tokens di Discord viene eseguito un metodo AppendAllText nel path concatenato sSavePath + \\tokens.txt:
A seguire il metodo di tipo string statico DecodeProductKey che prende come argomento in input l’array di bytes digitalProductId per la decodifica del product key di sistema, nel caso in cui durante il ciclo da 28 a 0 degli ID se la cella num (l’indice corrente nel ciclo) + 1 dà come risultato 0 con una divisione per 6 viene aggiunto un trattino alla cella corrispondente, successivamente da 14 a 0 vengono eseguiti tasks di bit shifting, divisione con resto per 24:
A seguire la classe SysInfo di information gathering, i dettagli della macchina infetta, come ad esempio l’indirizzo IP pubblico, sono stati salvati nella stringa contents:
Vengono ottenuti i dettagli dell’antivirus installato:
La classe WebcamScreenshot permette di eseguire una query WMI per ottenere i dettagli delle webcams connesse e vengono eseguiti screenshots nel caso in cui l’attributo di configurazione Config.WebcamScreenshot sia diverso da 1:
VenomRAT esegue un comando con codifica forzata UTF-8 netsh wlan show profile name al fine di effettuare una lista delle reti Wi-Fi a cui ci si può connettere e successivamente esegue un dump della password:
Vengono dumpate numerose passwords Wi-Fi e vengono appesi gli attributi sottratti nel file sSavePath + SavedNetworks.txt
Il metodo void statico Save all’interno della classe NordVpn viene utilizzato al fine di ottenere le directories dell’eseguibile NordVpn.exe, vengono ottenuti i dettagli del file di configurazione user.config e vengono ottenuti i dettagli dei dati di configurazione XML:
Visionando la main class del namespace Shellcode è possibile evidenziare l’inizializzazione dell’array di bytes buf ottenuto dall’attributo string “%venom%” con codifica di tipo Base64. La classe interna statica NativeCaller fa uso della funzione di memory management VirtualAlloc e CodeCallerDelegate per la fase di calling native.
All’interno delle stringhe estraibili dal sample di VenomRAT possiamo notare un’URL individualizzante.
I servers di VenomRAT fanno uso di certificati di tipo Personal Information Exchange.
VenomRAT threat research
A seguire i dettagli della correlazione tra VenomRAT ed un indirizzo IP utilizzato nella killchain infection e registrato in Finlandia:
L’indirizzo IP in questione è stato registrato, nel dettaglio, ad Helsinki e possiede i servizi in running MySQL, webserver e RDP con le porte aperte 135, 3306, 5357, 5985 e 47001.
Qui i dettagli OSINT dell’indirizzo IP per quanto riguarda lo Spam Level, il quale si attesta a “Very High”:
IOCs VenomRAT:
- 3b3a304c6fc7a3a1d9390d7cbff56634
- e8bd5244e6362968f5017680da33f1e90ae63dd7
- 7331368c01b2a16bda0f013f376a039e6aeb4cb2dd8b0c2afc7ca208fb544c58
- 95.216.52[.]21
- DcRatByqwqdanchun
- Pac_ket
- 42KwLVv18KiFRZNHzu
- Sdh34yszdfgb
VenomRAT regola YARA
VenomRATRule:
rule VenomRATRule
{
strings:
$xwormStr = “44X9i4c6YhQcfLiSCrbNH25yrRfkrhrz”
$xwormStr1= “blackhatrussia”
condition:
$xwormStr or $xwormStr1
}
CONCLUSIONI:
Il threat preso in considerazione nella presente Darknet investigation è stato distribuito tramite Darkweb nel momento in cui viene effettuata una reaction del post principale da parte dell’utente collegato. VenomRAT è personalizzabile e può permettere l’aggiunta di nuove features e malicious tasks di remote access e stealing. In un’ottica di future threat landscape è possibile che il malware sottoposto a disamina effettui anche distribuzioni di ulteriori minacce, come ad esempio ransomware avanzati e complessi con furto di dati e, qualora il riscatto non dovesse essere pagato, si procederà con una pubblicazione di questi ultimi. È importante sottolineare come sia facile e versatile la distribuzione dell’intero progetto di malware development ed il corrispondente codice sorgente. Ovviamente questa è solo la punta di un enorme iceberg che nasconde una quantità immensa di forums Darkweb che distribuiscono interi progetti dell’IDE dello sviluppo di varie tipologie di threats. Questo può comportare la possibilità di forking e personalizzazione che potenzialmente avrebbero infinite possibilità di sviluppo. Consequenzialmente tale metodologia di malware deployment può comportare il propagarsi di numerose varianti e ciò può intaccare negativamente i motori di malware signatures statici e basati su firme antivirali, in quanto esse presenterebbero differenze nei patterns e nel codice esadecimale, rendendo pertanto vane alcune firme e regole YARA di malware hunting create precedentemente. Nel caso specifico si è notato inoltre un tentativo di offuscare il codice .NET al fine di proteggere le classi “core” del progetto, ma lasciando quasi completamente intelligibili le librerie DLL dei plugin. Questo è stato fatto probabilmente con lo scopo di rendere più personalizzabili le librerie esterne richiamate ma mantenendo il più possibile protette le classi Main rendendo più difficoltosa la creazione di firme antivirali individualizzanti attraverso patterns specifici. È altresì importante sottolineare il fatto che vi siano numerosi tentativi di persistenza, anti-analysis, anti-sandboxing ed usando tecniche di evasione da security solutions e da tools di monitoraggio dei processi in sede di analisi dinamica, come ad esempio Process Explorer, Process Hacker e Task Manager. Oltre allo scopo di anti – dynamic analysis, tale approccio può comportare un’impossibilità di visualizzare l’eventuale terminazione del processo del RAT a causa dei tasks Anti-VM ed Anti-Analysis, Anti-Sandboxing.
Con tutta probabilità la distribuzione tramite Darknet di stealers e RAT sarà sempre più frequente. Seguendo la metodologia riscontrata in tale casistica specifica, i forums sopra citati verranno impiegati per la vendita sul mercato nero di tali pacchetti di software malevolo, permettendo a svariati threat actors di modificare gli indirizzi Bitcoin od eventuali mails di contatto dopo la cifratura di files, al fine di estorcere denaro alle vittime. Nel caso in esame è stato molto interessante la presenza di un modulo Ransomware all’interno di threats RAT rendendo de facto l’infection kill chain sempre più completa ed invasiva da un’ottica dell’attaccante.
Riferimenti:
[0] (introduzione di VenomRAT): VenomRAT: A remote access tool with dangerous consequences (acronis.com)