ESET-Forscher stellen die Analyse eines Angriffs vor, der von einem bisher unbekannten, mit China verbündeten Bedrohungsakteur durchgeführt wurde. Diesen nennen wir Blackwood und wir nehmen an, dass er mindestens seit 2018 aktiv ist. Die Angreifer liefern ein ausgeklügeltes Implantat, das wir NSPX30 genannt haben, durch Adversary-in-the-Middle (AitM)-Angriffe, die Update-Anfragen von legitimer Software kapern.
Die wichtigsten Punkte in diesem Blogpost:
- Wir haben entdeckt, dass das NSPX30-Implantat über die Aktualisierungsmechanismen von legitimer Software wie Tencent QQ, WPS Office und Sogou Pinyin bereitgestellt wird.
- Wir haben das Implantat bei gezielten Angriffen auf chinesische und japanische Unternehmen sowie auf Einzelpersonen in China, Japan und dem Vereinigten Königreich entdeckt.
- Unsere Untersuchungen haben die Entwicklung von NSPX30 bis zu einer kleinen Backdoor aus dem Jahr 2005 zurückverfolgt, die wir Project Wood genannt haben und die dazu dient, Daten von ihren Opfern zu sammeln.
- NSPX30 ist ein mehrstufiges Implantat, das aus mehreren Komponenten besteht, darunter ein Dropper, ein Installer, Loader, ein Orchestrator und eine Backdoor. Für die beiden letztgenannten Komponenten gibt es jeweils eigene Plugins.
- Das Implantat wurde entwickelt, um den Angreifern die Möglichkeit zu geben, Pakete abzufangen, so dass die NSPX30-Betreiber ihre Infrastruktur verbergen können.
- NSPX30 ist auch in der Lage, sich selbst in mehreren chinesischen Antimalware-Lösungen in die Whitelist einzutragen.
- Wir führen diese Aktivitäten auf eine neue APT-Gruppe zurück, der wir den Namen Blackwood gegeben haben.
Blackwood-Profil
Blackwood ist eine mit China verbündete APT-Gruppe, die seit mindestens 2018 aktiv ist und Cyberspionage-Operationen gegen chinesische und japanische Personen und Unternehmen durchführt. Blackwood ist in der Lage, Adversary-in-the-Middle-Angriffe durchzuführen, um das von uns als NSPX30 bezeichnete Implantat über Updates legitimer Software einzuschleusen, und den Standort seiner Befehls- und Kontrollserver zu verbergen, indem es den vom Implantat erzeugten Datenverkehr abfängt.
Überblick über die Kampagne
Im Jahr 2020 wurde auf einem Zielsystem in China ein Anstieg bösartiger Aktivitäten festgestellt. Der Rechner war zu einem "Bedrohungsmagneten" geworden, da wir Versuche von Angreifern feststellten, Malware-Toolkits zu verwenden, die mit verschiedenen APT-Gruppen in Verbindung gebracht werden: Evasive Panda, LuoYu und ein dritter Bedrohungsakteur, den wir als LittleBear identifizieren.
Auf diesem System entdeckten wir auch verdächtige Dateien, die nicht zu den Toolkits dieser drei Gruppen gehörten. Dies veranlasste uns, ein Implantat zu untersuchen, das wir NSPX30 nannten. Hierbei konnten wir seine Entwicklung bis ins Jahr 2005 zurückverfolgen.
Laut der ESET-Telemetrie wurde das Implantat auf einer kleinen Anzahl von Systemen entdeckt. Zu den Opfern gehören:
- nicht identifizierte Personen in China und Japan,
- eine nicht identifizierte chinesisch sprechende Person, die mit dem Netzwerk einer renommierten öffentlichen Forschungsuniversität im Vereinigten Königreich verbunden war,
- ein großes Produktions- und Handelsunternehmen in China und
- das Büro eines japanischen Unternehmens aus dem Bereich Technik und Fertigung in China.
Wir haben auch beobachtet, dass die Angreifer versuchen, die Systeme erneut zu kompromittieren, wenn der Zugang verloren geht.
Abbildung 1 zeigt die geografische Verteilung der Blackwood-Ziele anhand der ESET-Telemetriedaten.
NSPX30-Entwicklung
Während unserer Untersuchung des NSPX30-Implantats konnten wir seine Entwicklung bis zu einem frühen Vorläufer zurückverfolgen - einer einfachen Backdoor, die wir Project Wood genannt haben. Das älteste Sample von Project Wood, das wir finden konnten, wurde 2005 kompiliert und scheint als Codebasis für die Erstellung mehrerer Implantate verwendet worden zu sein. Ein solches Implantat, aus dem NSPX30 hervorging, wurde von seinen Autoren im Jahre 2008 DCM genannt.
Abbildung 2 zeigt eine Zeitleiste dieser Entwicklungen, die auf unserer Analyse von Samples in unserer Sammlung und ESET-Telemetrie sowie öffentlicher Dokumentation beruht. Die hier dokumentierten Ereignisse und Daten geben jedoch nur ein unvollständiges Bild von fast zwei Jahrzehnten der Entwicklung und der böswilligen Aktivitäten einer unbekannten Anzahl von Bedrohungsakteuren wieder.
In den folgenden Abschnitten beschreiben wir einige unserer Erkenntnisse zu Project Wood, DCM und NSPX30.
Project Wood
Ausgangspunkt für die Entwicklung dieser Implantate ist eine kleine Backdoor, die am 9. Januar 2005 kompiliert wurde, wie aus den Zeitstempeln im PE-Header ihrer beiden Komponenten - dem Loader und der Backdoor - hervorgeht. Letztere hat die Fähigkeit, System- und Netzwerkinformationen zu sammeln sowie Tastatureingaben aufzuzeichnen und Screenshots anzufertigen.
Wir haben die Backdoor Project Wood genannt, basierend auf einem wiederkehrenden Mutex-Namen, wie in Abbildung 3 dargestellt.
Zeitstempel für die Kompilierung sind unzuverlässige Indikatoren, da sie von Angreifern manipuliert werden können. Daher haben wir in diesem speziellen Fall zusätzliche Datenpunkte berücksichtigt. Zunächst die Zeitstempel aus dem PE-Header der Loader- und Backdoor-Samples - siehe Tabelle 1. Die Kompilierungszeit der beiden Komponenten unterscheidet sich nur um 17 Sekunden.
Tabelle 1. Zeitstempel der PE-Kompilierung in den Komponenten des Samples von 2005
SHA-1 |
Filename |
PE compilation timestamp |
Description |
9A1B575BCA0DC969B134 |
MainFuncOften.dll |
2005-01-09 08:21:22 |
Project Wood backdoor. The timestamp from the Export Table matches the PE compilation timestamp. |
834EAB42383E171DD6A4 |
N/A |
2005-01-09 08:21:39 |
The Project Wood loader contains the backdoor embedded as a resource. |
Der zweite Datenpunkt stammt aus dem Dropper-Sample, das mit UPX komprimiert wurde. Dieses Tool fügt seine Version (Abbildung 4 ) in die resultierende komprimierte Datei ein - in diesem Fall die UPX-Version 1.24, die 2003 veröffentlicht wurde, also vor dem Kompilierungsdatum des Samples.
Der dritte Datenpunkt sind die gültigen Metadaten aus den PE Rich Headers (Abbildung 5), die darauf hinweisen, dass das Sample mit Visual Studio 6.0 kompiliert wurde, das 1998, also vor dem Kompilierungsdatum des Samples, veröffentlicht wurde.
Wir halten es für unwahrscheinlich, dass jeweils die Zeitstempel, die Rich-Header-Metadaten und die UPX-Version von den Angreifern manipuliert wurden.
Öffentliche Dokumentation
- Laut einem vom SANS Institute im September 2011 veröffentlichten technischen Dokument wurde eine nicht benannte und nicht zugeordnete Backdoor (Project Wood) verwendet, um eine politische Persönlichkeit aus Hongkong über Spearphishing-E-Mails anzugreifen.
- Im Oktober 2014 veröffentlichte G DATA einen Bericht über eine Kampagne mit dem Namen Operation TooHash, die seitdem der APT-Gruppe Gelsemium zugeschrieben wird. Das von G DATA als DirectsX bezeichnete Rootkit lädt eine Variante der Project Wood-Backdoor (siehe Abbildung 6) mit einigen Funktionen, die auch in DCM und später in NSPX30 zu finden sind, wie z. B. die Möglichkeit, sich selbst in die Whitelists von Cybersicherheitsprodukten einzutragen (siehe Tabelle 4).
DCM alias Dark Specter
Das frühe Projekt Wood diente als Codebasis für mehrere Projekte; eines davon ist ein Implantat, das von seinen Autoren DCM genannt wird (siehe Abbildung 7).
Der Bericht von Tencent aus dem Jahr 2016 beschreibt eine weiterentwickelte DCM-Variante, die sich auf die AitM-Fähigkeiten der Angreifer stützt, um ihre Opfer zu kompromittieren, indem sie das DCM-Installationsprogramm als Software-Update bereitstellt und Daten über DNS-Anfragen an legitime Server exfiltriert. Das letzte Mal, dass wir DCM bei einem Angriff beobachtet haben, war im Jahr 2018.
Öffentliche Dokumentation
DCM wurde erstmals 2012 von dem chinesischen Unternehmen Jiangmin dokumentiert, obwohl es zu diesem Zeitpunkt noch unbenannt war, und wurde später von Tencent im Jahr 2016 als Dark Specter bezeichnet.
NSPX30
Das älteste Sample von NSPX30, die wir gefunden haben, wurde am 6. Juni 2018 erstellt. NSPX30 weist eine andere Komponentenkonfiguration als DCM auf, da sein Betrieb in zwei Stufen aufgeteilt wurde und sich vollständig auf die AitM-Fähigkeit des Angreifers stützt. Der Code von DCM wurde in kleinere Komponenten aufgeteilt.
Wir haben das Implantat nach PDB-Pfaden benannt, die in Plugin-Samples gefunden wurden:
Z:\Workspace\mm\32\NSPX30\Plugins\plugin\b001.pdb
Z:\Workspace\Code\MM\X30Pro\trunk\MM\Plugins\hookdll\Release\hookdll.pdb
Wir glauben, dass sich NSP auf seine Persistenztechnik bezieht: Die persistente Loader-DLL, die auf der Festplatte den Namen msnsp.dll
trägt, heißt intern mynsp.dll
(gemäß den Daten in der Exporttabelle), wahrscheinlich weil sie als Winsock-Namespace-Provider (NSP) installiert ist.
NSPX30 wurde unseres Wissens nach vor dieser Veröffentlichung nicht öffentlich dokumentiert.
Technische Analyse
Mithilfe der ESET-Telemetrie haben wir festgestellt, dass Rechner kompromittiert werden, wenn legitime Software versucht, Updates von legitimen Servern über das (unverschlüsselte) HTTP-Protokoll herunterzuladen. Zu den gekaperten Software-Updates gehören solche für beliebte chinesische Software wie Tencent QQ, Sogou Pinyin und WPS Office.
Abbildung 8 veranschaulicht die Ausführungskette, wie sie in der ESET-Telemetrie zu sehen ist.
In Tabelle 2 finden Sie ein Beispiel für eine URL und die IP-Adresse, zu der die Domäne auf dem System des Benutzers zum Zeitpunkt des Downloads aufgelöst wurde.
Tabelle 2. Eine beobachtete URL, die IP-Adresse des Servers und der Prozessname einer legitimen Downloader-Komponente
URL |
First seen |
IP address |
ASN |
Downloader |
http://dl_dir.qq[.]com/ |
2021‑10‑17 |
183.134.93[.]171 |
AS58461 (CHINANET) |
Tencentdl.exe |
Laut ESET-Telemetrie und passiven DNS-Informationen sind die IP-Adressen, die in anderen Fällen beobachtet wurden, mit Domänen von legitimen Softwareunternehmen verbunden. Wir haben bis zu mehreren Millionen von Verbindungen zu einigen von ihnen registriert, und wir haben gesehen, dass legitime Softwarekomponenten von diesen IP-Adressen heruntergeladen wurden.
Hypothese des Netzwerkimplantats
Wie genau die Angreifer in der Lage sind, NSPX30 als bösartige Updates bereitzustellen, ist uns noch nicht bekannt, da wir das Tool, mit dem die Angreifer ihre Ziele zunächst kompromittieren können, noch nicht entdeckt haben.
Aufgrund unserer eigenen Erfahrungen mit Bedrohungsakteuren aus China, die diese Fähigkeiten aufweisen (Evasive Panda und TheWizards), sowie der jüngsten Untersuchungen zu Router-Implantaten, die BlackTech und Camaro Dragon (auch bekannt als Mustang Panda) zugeschrieben werden, vermuten wir, dass die Angreifer ein Netzwerkimplantat in den Netzwerken der Opfer einsetzen - möglicherweise auf anfälligen Netzwerkgeräten wie Routern oder Gateways.
Die Tatsache, dass wir keine Hinweise auf eine Umleitung des Datenverkehrs über DNS gefunden haben, könnte darauf hindeuten, dass das hypothetische Netzwerkimplantat, wenn es unverschlüsselten HTTP-Verkehr im Zusammenhang mit Updates abfängt, mit dem Dropper des NSPX30-Implantats in Form einer DLL, einer ausführbaren Datei oder eines ZIP-Archivs, das die DLL enthält, antwortet.
Wir haben bereits erwähnt, dass das NSPX30-Implantat die Fähigkeit der Angreifer zum Abfangen von Paketen nutzt, um seine C&C-Infrastruktur zu anonymisieren. In den folgenden Unterabschnitten wird beschrieben, wie sie dies tun.
HTTP Interception
Um die Backdoor herunterzuladen, führt der Orchestrator eine HTTP-Anfrage (Abbildung 9) an die Baidu-Website - eine legitime chinesische Suchmaschine und ein Software-Anbieter - mit einem besonderen User-Agent
aus, der sich als Internet Explorer auf Windows 98 ausgibt. Die Antwort des Servers wird in einer Datei gespeichert, aus der die Backdoor-Komponente extrahiert und in den Speicher geladen wird.
Die Request-URI
ist benutzerdefiniert und enthält Informationen über den Orchestrator und das kompromittierte System. Bei nicht abgefangenen Anfragen wird bei einer solchen Anfrage an den legitimen Server ein 404-Fehlercode zurückgegeben. Ein ähnliches Verfahren wird von der Backdoor verwendet, um Plugins herunterzuladen, wobei eine etwas andere Request-URI
verwendet wird.
Das Netzwerk-Implantat muss also einfach nach HTTP-GET-Anfragen an www.baidu.com
mit diesem bestimmten alten User-Agent
suchen und die Request-URI
analysieren, um festzustellen, welche Payloads gesendet werden müssen.
UDP Interception
Während der Initialisierung erstellt die Backdoor einen passiven UDP-Listening-Socket und lässt das Betriebssystem den Port zuweisen. Für Angreifer, die passive Backdoors verwenden, kann es zu Komplikationen kommen: zum Beispiel, wenn Firewalls oder Router mit NAT die eingehende Kommunikation von außerhalb des Netzes verhindern. Außerdem muss der Controller des Implantats die genaue IP-Adresse und den Port des kompromittierten Computers kennen, um die Backdoor zu kontaktieren.
Wir glauben, dass die Angreifer das letztgenannte Problem gelöst haben, indem sie denselben Port, an dem die Backdoor auf Befehle wartet, auch für die Exfiltration der gesammelten Daten verwendet haben, so dass das Netzwerkimplantat genau weiß, wohin es die Pakete weiterleiten soll. Das Datenexfiltrationsverfahren beginnt standardmäßig, nachdem der Socket erstellt wurde, und besteht aus DNS-Abfragen für die Domäne microsoft.com
. Die gesammelten Daten werden an das DNS-Paket angehängt. Abbildung 10 zeigt eine Aufnahme der ersten DNS-Abfrage, die von der Backdoor gesendet wird.
Die erste DNS-Abfrage wird an 180.76.76[.]11:53
gesendet (ein Server, der zum Zeitpunkt der Erstellung dieses Dokuments keinen DNS-Dienst anbietet). Bei jeder der folgenden Abfragen wird die Ziel-IP-Adresse in die nachfolgende Adresse geändert, wie in Abbildung 11 dargestellt.
Der Netzwerkbereich 180.76.76.0/24
gehört Baidu, und interessanterweise bieten einige der Server an diesen IP-Adressen DNS-Dienste an, z. B. 180.76.76.76
, der öffentliche DNS-Dienst von Baidu.
Wir glauben, dass das Netzwerkimplantat die abgefangenen DNS-Abfragepakete an den Server der Angreifer weiterleitet. Das Implantat kann die Pakete leicht filtern, indem es mehrere Werte kombiniert, um einen Fingerabdruck zu erstellen, z. B.:
- Ziel-IP-Adresse
- UDP-Port (wir haben
53
,4499
und8000
beobachtet) - Transaktions-ID der DNS-Abfrage, die mit
0xFEAD
übereinstimmt - Domänenname
- DNS-Abfrage mit angehängten Fremddaten.
Abschließende Überlegungen
Die Nutzung der AitM-Fähigkeit der Angreifer zum Abfangen von Paketen ist eine clevere Methode, um den Standort ihrer C&C-Infrastruktur zu verschleiern. Wir haben Opfer beobachtet, die sich außerhalb Chinas befanden, d. h. in Japan und im Vereinigten Königreich, gegen die der Orchestrator die Backdoor einsetzen konnte. Die Angreifer schickten dann Befehle an die Backdoor, um Plugins herunterzuladen. So erhielt das Opfer aus Großbritannien beispielsweise zwei Plugins, die Informationen und Chats von Tencent QQ sammeln sollten. Wir wissen also, dass das AitM-System vorhanden war und funktionierte, und wir müssen davon ausgehen, dass auch der Exfiltrationsmechanismus funktionierte.
Einige der Server - z. B. im Netzwerkbereich 180.76.76.0/24
- scheinen anycasted zu sein, d. h. es gibt möglicherweise mehrere Server an verschiedenen Orten der Welt, die auf (legitime) eingehende Anfragen antworten. Dies deutet darauf hin, dass das Abfangen des Netzwerks wahrscheinlich näher an den Zielen und nicht näher am Baidu-Netzwerk erfolgt. Ein Abfangen von einem chinesischen Internetdienstanbieter ist auch deshalb unwahrscheinlich, weil Baidu einen Teil seiner Netzinfrastruktur außerhalb Chinas unterhält, so dass Opfer außerhalb Chinas möglicherweise nicht über chinesische Internetdienstanbieter zu Baidu-Diensten gelangen.
NSPX30
In den folgenden Abschnitten werden die wichtigsten Phasen der Ausführung der Malware beschrieben.
Stufe 1
Abbildung 12 veranschaulicht die Ausführungskette, wenn die legitime Komponente eine bösartige Dropper-DLL lädt, die mehrere Dateien auf der Festplatte erstellt.
Der Dropper führt RsStub.exe
aus, eine legitime Softwarekomponente des chinesischen Antimalware-Produkts Rising Antivirus, die dazu missbraucht wird, die bösartige comx3.dll
nachzuladen.
Abbildung 13 veranschaulicht die wichtigsten Schritte bei der Ausführung dieser Komponente.
Wenn RsStub.exe ExitProcess
aufruft, wird die Loader-Funktion des Shellcodes anstelle des legitimen API-Funktionscodes ausgeführt.
Der Loader entschlüsselt die Installer-DLL aus der Datei comx3.dll.txt
. Der Shellcode lädt dann die Installer-DLL in den Speicher und ruft ihren Einstiegspunkt auf.
Installer-DLL
Das Installationsprogramm verwendet Techniken zur Umgehung der UAC, die von Open-Source-Implementierungen übernommen wurden, um einen neuen Prozess mit erhöhten Rechten zu erstellen. Welchen er verwendet, hängt von mehreren Bedingungen ab, wie in Tabelle 3 dargestellt.
Tabelle 3. Hauptbedingung und entsprechende Unterbedingungen, die erfüllt sein müssen, um eine UAC-Umgehungstechnik anzuwenden
Main condition |
Sub-conditions |
UAC bypass technique |
Process named rstray.exe exists |
- OS version is Windows 2000/XP/Vista |
|
- OS version is Windows 10 - Process named avp.exe exists |
||
- OS version is Windows 10 - Process named avp.exe does not exist |
||
- OS version is Windows 7/8/8.1/10 or Windows Server 2008 R1/2012 R2 |
||
Current process is not a member of the administrator group |
- OS version is Windows 10 - Process named avp.exe exists |
|
- OS version is Windows 10 - Process named avp.exe does not exist |
||
- OS version is Windows 7/8/8.1/10 or Windows Server 2008 R1/2012 R2 |
Die Bedingungen überprüfen das Vorhandensein von zwei Prozessen: Wir glauben, dass avp.exe
eine Komponente der Antimalware-Software von Kaspersky ist und rstray.exe
eine Komponente von Rising Antivirus.
Das Installationsprogramm versucht, die Übermittlung von Samples durch Windows Defender zu deaktivieren, und fügt eine Ausschlussregel für die Loader-DLL msnsp.dll
hinzu. Dazu führt es zwei PowerShell-Befehle über cmd.exe
aus:
cmd /c powershell -inputformat none -outputformat none -NonInteractive -Command Set-MpPreference -SubmitSamplesConsent 0
cmd /c powershell -inputformat none -outputformat none -NonInteractive -Command Add-MpPreference -ExclusionPath “C:\Program Files (x86)\Common Files\microsoft shared\TextConv\msnsp.dll”
Das Installationsprogramm legt dann die persistente Loader-DLL in C:\Program Files (x86)\Common Files\microsoft shared\TextConv\msnsp.dll
ab und richtet die Persistenz für sie mithilfe der API WSCInstallNameSpace
ein, um die DLL als Winsock-Namespace-Provider mit dem Namen msnsp
zu installieren (siehe Abbildung 14).
Infolgedessen wird die DLL automatisch geladen, wenn ein Prozess Winsock verwendet.
Schließlich legt das Installationsprogramm die Loader-DLL mshlp.dll
und die verschlüsselte Orchestrator-DLL WIN.cfg
in C:\ProgramData\Windows
ab.
Stufe 2
Diese Phase beginnt mit der Ausführung von msnsp.dll
. Abbildung 15 veranschaulicht die Ladekette in Stufe 2.
Orchestrator
Abbildung 16 veranschaulicht die wichtigsten Aufgaben des Orchestrators, darunter der Zugriff auf die Backdoor und das Laden von Plugins.
Nach dem Laden erstellt der Orchestrator zwei Threads, um seine Aufgaben auszuführen.
Orchestrator-Thread 1
Der Orchestrator löscht die ursprüngliche Dropper-Datei von der Festplatte und versucht, die Backdoor aus msfmtkl.dat
zu laden. Wenn die Datei nicht existiert oder sie nicht geöffnet werden kann, verwendet der Orchestrator die Windows-Internet-APIs, um eine Verbindung mit der legitimen Website des chinesischen Unternehmens Baidu zu öffnen, wie zuvor erläutert.
Die Antwort des Servers wird in einer temporären Datei gespeichert, die einem Validierungsverfahren unterzogen wird. Wenn alle Bedingungen erfüllt sind, wird die verschlüsselte Payload, die sich in der Datei befindet, in eine neue Datei geschrieben und in msfmtkl.dat
umbenannt.
Nachdem die neue Datei mit der verschlüsselten Payload erstellt wurde, liest der Orchestrator ihren Inhalt und entschlüsselt die Payload mit RC4. Die resultierende PE wird in den Speicher geladen und ihr Einstiegspunkt wird ausgeführt.
Orchestrator-Thread 2
Abhängig vom Namen des aktuellen Prozesses führt der Orchestrator mehrere Aktionen durch, darunter das Laden von Plugins und das Hinzufügen von Ausnahmen, um die Loader-DLLs in den lokalen Whitelist-Datenbanken von drei Antimalware-Produkten chinesischer Herkunft einzutragen.
Tabelle 4 beschreibt die Aktionen die ausgeführt werden, wenn der Prozessname mit dem einer Sicherheitssoftware-Suite übereinstimmt, deren Loader der Orchestrator zulassen kann.
Tabelle 4. Orchestrator-Aktionen bei der Ausführung in einem Prozess mit dem Namen einer bestimmten Sicherheitssoftware
Process name |
Targeted software |
Action |
qqpcmgr.exe qqpctray.exe qqpcrtp.exe |
Attempts to load the legitimate DLL <CURRENT_DIRECTORY>\TAVinterface.dll to use the exported function CreateTaveInstance to obtain an interface. When calling a second function from the interface, it passes a file path as a parameter. |
|
360safe.exe 360tray.exe |
Attempts to load the legitimate DLL <CURRENT_DIRECTORY>\deepscan\cloudcom2.dll to use the exported functions XDOpen, XDAddRecordsEx, and XDClose, it adds a new entry in the SQL database file speedmem2.hg. |
|
360sd.exe |
Attempts to open the file <CURRENT_DIRECTORY>\sl2.db to adds a base64-encoded binary structure that contains the path to the loader DLL. |
|
kxescore.exe kxetray.exe |
Attempts to load the legitimate DLL <CURRENT_DIRECTORY>\security\kxescan\khistory.dll to use the exported function KSDllGetClassObject to obtain an interface. When it calls one of the functions from the vtable, it passes a file path as a parameter. |
Tabelle 5 beschreibt die Aktionen die ausgeführt werden, wenn der Prozessname mit dem Namen einer ausgewählten Instant-Messaging-Software übereinstimmt. In diesen Fällen lädt der Orchestrator Plugins von der Festplatte.
Tabelle 5. Orchestrator-Aktionen bei Ausführung in einem Prozess mit dem Namen einer bestimmten Instant-Messaging-Software
Process name |
Targeted software |
Action |
qq.exe |
Attempts to create a mutex named GET QQ MESSAGE LOCK <PROCESS_ID>. If the mutex does not already exist, it loads the plugins c001.dat, c002.dat, and c003.dat from disk. |
|
wechat.exe |
Loads plugin c006.dat. |
|
telegram.exe |
Loads plugin c007.dat. |
|
skype.exe |
Loads plugin c003.dat. |
|
cc.exe |
Unknown; possibly CloudChat. |
|
raidcall.exe |
||
yy.exe |
Unknown; possibly an application from YY social network. |
|
aliim.exe |
Loads plugin c005.dat. |
Nach Abschluss der entsprechenden Aktionen kehrt der Thread zurück.
Plugins Gruppe "c"
Aus unserer Analyse des Orchestrator-Codes wissen wir, dass es mindestens sechs Plugins der Gruppe "c" geben könnte, von denen uns derzeit nur drei bekannt sind.
Tabelle 6 beschreibt die grundlegende Funktionalität der identifizierten Plugins.
Tabelle 6. Beschreibung der Plugins der Gruppe "c"
Plugin name |
Description |
c001.dat |
Steals information from QQ databases, including credentials, chat logs, contact lists, and more. |
c002.dat |
Hooks several functions from Tencent QQ’s KernelUtil.dll and Common.dll in the memory of the QQ.exe process, enabling interception of direct and group messages, and SQL queries to databases. |
c003.dat |
Hooks several APIs: - CoCreateInstance - waveInOpen - waveInClose - waveInAddBuffer - waveOutOpen - waveOutWrite - waveOutClose This enables the plugin to intercept audio conversations in several processes. |
Backdoor
Wir haben bereits einige Details über den grundlegenden Zweck der Backdoor mitgeteilt: Kommunikation mit dem Controller und Exfiltration der gesammelten Daten. Die Kommunikation mit dem Controller basiert hauptsächlich auf dem Schreiben von Plugin-Konfigurationsdaten in eine unverschlüsselte Datei namens license.dat
und dem Aufrufen von Funktionen aus geladenen Plugins. Tabelle 7 beschreibt die wichtigsten Befehle, die von der Backdoor verarbeitet werden.
Tabelle 7. Beschreibung einiger der Befehle, die von der Backdoor verarbeitet werden
Command ID |
Description |
0x04 |
Creates or closes a reverse shell and handles input and output. |
0x17 |
Moves a file with paths provided by the controller. |
0x1C |
Uninstalls the implant. |
0x1E |
Collects file information from a specified directory, or collects drive’s information. |
0x28 |
Terminates a process with a PID given by the controller. |
Plugin-Gruppen "a" und "b"
Die Backdoor-Komponente enthält ihre eigenen eingebetteten Plugin-DLLs (siehe Tabelle 8), die auf die Festplatte geschrieben werden und der Backdoor ihre grundlegenden Spionage- und Informationssammelfähigkeiten verleihen.
Tabelle 8. Beschreibungen der Plugin-Gruppen "a" und "b", die in die Backdoor eingebettet sind
Plugin name |
Description |
a010.dat |
Collects installed software information from the registry. |
b010.dat |
Takes screenshots. |
b011.dat |
Basic keylogger. |
Schlussfolgerung
Wir haben Angriffe und Fähigkeiten eines Bedrohungsakteurs analysiert, dem wir den Namen Blackwood gegeben haben und der Cyberspionageoperationen gegen Einzelpersonen und Unternehmen aus China, Japan und dem Vereinigten Königreich durchgeführt hat. Wir haben die Entwicklung von NSPX30, dem von Blackwood eingesetzten benutzerdefinierten Implantat, bis ins Jahr 2005 zurück zu einer kleinen Backdoor, die wir Project Wood nennen, verfolgt.
Interessanterweise scheint das Project Wood-Implantat aus dem Jahr 2005 das Werk von Entwicklern mit Erfahrung in der Malware-Entwicklung zu sein, wenn man die implementierten Techniken betrachtet, was uns zu der Annahme führt, dass wir noch mehr über die Geschichte der ursprünglichen Backdoor herausfinden müssen.
IOCs
Dateien
SHA-1 |
Filename |
ESET detection name |
Description |
625BEF5BD68F75624887D732538B7B01E3507234 |
minibrowser_shell.dll |
Win32/Agent.AFYI |
NSPX30 initial dropper. |
43622B9573413E17985B3A95CBE18CFE01FADF42 |
comx3.dll |
Win32/Agent.AFYH |
Loader for the installer. |
240055AA125BD31BF5BA23D6C30133C5121147A5 |
msnsp.dll |
Win32/Agent.AFYH |
Persistent loader. |
308616371B9FF5830DFFC740318FD6BA4260D032 |
mshlp.dll |
Win32/Agent.AFYH |
Loader for the orchestrator. |
796D05F299F11F1D78FBBB3F6E1F497BC3325164 |
comx3.dll.txt |
Win32/TrojanDropper.Agent.SWR |
Decrypted installer. |
82295E138E89F37DD0E51B1723775CBE33D26475 |
WIN.cfg |
Win32/Agent.AFYI |
Decrypted orchestrator. |
44F50A81DEBF68F4183EAEBC08A2A4CD6033DD91 |
msfmtkl.dat |
Win32/Agent.VKT |
Decrypted backdoor. |
DB6AEC90367203CAAC9D9321FDE2A7F2FE2A0FB6 |
c001.dat |
Win32/Agent.AFYI |
Credentials and data stealer plugin. |
9D74FE1862AABAE67F9F2127E32B6EFA1BC592E9 |
c002.dat |
Win32/Agent.AFYI |
Tencent QQ message interception plugin. |
8296A8E41272767D80DF694152B9C26B607D26EE |
c003.dat |
Win32/Agent.AFYI |
Audio capture plugin. |
8936BD9A615DD859E868448CABCD2C6A72888952 |
a010.dat |
Win32/Agent.VKT |
Information collector plugin. |
AF85D79BC16B691F842964938C9619FFD1810C30 |
b011.dat |
Win32/Agent.VKT |
Keylogger plugin. |
ACD6CD486A260F84584C9FF7409331C65D4A2F4A |
b010.dat |
Win32/Agent.VKT |
Screen capture plugin. |
Netzwerk
IP |
Domain |
Hosting provider |
First seen |
Details |
104.193.88[.]123 |
www.baidu[.]com |
Beijing Baidu Netcom Science and Technology Co., Ltd. |
2017‑08‑04 |
Legitimate website contacted by the orchestrator and backdoor components to download payloads. The HTTP GET request is intercepted by AitM. |
183.134.93[.]171 |
dl_dir.qq[.]com |
IRT‑CHINANET‑ZJ |
2021‑10‑17 |
Part of the URL from where the dropper was downloaded by legitimate software. |
MITRE ATT&CK-Techniken
Diese Tabelle wurde mit der Version 14 des MITRE ATT&CK Frameworks erstellt.
Tactic |
ID |
Name |
Description |
Resource Development |
Develop Capabilities: Malware |
Blackwood used a custom implant called NSPX30. |
|
Initial Access |
Supply Chain Compromise |
NSPX30’s dropper component is delivered when legitimate software update requests are intercepted via AitM. |
|
Execution |
Command and Scripting Interpreter: PowerShell |
NSPX30’s installer component uses PowerShell to disable Windows Defender’s sample submission, and adds an exclusion for a loader component. |
|
Command and Scripting Interpreter: Windows Command Shell |
NSPX30’s installer can use cmd.exe when attempting to bypass UAC. NSPX30’s backdoor can create a reverse shell. |
||
Command and Scripting Interpreter: Visual Basic |
NSPX30’s installer can use VBScript when attempting to bypass UAC. |
||
Native API |
NSPX30’s installer and backdoor use CreateProcessA/W APIs to execute components. |
||
Persistence |
Hijack Execution Flow |
NSPX30’s loader is automatically loaded into a process when Winsock is started. |
|
Privilege Escalation |
Event Triggered Execution |
NSPX30’s installer modifies the registry to change a media button key value (APPCOMMAND_LAUNCH_APP2) to point to its loader executable. |
|
Abuse Elevation Control Mechanism: Bypass User Account Control |
NSPX30’s installer uses three techniques to attempt UAC bypasses. |
||
Defense Evasion |
Deobfuscate/Decode Files or Information |
NSPX30’s installer, orchestrator, backdoor, and configuration files are decrypted with RC4, or combinations of bitwise and arithmetic instructions. |
|
Impair Defenses: Disable or Modify Tools |
NSPX30’s installer disables Windows Defender’s sample submission, and adds an exclusion for a loader component. NSPX30’s orchestrator can alter the databases of security software to allowlist its loader components. Targeted software includes: Tencent PC Manager, 360 Safeguard, 360 Antivirus, and Kingsoft AntiVirus. |
||
Indicator Removal: File Deletion |
NSPX30 can remove its files. |
||
Indicator Removal: Clear Persistence |
NSPX30 can remove its persistence. |
||
Indirect Command Execution |
NSPX30’s installer executes PowerShell through Windows’ Command Shell. |
||
Masquerading: Match Legitimate Name or Location |
NSPX30’s components are stored in the legitimate folder %PROGRAMDATA%\Intel. |
||
Modify Registry |
NSPX30’s installer can modify the registry when attempting to bypass UAC. |
||
Obfuscated Files or Information |
NSPX30’s components are stored encrypted on disk. |
||
Obfuscated Files or Information: Embedded Payloads |
NSPX30’s dropper contains embedded components. NSPX30’s loader contains embedded shellcode. |
||
System Binary Proxy Execution: Rundll32 |
NSPX30’s installer can be loaded through rundll32.exe. |
||
Credential Access |
Adversary-in-the-Middle |
The NSPX30 implant is delivered to victims through AitM attacks. |
|
Credentials from Password Stores |
NSPX30 plugin c001.dat can steal credentials from Tencent QQ databases. |
||
Discovery |
File and Directory Discovery |
NSPX30’s backdoor and plugins can list files. |
|
Query Registry |
NSPX30 a010.dat plugin collects various information of installed software from the registry. |
||
Software Discovery |
NSPX30 a010.dat plugin collects information from the registry. |
||
System Information Discovery |
NSPX30’s backdoor collects system information. |
||
System Network Configuration Discovery |
NSPX30’s backdoor collects various network adapter information. |
||
System Network Connections Discovery |
NSPX30’s backdoor collects network adapter information. |
||
System Owner/User Discovery |
NSPX30’s backdoor collects system and user information. |
||
Collection |
Input Capture: Keylogging |
NSPX30 plugin b011.dat is a basic keylogger. |
|
Archive Collected Data: Archive via Library |
NSPX30 plugins compress collected information using zlib. |
||
Audio Capture |
NSPX30 plugin c003.dat records input and output audio streams. |
||
Automated Collection |
NSPX30’s orchestrator and backdoor automatically launch plugins to collect information. |
||
Data Staged: Local Data Staging |
NSPX30’s plugins store data in local files before exfiltration. |
||
Screen Capture |
NSPX30 plugin b010.dat takes screenshots. |
||
Command and Control |
Application Layer Protocol: Web Protocols |
NSPX30’s orchestrator and backdoor components download payloads using HTTP. |
|
Application Layer Protocol: DNS |
NSPX30’s backdoor exfiltrates the collected information using DNS. |
||
Data Encoding: Standard Encoding |
Collected data for exfiltration is compressed with zlib. |
||
Data Obfuscation |
NSPX30’s backdoor encrypts its C&C communications. |
||
Non-Application Layer Protocol |
NSPX30’s backdoor uses UDP for its C&C communications. |
||
Proxy |
NSPX30’s communications with its C&C server are proxied by an unidentified component. |
||
Exfiltration |
Automated Exfiltration |
When available, NSPX30’s backdoor automatically exfiltrates any collected information. |
|
Data Transfer Size Limits |
NSPX30’s backdoor exfiltrates collected data via DNS queries with a fixed packet size. |
||
Exfiltration Over Alternative Protocol: Exfiltration Over Unencrypted Non-C2 Protocol |
NSPX30’s backdoor exfiltrates the collected information using DNS. |