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.
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. |
Lasa un comentariu