Diese neue Cyberspionage-Gruppe, die sich hauptsächlich auf Asien konzentriert, verwendet undokumentierte Tools, darunter das steganografische Extrahieren von PowerShell-Payloads aus PNG-Dateien
ESET-Forscher fanden kürzlich gezielte Angriffe, bei denen undokumentierte Tools gegen verschiedene hochkarätige Unternehmen und lokale Regierungen hauptsächlich in Asien eingesetzt wurden. Diese Angriffe wurden von einer bisher unbekannten Spionagegruppe durchgeführt, die wir Worok nennen und die seit mindestens 2020 aktiv ist. Das Toolset von Worok umfasst einen C++-Loader CLRLoad, eine PowerShell-Backdoor PowHeartBeat und einen C#-Loader PNGLoad, der Steganographie verwendet, um versteckte Schadsoftware zu extrahieren Payloads aus PNG-Dateien.
Wer ist Workok?
Während der ProxyShell (CVE-2021-34523) Offenlegung von Schwachstellen Anfang 2021, haben wir beobachtet Aktivität von verschiedenen APT-Gruppen. Einer wies gemeinsame Merkmale auf TA428:
- Aktivitätszeiten
- Gezielte Branchen
- Verwendung von ShadowPad
Der Rest des Toolsets ist sehr unterschiedlich: Beispielsweise nahm TA428 an der teil Abable Desktop-Kompromiss im Jahr 2020. Wir sind der Ansicht, dass die Verbindungen nicht stark genug sind, um Worok als dieselbe Gruppe wie TA428 zu betrachten, aber die beiden Gruppen könnten Tools teilen und gemeinsame Interessen haben. Wir haben uns entschieden, einen Cluster zu erstellen und ihn Workok zu nennen. Der Name wurde nach einem Mutex in einem von der Gruppe verwendeten Loader gewählt. An diese Gruppe wurde dann die weitere Aktivität mit Varianten der gleichen Tools geknüpft. Laut Telemetrie von ESET ist Worok seit Ende 2020 aktiv und ist zum jetzigen Zeitpunkt weiterhin aktiv.
Bereits Ende 2020 zielte Worok auf Regierungen und Unternehmen in mehreren Ländern ab, insbesondere:
- Ein Telekommunikationsunternehmen in Ostasien
- Eine Bank in Zentralasien
- Ein Unternehmen der maritimen Industrie in Südostasien
- Eine Regierungsbehörde im Nahen Osten
- Ein privates Unternehmen im südlichen Afrika
Von 2021-05 bis 2022-01 gab es eine erhebliche Unterbrechung der beobachteten Operationen, aber die Workok-Aktivität kehrte 2022-02 zurück und zielte auf:
- Ein Energieunternehmen in Zentralasien
- Eine Körperschaft des öffentlichen Sektors in Südostasien
Abbildung 1 zeigt eine visuelle Heatmap der Zielregionen und Branchen.
In Anbetracht der Profile der Opfer und der Tools, die wir gegen diese Opfer eingesetzt sehen, glauben wir, dass das Hauptziel von Worok darin besteht, Informationen zu stehlen.
Technische Analyse
Während die meisten Erstzugriffe unbekannt sind, haben wir in einigen Fällen bis 2021 und 2022 Exploits gesehen, die gegen die ProxyShell-Schwachstellen eingesetzt wurden. In solchen Fällen wurden in der Regel Webshells hochgeladen, nachdem diese Schwachstellen ausgenutzt wurden, um Persistenz im Netzwerk des Opfers zu gewährleisten. Dann verwendeten die Bediener verschiedene Implantate, um weitere Fähigkeiten zu erlangen.
Nachdem der Zugang erlangt worden war, setzten die Betreiber mehrere öffentlich zugängliche Tools zur Aufklärung ein, einschließlich Mimikatz, Regenwurm, ReGeorg und NBTscan, und stellten dann ihre benutzerdefinierten Implantate bereit: einen First-Stage-Loader, gefolgt von einem Second-Stage-.NET-Loader (PNGLoad). Leider konnten wir keine der endgültigen Nutzlasten abrufen. Im Jahr 2021 war der First-Stage-Loader eine CLR-Assembly (CLRLoad), während er 2022 in den meisten Fällen durch eine voll funktionsfähige PowerShell-Hintertür (PowHeartBeat) ersetzt wurde – beide Ausführungsketten sind in Abbildung 2 dargestellt. Diese drei Werkzeuge werden in den folgenden Unterabschnitten ausführlich beschrieben.
CLRLoad: CLR-Assembly-Ladeprogramm
CLRLoad ist ein generisches Windows PE, das wir sowohl in 32- als auch in 64-Bit-Versionen gesehen haben. Es ist ein in C++ geschriebener Lader, der die nächste Stufe (PNGLoad) lädt, die a sein muss Common Language Runtime (CLR)-Assembly DLL-Datei. Dieser Code wird aus einer Datei geladen, die sich auf der Festplatte in einem legitimen Verzeichnis befindet, vermutlich um Opfer oder Notfallhelfer zu der Annahme zu verleiten, dass es sich um legitime Software handelt.
Einige CLRLoad-Beispiele beginnen mit der Dekodierung des vollständigen Pfads der Datei, deren Inhalt sie als nächste Stufe laden. Diese Dateipfade sind mit einem Single-Byte-XOR codiert, mit einem anderen Schlüssel in jedem Sample. Dekodiert oder Klartext, diese Dateipfade sind absolut, wobei die folgenden die sind, auf die wir gestoßen sind:
- C:ProgrammeVMwareVMware ToolsVMware VGAuthxsec_1_5.dll
- C:ProgrammdateienUltraViewermsvbvm80.dll
- C:ProgrammeInternet ExplorerJsprofile.dll
- C:ProgrammeWinRarRarExtMgt.dll
- C:Programmdateien (x86)Foxit SoftwareFoxit Readerlucenelib.dll
Als nächstes wird ein Mutex erstellt, und wir haben in jedem Sample einen anderen Namen gesehen. Der Loader sucht nach diesem Mutex; Wenn es gefunden wird, wird es beendet, da der Lader bereits ausgeführt wird. In einem der Beispiele ist der mutex Wo0r0KGWhYGO angetroffen, was der Gruppe den Namen Worok gab.
CLRLoad lädt dann eine CLR-Assembly aus dem möglicherweise decodierten Dateipfad. Als nicht verwalteter Code erreicht CLRLoad dies über CorBindToRuntimeEx Windows-API-Aufrufe in 32-Bit-Varianten, oder CLRCreateInstance Anrufe in 64-Bit-Varianten.
PowHeartBeat: PowerShell-Hintertür
PowHeartBeat ist eine voll funktionsfähige Hintertür, die in PowerShell geschrieben ist und mit verschiedenen Techniken wie Komprimierung, Kodierung und Verschlüsselung verschleiert wird. Basierend auf ESET-Telemetrie glauben wir, dass PowHeartBeat CLRLoad in neueren Worok-Kampagnen als Tool zum Starten von PNGLoad ersetzt hat.
Die erste Schicht des Backdoor-Codes besteht aus mehreren Blöcken von base64-codiertem PowerShell-Code. Sobald die Nutzlast rekonstruiert ist, wird sie über ausgeführt IEX. Nach der Dekodierung wird eine weitere Schicht verschleierten Codes ausgeführt, die wir in Abbildung 3 sehen können.
Die zweite Schicht der Backdoor entschlüsselt zunächst mit base64 die nächste Schicht ihres Codes, der dann mit entschlüsselt wird Dreifach-DES (CBC-Modus). Nach der Entschlüsselung wird dieser Code mithilfe von dekomprimiert gzip Algorithmus, wodurch die dritte Ebene des PowerShell-Codes entsteht, die die eigentliche Hintertür ist. Es ist in zwei Hauptteile unterteilt: Konfiguration und Handhabung von Backdoor-Befehlen.
Die Hauptschicht des Backdoor-Codes ist ebenfalls in PowerShell geschrieben und verwendet HTTP oder ICMP, um mit dem C&C-Server zu kommunizieren. Es funktioniert wie in Abbildung 4 dargestellt.
Konfiguration
Die Konfiguration enthält mehrere Felder, darunter Versionsnummer, optionale Proxy-Konfiguration und C&C-Adresse. Tabelle 1 beschreibt die Bedeutung der Konfigurationsfelder in den verschiedenen Versionen, die wir beobachtet haben.
Tabelle 1. Bedeutungen der Konfigurationsfelder
Feldname | Beschreibung |
---|---|
nouse / ikuyrtydyfg (andere Proben) |
Ungebraucht. |
Kunden ID | Client-ID, die für folgende Zwecke verwendet wird: · Als Wert beim Bau der Cookie-Header für C&C-Kommunikation. · Als kryptografisches Artefakt für die Verschlüsselung gesendeter Daten. |
Version | Versionsnummer von PowHeartBeat. |
ExecTimes | Anzahl der zulässigen Ausführungsversuche bei der Ausgabe von a RunCmd (Befehl läuft) Befehl. |
User-Agent | Benutzeragent, der für die C&C-Kommunikation verwendet wird. |
referer | referer Header, der für die C&C-Kommunikation verwendet wird. |
AcceptEncoding | Ungebraucht. |
Cookie-Client-ID CookieTaskId CookieTerminalId |
Werte, die zum Erstellen der verwendet werden Cookie Header für C&C-Kommunikation. |
URLHttps | Für die C&C-Kommunikation zu verwendendes Protokoll. |
URLDomain IP Adresse Domains |
Als C&C-Server verwendete URL, Domain(s) oder IP-Adresse. Wenn Domains nicht leer ist, wird statt gewählt IP Adresse. In anderen Fällen, IP Adresse ist genommen |
URLSendHeartBeat | URL-Pfad, der verwendet wird, wenn die Backdoor den C&C-Server nach Befehlen fragt. |
UrlSendResult | URL-Pfad, der verwendet wird, wenn die Hintertür die Ergebnisse des Befehls zurück an den C&C-Server sendet. |
GetUrl | Vollständige URL, die von PowHeartBeat verwendet wird, um Befehle vom C&C-Server anzufordern. Es ist die Verkettung der obigen URL-Elemente. |
PutUrl | Das gleiche wie GetUrl aber verwendet, um die Ergebnisse des Befehls zurück an den C&C-Server zu senden. |
aktuellerPfad | Ungebraucht. |
ProxyEnableFlag | Flag, das angibt, ob die Hintertür einen Proxy verwenden muss oder nicht, um mit dem C&C-Server zu kommunizieren. |
Proxymsg | Adresse des zu verwendenden Proxys, wenn ProxyEnableFlag eingestellt ist $wahr. |
Intervall | Zeit in Sekunden, die das Skript zwischen GET-Anfragen ruht. |
BasicConfigPath | Pfad zu einer optionalen Konfigurationsdatei, die UpTime, Ausfallzeit, StandardIntervall und Domains. Diese Werte werden überschrieben, wenn die Datei vorhanden ist. |
UpTime | Tageszeit, ab der die Backdoor zu arbeiten beginnt, d. h. sie beginnt, GET-Anfragen an den C&C-Server zu stellen. |
Ausfallzeit | Tageszeit, bis zu der die Backdoor betrieben werden kann, d. h. die Zeit, zu der sie keine Anfragen mehr an den C&C-Server stellt. |
DomainIndex | Index des aktuellen Domänennamens, der für die Kommunikation mit dem C&C-Server verwendet werden soll. Falls eine Anfrage eine andere Fehlermeldung zurückgibt als 304 ("Nicht modifiziert"), DomainIndex erhöht. |
Geheimer Schlüssel | Schlüssel zum Entschlüsseln/Verschlüsselung der Konfiguration. Die Konfiguration wird mit Multiple-Byte-XOR verschlüsselt. |
IfLog | Ungebraucht. |
IfLogFilePath | Flag, das angibt, ob die Protokollierung aktiviert ist. |
Protokollpfad | Pfad der Protokolldatei. |
Proxy-Datei | Dateipfad der optionalen Proxy-Konfiguration. Wenn es leer ist oder nicht im Dateisystem gefunden wird, ruft die Hintertür die Proxy-Einstellungen des Benutzers aus dem Registrierungswert ab HKCUSoftwareMicrosoftWindowsCurrentVersionInterneteinstellungenProxyServer . |
IfConfig | Flag, das angibt, ob eine Konfigurationsdatei verwendet werden soll. |
Abbildung 5 zeigt ein Beispiel für die aus einem PowHeartBeat-Beispiel extrahierte Konfiguration (SHA-1: 757ABA12D04FD1167528FDD107A441D11CD8C427).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
$Script:nouse = 100; if(Test-Path $MyInvocation.MyCommand.Path){Remove-item $MyInvocation.MyCommand.Path -Force;} $Script:ClientId = “83”; $Script:Version = “2.1.3.0003”; $Script:ExecTimes = 10; $Script:UserAgent = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3487.100 Safari/537.36”; $Script:Referer = “www.adobe.com”; $Script:AcceptEncoding = “text/html,app1ication/xhtml+xml,app1ication/xml;q=0.9,*/*;q=0.8”; $Script:CookieClientId = “s_ecid”; $Script:CookieTaskId = “aam_uuid”; $Script:CookieTerminalId = “AAMC_adobe_0”; $Script:UrlHttps = “http://”; $Script:UrlDomain= ” 118.193.78[.]22:443″; $Script:UrlSendHeartBeat = “/latest/AdobeMessagingClient.js”; $Script:UrlSendResult = “/content/dam/offers-homepage/homepage.jpg”; $Script:GetUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendHeartBeat; $Script:PutUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendResult; $Script:currentPath = Split-Path -Parent $MyInvocation.MyCommand.Definition; $Script:ProxyEnableFlag = $false; $Script:Proxymsg; $Script:Interval = 10 ; $Script:BasicConfigPath = “C:ProgramDataunins.dat”; $Script:UpTime = 0; $Script:DownTime = 24; $Script:Domains; $Script:DomainIndex; $Script:SecretKey = “###ConfigKey###”; #$Script:IfLog = $true; $Script:IfLogFilePath = “C:ProgramDatatpncp.dat”; $Script:logpath = “C:ProgramDataunins000.dat”; $Script:ProxyFile = “C:ProgramDatahwrenalm.dat”; $Script:IfConfig = $false; |
Abbildung 5. Konfigurationsbeispiel
Datenverschlüsselung
PowHeartBeat verschlüsselt Protokolle und zusätzliche Konfigurationsdateiinhalte.
Der Inhalt der Protokolldatei wird durch Multi-Byte-XOR mit einem im Beispiel im Klartext angegebenen Schlüssel verschlüsselt. Interessant, Kunden ID wird als Salt für den Index in das Schlüsselarray verwendet. Der Schlüssel ist ein 256-Byte-Array, das in jedem Beispiel, auf das wir gestoßen sind, identisch war. Zusätzlicher Inhalt der Konfigurationsdatei wird durch Multi-Byte-XOR mit dem Wert von verschlüsselt Geheimer Schlüssel als seinen Schlüssel.
C&C-Kommunikation
PowHeartBeat verwendete HTTP für die C&C-Kommunikation bis Version 2.4 und wechselte dann zu ICMP. In beiden Fällen erfolgt die Kommunikation unverschlüsselt.
HTTP
In einer Endlosschleife sendet die Hintertür eine GET-Anforderung an den C&C-Server und fordert einen zu erteilenden Befehl auf. Die verschlüsselte Antwort wird von der Hintertür entschlüsselt, die den Befehl verarbeitet, und schreibt die Befehlsausgabe in eine Datei, deren Inhalt dann per POST-Anfrage an den C&C-Server gesendet wird.
Das Format der GET-Anfragen ist wie folgt:
GET <UrlSendHeartBeat> HTTP/1.1 User-Agent: <UserAgent> Referer: <Referer> Host: <Domain> Cookie: <CookieClientId>=<ClientId> Connection: close |
Beachten Sie, dass die Anforderung mithilfe der gleichnamigen Konfigurationsfelder erstellt wird.
In der Antwort des C&C-Servers ist das dritte Byte des Inhalts die Befehlskennung, die den von der Hintertür zu verarbeitenden Befehl angibt. Wir nennen es Befehls-ID. Der restliche Inhalt der Antwort wird als Argument an den verarbeiteten Befehl übergeben. Dieser Inhalt wird mit dem in Abbildung 6 gezeigten Algorithmus verschlüsselt. Aufgaben-ID der Wert des nach ihm benannten Cookies ist CookieTaskId's-Wert aus der Konfiguration.
1 2 3 4 5 6 7 8 9 10 |
o[int] $pos = $taskId % 256; for ($i = 0; $i -lt $tmpBytes.Value.Length; $i++) { $pos = $pos + $clientId; if ($pos -ge 256) { $pos = $pos % 256; } $tmpBytes.Value[$i] = [byte]($tmpBytes.Value[$i] -bxor $hexEnc[$pos]); } |
Abbildung 6. Verschlüsselungsalgorithmus für angeforderte Inhaltsdaten
Die Antwort des C&C-Servers enthält außerdem ein weiteres Cookie, dessen Name von der Hintertür angegeben wird CookieTerminalId Konfigurationsvariable. Der Wert dieses Cookies wird in der POST-Anforderung von der Hintertür wiederholt und darf nicht leer sein. Nach Ausführung des Backdoor-Befehls sendet PowHeartBeat das Ergebnis als POST-Request an den C&C-Server. Das Ergebnis wird als Datei mit dem Namen gesendet .png.
ICMP
Ab Version 2.4 von PowHeartBeat wurde HTTP durch ICMP ersetzt, wobei Pakete mit einem Timeout von sechs Sekunden versendet wurden unfragmentiert. Die Kommunikation über ICMP ist höchstwahrscheinlich eine Möglichkeit, der Erkennung zu entgehen.
Es gibt keine größeren Änderungen in den Versionen 2.4 und höher, aber wir haben einige Änderungen im Code bemerkt:
- PowHeartBeat sendet bei jeder Schleife, die den String enthält, ein Heartbeat-Paket abcdefghijklmnopqrstuvwxyz, bevor Sie einen Befehl anfordern. Dies informiert den C&C-Server darüber, dass die Hintertür bereit ist, Befehle zu empfangen.
- Anfragen zum Abrufen von Befehlen, die von der Hintertür ausgeführt werden, enthalten die Zeichenfolge abcdefghijklmnop.
Heartbeat-Pakete haben das in Abbildung 7 beschriebene Format.
Die Differenz zwischen Kunden ID und Client-Flag ist, dass Kunden ID unterscheidet sich in jeder Probe, während Client-Flag ist in jeder Probe, die ICMP verwendet, gleich. Herzschlag-Flagge zeigt an, dass die Backdoor einen Heartbeat sendet. Die Antwort vom C&C-Server hat das in Abbildung 8 beschriebene Format.
Flagge Hier wird angezeigt, ob ein Befehl an die Hintertür ausgegeben werden muss. Anforderungen zum Abrufen von Befehlen haben das in Abbildung 9 beschriebene Format.
Beachten Sie, dass der ICMP-Modus der Hintertür den Empfang einer unbegrenzten Menge an Daten, aufgeteilt in Chunks, und die Variablen ermöglicht Datenlänge, aktuelle Position und Gesamtlänge werden verwendet, um die übertragenen Daten nachzuverfolgen. Antworten auf diese Anforderungen haben das in Abbildung 10 beschriebene Format.
Wie bei HTTP-Antworten ist die Befehlskennung das dritte Byte von technische Daten.
Nach sieben aufeinanderfolgenden ICMP-Antworten mit leerem oder inkonsistent formatiertem Inhalt gelten Übertragungen zwischen Backdoor und C&C-Server als abgeschlossen.
In Bezug auf die Anforderungen zum Senden des Ergebnisses des ausgegebenen Befehls an den C&C-Server wird der Servermodus in den Postmodus geändert und die letzte Zeichenfolge (abcdefghijklmnop) wird für die Ergebnisdaten geändert.
Backdoor-Befehle
PowHeartBeat hat verschiedene Fähigkeiten, einschließlich Befehls-/Prozessausführung und Dateimanipulation. Tabelle 2 listet alle Befehle auf, die von den verschiedenen analysierten Beispielen unterstützt werden.
Tabelle 2. PowHeartBeat-Befehlsbeschreibungen
Name und Vorname | Befehlskennung | Beschreibung |
---|---|---|
Cmd | 0x02 | Führen Sie einen PowerShell-Befehl aus. |
Exe | 0x04 | Führt einen Befehl als aus Prozessdefinierung. |
Datei-Upload | 0x06 | Laden Sie eine Datei auf den Computer des Opfers hoch. Der Dateiinhalt ist gzip-komprimiert. |
Datei download | 0x08 | Laden Sie eine Datei vom Computer des Opfers herunter und geben Sie Dateipfad, Dateilänge, Erstellungszeit, Zugriffszeiten und Dateiinhalt an den C&C-Server zurück. |
Dateiansicht | 0x0A | Rufen Sie Dateiinformationen eines bestimmten Verzeichnisses ab, insbesondere: · Dateinamen · Dateiattribute · Letzte Schreibzeiten · Dateiinhalt |
DateiLöschen | 0x0C | Löschen Sie eine Datei. |
Datei umbenennen | 0x0E | Benennen Sie eine Datei um oder verschieben Sie sie. |
ChangeDir | 0x10 | Ändern Sie den aktuellen Arbeitsort der Hintertür. |
Info | 0x12 | Rufen Sie eine Kategorie von Informationen gemäß dem angegebenen Argument ab: · "Grundinformation": Kunden ID, Version, Hostname, IP-Adressen, explorer.exe Versions- und Größeninformationen, Betriebssystem (Architektur und Flag, das angibt, ob die Maschine ein Server ist), Intervall, aktuelles Verzeichnis, Laufwerksinformationen (Name, Typ, freier Speicherplatz und Gesamtgröße), aktuelle Uhrzeit · „Zeitintervall-Informationen“: Intervall und aktuelle Uhrzeit · „Domäneninformationen“: Inhalt der entschlüsselten Konfigurationsdatei |
Config | 0x14 | Aktualisieren Sie den Inhalt der Konfigurationsdatei und laden Sie die Konfiguration neu. |
N / A | 0x63 | Ausgang durch die Hintertür. |
Bei Fehlern auf der Backdoor-Seite verwendet die Backdoor eine spezifische Befehlskennung 0x00 in der POST-Anfrage an den C&C-Server und zeigt so an, dass ein Fehler aufgetreten ist.
Beachten Sie, dass die Daten vor dem Zurücksenden der Informationen an den C&C-Server gzip-komprimiert werden.
PNGLoad: Steganografischer Lader
PNGLoad ist die Nutzlast der zweiten Stufe, die von Worok auf kompromittierten Systemen bereitgestellt und laut ESET-Telemetrie entweder von CLRLoad oder PowHeartBeat geladen wird. Obwohl wir keinen Code in PowHeartBeat sehen, der PNGLoad direkt lädt, hat die Hintertür die Möglichkeit, zusätzliche Payloads vom C&C-Server herunterzuladen und auszuführen, was wahrscheinlich dazu führt, dass die Angreifer PNGLoad auf Systemen eingesetzt haben, die mit PowHeartBeat kompromittiert wurden. PNGLoad ist ein Ladeprogramm, das Bytes aus PNG-Dateien verwendet, um eine auszuführende Nutzlast zu erstellen. Es ist eine ausführbare 64-Bit-.NET-Datei – verschleiert mit .NET Reactor – die sich als legitime Software ausgibt. Abbildung 11 zeigt beispielsweise die CLR-Header eines Beispiels, das sich als WinRAR-DLL tarnt.
Nach der Entschleierung ist nur noch eine Klasse vorhanden. In dieser Klasse gibt es eine Hauptpfad Attribut, das den Verzeichnispfad enthält, den die Backdoor einschließlich ihrer Unterverzeichnisse nach Dateien mit a durchsucht . Png Erweiterung, wie in Abbildung 12 gezeigt.
. . Png Datei, die durch diese Suche gefunden wurde Hauptpfad wird dann auf steganographisch eingebettete Inhalte geprüft. Zuerst wird das niedrigstwertige Bit der Werte R (Rot), G (Grün), B (Blau) und A (Alpha) jedes Pixels abgerufen und in einem Puffer zusammengestellt. Sollten die ersten acht Bytes dieses Puffers mit der in Abbildung 13 gezeigten magischen Zahl übereinstimmen und der nächste Acht-Byte-Wert, control, nicht null sein, besteht die Datei die steganografische Inhaltsprüfung von PNGLoad. Bei solchen Dateien wird die Verarbeitung mit dem Rest des Puffers fortgesetzt, der mit einem Mehrbyte-XOR entschlüsselt wird, wobei der in PNGLoad gespeicherte Schlüssel verwendet wird SecretKeyBytes -Attribut, und dann wird der entschlüsselte Puffer gzip-dekomprimiert. Als Ergebnis wird ein PowerShell-Skript erwartet, das sofort ausgeführt wird.
Interessanterweise werden von PNGLoad ausgeführte Operationen in einer Datei protokolliert, deren Pfad in der Variablen gespeichert ist Protokolldateipfad. Operationen werden nur protokolliert, wenn eine Datei vorhanden ist, deren Pfad durch die interne Variable angegeben wird IfLogFilePath.
Eine Probe konnten wir nicht beschaffen . Png Datei, die zusammen mit PNGLoad verwendet wird, aber die Funktionsweise von PNGLoad legt nahe, dass es mit gültigen PNG-Dateien funktionieren sollte. Um die schädliche Nutzlast zu verbergen, verwendet Worok Bitmap-Objekte in C#, die nur Pixelinformationen aus Dateien entnehmen, nicht die Dateimetadaten. Das bedeutet, dass Worok seine bösartigen Payloads in gültigen, harmlos aussehenden PNG-Bildern verstecken und sich so vor aller Augen verstecken kann.
Zusammenfassung
Worok ist eine Cyberspionage-Gruppe, die ihre eigenen Tools entwickelt und vorhandene Tools nutzt, um ihre Ziele zu kompromittieren. Wir glauben, dass die Betreiber Informationen von ihren Opfern stehlen wollen, weil sie sich auf hochkarätige Unternehmen in Asien und Afrika konzentrieren und auf verschiedene Sektoren abzielen, sowohl private als auch öffentliche, aber mit besonderem Schwerpunkt auf Regierungsbehörden. Aktivitätszeiten und Toolset weisen auf mögliche Verbindungen zu TA428 hin, aber wir treffen diese Einschätzung mit geringem Vertrauen. Ihr benutzerdefiniertes Toolset umfasst zwei Loader – einen in C++ und einen in C# .NET – und eine PowerShell-Hintertür. Obwohl unsere Sichtbarkeit begrenzt ist, hoffen wir, dass die Aufklärung dieser Gruppe andere Forscher dazu ermutigt, Informationen über diese Gruppe auszutauschen.
ESET Research bietet jetzt auch private APT-Geheimdienstberichte und Daten-Feeds an. Bei Fragen zu diesem Service besuchen Sie bitte die ESET Threat Intelligence
IOCs
Mappen
SHA-1 | Dateiname | Name der ESET-Erkennung | Kommentar |
---|---|---|---|
3A47185D0735CDECF4C7C2299EB18401BFB328D5 | Skript | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
27ABB54A858AD1C1FF2863913BDA698D184E180D | Skript | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
678A131A9E932B9436241402D9727AA7D06A87E3 | Skript | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
757ABA12D04FD1167528FDD107A441D11CD8C427 | Skript | PowerShell/PowHeartBeat.B | PowHeartBeat 2.1.3.0003. |
54700A48D934676FC698675B4CA5F712C0373188 | Skript | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F53C138CB1B87D8FC9253A7088DB30B25389AF | Skript | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F1954DE11F72A46A4E823DE767210A3743B205 | tmp.ps1 | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0004. |
CE430A27DF87A6952D732B4562A7C23BEF4602D1 | tmp.ps1 | PowerShell/PowHeartBeat.A | PowHeartBeat 2.1.3.0004. |
EDE5AB2B94BA85F28D5EE22656958E4ECD77B6FF | Skript | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
4721EEBA13535D1EE98654EFCE6B43B778F13126 | vix64.dll | MSIL/PNGLLoader.A | PNGLoader. |
728A6CB7A150141B4250659CF853F39BFDB7A46C | RarExtMgt.dll | MSIL/PNGLLoader.A | PNGLoader. |
864E55749D28036704B6EA66555A86527E02AF4A | Jsprofile.dll | MSIL/PNGLLoader.A | PNGLoader. |
8DA6387F30C584B5FD3694A99EC066784209CA4C | vsxml.dll | MSIL/PNGLLoader.A | PNGLoader. |
AA60FB4293530FBFF00D200C0D44EEB1A17B1C76 | xsec_1_5.dll | MSIL/PNGLLoader.A | PNGLoader. |
B2EAEC695DD8BB518C7E24C4F37A08344D6975BE | msvbvm80.dll | MSIL/PNGLLoader.A | PNGLoader. |
CDB6B1CAFEE098615508F107814179DEAED1EBCF | lucenelib.dll | MSIL/PNGLLoader.A | PNGLoader. |
4F9A43E6CF37FF20AE96E564C93898FDA6787F7D | vsstrace.dll | Win64/CLRLoad.C | CLRLad. |
F181E87B0CD6AA4575FD51B9F868CA7B27240610 | ncrypt.dll | Win32/CLRLoad.A | CLRLad. |
4CCF0386BDE80C339EFE0CC734CB497E0B08049C | ncrypt.dll | Win32/CLRLoad.A | CLRLad. |
5CFC0D776AF023DCFE8EDED5CADA03C6D7F9C244 | wlbsctrl.dll | Win64/CLRLoad.E | CLRLad. |
05F19EBF6D46576144276090CC113C6AB8CCEC08 | wlbsctrl.dll | Win32/CLRLoad.A | CLRLad. |
A5D548543D3C3037DA67DC0DA47214B2C2B15864 | secur32.dll | Win64/CLRLoad.H | CLRLad. |
CBF42DCAF579AF7E6055237E524C0F30507090F3 | dbghelp.dll | Win64/CLRLoad.C | CLRLad. |
Dateipfade
Einige der Hauptpfad, Protokolldateipfad und IfLogFilePath Werte, die wir in PNGLoad-Beispielen gefunden haben:
Hauptpfad | Protokolldateipfad | IfLogFilePath |
---|---|---|
C:ProgrammeVMwareVMware Tools | C:ProgrammeVMwareVMware ToolsVMware VGAuthreadme.txt | C:ProgrammeVMwareVMware ToolsVMware VGAuthVMWSU_V1_1.dll |
C:ProgrammdateienWinRar | C:ProgrammdateienWinRarrarinstall.log | C:ProgrammdateienWinRardes.dat |
C:ProgrammeUltraViewer | C:ProgrammdateienUltraViewerCopyRights.dat | C:ProgrammeUltraVieweruvcr.dll |
Netzwerk
Domain | IP |
---|---|
Andere | 118.193.78[.]22 |
Andere | 118.193.78[.]57 |
Flugzeug.Reise-Werbung[.]Agentur | 5.183.101[.]9 |
central.suhypercloud[.]org | 45.77.36[.]243 |
Mutexe
In CLRLoad-Beispielen sind die Mutex-Namen, auf die wir gestoßen sind:
aB82UduGX0EX
ad8TbUIZl5Ga
Mr2PJVxbIBD4
oERiQtKLgPgK
U37uxsCsA4Xm
Wo0r0KGWhYGO
xBUjQR2vxYTz
zYCLBWekRX3t
3c3401ad-e77d-4142-8db5-8eb5483d7e41
9xvzMsaWqxMy
Eine umfassende Liste von Indicators of Compromise (IoCs) und Beispielen finden Sie in unser GitHub-Repository.
MITRE ATT&CK-Techniken
Diese Tabelle wurde mit erstellt Version 11 des MITRE ATT&CK-Frameworks.
Taktik | ID | Name und Vorname | Beschreibung |
---|---|---|---|
Aufklärung | T1592.002 | Sammeln Sie Host-Informationen des Opfers: Software | PowHeartBeat sammelt sich explorer.exe Informationen. |
T1592.001 | Sammeln Sie Host-Informationen des Opfers: Hardware | PowHeartBeat sammelt Informationen über Laufwerke. | |
T1590.005 | Sammeln Sie Opfernetzwerkinformationen: IP-Adressen | PowHeartBeat sammelt IP-Adressen des kompromittierten Computers. | |
Ressourcenentwicklung | T1583.004 | Infrastruktur erwerben: Server | Worok verwendet seine eigenen C&C-Server. |
T1588.002 | Besorgen Sie sich Fähigkeiten: Werkzeug | Workok setzte mehrere öffentlich verfügbare Tools auf den kompromittierten Computern ein. | |
T1583.001 | Infrastruktur erwerben: Domänen | Worok hat registrierte Domains, um die C&C-Kommunikation und -Staging zu erleichtern. | |
T1588.005 | Erwerben Sie Fähigkeiten: Exploits | Worok hat die Schwachstelle ProxyShell ausgenutzt. | |
T1587.001 | Entwicklungsfähigkeiten: Malware | Worok hat seine eigene Malware entwickelt: CLRLoad, PNGLoad, PowHeartBeat. | |
T1587.003 | Fähigkeiten entwickeln: Digitale Zertifikate | Worok hat Let's Encrypt SSL-Zertifikate erstellt, um eine gegenseitige TLS-Authentifizierung für Malware zu ermöglichen. | |
ausführung | T1059.001 | Befehls- und Skriptinterpreter: PowerShell | PowHeartBeat ist in PowerShell geschrieben. |
Beharrlichkeit | T1505.003 | Serversoftwarekomponente: Web Shell | Workok verwendet die Webshell ReGeorg. |
Verteidigungsflucht | T1140 | Enthüllen/Dekodieren von Dateien oder Informationen | Worok verwendet verschiedene benutzerdefinierte XOR-basierte Schemata, um Zeichenfolgen und Protokolle in PowHeartBeat, PNGLoad und CLRLoad zu verschlüsseln. |
T1036.005 | Maskierung: Übereinstimmung mit legitimem Namen oder Ort | PNGLoad-Beispiele werden in legitim aussehenden VMWare-Verzeichnissen bereitgestellt. | |
Zugang zu Anmeldeinformationen | T1003.001 | Dumping von OS-Anmeldeinformationen: LSASS-Speicher | Worok verwendet Mimikatz, um Anmeldeinformationen aus dem LSASS-Speicher auszugeben. |
Angewandte F&E | T1082 | Systeminformationserkennung | PowHeartBeat sammelt Betriebssysteminformationen. |
T1083 | Datei- und Verzeichniserkennung | PowHeartBeat kann Dateien und Verzeichnisse auflisten. | |
T1046 | Netzwerkdiensterkennung | Work verwendet NbtScan um Netzwerkinformationen über kompromittierte Maschinen zu erhalten. | |
T1124 | Erkennung der Systemzeit | PowHeartBeat sammelt die Zeitinformationen des Opfers. | |
Sammlung | T1005 | Daten vom lokalen System | PowHeartBeat sammelt Daten aus dem lokalen System. |
T1560.002 | Gesammelte Daten archivieren: Archiv über Bibliothek | PowHeartBeat komprimiert Daten gzip, bevor sie an den C&C-Server gesendet werden. | |
Command and Control | T1071.001 | Application Layer Protocol: Webprotokolle | Einige PowHeartBeat-Varianten verwenden HTTP als Kommunikationsprotokoll mit dem C&C-Server. |
T1090.001 | Proxy: Interner Proxy | PowHeartBeat übernimmt die Proxy-Konfiguration auf dem Computer des Opfers. | |
T1001.002 | Datenverschleierung: Steganographie | PNGLoad extrahiert Pixelwerte aus . Png Dateien, um Payloads zu rekonstruieren. | |
T1573.002 | Verschlüsselter Kanal: Asymmetrische Kryptografie | PowHeartBeat wickelt die HTTPS-Kommunikation mit dem C&C-Server ab. | |
T1095 | Non-Application-Layer-Protokoll | Einige PowHeartBeat-Varianten verwenden ICMP als Kommunikationsprotokoll mit dem C&C-Server. | |
T1132.001 | Datenkodierung: Standardkodierung | Worok verwendet XOR-Codierung in PowHeartBeat und PNGLoad. | |
T1132.002 | Datencodierung: Nicht-Standard-Codierung | Worok verwendet XOR-Codierungsalgorithmen, die ein zusätzliches Salz verwenden. | |
Exfiltration | T1041 | Exfiltration über C2-Kanal | PowHeartBeat nutzt seinen C&C-Kommunikationskanal, um Informationen herauszufiltern. |
- Blockchain
- Einfallsreichtum
- Cryptocurrency Brieftaschen
- Kryptoaustausch
- Internet-Sicherheit
- Cyber-Kriminelle
- Internet-Sicherheit
- Heimatschutzministerium
- digitale Brieftaschen
- ESET-Forschung
- Firewall
- Kaspersky
- Malware
- McAfee
- NexBLOC
- Plato
- platon ai
- Datenintelligenz von Plato
- Plato-Spiel
- PlatoData
- Platogaming
- VPN
- Wir leben Sicherheit
- Website-Sicherheit
- Zephyrnet