Im Juli 2025 entdeckte IBM X-Force eine neue Malware, die dem aus China stammenden Bedrohungsakteur Hive0154 zugeschrieben wird. Dazu gehören eine aktualisierte Toneshell-Variante, die Erkennungen umgeht und mehrere neue Funktionen unterstützt, sowie ein neuartiger USB-Wurm namens SnakeDisk , der Mitte August entdeckt wurde. Der Wurm wird nur auf Geräten mit in Thailand ansässigen IP-Adressen ausgeführt und lässt die Yokai-Backdoor fallen, die von Netskope im Dezember 2024 entdeckt wurde.
Hive0154 ist ein etablierter China-verbundener Bedrohungsakteur mit einem großen Arsenal an Malware, konsistenten Techniken und gut dokumentierter Aktivität in den letzten Jahren. Die Gruppe besteht aus mehreren Subclustern und verübt Cyberangriffe gegen öffentliche und private Unternehmen, darunter Denken, politische Gruppen, Regierung und Einzelpersonen. Die Beobachtung von X-Force bei der Verwendung mehrerer benutzerdefinierter Malware-Loader, Backdoors und USB-Wurmfamilien durch die Gruppe zeigt ihre fortschrittlichen Funktionen. Die Aktivitäten von Hive0154 überschneiden sich mit den öffentlich gemeldeten Bedrohungsakteuren Mustang Panda, Stately Taurus, Camaro Dragon, Twill Typhoon, Polaris und Earth Preta.
Mitte 2025 beobachtete X-Force mehrere bewaffnete Archive, die aus Singapur und Thailand auf VirusTotal hochgeladen wurden:
Dateiname | Bösartige DLL | C2-Server | Datum |
Meeting Venue Request Information.zip | Loader injiziert Pubload-Shellcode | 188.208.141[.] | 21. Mai |
Hotel Booking Request.7z | Toneshell8 | 146.70.29[.] | 03. Juli |
Cyber_Safety_ | Toneshell8 | 146.70.29[.] | 30. Juli |
TNLA နှင့် အခြားတော်လှန်ရေးအင်အားစုများ.rar ((übersetzt aus dem Myanmarischen: „TNLA und andere revolutionäre Kräfte“) | Toneshell8 | 146.70.29[.] | 30. Juli |
Scan(08-02-205).zip | Toneshell8 | 146.70.29[.] | 05. August |
Notes.rar | Loader injiziert Pubload-Shellcode | 188.208.141[.] | 21. August |
CallNotes.zip | Loader, der ToneShell7-Shellcode einfügt | 146.70.29[.] | 04. September |
Hive0154 wurde beobachtet, wie es einen neuen Loader verwendete, um entweder Pubload oder ToneShell7 reflektierend einzufügen und die stärker verschleierte ToneShell8-Variante direkt bereitzustellen. Die neueste Pubload-Variante wurde geringfügig verändert und unterstützt nun neben dem Imitieren von TLS-Verkehr über rohes TCP auch das Herunterladen von Shellcode-Payloads via HTTP POST sowie das Simulieren von TLS-Verkehr über TCP.
Das Archiv „CallNotes.zip“, das im September entdeckt wurde, wurde über einen Link in einem PDF-Köder, der sich als das myanmarische Außenministerium ausgibt, von Box Cloud Speicher heruntergeladen:
Mitte August entdeckte X-Force außerdem SnakeDisk, eine neue USB-Wurm-Überschneidung mit früheren Tonedisk-Varianten. Der Wurm wird nur auf Geräten ausgeführt, die sich in Thailand befinden und durch deren öffentliche IP-Adresse bestimmt werden. SnakeDisk vertreibt die Yokai-Hintertür, die im Dezember 2024 von Netskope öffentlich mit mehreren anderen auf Thailand gerichteten Kampagnen in Verbindung gebracht wurde.
Da die Yokai-Hintertür schon früher gegen Thailand eingesetzt wurde, schien die Entdeckung des neuesten USB-Wurms mit den jüngsten geopolitischen Ereignissen rund um Thailand zusammenzufallen:
Die Volksrepublik China (VRC) ist traditionell ein Wohltäter für Kambodscha, liefert Waffen und investiert Milliarden in Infrastrukturprojekte. Die jüngsten geopolitischen Ereignisse könnten Hive0154 veranlasst haben, Operationen gegen Thailand einzuleiten. Die Bereitstellung des USB-Wurms SnakeDisk, der nur auf in Thailand ansässigen Rechnern ausgeführt werden kann, deutet darauf hin, dass Hive0154 möglicherweise versucht, Air-Gap-Systeme zu durchdringen, die oft in Regierungsnetzwerken eingesetzt werden.
X-Force hat die Toneshell-Version 8 erstmals im März 2025 beobachtet. Es ist im Verhalten der vorherigen Version 7 sehr ähnlich, enthält jedoch kleinere Updates, um statische Erkennung zu umgehen und die Analyse zu behindern. Die sichtbarste Veränderung ist die Einbindung von Junk-Code in die Funktionen der Malware. Diese Junk-Code-Abschnitte implementieren folgendes Verhalten:
Diese drei Codebeispiele finden sich beispielsweise in der Funktion, die alle APIs auflöst:
Die Entwickler von Toneshell8 haben sich auch dafür entschieden, den Pseudo-Zufallszahlengenerator (PRNG) durch eine benutzerdefinierte Implementierung des Linear Congruential Generator (LCG) zu ersetzen, die beispielsweise andere Konstanten verwendet:
Die PRNGs werden in Toneshell verwendet, um eine Opfer-ID, C2-Verkehrs-Verschlüsselungsschlüssel zu erzeugen und die C2-Beacon-Authentizität zu Verify. Die Implementierungen in Toneshell8-Samples unterscheiden sich stark in ihrer Qualität. Der Generator oben wird zum Beispiel von den 4 oben aufgeführten Samples verwendet und erzeugt für die meisten Samen nur 11 verschiedene Zustände.
Schließlich werden die fest codierten Antwortcodes, die an den C2-Server gesendet werden und die Bediener über den Status bestimmter Befehle informieren, nun durch Berechnung aus verschiedenen fest codierten ganzen Zahlen im Stichprobe obfuskiert.
Im Juli entdeckte X-Force eine neue Toneshell-Variante, die wir Toneshell9 nennen werden. Es enthält wichtige Aktualisierungen und weist zum Zeitpunkt der Erstellung dieses Dokuments keine Erkennungen auf VirusTotal auf (318a1ebc0692d1d012d20d306d6634b196cc387b1f4bc38f97dd437f117c7e20).
Die neue Toneshell-Variante wurde erstmals in mit Trojanern infizierten RAR-Archiven beobachtet, die die Software „USB Safely Remove“ enthielten. Die Codestruktur scheint auf einer abgespaltenen Variante vom Dezember 2024 zu basieren, die die identische C2-Konfiguration enthält.
Ähnlich wie frühere Varianten wird Toneshell9 als per Sideloading installierte DLL ausgeführt. Das präparierte RAR-Archiv enthält eine BAT-Datei, die eine legitime ausführbare Datei namens „USBSRService.exe“ mit einem Befehlszeilenargument „Einbetten“ startet. Sobald die Toneshell-DLL „EasyFuncs.dll“ in den Speicher geladen und der Export FS_RegActiveX ausgeführt wird, beginnt sie mit der Auflösung eines ersten Satzes von APIs, die für die Initialisierung benötigt werden. Nach der Analyse des Befehlszeilenargumentes „-Einbetten“ startet ToneShell seine übergeordnete ausführbare Datei in einem neuen Prozess mit dem Argument „EvtSys“. Das letztgenannte Argument löst das Hauptverhalten der bösartigen DLL aus.
Toneshell initialisiert zunächst ein neues Clientobjekt, das die folgenden Werte enthält:
Anschließend löst es den Rest der erforderlichen APIs über eine benutzerdefinierte Hash-Funktion auf und speichert die Funktionszeiger in einer separaten Struktur. Anschließend wird ein neues Ereignis namens „Windows External Module“ erstellt, das als Mutex fungiert, um zu verhindern, dass mehrere Instanzen auf demselben Rechner ausgeführt werden.
ToneShell9 ist mit mehreren Abschnitten von Junk-Code übersät, der die aktuelle Anzahl der CPU-Ticks abruft, das Ergebnis als String speichert und wieder freigibt.
Um C2-Kommunikation, Proxy-Server, Beacons und Payloads im Speicher zu verwalten und zu speichern, instanziiert Toneshell ein großes 129KB-Objekt:
Im Gegensatz zu früheren Varianten durchsucht Toneshell9 die Registrierungsstrukturen HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER und HKEY_USERS\.DEFAULT, um nach lokal konfigurierten Proxyservern zu suchen.
Wenn ein Server gefunden wird, werden sowohl das Protokoll der URL(http, https, ftp oder socks) als auch die vollständige URL als Strings in einer Liste von Objekten gespeichert.
Als nächstes speichert Toneshell seine C2-Serverdomäne und IP-Adresse in einem Vektor von Zeichenketten. Die gleiche festkodierte IP und der Port werden direkt in einem Array von SOCKADDR_IN Strukturen gespeichert. Die Malware durchläuft dann die C2-Server-Strings, löst die IP-Adresse für jeden von ihnen auf und fügt sie in das gleiche Array von SOCKADDR_IN-Strukturen ein.
Wie in früheren Varianten beobachtet, entfernt Toneshell eine Datei mit einem zufälligen 16-Byte-Opfer-GUID, das über die Windows-Funktion _rand() generiert wird:
Der GUID wird außerdem in einer Struktur zusammen mit dem Pfad der Datei und dem NetBIOS-Namen des Opfers speichern.
Die obigen Daten werden verwendet, um ein Beacon-Objekt im Speicher zu erstellen. Insbesondere führt Toneshell9 Berechnungen zum Unterschied in der Anzahl der CPU-Ticks vor und nach dem oben beschriebenen Hauptinitialisierungsverhalten durch. Dieser Wert ist normalisiert und wird wahrscheinlich verwendet, um Anomalien in der Ausführungszeit zu erkennen, die auf eine verzögerte Sandbox-Ausführung oder Debugging hinweisen könnten.
Der 0x300-Byte XOR-Schlüssel wird über _rand() erzeugt und zur Verschlüsselung der 101 Bytes Daten verwendet, beginnend bei Offset 0x300. Die oben genannten Daten sind in ein gefälschtes TLS 1.2-Anwendungsdatenpaket des folgenden Formats verpackt:
Während der Hauptschleife führt Toneshell9 eine Funktion aus, um eine Sockelverbindung zu seinem C2-Server herzustellen. Zunächst wird versucht, über die erste SOCKADDR_IN-Struktur eine Verbindung herzustellen. Wenn dies fehlschlägt, versucht die Malware, eine Socket-Verbindung über einen der Proxy-Server herzustellen, die in der Registrierung erfasst sind. Dies wird für jede der C2-Adressen versucht, d. h. für die IP-Adresse und die Domäne des oben analysierten Beispiels.
Nachdem die IP-Adresse des Proxy-Servers aufgelöst und über einen TCP-Socket verbunden wurde, setzen sie zunächst die Sende- und Empfangszeiten auf 1 Minute. Anschließend sendet es die folgende Verbindungsanfrage:
Wenn der Proxy-Server den Statuscode 2xx zurückgibt, wurde die Verbindung erfolgreich hergestellt und ist bereit für Raw TCP Tunneling. Zur Überprüfung der Verbindung mit seinem C2-Server verwendet Toneshell9 ein kurzes Handshake-Protokoll und überträgt dabei auch die IP-Adresse und den Port des Servers. Wenn der Handshake erfolgreich ist, wird das Handle zum Socket in der C2_CONNECTION-Struktur gespeichert und die Socket-Timeouts werden auf 2 Minuten gesetzt. Toneshell sendet dann den ersten Werbebeacon durch die Buchse.
Es erwartet eine ähnliche Antwort von seinem Server, der bis auf die ersten 5 Byte mit dem zuvor übertragenen XOR-Schlüssel verschlüsselt ist:
Durch die Verwendung eines bereits auf einem infizierten Gerät konfigurierten Proxys kann Toneshell effektiv in den übrigen Netzwerkverkehr integriert werden. In größeren Unternehmensumgebungen wird häufig eine Egress-Filterung erzwungen, die den Datenverkehr nur über vertrauenswürdige Gateways zulässt, wodurch die direkte C2-Kommunikation blockiert wird. Die zusätzliche Funktion von Toneshell, diese Filterung zu umgehen, ermöglicht den Betrieb in gut gesicherten Netzwerkumgebungen.
Nach Erhalt der ersten C2-Antwort startet Toneshell einen neuen Thread, der alle 30 Sekunden Heartbeat-ähnliche Antwortsignale mit dem Antwortcode 0x1 und einem zufälligen shell_id-Wert sendet. Response Beacons haben ein sehr ähnliches Format:
Toneshell9 unterstützt die folgenden Befehlscodes:
Code | Beschreibung |
2 | Überspringen Sie diesen Beacon und warten Sie, bis der nächste bearbeitet wird. |
3 | Erstellen Sie eine neue Reverse-Shell und weisen Sie sie der Shell_ID zu. |
4 | Schreiben einer Befehlszeichenfolge an die Reverse-Shell, die durch die shell_id identifiziert wird. |
5 | Schließe die Reverse-Shell, die durch die shell_id identifiziert wird. |
Ähnlich wie bei den vorherigen Varianten wird eine Reverse Shell mit anonymen Pipes eingerichtet, die mit den Handles stdin und stdout eines neuen cmd.exe-Prozesses verbunden sind. Toneshell9 unterstützt zwei aktive Reverse-Shells parallel und verwendet die folgende Struktur, um eine Shell-Verbindung zu verwalten:
Für jede Reverse-Shell wird ein neuer Thread erstellt, der regelmäßig neue Daten aus der Stdout-Pipeline überprüft und diese in einem Beacon mit Antwortcode 0x4 an den C2-Server zurücksendet. Toneshell-Operatoren können String-Daten mit dem richtigen shell_id in die Pipe schreiben und beliebige Befehle auf der Maschine ausführen. Beim Schließen einer Reverse Shell wird auch der durch parent_pid identifizierte conhost.exe-Prozess auf dem Rechner beendet.
Im August 2025 entdeckte X-Force einen zuvor unbekannten USB-Wurm, der Hive0154 zugeschrieben wurde. Die 32-Bit-DLL wurde als „01.dat“ auf VirusTotal hochgeladen. aus Thailand und bietet ähnliche Funktionen wie Toneshell9. Beide werden über DLL-Sideloading ausgeführt, wobei alle Exporte außer dem DllEntryPoint und dem Einstiegspunkt der Malware auf dieselbe Funktion verweisen, die sofort zurückkehrt. Beide verfügen außerdem über nahezu identische API-Auflösungsmechanismen, was mit fast allen Toneshell-Malware übereinstimmt. Ähnlich wie das Toneshell9-Sample liest SnakeDisk auch ein Kommandozeilenargument, um einen von zwei möglichen Ausführungspfaden auszuwählen:
Um die USB-Infektionsfunktion auszuführen, benötigt SnakeDisk eine Konfigurationsdatei, nach der es im aktuellen Verzeichnis der übergeordneten ausführbaren Datei sucht. Alle in diesem Verzeichnis gefundenen Dateien, außer solchen mit dem Namen „System Volume Information“, werden einer Liste potenzieller Konfigurationsdateien hinzugefügt. Tonedisk öffnet und liest jede Datei und testet die folgenden Bedingungen, um die Datei zu Verify, bevor mit der Entschlüsselung fortgefahren wird.
SnakeDisk entschlüsselt die Daten mit einem wahrscheinlich angepassten 2-Phasen-XOR-Algorithmus und einem 320-Byte-Schlüssel, der in einem 330-Byte-Header gespeichert ist.
Schließlich analysiert die Malware 18 Zeichenkettenwerte, die die Konfiguration der Malware definieren. X-Force konnte keine Konfigurationsdatei wiederherstellen; die Analyse von SnakeDisk ergab jedoch folgende wahrscheinliche Zwecke der Werte.
Konfigurationsfeld | Zweck |
Version | Malware-Version, mit der ermittelt wird, ob ein bereits infizierter Client mit einer aktualisierten Variante erneut infiziert werden sollte. |
mutx | Mutex-Zeichenkette. |
psd | In der analysierten Probe nicht verwendet. Möglicherweise lokales Äquivalent zu „usd“ – alle „u*“-Werte sind Datei-/Verzeichnisnamen auf dem USB-Stick nach der Bewaffnung. |
Urd | Möglicherweise „USB-Stammverzeichnis“. Name des auf dem USB-Stick erstellten Verzeichnisses, das Unterverzeichnisse enthält. |
uud | Möglicherweise „USB-Benutzerverzeichnis“. Verzeichnisname unter <urd>, der die Originaldateien des Benutzers vom USB-Stick enthält. |
usd | Möglicherweise „USB-Staging-Verzeichnis“. Verzeichnisname unter <urd>, in dem verschiedene bösartige Komponenten von SnakeDisk gespeichert werden. |
pnex | Möglicherweise „ausführbare Datei mit dem Namen des übergeordneten Dateisystems“. Dateiname einer Datei, die sich während der Ausführung im aktuellen Verzeichnis von SnakeDisk befindet. |
pndl | Möglicherweise „übergeordneter Name DLL“. Dateiname einer Datei, die sich während der Ausführung im aktuellen Verzeichnis von SnakeDisk befindet. |
pnen | Möglicherweise „Elternname verschlüsselt“. Dateiname einer Datei, die sich während der Ausführung im aktuellen Verzeichnis von SnakeDisk befindet. |
pnendl | Möglicherweise „verschlüsselte DLL mit übergeordnetem Namen“. Dateiname einer Datei, die sich während der Ausführung im aktuellen Verzeichnis von SnakeDisk befindet. |
unex | Möglicherweise „USB-Name-ausführbare Datei“. Dateiname einer Datei, die von <pnex> auf den USB-Stick kopiert wurde. |
undl | Möglicherweise „USB-Name-DLL“. Dateiname einer Datei, die von <pndl> auf den USB-Stick kopiert wurde. |
unen | Möglicherweise „USB-Name verschlüsselt“. Dateiname einer Datei, die von <pnen> auf den USB-Stick kopiert wurde. |
unendl | Möglicherweise „USB-Name verschlüsselte DLL“. Dateiname einer Datei, die von <pnendl> auf den USB kopiert wurde. |
unendl_org | Dateiname einer (wahrscheinlich DLL-)Datei, die von <pnendl> in das Root-Verzeichnis des USBs kopiert und über Dateiattribute versteckt wurde. |
unconf | Der Dateiname der SnakeDisk-Konfiguration wurde auf den USB-Stick übertragen. |
regkey | Bezieht sich möglicherweise auf einen Persistenzmechanismus in der Registry. In der analysierten Probe nicht verwendet. |
schkey | Möglicherweise hängt dies mit einem Mechanismus zur Aufrechterhaltung geplanter Aufgaben zusammen. In der analysierten Probe nicht verwendet. |
Nach erfolgreichem Einlesen der Konfigurationsdatei versucht SnakeDisk zu bestätigen, dass es aktuell auf einem in Thailand ansässigen Rechner ausgeführt wird. Es sendet eine HTTP-GET-Anfrage an http://ipinfo[.]io/json und prüft, ob das Feld „Land“ entweder mit „THA“ oder „TH“ übereinstimmt. Wenn das stimmt, wird die Ausführung fortgeführt.
Bemerkenswert ist, dass die Ausführung auch fortgeführt wird, wenn ein Fehler beim Auflösen von APIs oder während der Netzwerkkommunikation auftritt.
SnakeDisk stellt dann sicher, dass es nur in einer einzigen Instanz ausgeführt wird, indem versucht wird, einen Mutex "Global\\<mutx config value>" zu öffnen. Wenn der Mutex bereits existiert, verlässt die Malware; ansonsten erstellt sie den Mutex über CreateMutexW.
Um alle bereits angeschlossenen USB-Laufwerke zu infizieren, beginnt SnakeDisk damit, alle möglichen Laufwerksbuchstaben von A-Z durchzugehen. Es öffnet einen Griff für die physische Lautstärke, wie "\\. \ A: " und sendet den IO-Steuercode IOCTL_STORAGE_GET_HOTPLUG_INFO (0x2D0C14) an das Gerät. Wenn es sich bei dem Gerät gemäß der zurückgegebenen STORAGE_HOTPLUG_INFO-Struktur um ein Hotplug-Gerät handelt, wird ein neuer Thread gestartet, um dieses Laufwerk zu infizieren.
Nachdem alle Laufwerksbuchstaben durchlaufen wurden, pausiert SnakeDisk 5 Sekunden lang und registriert dann eine neue Fensterklasse "TestClassName" und erstellt ein entsprechendes Fenster "TestWindowName". Um Meldungen vom Betriebssystem abzurufen, erstellt die Funktion eine Windows-Meldungsschleife mit GetMessageW und sendet die Meldungen über TranslateMessage und DispatchMessageW an die Fensterprozedur der Malware. Die Schleife wird nur beim Empfang einer WM_CAP_PAL_OPEN (0x450)-Nachricht verlassen. Die bösartige Fensterklasse verweist auf eine benutzerdefinierte Prozedur, die auf die Nachricht WM_DEVICECHANGE (0x219) und insbesondere auf die Ereignisse DBT_DEVICEARRIVAL (0x8000) und DBT_DEVICEREMOVECOMPLETE (0x8004) wartet.
Wenn eine solche Nachricht empfangen wird, z. B. wenn ein USB-Gerät an den infizierten Computer angeschlossen wird, verwendet die Funktion das Feld „dbcv_unitmask“ der DEV_BROADCAST_Volume-Struktur, um den Laufwerksbuchstabe des entsprechenden Geräts zu bestimmen. Bei neu angeschlossenen Geräten wird ein neuer Thread gestartet, um das Laufwerk zu infizieren. Wenn SchlangenDisk erkennt, dass ein Gerät entfernt wurde, startet es einen Thread, der die eingebettete Nutzlast ablegt und ausführt. Dadurch wird derselbe Ausführungspfad eingeleitet, den die Ausführung der Schlangen-DLL mit dem Befehlszeilenargument „-Hope“ verursacht hätte.
Der Thread zur Infizierung eines erkannten USB-Geräts beginnt mit der Suche nach einer vorhandenen Konfigurationsdatei auf dem Laufwerk, um festzustellen, ob es bereits infiziert wurde. Es versucht, eine Konfiguration aus jeder Datei mit einem .dat zu entschlüsseln und zu parsen oder .cd Erweiterung. Wenn eine Konfiguration geparst wird, vergleicht das Malware die Versionsnummer des bereits infizierten Laufwerks mit der Version ihrer eigenen Konfiguration und infiziert nur Laufwerke mit älteren SnakeDisk-Versionen darauf.
SnakeDisk startet dann einen weiteren Thread, um die bestehenden Dateien auf dem USB in ein neues Unterverzeichnis zu verschieben. Indem die Malware im Wesentlichen die Dateien versteckt, die ein Benutzer auf seinem USB-Stick erwartet, erhöht sie die Wahrscheinlichkeit, dass ein Opfer glaubt, der USB-Stick sei noch nicht geöffnet worden, und versehentlich auf die präparierte ausführbare Datei auf einem neuen Rechner klickt, der denselben Namen wie das Gerät trägt. Nach der Ausführung würde der bösartige Launcher die Dateien der Benutzer zurückkopieren, um jeden Verdacht zu vermeiden. Der Pfad, der die Benutzerdaten auf einem infizierten Gerät enthält, wird aus den Konfigurationswerten wie folgt erstellt:
Das Malware kann für die Ausführung zwei verschiedene Mechanismen verwenden; jede wird in einem eigenen Thread gestartet. Die erste Methode verwendet SHFIleOperationW , um jede Datei zu verschieben, und liest bei jedem Vorgang außerdem 32 Bytes aus einer Datei "C:\\Windows\\Tmp\\msd.log", die in eine Datei "C:\\ProgramData\\app.log" geschrieben werden. bevor letzteres gelöscht wird. Der Zweck dieses Verhaltens ist unklar.
Während der Thread läuft, prüft die Malware regelmäßig 30 Sekunden lang, ob er erfolgreich abgeschlossen wurde, bevor ein zweiter Thread gestartet wird. Der zweite Thread verwendet robocopy, um die Dateien zu verschieben, und führt den folgenden Befehl in einem neuen Prozess aus:
Beide Dateiverschiebungen schließen die mit SnakeDisk manipulierten Dateien und die Datei „System Volume Information“ aus, die im Stammverzeichnis des USB-Datenträgers verbleiben sollen. Nachdem Sie den obigen Befehl ausgeführt haben, wird derselbe Befehl erneut mit zwei zusätzlichen Flags " /IS " und " /XO " gestartet, um dieselben Dateien einzuschließen und Quellverzeichnisdateien auszuschließen, die älter als das Ziel sind.
Nachdem bereits vorhandene Dateien auf den USB-Stick verschoben wurden, kopiert SnakeDisk seine eigenen Payloads aus seinem aktuellen Verzeichnis auf den USB-Stick. Die folgenden Dateien, wie in der Konfiguration angegeben, werden über CopyFileW kopiert, jeweils in einem neuen Thread:
Der Dateiname der EXE-Datei im Stammverzeichnis des USB-Laufwerks wird auf den Datenträgernamen des USB-Geräts gesetzt oder einfach auf „USB.exe“, falls dieser leer ist. SnakeDisk setzt außerdem die Attribute SYSTEM und HIDDEN für die nach<drive_letter> ":\<unendl_org>" kopierte Datei. Alle Verzeichnisse auf dem USB-Stick tragen diese Attribute ebenfalls, wodurch effektiv alles außer der ausführbaren Datei verborgen wird. Obwohl X-Force keine der anderen Dateien abgerufen hat, nutzten frühere USB-Würmer dieselbe Technik, um Opfer dazu zu locken, auf die ausführbare Datei zu klicken, wodurch eine DLL-Datei geladen („sideload“) wurde, um die Infektion auszulösen. Der Dateiname dieser bösartigen DLL ist wahrscheinlich im Konfigurationswert „unendl_org“ gespeichert. Zu guter Letzt schreibt SnakeDisk seine Konfiguration in eine neue Datei auf dem USB-Stick mit dem Namen aus dem Wert „unconf“.
Der SnakeDisk-Thread, der für das Ablegen und Ausführen seiner eingebetteten Nutzlast zuständig ist, wird gestartet, wenn das Entfernen eines USB-Geräts erkannt wird, oder zu Beginn der Ausführung von SnakeDisk über das Befehlszeilenargument „-hope“.
Zunächst liest der Thread eine Markierungsdatei „vm.ini“ in seinem Verzeichnis und vergleicht den Inhalt mit seinem eigenen aktuellen Pfad. Diese Datei wird auch nach erfolgreichem Ablegen und Ausführen der Payloads geschrieben und zeigt an, ob ein Opfer bereits mit der eingebetteten Payload von SnakeDisk infiziert wurde. Wenn die Pfade übereinstimmen, werden keine Nutzlasten abgeworfen und der Thread endet.
Nach der ersten Überprüfung beginnt SnakeDisk, eine Reihe von Nutzlasten in das Verzeichnis „C:\Users\Public\“ zu legen. Jede Datei wird im Speicher aus unmittelbaren Werten in großen Funktionen zwischen 0,6 und 3,3 MB erstellt.
Die Nutzlasten werden dann mittels einer einfachen XOR-Operation entschlüsselt, bevor sie als Dateien verworfen werden, um:
Diese Dateien werden in Dreiergruppen miteinander verkettet, um die beiden finalen Nutzlasten über folgende Befehle zu erzeugen:
Der Dateiname der EXE-Datei wird aus 10 zufällig ausgewählten Großbuchstaben und Zahlen gebildet. Nach der Verkettung werden die Dateien gelöscht.
Schließlich wird die ausführbare Datei in einem neuen Prozess mit einem fest codierten Befehlszeilenargument gestartet:
Wenig überraschend ist die EXE (bb5bb82e5caf7d4dbbe878b75b23f793a5f3c5ca6dba70d8be447e8c004d26ce) eine legitime und signierte ausführbare Datei (acwebbrowser.exe), die die bösartige libcef.dll während der Ausführung lädt („sideload“).
Die DLL-Payload wurde als Yokai-Backdoor identifiziert, worüber Netskope im Dezember 2024 berichtete. Bei der Ausführung prüft die Malware zunächst das Argument „-project-mod“ und stellt dann die Persistenz über eine geplante Aufgabe her, wenn der Benutzer kein Mitglied der Administratorgruppe ist:
Anschließend wird ein neuer Mutex „k1tpdvivh74fo1et725okr1c1“ erstellt und eine interne Konfigurationsstruktur initialisiert. Die von SnakeDisk veröffentlichte Variante enthält die Versionszeichenfolge „1.0.0“ und kontaktiert einen fest codierten C2-Server über HTTP-POST-Anfragen:
Wie in Netskopes Analyse beschrieben, wird Yokai verwendet, um eine Reverse-Shell durch anonyme Pipes zu erstellen, die es Operatoren ermöglicht, beliebige Befehle auf dem infizierten Rechner auszuführen.
Interessanterweise weist Yokai Überschneidungen mit anderen Backdoor-Familien auf, die Hive0154 zugeschrieben werden, wie beispielsweise Pubload/Pubshell und Toneshell. Obwohl es sich bei diesen Familien eindeutig um unterschiedliche Malware-Arten handelt, weisen sie im Großen und Ganzen die gleiche Struktur auf und verwenden ähnliche Techniken, um eine Reverse-Shell mit ihrem C2-Server herzustellen.
Die X-Force-Analyse zeigte ebenfalls starke Überschneidungen zwischen SnakeDisk und Tonedisk. Im Laufe der Jahre wurden mehrere USB-Wurmfamilien mit Hive0154 in Verbindung gebracht. Varianten, die in ihrer Implementierung stark mit der Toneshell-Familie verwandt sind, werden von X-Force als Tonedisk geführt. Bisher wurden drei große Tonedisk-Versionen (A, B und C) identifiziert. Jede der Tonedisk-Versionen ist eine Suite verschiedener bösartiger Komponenten, die die gesamte Funktionalität des USB-Wurms ausmachen. Zu diesen Komponenten gehören Launcher, Loader, Spreader, verschlüsselte Dateien, Installationsprogramme und Backdoors.
SnakeDisk überschneidet sich speziell mit der ToneDisk A-Variante, die ebenfalls Mitte 2023 von Checkpoint als WispRider berichtet wurde. Die USB-Propagationsmechanismen beider Malware, API-Hashing und Konfigurationsdateien weisen mehrere Ähnlichkeiten auf, die mit der bekannten Tendenz von Hive0154-Subclustern übereinstimmen, Malware untereinander zu teilen und neu zu verwenden.
X-Force verfolgt die Aktivität in diesem Bericht unter dem Hive0154-Dachcluster, der teilweise mit Aktivitäten überlappt, die als Mustang Panda, Stately Taurus, Camaro Dragon, Twill Typhoon, Polaris, TEMP.Hex und Earth Preta veröffentlicht wurden. Diese Gruppe scheint ein beträchtlich großes Malware-Ökosystem zu unterhalten, bei dem es häufig Überschneidungen sowohl im Schadcode als auch in den Angriffstechniken und den Zielen gibt. Innerhalb des größeren Umbrella-Clusters trennt X-Force mindestens drei Untercluster von Aktivitäten mit geringer Sicherheit, wobei jeder Cluster mit einem der zentralen Malware-Stämme PlugX, Toneshell und Pubload assoziiert ist. Bemerkenswerterweise ist jede Malware-Variante mit einem anderen USB-Wurm-Framework und einer oder mehreren zugehörigen Loader-Malware-Varianten gekoppelt, die sich häufiger ändern. Derselbe Loader kann innerhalb desselben Zeitraums für verschiedene Nutzdaten wie Toneshell oder Pubload verwendet werden. Es ist jedoch wichtig zu beachten, dass die Cluster der Aktivitäten nicht automatisch signalisiert, dass sie als separate Untergruppen agieren.
Aktivitäten im Zusammenhang mit der Nutzung von SnakeDisk und der Yokai-Hintertür deuten möglicherweise auf einen weiteren Untercluster von Hive0154 hin. Derzeit scheint es hauptsächlich auf Thailand ausgerichtet zu sein, wie aus IP-Geolokalisierungsprüfungen in SnakeDisk- und Netskope-Berichten ersichtlich ist.
Hive0154 ist nach wie vor ein äußerst fähiger Bedrohungsakteur mit mehreren aktiven Subclustern und häufigen Entwicklungszyklen. X-Force geht mit großer Zuversicht davon aus, dass mit China verbundene Gruppen wie Hive0154 ihr großes Malware-Arsenal fortfahren und öffentliche und private Unternehmen weltweit ins Visier nehmen werden. Die Malware, die im obigen Bericht beschrieben wird, befindet sich wahrscheinlich noch in einer frühen Entwicklungsphase, so dass Verteidiger Erkennung einsetzen können, bevor sie weit verbreitet sind. Organisationen, die von Hive0154-Spionage bedroht sind, sollten ihre defensiven Sicherheitsvorkehrungen beibehalten und hinsichtlich der in diesem Bericht genannten Techniken wachsam bleiben sowie die folgenden Empfehlungen beachten:
Indikator | Art des Indikators | Kontext |
f8b28cae687bd55a148d363d58f1 | SHA256 | Waffenfähiges Archiv, das Toneshell8 liefert |
8132beeb25ce7baed0b561922d26 | SHA256 | Waffenfähiges Archiv, das Toneshell8 liefert |
d1466dca25e28f0b7fae71d5c2abc0 | SHA256 | Waffenfähiges Archiv, das Toneshell8 liefert |
1272a0853651069ed4dc505007e85 | SHA256 | Waffenfähiges Archiv, das Toneshell8 liefert |
b8c31b8d8af9e6eae15f30019e39c | SHA256 | Waffenfähiges Archiv, das Toneshell7 liefert |
7087e84f69c47910fd39c3869a70 | SHA256 | Waffengestütztes Archiv, das Pubload liefert |
38fcd10100f1bfd75f8dc0883b0c | SHA256 | Waffengestütztes Archiv, das Pubload liefert |
69cb87b2d8ee50f46dae791b5a0 | SHA256 | PDF mit Download-URL für bewaffnetes Archiv |
564a03763879aaed4da8a8c1d60 | SHA256 | Lader injiziert Toneshell7 |
e4bb60d899699fd84126f9fa0df | SHA256 | Loader injizierte Pubload |
c2d1ff85e9bb8feb14fd015dceee1 | SHA256 | Loader injizierte Pubload |
188.208.141[.]196 | IPv4 | C2-Server veröffentlichen |
bdbc936DDC9234385317c4ee83 | SHA256 | ToneShell8 Backdoor |
f0fec3b271b83e23ed7965198f3b | SHA256 | ToneShell8 Backdoor |
e7b29611c789a6225aebbc9fee37 | SHA256 | ToneShell8 Backdoor |
9ca5b2cbc3677a5967c448d9d21 | SHA256 | ToneShell8 Backdoor |
146.70.29[.]229 | IPv4 | Toneshell7/Toneshell8 C2-Server |
318a1ebc0692d1d012d20d306 | SHA256 | ToneShell9 Backdoor |
0d632a8f6dd69566ad98db56 | SHA256 | Waffenfähiges Archiv, das Toneshell9 liefert |
39e7bbcceddd16f6c4f2fc2335a | SHA256 | Waffenfähiges Archiv, das Toneshell9 liefert |
05eb6a06b404b6340960d7a6 | SHA256 | Loader mit ToneShell-Fork, der als Basis für ToneShell9 diente |
123.253.34[.]44 | IPv4 | ToneShell9 C2 Server |
www.slickvpn[.]com | Domäne | ToneShell9 C2 Server |
dd694aaf44731da313e4594d | SHA256 | SnakeDisk USB-Wurm |
bb5bb82e5caf7d4dbbe878b7 | SHA256 | Die harmlose EXE-Payload von SnakeDisk wird für das DLL-Sideloading von Yokai verwendet. |
35bec1d8699d29c27b66e564 | SHA256 | Yokai Backdoor DLL |
http://118.174.183[.]89/kptinfo | URL | Yokai C2-Server |
IBM X-Force Premier Threat Intelligence ist nun von Filigran in OpenCTI integriert und liefert umsetzbare Bedrohungsinformationen zu dieser Bedrohungsaktivität und mehr. Erhalten Sie Erkenntnisse zu Bedrohungsakteuren, Malware und Branchenrisiken. Installieren Sie den X-Force OpenCTI Connector, um die Erkennung und Reaktion zu verbessern und Ihre Cybersicherheit mit dem Know-how von IBM X-Force zu stärken. Erhalten Sie noch heute eine 30-tägige X-Force Premier Threat Intelligence-Studie!