Update (7. März 2022): Wir haben einen Fehler in der Analyse von IsaacWiper behoben. Er verwendet das Mersenne Twister PRNG und nicht das Isaac PRNG, wie ursprünglich geschrieben.
ESET-Forscher haben, mit Beginn der Feindseligkeiten zwischen Russland und der Ukraine, mehrere Malware-Familien entdeckt, die auf ukrainische Organisationen abzielten.
- Am 23. Februar 2022 richtete sich eine destruktive Kampagne mit HermeticWiper gegen mehrere ukrainische Organisationen.
- Dieser Cyberangriff erfolgte einige Stunden vor dem Beginn des Angriffs russischer Streitkräfte auf die Ukraine.
- Die Angriffsvektoren variierten von einer betroffenen Organisation zur anderen. Wir konnten einen Fall bestätigen, in dem der Wiper per GPO (Windows Gruppenrichtlinien) verteilt wurde. In einem anderen betroffenen Netzwerk haben wir außerdem einen Wurm entdeckt, der verwendet wurde, um den Wiper zu verbreiten.
- Malware-Artefakte deuten darauf hin, dass die Angriffe seit mehreren Monaten geplant waren.
- Am 24. Februar 2022 begann ein zweiter zerstörerischer Angriff auf ein ukrainisches Regierungsnetzwerk mit einem anderen Wiper, den wir IsaacWiper genannt haben.
- ESET Research war noch nicht in der Lage, diese Angriffe einer bekannten Gruppierung zuzuordnen.
Zerstörerische Angriffe in der Ukraine
Wie in diesem ESET Research-Tweet und im WLS-Blogpost zu Hermetic Wiper erwähnt, haben wir einen zerstörerischen Angriff auf Computer in der Ukraine aufgedeckt, der am 23. Februar 2022 um 14:52 Uhr UTC begann. Dies folgte auf verteilte Denial-of-Service-Angriffe (DDoS) gegen große ukrainische Websites und erfolgte nur wenige Stunden vor der russischen Militärinvasion.
Diese zerstörerischen Angriffe nutzten mindestens drei Komponenten:
- HermeticWiper: macht ein System funktionsunfähig, indem es seine Daten beschädigt
- HermeticWizard: verteilt HermeticWiper in einem lokalen Netzwerk über WMI und SMB
- HermeticRansom: Ransomware in Go geschrieben
HermeticWiper wurde auf Hunderten von Systemen in mindestens fünf ukrainischen Organisationen beobachtet.
Am 24. Februar 2022 entdeckten wir einen weiteren neuen Datenwiper in einem ukrainischen Regierungsnetzwerk. Wir haben ihn IsaacWiper genannt und bewerten derzeit mögliche Verbindungen, falls vorhanden, mit HermeticWiper. Wichtig ist hierbei, dass er in einer Organisation gefunden wurde, die nicht von HermeticWiper betroffen war.
Attribution
Zu diesem Zeitpunkt haben wir keine greifbare Verbindung zu einem bekannten Bedrohungsakteur gefunden. HermeticWiper, HermeticWizard und HermeticRansom haben keine signifikante Code-Ähnlichkeit mit anderen Samples in der ESET-Malware-Sammlung. IsaacWiper ist ebenfalls noch nicht zugeordnet.
Zeitleiste
HermeticWiper und HermeticWizard sind mit einem Code-Signing-Zertifikat (siehe Abbildung 1) signiert, das auf Hermetica Digital Ltd am 13. April 2021 ausgestellt wurde. Wir haben die ausstellende CA (DigiCert) aufgefordert, das Zertifikat zu widerrufen, was sie am 24. Februar 2022 getan hat.
Laut einem Bericht von Reuters scheint es, dass dieses Zertifikat nicht von Hermetica Digital gestohlen wurde. Es ist wahrscheinlicher, dass sich die Angreifer stattdessen als das zypriotische Unternehmen ausgegeben haben, um dieses Zertifikat von DigiCert zu erhalten.
ESET-Forscher glauben mit hoher Sicherheit, dass die betroffenen Organisationen lange vor dem Ausrollen des Wipers kompromittiert wurden. Dies basiert auf mehreren Fakten:
- Zeitstempel, wann die HermeticWiper PE kompiliert wurde - der älteste ist der 28. Dezember 2021
- Ausstellungsdatum des Code-Signing-Zertifikats vom 13. April 2021
- Die Verteilung von HermeticWiper per GPO in mindestens einem Fall deutet darauf hin, dass die Angreifer zuvor Zugriff auf einen der Active Directory-Server dieses Opfers hatten.
Die Ereignisse sind in der Zeitleiste in Abbildung 2 zusammengefasst.
Erster Zugriff
HermeticWiper
Der ursprüngliche Zugriffsvektor ist derzeit unbekannt, aber wir haben Überreste einer lateralen Bewegung innerhalb der Zielorganisationen beobachtet. In einem Fall wurde der Wiper über die Standarddomänenrichtlinie (GPO) bereitgestellt, wie der Pfad auf dem System zeigt:
C:\Windows\system32\GroupPolicy\DataStore\0\sysvol\<redacted>\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\cc.exe
Dies deutet darauf hin, dass die Angreifer wahrscheinlich die Kontrolle über den Active Directory-Server übernommen haben.
In anderen Fällen sieht es so aus, dass Impacket zum Verteilen von HermeticWiper verwendet wurde. In einem Symantec-Blogbeitrag heißt es, dass der Wiper über die folgende Befehlszeile bereitgestellt wurde:
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
Der letzte Teil ist identisch mit dem Standardverhalten in der wmiexec.py von Impacket, die auf GitHub zu finden ist.
Schließlich wurde ein benutzerdefinierter Wurm namens HermeticWizard verwendet, um HermeticWiper über SMB und WMI in den kompromittierten Netzwerken zu verbreiten.
IsaacWiper
Auch hier ist der ursprüngliche Zugriffsvektor ist derzeit unbekannt. Es ist wahrscheinlich, dass die Angreifer Tools wie Impacket verwendeten, um sich im Netzwerk zu bewegen. Auf einigen Rechnern haben wir auch beobachtet, dass RemCom, ein Fernwartungstool, zur gleichen Zeit wie IsaacWiper eingesetzt wird.
Technische Analyse
HermeticWiper
HermeticWiper ist eine ausführbare Windows-Datei mit vier eingebetteten Treibern. Dies sind legitime Treiber aus der EaseUS Partition Master Software, die von CHENGDU YIWO Tech Development Co. signiert wurd. Sie werden für Low-Level-Datenträgervorgänge verwendet. Folgende Dateien wurden beobachtet:
- 0E84AFF18D42FC691CB1104018F44403C325AD21: x64-Treiber
- 379FF9236F0F72963920232F4A0782911A6BD7F7: x86-Treiber
- 87BD9404A68035F8D70804A5159A37D1EB0A3568: x64 XP-Treiber
- B33DD3EE12F9E6C150C964EA21147BF6B7F7AFA9: x86 XP-Treiber
Abhängig von der Betriebssystemversion wird einer dieser vier Treiber ausgewählt und in C:\Windows\System32\drivers\<4 zufällige Buchstaben>.sys abgelegt. Diese Datei wird durch einen eigens dafür erstellten Dienst geladen.
HermeticWiper deaktiviert dann den Volumeschattenkopie-Dienst (Volume Shadow Copy Service, VSS) und löscht sich selbst von der Festplatte, indem er seine eigene Datei mit zufälligen Bytes überschreibt. Diese antiforensische Maßnahme soll wahrscheinlich die Analyse des Wipers in einer Post-Incident-Analyse verhindern.
Es ist interessant festzustellen, dass die meisten Dateioperationen auf einer niedrigen Ebene mit DeviceIoControl-Aufrufen ausgeführt werden.
Die folgenden Speicherorte werden mit zufälligen Bytes überschrieben, die von der Windows-API-Funktion CryptGenRandom generiert werden:
- Der Master Boot Record (MBR)
- Die Masterdateitabelle (MFT)
- $Bitmap und $LogFile auf allen Laufwerken
- Die Dateien mit den Registrierungsschlüsseln (NTUSER*)
- C:\Windows\System32\winevt\Logs
Darüber hinaus werden Ordner und Dateien in den Ordnern Windows, Programme, Programme (x86), PerfLogs, Boot, System Volume Information und AppData mithilfe eines FSCTL_MOVE_FILE-Vorgangs rekursiv gelöscht. Diese Technik scheint ziemlich ungewöhnlich zu sein und dem sehr ähnlich zu sein, was im Windows Wipe-Projekt auf GitHub implementiert ist (siehe wipe_extent_by_defrag Funktion). Es löscht auch symbolische Links und große Dateien in den Ordnern "Eigene Dateien" und "Desktop", indem sie mit zufälligen Bytes überschrieben werden.
Schließlich wird der Computer neu gestartet. Es kann jedoch nicht gestartet werden, da der MBR, der MFT und die meisten Dateien gelöscht wurden. Wir glauben, dass es nicht möglich ist, die betroffenen Maschinen wiederherzustellen.
HermeticWizard
Auf der Suche nach anderen Beispielen, die mit demselben Codesignaturzertifikat (Hermetica Digital Ltd) signiert sind, haben wir eine neue Malware-Familie gefunden, die wir HermeticWizard genannt haben.
Es ist ein Wurm, der am 23. Februar 2022 UTC um 14:52:49 Uhr auf einem System in der Ukraine eingesetzt wurde. Es ist eine in C++ entwickelte DLL-Datei, die die Funktionen DllInstall, DllRegisterServer, und DllUnregisterServer exportiert. Der Name der Export-DLL lautet Wizard.dll. Es enthält drei Ressourcen, bei denen es sich um verschlüsselte PE-Dateien handelt:
- Eine Probe von HermeticWiper (912342F1C840A42F6B74132F8A7C4FFE7D40FB77)
- dll, verantwortlich für die Verbreitung auf andere lokale Computer über WMI (6B5958BFABFE7C731193ADB96880B225C8505B73)
- dll, verantwortlich für die Verbreitung auf andere lokale Computer über SMB (AC5B6F16FC5115F0E2327A589246BA00B41439C2)
Die Ressourcen werden mit einer umgekehrten XOR-Schleife verschlüsselt. Jeder Block von vier Bytes wird mit dem vorherigen Block XORed. Schließlich wird der erste Block mit einem hartcodierten Wert XORed, 0x4A29B1A3.
HermeticWizard wird über die Befehlszeile regsvr32.exe /s /i <path> gestartet.
Zuerst versucht HermeticWizard, andere Computer im lokalen Netzwerk zu finden. Es sammelt bekannte lokale IP-Adressen mithilfe der folgenden Windows-Funktionen:
- DNSGetCacheDataTable
- GetIpNetTable
- WNetOpenEnumW(RESOURCE_GLOBALNET, RESOURCETYPE_ANY)
- NetServerEnum
- GetTcpTable
- GetAdaptersAddresses
Es versucht dann, sich mit diesen IP-Adressen zu verbinden (und nur, wenn es sich um lokale IP-Adressen handelt), um zu sehen, ob sie noch erreichbar sind. Falls das Argument -s beim Start von HermeticWizard angegeben wurde (regsvr32.exe /s /i:-s <path>), scannt es auch den gesamten /24-Bereich. Wenn beispielsweise 192.168.1.5 im DNS-Cache gefunden wurde, dann scannt es inkrementell von 192.168.1.1 bis 192.168.1.254. Für jede IP-Adresse wird versucht, eine TCP-Verbindung auf den folgenden Ports zu öffnen:
- 20: ftp
- 21: ftp
- 22: ssh
- 80: http
- 135: rpc
- 137: netbios
- 139: smb
- 443: https
- 445: smb
Die Ports werden in einer zufälligen Reihenfolge gescannt, so dass es nicht möglich ist, den HermeticWizard-Datenverkehr auf diese Weise zu erfassen.
Wenn es einen erreichbaren Computer gefunden hat, legt es den WMI-Spreader (siehe unten) auf der Festplatte ab und erstellt einen neuen Prozess mit der command-Zeile rundll32 <current folder>\<6 random letters>.ocx #1 -s <path to HermeticWizard> - i <target IP>.
Dasselbe gilt für den SMB-Spreader (siehe unten), der ebenfalls in <current folder>\<6 random letters>.ocx, aber mit unterschiedlichen zufälligen Buchstaben abgelegt wird.
Schließlich legt es HermeticWiper in <current folder>\<6 random letters>.ocx ab und führt es aus.
WMI-Spreader
Der WMI-Spreader, der von seinen Entwicklern exec_32.dll benannt wird, verwendet zwei Argumente:
- -i: Die Ziel-IP-Adresse
- -s: Die Datei, die auf dem Zielcomputer kopiert und ausgeführt werden soll
Zunächst wird mithilfe von WNetAddConnection2W eine Verbindung zur Remote-ADMIN$-Freigabe des Ziels hergestellt. Die im -s-Argument bereitgestellte Datei wird dann mit CopyFileW kopiert. Die entfernte Datei hat einen zufälligen Namen, der mit CoCreateGUID generiert wurde (z. B. cB9F06408D8D2.dll) und das Zeichenfolgenformat c%02X%02X%02X%02X%02X%02X.
Zweitens versucht er, die kopierte Datei HermeticWizard mithilfe von DCOM auf dem Remote-Computer auszuführen. Es ruft CoCreateInstance mit CLSID_WbemLocator als Argument auf. Anschließend wird WMI-Win32_Process verwendet, um einen neuen Prozess auf dem Remote-Computer zu erstellen, wobei die Befehlszeile C:\windows\system32\cmd.exe /c C:\windows\system32\\regsvr32.exe /s /i C:\windows\<Dateiname>.dll lautet.
Beachten Sie, dass das Argument -s nicht an HermeticWizard übergeben wird, was bedeutet, dass das lokale Netzwerk von diesem neu kompromittierten Computer nicht erneut gescannt wird.
Wenn die WMI-Technik fehlschlägt, versucht sie, einen Dienst mit OpenRemoteServiceManager mit demselben Befehl wie oben zu erstellen.
Wenn es gelingt, die Remote-DLL in irgendeiner Weise auszuführen, wird sie in den Ruhezustand versetzt, bis sie die Remotedatei löschen kann.
SMB-Spreader
Der SMB-Spreader, der von seinen Entwicklern Romance.dll genannt wird, verwendet die gleichen zwei Argumente wie der WMI-Spreader. Sein interner Name ist wahrscheinlich ein Verweis auf den EternalRomance-Exploit, auch wenn er keinen Exploit verwendet.
Zuerst wird versucht, eine Verbindung zu den folgenden Pipes auf der Remote-SMB-Freigabe (an Port 445) herzustellen:
- Samr
- Browser
- Netlogon
- lsarpc
- ntsvcs
- svcctl
Dies sind Pipes, von denen bekannt ist, dass sie für die laterale Ausbreitung verwendet werden. Der Spreader verfügt über eine Liste hartcodierter Anmeldeinformationen, die bei Versuchen zur Authentifizierung über NTLMSSP bei den SMB-Freigaben verwendet werden:
-- Benutzernamen --
Guest
Test
Administrator
User
root
Administrator
Manager
Operator
-- Passwörter --
123
Qaz123
Qwertz123
Diese Liste von Anmeldeinformationen ist überraschend kurz und funktioniert wahrscheinlich nicht einmal in den am schlechtesten geschützten Netzwerken.
Wenn die Verbindung erfolgreich ist, wird versucht, die Datei, auf die mit dem Argument -s verwiesen wird, auf die Admin$-Zielfreigabe zu verschieben. Wie bei der WMI-Verteilung wird der Remotedateiname durch einen Aufruf von CoCreateInstance generiert.
Es führt dann über SMB die Befehlszeile cmd /c start regsvr32 /s /i ..\\<filename> & start cmd /c \"ping localhost -n 7 & wevtutil cl System\" aus.
HermeticRansom
ESET-Forscher konnten ebenfalls beobachten, dass die in Go geschriebene Ransomware HermeticRansom zur gleichen Zeit wie die HermeticWiper-Kampagne in der Ukraine eingesetzt wurde. HermeticRansom wurde erstmals in den frühen Morgenstunden des 24. Februar 2022 UTC in einem Tweet von AVAST gemeldet. Unsere Telemetrie zeigt eine viel kleinere Verbreitung im Vergleich zu HermeticWiper. Diese Ransomware wurde gleichzeitig mit HermeticWiper eingesetzt, möglicherweise um die Aktionen des Wipers zu verbergen. Auf einer Maschine wurde die folgende Zeitleiste beobachtet:
- 2022-02-23 17:49:55 UTC: Ausbringung von HermeticWiper in C:\Windows\Temp\cc.exe
- 2022-02-23 18:06:57 UTC: Ausbringung von HermeticRansom in C:\Windows\Temp\cc2.exe durch den netsvcs-Dienst
- 2022-02-23 18:26:07 UTC: Ausbringung des zweiten HermeticWiper in C:\Users\com.exe
Bei einer Gelegenheit beobachteten wir, wie HermeticRansom über GPO bereitgestellt wurde, genau wie HermeticWiper:
C:\WINDOWS\system32\GroupPolicy\DataStore\0\sysvol\<redacted>\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\cpin.exe
Ein paar Strings wurden von den Angreifern in der Binärdatei gelassen; sie verweisen auf US-Präsident Biden und das Weiße Haus:
- _/C_/projects/403forBiden/wHiteHousE.baggageGatherings
- _/C_/projects/403forBiden/wHiteHousE.lookUp
- _/C_/projects/403forBiden/wHiteHousE.primaryElectionProcess
- _/C_/projects/403forBiden/wHiteHousE.GoodOffice1
Sobald die Dateien verschlüsselt sind, wird die Nachricht in Abbildung 3 dem Opfer angezeigt.
IsaacWiper
Die datenlöschende Malware IsaacWiper befindet sich entweder in einer Windows-DLL oder EXE ohne Authenticode-Signatur; sie erschien am 24. Februar 2022 in unserer Telemetrie. Wie bereits erwähnt, ist der älteste PE-Kompilierungszeitstempel, den wir gefunden haben, der 19. Oktober 2021, was bedeutet, dass IsaacWiper möglicherweise Monate früher in früheren Operationen verwendet wurde, falls der PE-Kompilierungszeitstempel nicht manipuliert wurde.
Bei DLL-Beispielen lautet der Name im PE-Exportverzeichnis Cleaner.dll und verfügt über einen einzelnen Export namens _Start@4.
Wir haben IsaacWiper in %programdata% und C:\Windows\System32 unter folgenden Dateinamen beobachtet:
- exe
- exe
- dll
- könnte.dll
- dll
Es hat keine Code-Ähnlichkeit mit HermeticWiper und ist viel weniger anspruchsvoll. Angesichts der Zeitleiste ist es möglich, dass beide miteinander verwandt sind, aber wir haben noch keine starke Verbindung gefunden.
IsaacWiper beginnt mit der Aufzählung der physischen Laufwerke und ruft DeviceIoControl mit dem IOCTL-IOCTL_STORAGE_GET_DEVICE_NUMBER auf, um deren Gerätenummern zu erhalten. Anschließend werden die ersten 0x10000 Bytes jeder Festplatte mit dem Mersenne Twister-Pseudozufallsgenerator gelöscht. Der Generator wird mithilfe des GetTickCount-Werts mit einem Seeding versehen.
Es listet dann die logischen Laufwerke auf und löscht rekursiv jede Datei jeder Festplatte mit zufälligen Bytes, die ebenfalls vom Mersenne Twister-PRNG generiert werden. Es ist interessant festzustellen, dass es die Dateien in einem einzigen Thread rekursiv löscht, was bedeutet, dass es lange dauern würde, eine große Festplatte zu löschen.
Am 25. Februar 2022 haben Angreifer eine neue Version von IsaacWiper mit Debug-Protokollen abgelegt. Dies kann darauf hindeuten, dass die Angreifer einige der Zielcomputer nicht löschen konnten und Protokollmeldungen hinzugefügt haben, um zu verstehen, was passiert ist. Die Protokolle werden in C:\ProgramData\log.txt gespeichert, und einige der Protokollmeldungen lauten wie folgt (Anm. d. Übersetzers: Für bessere Verständlichkeit übersetzt):
- Laufwerke abrufen...
- Beginnen Sie mit dem Löschen physischer Laufwerke...
- -- Beginnen Sie mit dem Löschen des logischen Laufwerks
- Starten Sie das Löschen des physischen Laufwerks des Systems...
- Physisches Systemlaufwerk - FEHLGESCHLAGEN
- Starten Sie das Löschen des logischen Laufwerks des Systems
Fazit
Dieser Bericht beschreibt einen zerstörerischen Cyberangriff, der ukrainische Organisationen am 23. Februar 2022 getroffen hat, und einen zweiten Angriff auf eine andere ukrainische Organisation vom 24. Februar bis zum 26. Februar 2022. Zu diesem Zeitpunkt haben wir keine Hinweise darauf, dass andere Länder ins Visier genommen wurden.
Aufgrund der aktuellen Krise in der Ukraine besteht jedoch immer noch das Risiko, dass dieselben Bedrohungsakteure weitere Maßnahmen gegen Länder ergreifen, die die ukrainische Regierung oder russische Einrichtungen unterstützen.
IoCs
SHA-1 | Filename | ESET detection name | Description |
---|---|---|---|
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 | Legitimate RemCom remote access tool |
MITRE ATT&CK techniques
This table was built using version 10 of the MITRE ATT&CK framework.
Tactic | ID | Name | Description |
---|---|---|---|
Resource Development | T1588.002 | Obtain Capabilities: Tool | Attackers used RemCom and potentially Impacket as part of their campaign. |
T1588.003 | Obtain Capabilities: Code Signing Certificates | Attackers acquired a code-signing certificate for their campaigns. | |
Initial Access | T1078.002 | Valid Accounts: Domain Accounts | Attackers were able to deploy wiper malware through GPO. |
Execution | T1059.003 | Command and Scripting Interpreter: Windows Command Shell | Attackers used the command line during their attack (e.g., possible Impacket usage). |
T1106 | Native API | Attackers used native APIs in their malware. | |
T1569.002 | System Services: Service Execution | HermeticWiper uses a driver, loaded as a service, to corrupt data. | |
T1047 | Windows Management Instrumentation | HermeticWizard attempts to spread to local computers using WMI. | |
Discovery | T1018 | Remote System Discovery | HermeticWizard scans local IP ranges to find local machines. |
Lateral Movement | T1021.002 | Remote Services: SMB/Windows Admin Shares | HermeticWizard attempts to spread to local computers using SMB. |
T1021.003 | Remote Services: Distributed Component Object Model | HermeticWizard attempts to spread to local computers using WbemLocator to remotely start a new process via WMI. | |
Impact | T1561.002 | Disk Wipe: Disk Structure Wipe | HermeticWiper corrupts data in the system’s MBR and MFT. |
T1561.001 | Disk Wipe: Disk Content Wipe | HermeticWiper corrupts files in Windows, Program Files, Program Files(x86), PerfLogs, Boot, System Volume Information, and AppData. | |
T1485 | Data Destruction | HermeticWiper corrupts user data found on the system. | |
T1499.002 | Endpoint Denial of Service: Service Exhaustion Flood | By using DDoS attacks, the attackers made a number of government websites unvailable. |