Nuova campagna ransomware Lockthesystem
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