ESET-Forscher haben MQsTTang analysiert, eine neue benutzerdefinierte Backdoor, die wir der Mustang Panda APT-Gruppe zuschreiben. Diese Backdoor ist Teil einer laufenden Kampagne, die wir bis Anfang Januar 2023 zurückverfolgen können. Im Gegensatz zu den meisten Malware-Programmen der Gruppe scheint MQsTTang nicht auf bestehenden Familien oder öffentlich verfügbaren Projekten zu basieren.

Mustang Panda ist bekannt für seine angepassten Korplug-Varianten (auch PlugX genannt) und ausgeklügelte Ladeketten. In Abweichung von der üblichen Taktik der Gruppe hat MQsTTang nur eine einzige Stufe und verwendet keine Verschleierungstechniken.

Ziele

Wir haben unbekannte Einrichtungen in Bulgarien und Australien in unserer Telemetrie gesehen. Uns liegen auch Informationen vor, die darauf hindeuten, dass diese Kampagne auf eine Regierungseinrichtung in Taiwan abzielt. Aufgrund der Art der verwendeten Täuschungsdateinamen gehen wir jedoch davon aus, dass auch politische und staatliche Organisationen in Europa und Asien ins Visier genommen werden. Dies würde auch mit den Zielen der anderen jüngsten Kampagnen der Gruppe übereinstimmen. Wie von Forscherkollegen bei Proofpoint dokumentiert, ist Mustang Panda seit mindestens 2020 dafür bekannt, europäische Regierungseinrichtungen ins Visier zu nehmen. Die Aktivitäten in Europa wurden seit dem Einmarsch Russlands in die Ukraine sogar noch weiter verstärkt. Abbildung 1 zeigt unsere Sicht auf die Angriffsziele dieser Kampagne.

Abbildung 1. Karte mit bekannten und vermuteten Zielen von MQsTTang

Attribution

Wir führen diese neue Backdoor und die Kampagne mit hoher Wahrscheinlichkeit auf Mustang Panda zurück, basierend auf den folgenden Indikatoren.

Wir fanden Archive mit Samples von MQsTTang in zwei GitHub-Repositories, die dem Benutzer YanNaingOo0072022 gehören. Ein weiteres GitHub-Repository desselben Benutzers wurde in einer früheren Mustang-Panda-Kampagne verwendet, die von Avast in einem Blogpost vom Dezember 2022 beschrieben wurde.

Auf einem der in der aktuellen Kampagne verwendeten Server wurde ein öffentlich zugänglicher anonymer FTP-Server betrieben, der offenbar zur Bereitstellung von Tools und Payloads verwendet wird. Im Verzeichnis /pub/god dieses Servers befinden sich mehrere Korplug-Loader, Archive und Tools, die in früheren Mustang-Panda-Kampagnen verwendet wurden. Es handelt sich um dasselbe Verzeichnis, das von dem im oben genannten Avast-Blogpost beschriebenen Stager verwendet wurde. Dieser Server verfügte auch über ein Verzeichnis /pub/gd, das ein weiterer in dieser Kampagne verwendeter Pfad war.

Einige der in dieser Kampagne verwendeten Infrastrukturen stimmen auch mit dem Netzwerk-Fingerabdruck von bereits bekannten Mustang-Panda-Servern überein.

Technische Analyse

MQsTTang ist eine einfache Backdoor, die es dem Angreifer ermöglicht, beliebige Befehle auf dem Rechner des Opfers auszuführen und die entsrpechende Ausgabe zu erlangen. Dennoch weist sie einige interessante Merkmale auf. Dazu gehört vor allem die Verwendung des MQTT-Protokolls für die C&C-Kommunikation. MQTT wird in der Regel für die Kommunikation zwischen IoT-Geräten und Steuerungen verwendet, und das Protokoll wurde noch nicht von vielen öffentlich dokumentierten Malware-Familien genutzt. Ein solches Beispiel ist Chrysaor, auch bekannt als Pegasus für Android. Aus der Sicht eines Angreifers besteht einer der Vorteile von MQTT darin, dass es den Rest seiner Infrastruktur hinter einem Broker verbirgt. Somit kommuniziert der kompromittierte Rechner nie direkt mit dem C&C-Server. Wie in Abbildung 2 zu sehen ist, wird diese Fähigkeit durch die Verwendung der Open-Source-Bibliothek QMQTT erreicht. Diese Bibliothek hängt vom Qt-Framework ab, von dem ein großer Teil statisch in die Malware eingebunden ist. Die Verwendung des Qt-Frameworks für die Malware-Entwicklung ist ebenfalls recht ungewöhnlich. Der MagicRAT von Lazarus ist eines der wenigen kürzlich dokumentierten Beispiele.

Abbildung 2. RTTI mit Klassen aus der QMQTT-Bibliothek

MQsTTang wird in RAR-Archiven verteilt, die nur eine einzige ausführbare Datei enthalten. Diese ausführbaren Dateien haben normalerweise Namen, die mit Diplomatie und Pässen zu tun haben, wie z.B.:

  • CVs Amb Officer PASSPORT Ministry Of Foreign Affairs.exe
  • Documents members of delegation diplomatic from Germany.Exe
  • PDF_Passport and CVs of diplomatic members from Tokyo of JAPAN.eXE
  • Note No.18-NG-23 from Embassy of Japan.exe

Diese Archive werden auf einem Webserver gehostet, dem kein Domänenname zugeordnet ist. Diese Tatsache sowie die Dateinamen lassen vermuten, dass die Malware über Spearphishing verbreitet wird.

Bislang haben wir nur einige wenige Samples beobachtet. Abgesehen von Abweichungen bei einigen Konstanten und hartkodierten Zeichenfolgen sind die Samples bemerkenswert ähnlich. Die einzige bemerkenswerte Änderung ist die Hinzufügung einiger Anti-Analyse-Techniken in den neuesten Versionen. Die erste dieser Techniken besteht in der Verwendung der Windows-API-Funktion CreateToolhelp32Snapshot, um laufende Prozesse zu durchlaufen und nach den folgenden bekannten Debuggern und Überwachungsprogrammen zu suchen.

  • cheatengine-x86_64.exe
  • ollydbg.exe
  • ida.exe
  • ida64.exe
  • radare2.exe
  • x64dbg.exe
  • procmon.exe
  • procmon64.exe
  • procexp.exe
  • processhacker.exe
  • pestudio.exe
  • systracerx32.exe
  • fiddler.exe
  • tcpview.exe

Beachten Sie, dass die Malware zwar eine ausführbare 32-Bit-Datei ist, aber nur auf das Vorhandensein von x64dbg und nicht auf sein 32-Bit-Gegenstück x32dbg prüft.

Die zweite Technik verwendet die FindWindowW Windows API, um nach den folgenden Fensterklassen und -titeln zu suchen, die von bekannten Analysetools verwendet werden:

  • PROCMON_WINDOW_CLASS
  • OLLYDBG
  • WinDbgFrameClass
  • OllyDbg - [CPU]
  • Immunity Debugger - [CPU]

Bei direkter Ausführung startet die Malware eine Kopie von sich selbst mit 1 als Befehlszeilenargument. Dies wird von dem neuen Prozess wiederholt, wobei das Argument bei jedem Durchlauf um 1 erhöht wird. Wenn dieses Argument bestimmte Werte erreicht, werden bestimmte Aufgaben ausgeführt. Beachten Sie, dass die genauen Werte von Sample zu Sample variieren; die unten genannten Werte entsprechen dem Sample mit SHA-1 02D95E0C369B08248BFFAAC8607BBA119D83B95B. Die Aufgaben selbst und die Reihenfolge, in der sie ausgeführt werden, sind jedoch konstant.

Abbildung 3 zeigt einen Überblick über dieses Verhalten und die Aufgaben, die beim ersten Start der Malware ausgeführt werden.

Abbildung 3. Ausführungsdiagramm mit Darstellung der Teilprozesse und ausgeführten Aufgaben

Tabelle 1 enthält eine Liste der Aufgaben und den Wert, bei dem jede von ihnen ausgeführt wird. Wir werden sie in den folgenden Abschnitten näher beschreiben.

Tabelle 1. Von der Backdoor ausgeführte Aufgaben

Task number Argument value Task description
1 5 Start C&C communication.
2 9 Create copy and launch.
3 32 Create persistence copy.
4 119 Establish persistence.
5 148 Stop recursive execution.

Wenn ein Analysewerkzeug oder Debugger mit den zuvor beschriebenen Techniken entdeckt wird, wird das Verhalten von Aufgabe 1 geändert und die Aufgaben 2, 3 und 4 werden vollständig übersprungen.

Task 1: C&C Kommunikation

Wie bereits erwähnt, kommuniziert MQsTTang mit seinem C&C-Server über das MQTT-Protokoll. Alle beobachteten Samples verwenden 3.228.54.173 als Broker. Dieser Server ist ein öffentlicher Broker, der von EMQX betrieben wird, die zufällig auch die QMQTT-Bibliothek betreuen. Dies könnte eine Möglichkeit sein, den Netzwerkverkehr als legitim erscheinen zu lassen und Mustang Pandas eigene Infrastruktur zu verbergen. Die Verwendung dieses öffentlichen Brokers sorgt auch für Ausfallsicherheit: Es ist unwahrscheinlich, dass der Dienst aufgrund seiner vielen legitimen Nutzer abgeschaltet wird, und selbst wenn die aktuellen C&C-Server gesperrt oder abgeschaltet werden, könnte Mustang Panda neue Server einrichten und dieselben MQTT-Themen verwenden, ohne den Betrieb von MQsTTang zu zerstören.

Diese Kampagne könnte jedoch auch ein Testfall von Mustang Panda sein, bevor sie entscheiden, ob sie die Zeit und die Ressourcen für die Einrichtung eines eigenen Brokers investieren wollen. Dafür spricht die geringe Anzahl von Samples, die wir beobachtet haben, und die sehr einfache Natur von MQsTTang.

Wie in Abbildung 4 dargestellt, verwenden die Malware und der C&C-Server zwei MQTT-Topics für ihre Kommunikation. Das erste, iot/server2, wird für die Kommunikation zwischen dem Client und dem Server verwendet. Das zweite wird für die Kommunikation vom Server zum Client verwendet. Es hat das Format iot/v2/<Unique ID>, wobei <Unique ID> aus den letzten 8 Bytes einer UUID in Hexadezimalform gebildet wird. Wird ein Analysewerkzeug entdeckt, werden server2 und v2 jeweils durch server0 und v0 ersetzt. Dies geschieht wahrscheinlich, um zu vermeiden, dass die Ausführung der Malware vorzeitig abgebrochen wird, um die Verteidiger zu warnen.

Abbildung 4. Vereinfachtes Netzwerkdiagramm der Kommunikation zwischen der Backdoor und dem C&C-Server

Die gesamte Kommunikation zwischen dem Server und dem Client erfolgt nach demselben Kodierungsschema. Die Payload der MQTT-Nachricht ist ein JSON-Objekt mit einem einzigen Attribut namens msg. Um den Wert dieses Attributs zu generieren, wird der eigentliche Inhalt zunächst base64-kodiert, dann mit dem hartkodierten String nasa XOR-verknüpft und erneut base64-kodiert. Wir werden das genaue Format dieser Payloads in den entsprechenden Abschnitten beschreiben.

Bei der ersten Verbindung mit dem Broker abonniert das Schadprogramm sein eigenes Topic. Dann und danach alle 30 Sekunden veröffentlicht der Client eine KeepAlive-Nachricht an das Topic des Servers. Der Inhalt dieser Nachricht ist ein JSON-Objekt mit dem folgenden Format:

{
    "Alive": "<malware’s uptime in minutes>",    
    "c_topic": "<client’s unique topic>"
}

Wenn der Server einen Befehl erteilen will, veröffentlicht er eine Nachricht an das eindeutige Topic des Clients. Der Klartextinhalt dieser Nachricht ist einfach der auszuführende Befehl. Wie in Abbildung 5 dargestellt, führt der Client den empfangenen Befehl mit QProcess::startCommand aus dem Qt-Framework aus. Die mit QProcess::readAllStandardOutput erhaltene Ausgabe wird dann in einem JSON-Objekt mit dem folgenden Format zurückgesendet:

{
    "c_topic": "<client’s unique topic>",
    "ret": "<Command output>"
}

Abbildung 5. Ausführung empfangener Befehle mit Hilfe der Klasse QProcess

Da nur der Inhalt der Standardausgabe zurückgesendet wird, erhält der Server keine Fehler oder Warnungen. Aus der Sicht des Servers ist ein fehlgeschlagener Befehl daher nicht von einem Befehl zu unterscheiden, der einfach keine Ausgabe erzeugt, es sei denn, es wird eine Umleitung vorgenommen.

Tasks 2 und 3: Kopieren der Malware

Die zweite und dritte Aufgabe sind einander ziemlich ähnlich. Sie kopieren die ausführbare Datei der Malware in einen fest kodierten Pfad; c:\users\public\vdump.exe bzw. c:\users\public\vcall.exe. Die verwendeten Dateinamen sind für jedes Sample unterschiedlich, aber sie befinden sich immer im Verzeichnis C:\users\public.

In der zweiten Aufgabe wird dann die neu erstellte Kopie mit dem Befehlszeilenargument 97 gestartet.

Task 4: Herstellung der Persistenz

Die vierte Aufgabe erstellt einen neuen Wert qvlc, der auf c:\users\public\vcall.exe unter dem Registrierungsschlüssel HKCU\Software\Microsoft\Windows\CurrentVersion\Run gesetzt wird. Dies führt dazu, dass die Malware beim Starten ausgeführt wird.

Wenn MQsTTang beim Starten als c:\users\public\vcall.exe ausgeführt wird, wird nur die C&C-Kommunikationsaufgabe ausgeführt.

Fazit

Die in diesem Artikel beschriebene Mustang-Panda-Kampagne ist zum Zeitpunkt der Erstellung dieses Artikels noch nicht abgeschlossen. Die Viktimologie ist unklar, aber die gefälschten Dateinamen zur Ablenkung stehen im Einklang mit anderen Kampagnen der Gruppe, die auf europäische politische Einrichtungen abzielen.

Diese neue Backdoor MQsTTang bietet eine Art Remote-Shell ohne den ganzen Schnickschnack, der mit den anderen Malware-Familien der Gruppe verbunden ist. Sie zeigt jedoch, dass Mustang Panda neue Technologie-Stacks für seine Tools erforscht. Es bleibt abzuwarten, ob diese Backdoor zu einem wiederkehrenden Bestandteil des Arsenals der Gruppe wird, aber sie ist ein weiteres Beispiel für den schnellen Entwicklungs- und Einsatzzyklus der Gruppe.

ESET Research offers private APT intelligence reports and data feeds. For any inquiries about this service, visit the ESET Threat Intelligence page.

IoCs

Files

SHA-1 Filename Detection Description
A1C660D31518C8AFAA6973714DE30F3D576B68FC CVs Amb.rar Win32/Agent.AFBI RAR archive used to distribute MQsTTang backdoor.
430C2EF474C7710345B410F49DF853BDEAFBDD78 CVs Amb Officer PASSPORT Ministry Of Foreign Affairs.exe Win32/Agent.AFBI MQsTTang backdoor.
F1A8BF83A410B99EF0E7FDF7BA02B543B9F0E66C Documents.rar Win32/Agent.AFBI RAR archive used to distribute MQsTTang backdoor.
02D95E0C369B08248BFFAAC8607BBA119D83B95B PDF_Passport and CVs of diplomatic members from Tokyo of JAPAN.eXE Win32/Agent.AFBI MQsTTang backdoor.
0EA5D10399524C189A197A847B8108AA8070F1B1 Documents members of delegation diplomatic from Germany.Exe Win32/Agent.AFBI MQsTTang backdoor.
982CCAF1CB84F6E44E9296C7A1DDE2CE6A09D7BB Documents.rar Win32/Agent.AFBI RAR archive used to distribute MQsTTang backdoor.
740C8492DDA786E2231A46BFC422A2720DB0279A 23 from Embassy of Japan.exe Win32/Agent.AFBI MQsTTang backdoor.
AB01E099872A094DC779890171A11764DE8B4360 BoomerangLib.dll Win32/Korplug.TH Known Mustang Panda Korplug loader.
61A2D34625706F17221C1110D36A435438BC0665 breakpad.dll Win32/Korplug.UB Known Mustang Panda Korplug loader.
30277F3284BCEEF0ADC5E9D45B66897FA8828BFD coreclr.dll Win32/Agent.ADMW Known Mustang Panda Korplug loader.
BEE0B741142A9C392E05E0443AAE1FA41EF512D6 HPCustPartUI.dll Win32/Korplug.UB Known Mustang Panda Korplug loader.
F6F3343F64536BF98DE7E287A7419352BF94EB93 HPCustPartUI.dll Win32/Korplug.UB Known Mustang Panda Korplug loader.
F848C4F3B9D7F3FE1DB3847370F8EEFAA9BF60F1 libcef.dll Win32/Korplug.TX Known Mustang Panda Korplug loader.

Network

IP Domain Hosting provider First seen Details
3.228.54.173 broker.emqx.io Amazon.com, Inc. 2020-03-26 Legitimate public MQTT broker.
80.85.156[.]151 N/A Chelyabinsk-Signal LLC 2023-01-05 MQsTTang delivery server.
80.85.157[.]3 N/A Chelyabinsk-Signal LLC 2023-01-16 MQsTTang delivery server.
185.144.31[.]86 N/A Abuse-C Role 2023-01-22 MQsTTang delivery server.

Github repositories

  • https://raw.githubusercontent[.]com/YanNaingOo0072022/14/main/Documents.rar
  • https://raw.githubusercontent[.]com/YanNaingOo0072022/ee/main/CVs Amb.rar

MITRE ATT&CK techniques

This table was built using version 12 of the MITRE ATT&CK framework.

Tactic ID Name Description
Resource Development T1583.003 Acquire Infrastructure: Virtual Private Server Some servers used in the campaign are on shared hosting.
T1583.004 Acquire Infrastructure: Server Some servers used in the campaign seem to be exclusive to Mustang Panda.
T1587.001 Develop Capabilities: Malware MQsTTang is a custom backdoor, probably developed by Mustang Panda.
T1588.002 Obtain Capabilities: Tool Multiple legitimate and open- source tools, including psexec, ps, curl, and plink, were found on the staging server.
T1608.001 Stage Capabilities: Upload Malware MQsTTang was uploaded to the web server for distribution.
T1608.002 Stage Capabilities: Upload Tool Multiple tools were uploaded to an FTP server.
Initial Access T1566.002 Phishing: Spearphishing Link MQsTTang is distributed via spearphishing links to a malicious file on an attacker-controlled web server.
Execution T1106 Native API MQsTTang uses the QProcess class from the Qt framework to execute commands.
T1204.002 User Execution: Malicious File MQsTTang relies on the user to execute the downloaded malicious file.
Persistence T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder MQsTTang persists by creating a registry Run key.
Defense Evasion T1036.004 Masquerading: Masquerade Task or Service In most samples, the registry key is created with the name qvlc. This matches the name of a legitimate executable used by VLC.
T1036.005 Masquerading: Match Legitimate Name or Location When creating copies, MQsTTang uses filenames of legitimate programs.
T1480 Execution Guardrails MQsTTang checks the paths it is executed from to determine which tasks to execute.
T1622 Debugger Evasion MQsTTang detects running debuggers and alters its behavior if any are found to be present.
Command and Control T1071 Application Layer Protocol MQsTTang communicates with its C&C server using the MQTT protocol.
T1102.002 Web Service: Bidirectional Communication MQsTTang uses a legitimate public MQTT broker.
T1132.001 Data Encoding: Standard Encoding The content of the messages between the malware and server is base64 encoded.
T1573.001 Encrypted Channel: Symmetric Cryptography The content of the messages between the malware and server is encrypted using a repeating XOR key.
Exfiltration T1041 Exfiltration Over C2 Channel The output of executed commands is sent back to the server using the same protocol.