IsaacWiper și HermeticWizard: noi programe malware de tip wiper și vierme care vizează Ucraina


Cercetătorii ESET descoperă un nou program malware de tip wiper care atacă organizațiile ucrainene și o componentă software de tip vierme informatic care răspândește HermeticWiper în rândul rețelelor locale.

Pe măsură ce ostilitățile recente continuă să se manifeste între Rusia și Ucraina, cercetătorii ESET au descoperit mai multe familii de malware care vizează organizațiile ucrainene.

  • Pe 23 februarie 2022, o campanie distructivă ce folosește HermeticWiper a vizat mai multe organizații ucrainene.
  • Acest atac cibernetic a precedat, cu câteva ore, începerea invaziei Ucrainei de către forțele Federației Ruse.
  • Vectorii de acces inițial au variat de la o organizație la alta. Am confirmat un caz în care wiper-ul a fost aplicat via GPO și am descoperit un vierme folosit pentru a răspândi acest wiper într-o altă rețea compromisă.
  • Artefactele malware sugerează că atacurile au fost planificate în urmă cu câteva luni.
  • Pe 24 februarie 2022, a început un al doilea atac distructiv împotriva unei rețele guvernamentale ucrainene, folosind un program wiper pe care l-am numit IsaacWiper.
  • Centrele ESET Research nu au reușit încă să atribuie aceste atacuri unui actor malware identificat.

 

Atacurile distructive din Ucraina

După cum se menționează în acest tweet al ESETResearch și în articolul nostru de pe blog, a fost descoperit un atac distructiv împotriva computerelor din Ucraina, care a început în jurul orei 14:52 UTC, pe 23 februarie 2022. Aceasta a urmat atacurilor de tip Distributed Denial-of-Service (DDoS) împotriva site-urilor web ucrainene importante și a precedat cu câteva ore invazia militară rusă.

Aceste atacuri distructive au folosit cel puțin trei componente:

  • HermeticWiper: face un sistem inoperabil prin coruperea datelor sale
  • HermeticWizard: răspândește HermeticWiper într-o rețea locală prin WMI și SMB
  • HermeticRansom: ransomware scris în Go

 

HermeticWiper a fost observat pe sute de sisteme din cel puțin cinci organizații ucrainene.

Pe 24 februarie 2022, am detectat încă un nou wiper într-o rețea guvernamentală ucraineană. L-am numit IsaacWiper și în prezent evaluăm legăturile sale, dacă există, cu HermeticWiper. Este important de menționat că a fost văzut într-o organizație care nu a fost afectată de HermeticWiper.

Atribuirea

În acest moment, nu am găsit nicio legătură tangibilă cu un infractor informatic cunoscut. HermeticWiper, HermeticWizard și HermeticRansom nu au nicio asemănare semnificativă de cod cu alte mostre din colecția de programe malware ESET. IsaacWiper este încă neatribuit.

Cronologie

HermeticWiper și HermeticWizard sunt semnate printr-un certificat de semnare a codului (prezentat în Figura 1) asociat cu Hermetica Digital Ltd pe 13 aprilie 2021. Am solicitat CA emitent (DigiCert) să revoce certificatul, ceea ce s-a și întâmplat în data de 24 februarie 2022.

Figura 1. Certificat de semnare a codului asociat cu Hermetica Digital Ltd 

Potrivit unui raport al Reuters, se pare că acest certificat nu a fost furat de la Hermetica Digital. Este posibil ca, în schimb, atacatorii să fi impersonat identitatea companiei cipriote pentru a obține acest certificat de la DigiCert.

Cercetătorii ESET afirmă cu mare încredere că organizațiile afectate au fost compromise cu mult înainte de implementarea acestor programe de tip wiper. Concluzia noastră se bazează pe mai multe aspecte:

  • Compilații de marcaje temporale HermeticWiper PE, cea mai veche fiind din 28 decembrie 2021
  • Data emiterii certificatului de semnare a codului este 13 aprilie 2021
  • Implementarea HermeticWiper prin GPO în cel puțin o instanță sugerează că atacatorii au avut acces anterior la unul dintre serverele Active Directory ale acelei victime.

 

Evenimentele sunt rezumate în cronologia din Figura 2.

Figura 2. Cronologia evenimentelor semnificative

Acces inițial

HermeticWiper

Vectorul de acces inițial este momentan necunoscut, dar am observat artefacte de mișcare laterală în interiorul organizațiilor vizate. Într-o instanță, codul malware specializat în ștergerea de date a fost implementat prin politica de domeniu implicită (GPO), așa cum se arată în calea sa din sistem:

C:\Windows\system32\GroupPolicy\DataStore\0\sysvol\<redacted>\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\cc.exe

Acest lucru indică faptul că atacatorii au preluat probabil controlul asupra serverului Active Directory.

În alte cazuri, este posibil ca Impacket să fi fost folosit pentru a implementa HermeticWiper. O postare de pe blogul Symantec afirmă că wiper-ul a fost implementat folosind următoarea linie de comandă:

cmd.exe /Q /c move CSIDL_SYSTEM_DRIVE\temp\sys.tmp1 CSIDL_WINDOWS\policydefinitions\postgresql.exe 1> \\127.0.0.1\ADMIN$\__1636727589.6007507 2>&1

Ultima parte coincide cu comportamentul implicit din codul wmiexec.py al lui Impacket, găsit pe GitHub.

În cele din urmă, un vierme personalizat pe care l-am numit HermeticWizard a fost folosit pentru a răspândi HermeticWiper în rețelele compromise prin SMB și WMI.

IsaacWiper

Vectorul de acces inițial este, de asemenea, necunoscut în prezent. Este posibil ca atacatorii să fi folosit instrumente precum Impacket pentru a se deplasa lateral. Pe câteva dispozitive am observat și RemCom, un instrument de acces la distanță, care a fost implementat în același timp cu IsaacWiper.

Analiză tehnică

HermeticWiper

HermeticWiper este un executabil Windows cu patru drivere încorporate în resursele sale. Sunt drivere legitime din software-ul EaseUS Partition Master semnate de CHENGDU YIWO Tech Development Co. și implementează operațiuni de disc la nivel scăzut.

Au fost observate următoarele fișiere:

  • 0E84AFF18D42FC691CB1104018F44403C325AD21: x64 driver
  • 379FF9236F0F72963920232F4A0782911A6BD7F7: x86 driver
  • 87BD9404A68035F8D70804A5159A37D1EB0A3568: x64 XP driver
  • B33DD3EE12F9E6C150C964EA21147BF6B7F7AFA9: x86 XP driver

 

În funcție de versiunea sistemului de operare, unul dintre aceste patru drivere este ales și plasat în C:\Windows\System32\drivers\<4 random letters>.sys. Acesta este apoi încărcat prin crearea unui serviciu.

HermeticWiper continuă apoi prin dezactivarea Volume Shadow Copy Service (VSS) și se șterge de pe disc prin suprascrierea propriului fișier cu biți aleatorii. Această măsură de precauție din partea atacatorilor este probabil menită să îngreuneze cercetarea codului wiper într-o analiză post-incident.

Este interesant de remarcat că majoritatea operațiunilor cu fișiere sunt efectuate la un nivel low level folosind call-uri DeviceIoControl.

Următoarele locații sunt suprascrise cu biți aleatorii generați de funcția Windows API CryptGenRandom:

  • Înregistrarea master boot (MBR)
  • Tabelul de fișiere master (MFT)
  • $Bitmap și $LogFile pe toate unitățile
  • Fișierele care conțin cheile de registry (NTUSER*)
  • C:\Windows\System32\winevt\Logs

 

În plus, sunt șterse recursiv folderele și fișierele din Windows, Program Files, Program Files(x86), PerfLogs, Boot, System Volume Information și folderele AppData, folosind o operație FSCTL_MOVE_FILE. Această tehnică pare a fi destul de neobișnuită și foarte asemănătoare cu ceea ce este implementat în proiectul Windows Wipe pe GitHub (vezi funcția wipe_extent_by_defrag). De asemenea, sunt șterse legăturile simbolice și fișierele mari din folderele My Documents și Desktop, suprascriindu-le cu biți aleatorii.

În cele din urmă, sistemul de lucru este restartat. Cu toate acestea, el nu va mai fi capabil să pornească, deoarece MBR, MFT și majoritatea fișierelor au fost șterse. Credem că nu este posibilă recuperarea dispozitivelor afectate în acest fel.

HermeticWizard

Căutând alte mostre semnate de același certificat de semnare a codului (Hermetica Digital Ltd), am găsit o nouă familie de malware pe care am numit-o HermeticWizard.

Este un vierme care a fost implementat pe un sistem din Ucraina la 14:52:49 UTC, pe 23 februarie 2022. Este un fișier DLL dezvoltat în C++ care exportă funcțiile DllInstall, DllRegisterServer și DllUnregisterServer. Numele său de export DLL este Wizard.dll. Conține trei resurse, care sunt fișiere PE criptate:

  • O mostră de HermeticWiper (912342F1C840A42F6B74132F8A7C4FFE7D40FB77)
  • exec_32.dll, responsabil pentru răspândirea către alte computere locale prin WMI (6B5958BFABFE7C731193ADB96880B225C8505B73)
  • romance.dll, responsabil pentru răspândirea către alte computere locale prin SMB (AC5B6F16FC5115F0E2327A589246BA00B41439C2)

 

Resursele sunt criptate cu o buclă inversă XOR (eXclusive OR). Fiecare bloc de patru biți este legat XOR cu blocul anterior. În cele din urmă, primului bloc  i se aplică XOR cu o valoare codificată, 0x4A29B1A3.

HermeticWizard este pornit folosind linia de comandă regsvr32.exe /s /i <path>.

Mai întâi, HermeticWizard încearcă să găsească alte dispozitive din rețeaua locală. Adună adrese IP locale cunoscute folosind următoarele funcții Windows:

  • DNSGetCacheDataTable
  • GetIpNetTable
  • WNetOpenEnumW(RESOURCE_GLOBALNET, RESOURCETYPE_ANY)
  • NetServerEnum
  • GetTcpTable
  • GetAdaptersAddresses

 

Apoi încearcă să se conecteze la acele adrese IP (numai dacă sunt adrese IP locale) pentru a vedea dacă sunt încă accesibile. În cazul în care argumentul „-s” a fost furnizat când a fost pornit HermeticWizard (regsvr32.exe /s /i:-s <path>), acesta scanează, de asemenea, întregul interval /24. Deci, dacă IP-ul 192.168.1.5 a fost găsit, de exemplu, în memoria cache DNS, scanează progresiv de la 192.168.1.1 până la 192.168.1.254. Pentru fiecare adresă IP, încearcă să deschidă o conexiune TCP pe următoarele porturi:

  • 20: ftp
  • 21: ftp
  • 22: ssh
  • 80: http
  • 135: rpc
  • 137: netbios
  • 139: smb
  • 443: https
  • 445: smb

 

Porturile sunt scanate într-o ordine aleatorie, astfel încât nu este posibil să se identifice amprenta traficului HermeticWizard. 

Când a găsit un dispozitiv accesibil, componenta malware lansează distribuitorul WMI (detaliat mai jos) pe disc și creează un nou proces cu linia de comandă rundll32 <current folder>\<6 random letters>.ocx #1 -s <path to HermeticWizard> – i <target IP>.

Face același lucru și cu distribuitorul SMB (detaliat mai jos) care este, de asemenea, plasat în <current folder>\<6 random letters>.ocx, dar cu litere aleatorii diferite.

În cele din urmă, aruncă HermeticWiper în <current folder>\<6 random letters>.ocx și îl execută.

Distribuitor WMI

Spreader-ull WMI, numit de dezvoltatorii săi exec_32.dll, are două argumente:

  • -i”: adresa IP țintă
  • -s”: Fișierul de copiat și executat pe dispozitivul țintă

 

În primul rând, creează o conexiune la cota ADMIN$ de la distanță a țintei, folosind WNetAddConnection2W. Fișierul furnizat în argumentul „-s” este apoi copiat folosind CopyFileW. Fișierul de la distanță are un nume aleatoriu generat cu CoCreateGUID (de ex., cB9F06408D8D2.dll) și formatul de șir de tipul c%02X%02X%02X%02X%02X%02X.

În al doilea rând, încearcă să execute fișierul copiat, HermeticWizard, de la distanță, pe dispozitivul în cauză, folosind DCOM. Apelează CoCreateInstance cu CLSID_WbemLocator ca argument. Apoi folosește WMI Win32_Process pentru a crea un nou proces pe dispozitivul accesat de la distanță, cu linia de comandă C:\windows\system32\cmd.exe /c start C:\windows\system32\\regsvr32.exe /s /i C:\windows\<filename>.dll.

Rețineți că argumentul „-s” nu este transmis către HermeticWizard, ceea ce înseamnă că nu va scana din nou rețeaua locală de pe acest device nou compromis.

Dacă tehnica WMI eșuează, încearcă să creeze un serviciu folosind OpenRemoteServiceManager, folosind aceeași comandă ca mai sus.

Dacă reușește să execute de la distanță DLL-ul în orice fel, va rămâne inactiv până când poate șterge fișierul de la distanță.

Distribuitor SMB

Distribuitorul SMB, numit de dezvoltatorii săi romance.dll, are aceleași două argumente ca și distribuitorul WMI. Numele său intern este probabil o referire la exploit-ul EternalRomance, chiar dacă nu folosește niciun exploit.

Mai întâi încearcă să se conecteze la următoarele pipe-uri  pe share-ul SMB (pe portul 445):

  • samr
  • browser
  • netlogon
  • lsarpc
  • ntsvcs
  • svcctl

 

Acestea sunt pipe-uri cunoscute a fi utilizate în mișcarea laterală. Distribuitorul are o listă de acreditări hardcoded care sunt utilizate în încercările de autentificare prin NTLMSSP la partajările SMB:

— nume de utilizatori —

  • guest
  • test
  • admin
  • user
  • root
  • administrator
  • manager
  • operator

 

— parole —

  • 123
  • Qaz123
  • Qwerty123

 

Această listă de credențiale este surprinzător de scurtă și este puțin probabil să funcționeze chiar și în cele mai slab protejate rețele.

Dacă se dovedește a fi de succes conexiunea, încearcă să arunce, în partajarea ADMIN$ țintă, fișierul la care se face referire prin argumentul „-s”. În ceea ce privește distribuitorul WMI, numele fișierului la distanță este generat de un apel către CoCreateInstance.

Apoi execută, prin SMB, linia de comandă cmd /c start regsvr32 /s /i ..\\<filename>  & start cmd /c \”ping localhost -n 7 & wevtutil cl System\”.

HermeticRansom

Cercetătorii ESET au observat, de asemenea, că HermeticRansom – ransomware scris în Go – este folosit în Ucraina în același timp cu campania HermeticWiper. HermeticRansom a fost raportat pentru prima dată în primele ore ale zilei de 24 februarie 2022, într-un tweet de la AVAST. Telemetria ESET arată o implementare mult mai mică în comparație cu HermeticWiper. Acest ransomware a fost implementat în același timp cu HermeticWiper, posibil pentru a ascunde acțiunile programelor wiper. Pe un dispozitiv, a fost observată următoarea cronologie:

  • 2022-02-23 17:49:55 UTC: HermeticWiper este implementat în C:\Windows\Temp\cc.exe 
  • 2022-02-23 18:06:57 UTC: HermeticRansom este implementat de serviciul netsvcs în C:\Windows\Temp\cc2.exe 
  • 2022-02-23 18:26:07 UTC: Al doilea HermeticWiper a fost implementat în C:\Users\com.exe 

 

Într-un alt caz studiat, s-a observat că HermeticRansom este implementat prin GPO, la fel ca HermeticWiper:

C:\WINDOWS\system32\GroupPolicy\DataStore\0\sysvol\<redacted>\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\cpin.exe

Câteva șiruri au fost lăsate în binar de către atacatori; acestea se referă la președintele american Biden și la Casa Albă:

  • _/C_/projects/403forBiden/wHiteHousE.baggageGatherings
  • _/C_/projects/403forBiden/wHiteHousE.lookUp
  • _/C_/projects/403forBiden/wHiteHousE.primaryElectionProcess
  • _/C_/projects/403forBiden/wHiteHousE.GoodOffice1

 

Odată ce fișierele sunt criptate, mesajul din Figura 3 este afișat victimei.

Figura 3. Mesajul de răscumpărare afișat de HermeticRansom

IsaacWiper

IsaacWiper se găsește într-un DLL Windows sau într-un EXE fără semnătură Authenticode; a apărut în telemetria noastră pe 24 februarie 2022. După cum am menționat mai devreme, cea mai veche compilație PE care a fost găsită este de pe 19 octombrie 2021, ceea ce înseamnă că, dacă pe această compilație timestamp-ul nu a fost modificat, IsaacWiper ar fi putut fi folosit în alte operațiuni cu câteva luni mai devreme.

Pentru mostrele DLL, numele din directorul de export PE este Cleaner.dll și are un singur export _Start@4.

Am observat IsaacWiper în %programdata% și C:\Windows\System32, sub următoarele nume de fișiere:

  • clean.exe
  • cl.exe
  • cl64.dll
  • cld.dll
  • cll.dll

 

Nu are nicio asemănare de cod cu HermeticWiper și este mult mai puțin sofisticat. Având în vedere cronologia, este posibil ca ambele să fie conectate, dar nu am găsit încă o legătură puternică.

IsaacWiper începe prin a enumera unitățile fizice și apelează DeviceIoControl cu ​​IOCTL - IOCTL_STORAGE_GET_DEVICE_NUMBER pentru a obține numerele de dispozitiv. Apoi șterge primii 0x10000 de biți ai fiecărei unități de disc folosind generatorul pseudoaleator ISAAC. Generatorul este seeded folosind valoarea GetTickCount.

Apoi enumeră unitățile logice și șterge recursiv fiecare fișier de pe fiecare disc cu biți aleatorii generați și de Mersenne Twister PRNG. Este interesant de observat că șterge recursiv fișierele într-un singur fir de execuție, ceea ce înseamnă că ar dura mult timp pentru a șterge un disc mare.

Pe 25 februarie 2022, atacatorii au lansat o nouă versiune a IsaacWiper care include funcția debug logs. Acest lucru poate indica faptul că atacatorii nu au putut șterge unele dintre dispozitivele vizate și au adăugat mesaje de jurnal pentru a înțelege ce se întâmplă. Jurnalele sunt stocate în C:\ProgramData\log.txt și unele dintre mesajele de jurnal sunt:

  • getting drives…
  • start erasing physical drives…
  • –– start erasing logical drive
  • start erasing system physical drive…
  • system physical drive –– FAILED

 

Concluzii

Acest raport detaliază un atac cibernetic distructiv care a afectat organizațiile ucrainene în 23 februarie 2022 și un al doilea atac care a afectat o altă organizație ucraineană din 24 până în 26 februarie 2022. În acest moment, nu avem nicio informație că alte țări au fost vizate.

Cu toate acestea, din cauza crizei actuale din Ucraina, există încă riscul probabil ca aceiași actori rău intenționați să lanseze alte campanii împotriva țărilor care susțin guvernul ucrainean sau care sancționează entitățile rusești.

O listă IoC poate fi găsită și în repository-ul nostru GitHub.

Detalii IoC

SHA-1 Denumire executabil Denumire detecție ESET Descriere
 912342F1C840A42F6B74132F8A7C4FFE7D40FB77   com.exe    Win32/KillDisk.NCV   HermeticWiper
 61B25D11392172E587D8DA3045812A66C3385451  conhosts.exe    Win32/KillDisk.NCV   HermeticWiper
 3C54C9A49A8DDCA02189FE15FEA52FE24F41A86F  c9EEAF78C9A12.dat     Win32/GenCBL.BSP   HermeticWizard
 F32D791EC9E6385A91B45942C230F52AFF1626DF  cc2.exe    WinGo/Filecoder.BK   HermeticRansom
 AD602039C6F0237D4A997D5640E92CE5E2B3BBA3  cl64.dll    Win32/KillMBR.NHP   IsaacWiper
 736A4CFAD1ED83A6A0B75B0474D5E01A3A36F950  cld.dll    Win32/KillMBR.NHQ   IsaacWiper
 E9B96E9B86FAD28D950CA428879168E0894D854F  clean.exe    Win32/KillMBR.NHP   IsaacWiper
 23873BF2670CF64C2440058130548D4E4DA412DD  XqoYMlBX.exe            Win32/RiskWare.RemoteAdmin.RemoteExec.AC   Acees la distanță: Legitimate   RemCom

Tehnici MITRE ATT&CK

Acest tabel a fost construit folosind versiunea 10 a framework-ului MITRE ATT&CK.

Tactic ID Name Description
Resource Development T1588.002 Obtain Capabilities: Tool Atacatorii au folosit RemCom și posibil Impacket ca parte a campaniilor lor.
T1588.003 Obtain Capabilities: Code Signing Certificates Atacatorii au achiziționat un certficat de semnare a codului pentru campaniile lor.
Initial Access T1078.002 Valid Accounts: Domain Accounts Atacatorii au reușit să trimită malware de tip wiper prin GPO.
Execution T1059.003 Command and Scripting Interpreter: Windows Command Shell Atacatorii au folosit linia de comandă în timpul atacului (posibilă folosire a Impacket)
T1106 Native API Atacatorii au folosit API nativ în softul lor malware.
T1569.002 System Services: Service Execution HermeticWiper folosește un driver, încărcat ca un serviciu, pentru a corupe datele.
T1047 Windows Management Instrumentation HermeticWizard încearcă să se răspândească spre computerele locale folosind WMI.
Discovery T1018 Remote System Discovery HermeticWizard scanează adresele IP cu filtru de locație  pentru a găsi dispozitivele locale.
Lateral Movement T1021.002 Remote Services: SMB/Windows Admin Shares HermeticWizard încearcă să se răspândească spre computerele locale folosind SMB.
T1021.003 Remote Services: Distributed Component Object Model HermeticWizard încearcă să se răspândească spre computerele locale folosind  WbemLocator pentru a porni de la distanță un nou proces via WMI.
Impact T1561.002 Disk Wipe: Disk Structure Wipe HermeticWiper corupe datele de sistem din MBR și MFT.
T1561.001 Disk Wipe: Disk Content Wipe HermeticWiper corupe fișierele din Windows, Program Files, Program Files(x86), PerfLogs, Boot, System Volume Information și AppData.
T1485 Data Destruction HermeticWiper corupe datele utilizatorului găsite în sistem.
T1499.002 Endpoint Denial of Service: Service Exhaustion Flood Folosind atacuri de tip DDoS, atacatorii au făcut inaccesibile o serie de website-uri guvernamentale.

 

ESET Research March 7, 2022

Lasa un comentariu