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.

Figure 1. Geographical distribution of Blackwood victims
Abbildung 1. Geografische Verteilung der Blackwood-Opfer

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.

Figure 2. Timeline of major variants of Project Wood, DCM, and NSPX30
Abbildung 2. Zeitleiste der wichtigsten Varianten von Project Wood, DCM und NSPX30

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.

Figure 3. Project Wood code with a recurring theme in most samples
Abbildung 3. Project Wood-Code mit einem wiederkehrenden Thema in den meisten Samples

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
4651F16514660D1B78A6

MainFuncOften.dll

2005-01-09 08:21:22

Project Wood backdoor.

The timestamp from the Export Table matches the PE compilation timestamp.

834EAB42383E171DD6A4
2F29A9BA1AD8A44731F0

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.

Figure 4. UPX string with tool version in the dropper sample
Abbildung 4. UPX-Zeichenfolge mit Toolversion im Dropper-Sample

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.

Figure 5. PE Rich Headers from the dropper sample
Abbildung 5. PE Rich Headers aus dem Dropper-Sample

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).
Figure 6. The recurring theme
Abbildung 6. Das wiederkehrende Thema findet sich auch in den Sampleen von Operation TooHash

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).

Figure 7. Code using a new mutex name in the DCM implant
Abbildung 7. Code, der einen neuen Mutex-Namen im DCM-Implantat verwendet

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.

Figure 8. Illustration of the observed chain of execution
Abbildung 8. Veranschaulichung der beobachteten Ausführungskette

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/
invc/qq/minibrowser.zip

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.

Figure 9. HTTP request sent by the orchestrator
Abbildung 9. Vom Orchestrator gesendete HTTP-Anfrage

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.

Figure 10. DNS query
Abbildung 10. Von der Backdoor gesendete DNS-Abfrage. Gesammelte Informationen werden im Klartext angehängt.

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.

Figure 11. DNS messages sent by the backdoor
Abbildung 11. Von der Backdoor gesendete DNS-Nachrichten. Beachten Sie, dass die IP-Adresse bei jeder Anfrage um eins erhöht wird.

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 und 8000 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.

Figure 12. Execution chain initiated by the dropper DLL
Abbildung 12. Ausführungskette, ausgelöst durch die Dropper-DLL

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.

 

Figure 13. Loading chain
Abbildung 13. Ladekette, die beim Laden der bösartigen Datei comx3.dll durch RsStub.exe ausgelöst wird

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

Execution via AppKey\18\ShellExecute

- OS version is Windows 10

- Process named avp.exe exists

SilentCleanup UAC bypass

- OS version is Windows 10

- Process named avp.exe does not exist

CMSTPLUA COM UAC bypass

- OS version is Windows 7/8/8.1/10 or Windows Server 2008 R1/2012 R2

IARPUninstallStringLauncher UAC bypass

Current process is not a member of the administrator group

- OS version is Windows 10

- Process named avp.exe exists

SilentCleanup UAC bypass

- OS version is Windows 10

- Process named avp.exe does not exist

CMSTPLUA COM UAC bypass

- OS version is Windows 7/8/8.1/10 or Windows Server 2008 R1/2012 R2

IARPUninstallStringLauncher UAC bypass

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).

Figure 14. Code that installs a malicious Winsock namespace provider
Abbildung 14. Code, der einen bösartigen Winsock-Namespace-Provider installiert

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.

Figure 15. Loading chain
Abbildung 15. Ladekette, die ausgelöst wird, wenn das System den bösartigen Winsock-Namespace-Provider lädt

Orchestrator

Abbildung 16 veranschaulicht die wichtigsten Aufgaben des Orchestrators, darunter der Zugriff auf die Backdoor und das Laden von Plugins.

Figure 16. Execution chain of the Orchestrator components and its main tasks
Abbildung 16. Ausführungskette der Orchestrator-Komponenten und deren Hauptaufgaben

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

Tencent PC Manager

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

360 Safeguard (aka 360Safe)

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

360 Antivirus

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

Kingsoft AntiVirus

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

Tencent QQ

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

WeChat

Loads plugin c006.dat.

telegram.exe

Telegram

Loads plugin c007.dat.

skype.exe

Skype

Loads plugin c003.dat.

cc.exe

Unknown; possibly CloudChat.

raidcall.exe

RaidCall

yy.exe

Unknown; possibly an application from YY social network.

aliim.exe

AliWangWang

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

T1587.001

Develop Capabilities: Malware

Blackwood used a custom implant called NSPX30.

Initial Access

T1195

Supply Chain Compromise

NSPX30’s dropper component is delivered when legitimate software update requests are intercepted via AitM.

Execution

T1059.001

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.

T1059.003

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.

T1059.005

Command and Scripting Interpreter: Visual Basic

NSPX30’s installer can use VBScript when attempting to bypass UAC.

T1106

Native API

NSPX30’s installer and backdoor use CreateProcessA/W APIs to execute components.

Persistence

T1574

Hijack Execution Flow

NSPX30’s loader is automatically loaded into a process when Winsock is started.

Privilege Escalation

T1546

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.

T1548.002

Abuse Elevation Control Mechanism: Bypass User Account Control

NSPX30’s installer uses three techniques to attempt UAC bypasses.

Defense Evasion

T1140

Deobfuscate/Decode Files or Information

NSPX30’s installer, orchestrator, backdoor, and configuration files are decrypted with RC4, or combinations of bitwise and arithmetic instructions.

T1562.001

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.

T1070.004

Indicator Removal: File Deletion

NSPX30 can remove its files.

T1070.009

Indicator Removal: Clear Persistence

NSPX30 can remove its persistence.

T1202

Indirect Command Execution

NSPX30’s installer executes PowerShell through Windows’ Command Shell.

T1036.005

Masquerading: Match Legitimate Name or Location

NSPX30’s components are stored in the legitimate folder %PROGRAMDATA%\Intel.

T1112

Modify Registry

NSPX30’s installer can modify the registry when attempting to bypass UAC.

T1027

Obfuscated Files or Information

NSPX30’s components are stored encrypted on disk.

T1027.009

Obfuscated Files or Information: Embedded Payloads

NSPX30’s dropper contains embedded components.

NSPX30’s loader contains embedded shellcode.

T1218.011

System Binary Proxy Execution: Rundll32

NSPX30’s installer can be loaded through rundll32.exe.

Credential Access

T1557

Adversary-in-the-Middle

The NSPX30 implant is delivered to victims through AitM attacks.

T1555

Credentials from Password Stores

NSPX30 plugin c001.dat can steal credentials from Tencent QQ databases.

Discovery

T1083

File and Directory Discovery

NSPX30’s backdoor and plugins can list files.

T1012

Query Registry

NSPX30 a010.dat plugin collects various information of installed software from the registry.

T1518

Software Discovery

NSPX30 a010.dat plugin collects information from the registry.

T1082

System Information Discovery

NSPX30’s backdoor collects system information.

T1016

System Network Configuration Discovery

NSPX30’s backdoor collects various network adapter information.

T1049

System Network Connections Discovery

NSPX30’s backdoor collects network adapter information.

T1033

System Owner/User Discovery

NSPX30’s backdoor collects system and user information.

Collection

T1056.001

Input Capture: Keylogging

NSPX30 plugin b011.dat is a basic keylogger.

T1560.002

Archive Collected Data: Archive via Library

NSPX30 plugins compress collected information using zlib.

T1123

Audio Capture

NSPX30 plugin c003.dat records input and output audio streams.

T1119

Automated Collection

NSPX30’s orchestrator and backdoor automatically launch plugins to collect information.

T1074.001

Data Staged: Local Data Staging

NSPX30’s plugins store data in local files before exfiltration.

T1113

Screen Capture

NSPX30 plugin b010.dat takes screenshots.

Command and Control

T1071.001

Application Layer Protocol: Web Protocols

NSPX30’s orchestrator and backdoor components download payloads using HTTP.

T1071.004

Application Layer Protocol: DNS

NSPX30’s backdoor exfiltrates the collected information using DNS.

T1132.001

Data Encoding: Standard Encoding

Collected data for exfiltration is compressed with zlib.

T1001

Data Obfuscation

NSPX30’s backdoor encrypts its C&C communications.

T1095

Non-Application Layer Protocol

NSPX30’s backdoor uses UDP for its C&C communications.

T1090

Proxy

NSPX30’s communications with its C&C server are proxied by an unidentified component.

Exfiltration

T1020

Automated Exfiltration

When available, NSPX30’s backdoor automatically exfiltrates any collected information.

T1030

Data Transfer Size Limits

NSPX30’s backdoor exfiltrates collected data via DNS queries with a fixed packet size.

T1048.003

Exfiltration Over Alternative Protocol: Exfiltration Over Unencrypted Non-C2 Protocol

NSPX30’s backdoor exfiltrates the collected information using DNS.