Nuova campagna ransomware Lockthesystem

23/03/2021

LockTheSystem ransomware

LockTheSystem è un ransomware veicolato molto recentemente in Italia (al momento è in corso una nuova campagna) tramite email scritte in lingua italiana. L’e-mail è stata individuata da D3lab che ne ha condiviso il sample con il CERT-AGID che lo ha analizzato.

Il file allegato all’email è di tipo .RAR all’interno del quale è presente un file JS al quale è delegato il compito di scaricare un eseguibile da un server remoto. In questa analisi tralasciamo il comportamento del JS che funziona da classico dropper per scaricare il ransomware.

LockTheSystem è il nome che il CERT-AGID ha al momento attribuito al malware presente nel sample, in quanto non vi è ancora evidenza esatta della famiglia di appartenenza, anche se alcune tracce riportano parzialmente ad una possibile variante del ransomware PROM o di Thanos.

Analisi di Lockthesystem

Il sample si presenta come un PE scritto in .NET con funzionalità di ransomware. Una volta lanciato, il lavoro di inizializzazione è basato sulla decodifica di una lunga lista stringhe che vengono caricate in memoria. In seguito, descriviamo nel dettaglio le fasi del processo di inizializzazione svolte dal malware:

Processo di inizializzazione

verifica la presenza di specifici processi in esecuzione

lsass.exe
svchst.exe
crcss.exe
chrome32.exe
firefox.exe
calc.exe
mysqld.exe
dllhst.exe
opera32.exe
memop.exe
spoolcv.exe
ctfmom.exe
SkypeApp.ex

esegue comandi per lanciare servizi (tramite net.exe)

start Dnscache /y
start FDResPub /y
start SSDPSRV /y
start upnphost /y

esegue comandi per fermare servizi (tramite net.exe)

stop avpsus /y
stop McAfeeDLPAgentService /y
stop mfewc /y
stop BMR Boot Service /y
stop BackupExecVSSProvider /y
stop BackupExecAgentAccelerator /y
stop BackupExecAgentBrowser /y
stop BackupExecDiveciMediaService /y
stop BackupExecJobEngine /y
stop BackupExecManagementService /y
stop BackupExecRPCService /y
stop AcrSch2Svc /y
stop AcronisAgent /y
stop CASAD2DWebSvc /y
stop CAARCUpdateSvc /y
stop sophos /y
…..

esegue comandi per disabilitare o ripristinare servizi alla configurazione di default (tramite sc.exe)

config Dnscache start= auto
config FDResPub start= auto
config SSDPSRV start= auto
config upnphost start= auto
config SQLTELEMETRY start= disabled
config SQLTELEMETRY$ECWDB2 start= disabled
config SQLWriter start= disabled
config SstpSvc start= disabled

esegue comandi per terminare i processi (tramite taskkill.exe)

/IM mydesktopqos.exe /F
/IM visio.exe /F
/IM mydesktopservice.exe /F
/IM winword.exe /F
/IM mysqld-nt.exe /F
/IM wordpad.exe /F
/IM mysqld-opt.exe /F
/IM ocautoupds.exe /F
/IM ocssd.exe /F
/IM oracle.exe /F
/IM sqlagent.exe /F
/IM sqlbrowser.exe /F
/IM sqlservr.exe /F
/IM synctime.exe /F
……

compila una lista delle estensioni di file di immagine disco o di backup

/s /f /q c:*.VHD c:*.bac c:*.bak c:*.wbcat c:*.bkf c:\Backup. c:\backup. c:*.set c:*.win c:*.dsk
/s /f /q d:*.VHD d:*.bac d:*.bak d:*.wbcat d:*.bkf d:\Backup. d:\backup. d:*.set d:*.win d:*.dsk
/s /f /q e:*.VHD e:*.bac e:*.bak e:*.wbcat e:*.bkf e:\Backup. e:\backup. e:*.set e:*.win e:*.dsk
/s /f /q f:*.VHD f:*.bac f:*.bak f:*.wbcat f:*.bkf f:\Backup. f:\backup. f:*.set f:*.win f:*.dsk
/s /f /q g:*.VHD g:*.bac g:*.bak g:*.wbcat g:*.bkf g:\Backup. g:\backup. g:*.set g:*.win g:*.dsk
/s /f /q h:*.VHD h:*.bac h:*.bak h:*.wbcat h:*.bkf h:\Backup. h:\backup. h:*.set h:*.win h:*.dsk

esegue una istruzione powershell per la rimozione delle copie shadow (tramite powershell.exe)

Get-WmiObject Win32_Shadowcopy | ForEach-Object { $_Delete(); }

L’elenco è piuttosto lungo e comunque la lista completa delle stringhe prodotte è riportata qui.

Molte delle tecniche rilevate sono già state riscontrate in altri ransomware come ad esempio Sodinokibi e Nemty. È inoltre interessante notare l’uso di tecniche di offuscamento come la chiamata Array.Reverse() utilizzata per riportare nella forma corretta stringhe base64 memorizzate in modo inverso (es. =QXZpVXcvACbsF2LgM3dvRWYoNFIlRXZsVGR)

public static string bnFgySFPvGNkn(string string_0)
        {
            char[] array = string_0.ToCharArray();
            Array.Reverse(array);
            return new string(array);
        }

esegue comandi per garantire i permessi (tramite icalcs.exe)

\”C:*\” /grant Everyone:F /T /C /Q
\“D:*\” /grant Everyone:F /T /C /Q
\”Z:*\” /grant Everyone:F /T /C /Q

Esecuzione

Terminata la definizione delle stringhe, alcune delle quali vengono opportunamente concatenate, viene verificato se una istanza con lo stesso nome è già in esecuzione e, in tal caso, esce via Process.GetCurrentProcess().Kill().

Prosegue quindi creando un nuovo thread in background e creando una copia di se stesso in “\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\“.

Inizia quindi a censire i file presenti sul disco confrontando il nome file con una nuova lista di stringhe che decodifica nuovamente in memoria.

Questa procedura viene eseguita per esser certi di cifrare i file corretti e per evitare di completare le azioni malevole se si accorge di essere eseguito in modalità di debug.

Per ottenere tutte le stringhe decodificate in fase di esecuzione è sufficiente impostare un breackpoint sulla funzione che ha il compito di effettuare la decodifica. Per comodità, è possibile consultare qui la lista completa.

Antidebug

Prima di procedere con la cifratura, il malware verifica se tra i processi in esecuzione figurano il nome di alcuni strumenti di debug noti per analizzare malware (ollydbg, dnspy, de4dot, ilspy, dotpeek, etc.).

Inoltre, verifica anche la presenza di strumenti di network sniffing (NetworkMiner, NetworkTrafficView, HTTPNetworkSniffer, etc.).

Cifratura

Le estensioni riservate per la cifratura sono esattamente 100. Una volta ultimate i suoi verifiche iniziali, viene controllato che l’estensione di ciascun file sul disco e sulle unità accessibili, collegate al sistema sotto attacco, rientri tra quelli censiti nell’array delle 100 stringhe; in tal caso il file verrà aggiunto alla lista dei file che saranno oggetto della cifratura.

L’algoritmo utilizzato per la cifratura è AES-256-CBC. L’oggetto rfcKey è generato con una password di lunghezza 32 caratteri calcolata randomicamente nella fase iniziale e come salt utilizza un array di lunghezza 8, successivamente utilizzato per impostare le proprietà aes.Key e aes.IV

Di seguito la funzione utilizzata per cifrare i file:

Completata la cifratura, ogni file avrà estensione .y9sx7x e verrà mostrata sul desktop la nota di riscatto che in questo caso prevede di contattare l’autore tramite Telegram all’account @Lockthesystem

Indicatori di compromissione

Il CERT-AGID ha già condiviso gli IoC attraverso la sue piattaforme per favorirne la loro diffusione.

Al fine di rendere pubblici i dettagli di questa campagna si riportano di seguito gli indicatori rilevati:

Link: Download IoC