ESET Forscher geben Einblicke in die Art und Weise, wie PlushDaemon "Adversary-in-the-Middle"-Angriffe durchführt. Dabei kommt ein bisher nicht dokumentiertes Netzwerkimplantat zum Einsatz, das sie EdgeStepper genannt haben. Es kann alle DNS-Anfragen an einen externen, böswilligen Hijacking-Knoten umleiten, wodurch der Datenverkehr von der legitimen Infrastruktur, die für Software-Updates verwendet wird, auf die vom Angreifer kontrollierten Server umgeleitet wird.

Die wichtigsten Punkte in diesem Blogpost:
  • ESET Forscher haben das Netzwerkimplantat EdgeStepper analysiert, um zu verstehen, wie PlushDaemon-Angreifer ihre Ziele kompromittieren.
  • Die Experten haben zudem LittleDaemon und DaemonicLogistics analysiert, zwei Downloader, die die SlowStepper-Backdoor der Gruppe auf Windows-Rechnern installieren.

PlushDaemon-Profil

PlushDaemon ist eine mit China verbündete Hackergruppe, die seit mindestens 2018 aktiv ist und Spionageoperationen gegen Einzelpersonen und Einrichtungen in China, Taiwan, Hongkong, Kambodscha, Südkorea, den Vereinigten Staaten und Neuseeland durchführt. PlushDaemon verwendet eine benutzerdefinierte Backdoor, SlowStepper. Die Masche der Gruppe besteht darin, legitime Updates zu kapern, auf von Angreifern kontrollierte Server umzuleiten. Darüber hinaus hat ESET beobachtet, dass die Gruppe sich über Schwachstellen in Webservern Zugang verschafft und im Jahr 2023 einen Supply-Chain-Angriff durchgeführt hat.

Überblick

Im Jahr 2024 stellten wir bei der Untersuchung von PlushDaemons Aktivitätsclustern (einschließlich der Kompromittierung eines südkoreanischen VPN-Dienstes über die Lieferkette) fest, dass eine an VirusTotal übermittelte ELF-Datei zwei Subdomänen aus der Infrastruktur von PlushDaemon enthielt. Diese Datei mit der Bezeichnung bioset wurde zuvor auf einem Server gehostet, der wahrscheinlich von mehreren Bedrohungsakteuren kompromittiert wurde. Am Tag der Übermittlung an VirusTotal twitterte ein Forscher (@James_inthe_box) über ein offenes Verzeichnis auf dem Server, auf dem bioset gehostet wurde, so dass die Probe wahrscheinlich von einem Forscher auf VirusTotal hochgeladen wurde, der den Inhalt des Verzeichnisses untersuchte.

Intern von seinen Entwicklern als dns_cheat_v2 bezeichnet - und von uns mit dem Codenamen EdgeStepper versehen - ist bioset das Adversary-in-the-Middle-Werkzeug von PlushDaemon, das den DNS-Verkehr von Rechnern in einem Zielnetzwerk an einen bösartigen DNS-Knoten weiterleitet. Auf diese Weise können die Angreifer den Datenverkehr von Software-Updates an einen Hijacking-Knoten umleiten, der der legitimen Software Anweisungen zum Herunterladen eines bösartigen Updates gibt.

Viktimologie

Abbildung 1 zeigt die geografische Verteilung der Opfer von PlushDaemon, die laut ESET-Telemetrie seit 2019 durch bösartige Updates kompromittiert wurden.

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

PlushDaemon hat Einzelpersonen und Organisationen in den folgenden Regionen kompromittiert:

  • Vereinigte Staaten (2019)
  • Taiwan (2021, 2024)
  • China (2021-2024), darunter eine Universität in Peking und ein taiwanesisches Unternehmen, das Elektronik herstellt
  • Hongkong (2023)
  • Neuseeland (2023)
  • Kambodscha (2025), darunter ein Unternehmen aus dem Automobilsektor und eine Niederlassung eines japanischen Unternehmens aus dem verarbeitenden Gewerbe

Überblick über Adversary-in-the-middle-Angriffe

Zunächst kompromittiert PlushDaemon ein Netzwerkgerät (z. B. einen Router), mit dem sich das Ziel verbinden könnte. Die Kompromittierung erfolgt wahrscheinlich durch Ausnutzung einer Software-Schwachstelle auf dem Gerät oder durch schwache Standard-Administrations-Credentials, die es den Angreifern ermöglichen, EdgeStepper (und möglicherweise andere Tools) einzusetzen.

EdgeStepper beginnt mit der Umleitung von DNS-Anfragen an einen bösartigen DNS-Knoten, der prüft, ob die Domäne (z. B. info.pinyin.sogou.com von Sogou Pinyin) in der DNS-Anfragenachricht mit Software-Updates zusammenhängt. Wenn ja, antwortet er mit der IP-Adresse des Hijacking-Knotens. Alternativ dazu haben wir auch beobachtet, dass einige Server sowohl der DNS-Knoten als auch der Hijacking-Knoten sind; in diesen Fällen antwortet der DNS-Knoten auf DNS-Anfragen mit seiner eigenen IP-Adresse.

Da wir uns eingehend mit dem Hijacking von Sogou Pinyin-Software befasst haben, werden wir diese Software von nun an als Beispiel verwenden. Auch bei vielen anderen beliebten chinesischen Softwaretiteln werden die Updates auf ähnliche Weise von PlushDaemon über EdgeStepper gekapert.

Abbildung 2 veranschaulicht die ersten Stadien des Einsatzes der Fähigkeiten von PlushDaemon.

Figure 2. Illustration of the first stages of the attack
Abbildung 2. Illustration der ersten Phasen des Angriffs

Die Aktualisierungssoftware kommuniziert über HTTP mit dem Hijacking-Knoten anstelle der legitimen Sogou-Infrastruktur; der Hijacking-Knoten antwortet mit Anweisungen, z. B. eine DLL-Datei von http://ime.sogou.com/popup_4.2.0.2246.dll herunterzuladen (siehe Abbildung 3).

Figure 3. Traffic capture of the update hijacking process
Abbildung 3. Verkehrsaufzeichnung des Update-Hijacking-Prozesses

Die Software sendet eine HTTP-GET-Anfrage an ime.sogou.com, um zu versuchen, die DLL zu erhalten; die Kommunikation wird jedoch erneut an den Hijacking-Knoten umgeleitet, der popup_4.2.0.2246.dll bereitstellt, bei dem es sich in Wirklichkeit um die LittleDaemon-DLL handelt. Der Vorgang ist in Abbildung 4 dargestellt.

Figure 4. Illustration of the final stage of the update hijacking
Abbildung 4. Illustration der letzten Phase des Update-Hijacking

Abbildung 5 zeigt den Hijacking-Knoten, der LittleDaemon bedient.

Figure 5. Traffic capture of the update hijacking process
Abbildung 5. Verkehrsaufzeichnung des Update-Hijacking-Prozesses

EdgeStepper

Den Symbolen in der Binärdatei zufolge wurde EdgeStepper ursprünglich dns_cheat_v2 genannt. Er wurde in Go unter Verwendung des Open-Source-Frameworks GoFrame entwickelt und als ELF-Datei für MIPS32-Prozessoren kompiliert. Es ist wichtig anzumerken, dass es unwahrscheinlich ist, dass EdgeStepper die einzige Komponente ist, die auf dem kompromittierten Netzwerkgerät eingesetzt wird. Leider liegen uns keine Beispiele für andere Komponenten in der Kompromittierungskette vor.

EdgeStepper beginnt mit dem Abrufen und Entschlüsseln von Konfigurationsdaten aus /etc/bioset.conf. Für die Entschlüsselung wird AES CBC verwendet, wobei der Schlüssel und der IV aus der Zeichenkette I Love Go Frame! bestehen, die als Standard-IV in der Implementierung der GoFrame-Bibliothek verwendet wird.

Die entschlüsselte Konfiguration zeigt die in Abbildung 6 dargestellten Daten.

[cheat]
toPort = 1090
host = "ds20221202.dsc.wcsset[.]com"

Abbildung 6. Entschlüsselte Konfiguration

Die Bedeutung der Parameter ist wie folgt:

  • toPort gibt den Port an, an dem EdgeStepper lauschen soll, und
  • host gibt die Domäne an, die aufgelöst wird, um die IP-Adresse(n) des DNS-Knotens zu erhalten, an den die DNS-Abfragepakete weitergeleitet werden.

Zusätzlich gibt es einen Konfigurationsblock (Abbildung 7) in der EdgeStepper-Binärdatei, auf den anscheinend nirgendwo im Code verwiesen wird. Die Domäne im Host-Feld lautet test.dsc.wcsset[.]com, die zu 47.242.198[.]250 aufgelöst wird. Wir haben diese IP-Adresse von 2021 bis 2022 als Quelle der bösartigen Aktualisierung beobachtet: den Hijacking-Knoten. Zum Zeitpunkt der Erstellung dieses Berichts wird die Domäne zu dieser IP-Adresse aufgelöst.

Figure 7. Unused configuration block in EdgeStepper
Abbildung 7. Nicht verwendeter Konfigurationsblock in EdgeStepper

Nach dem Laden der Konfiguration initialisiert EdgeStepper das Distributor-System und das Ruler-System .

Verteiler

Der Distributor löst die IP-Adresse(n) auf, die mit dem Domain-Wert im Host-Feld der Konfiguration verbunden sind, und ruft das Ruler-System auf. Der Arbeitsablauf des Distributors ist in Abbildung 8 dargestellt.

Figure 8. EdgeStepper workflow
Abbildung 8. EdgeStepper Arbeitsablauf
  1. Über das Ruler-System leitet der Verteiler den Datenverkehr an Port 53 auf Port 1090 um und etabliert sich so als DNS-Proxy.
  2. Wenn eine DNS-Nachricht vom Gerät eines potenziellen Opfers empfangen wird, prüft er, ob die Nachricht RFC-konform ist (wahrscheinlich nur, um zu überprüfen, ob das Paket wirklich vom DNS-Protokoll stammt).
  3. Dann leitet es das Paket an den bösartigen DNS-Knoten weiter.
  4. Schließlich leitet es die Antwort des DNS-Knotens an das Gerät weiter.

Herrscher

Das Ruler-System verwendet den iptables-Befehl, um neue Regeln aufzustellen und sie nach Abschluss des Angriffs zu entfernen. Zunächst wird eine Regel erstellt, die den gesamten UDP-Verkehr an Port 53 des Geräts auf den in der Konfiguration mit toPort angegebenen Port umleitet:

iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-port <Wert_vom_toPort>

Dann gibt es einen Befehl aus, um die Pakete an diesem Port anzunehmen:

iptables -t filter -I INPUT -p udp --dport <Wert_von_nachPort> -j ACCEPT

Beim Beenden werden die vorhergehenden Regeln, die durch die Befehle erstellt wurden, entfernt:

iptables -t nat -D PREROUTING *

iptables -t filter -D INPUT -p udp -dport <Wert_von_bisPort> -j ACCEPT

LittleDaemon

LittleDaemon ist die erste Stufe, die durch gekaperte Updates auf dem Rechner des Opfers installiert wird. Wir haben sowohl DLL- als auch ausführbare Versionen beobachtet, beides 32-Bit-PEs. Der Hauptzweck von LittleDaemon ist die Kommunikation mit dem Hijacking-Knoten, um den Downloader zu erhalten, den wir DaemonicLogistics nennen. LittleDaemon stellt keine Persistenz her.

Zunächst prüft er, ob die SlowStepper-Backdoor auf dem System läuft. Ist dies nicht der Fall, lädt LittleDaemon DaemonicLogistics herunter, indem es eine HTTP-GET-Anfrage an einen Server (in der Regel den Hijacking-Knoten) stellt, ihn mit einer Kombination von XOR-Operationen entschlüsselt und dann ausführt.

Die Anfrage kann an zwei legitime Domänen(ime.sogou.com oder mobads.baidu.com) oder an die IP-Adresse 119.136.153.0 gesendet werden. Der Ressourcenpfad lautet in allen drei Fällen /update/updateInfo.bzp. Im Falle der legitimen Domänen wird erwartet, dass der Datenverkehr von EdgeStepper an den Hijacking-Knoten umgeleitet wird.

DaemonicLogistics

DaemonicLogistics ist ein positionsunabhängiger Code, der von LittleDaemon heruntergeladen und im Speicher ausgeführt wird. Sein Hauptzweck besteht darin, das SlowStepper-Implantat herunterzuladen und einzusetzen.

Wenn DaemonicLogistics eine Anfrage an den Server (in der Regel den Hijacking-Knoten) sendet, antwortet dieser mit einem HTTP-Statuscode, den DaemonicLogistics als Befehl interpretiert und die in Tabelle 1 aufgeführten Aktionen durchführt.

Tabelle 1. Von DaemonicLogistics unterstützte Befehle

Code Action taken
200 Downloads SlowStepper without checking for the presence of a process named 360tray.exe (a component of the 360 Total Security antimalware solution).
205
206
208
203 Downloads a file named plugin.exe and executes it (during our tests, the server did not request downloading this file).
207 Checks for the presence of a process named 360tray.exe and downloads SlowStepper if not present.
202–300 Default to execute command 200. These could be unimplemented commands.

Die erste HTTP-GET-Anfrage wird an folgende Adresse gesendet:

ime.sogou.com/update/latest/new_version?tp=2&c=0&s=<OS_ID_number>&mac=<identifier>

Die Bedeutung der Parameter in der URL ist wie folgt:

  • Die Werte tp und c sind standardmäßig auf 2 bzw. 0 kodiert.
  • Das Feld s besteht aus einem Byte und ist eine Zahl, die die Version des Betriebssystems angibt.
  • Das Feld mac besteht aus sechs Bytes und ist der Wert der MAC-Adresse des Ethernet- oder Wi-Fi-Adapters des Rechners oder wird nach dem Zufallsprinzip generiert, wenn er keine erhält; der Wert wird wahrscheinlich vom Server als Identifikator verwendet.

Bei unserer Analyse haben wir festgestellt, dass der Server mit dem Statuscode 207 geantwortet hat, woraufhin DaemonicLogistics mit einer weiteren Anfrage an ime.sogou.com/update/latest/new_version?tp=1&g=15&c=0 geantwortet hat. In diesem Fall ist der Teil der URL tp=1&g=15&c=0 hart kodiert.

Der Server antwortete mit dem Statuscode 202. DaemonicLogistics führte zwei Anfragen zum Herunterladen der SlowStepper-Nutzdateien durch, zuerst an ime.sogou.com/update/file6.bdat und dann an ime.sogou.com/update/file2.bdat.

Die Nutzdaten in der ersten und zweiten Antwort des Servers begannen mit einem magischen Wert:

  • In der Antwort auf die erste Anfrage war der magische Wert in Hexadezimal 50 4B 03 04 0A 1B 2C 3D(PK\3\4\A\1B\2C\3C)

    DaemonicLogistics überprüft aktiv, ob die ersten acht Bytes der vom Server empfangenen Daten mit diesem magischen Wert übereinstimmen. Wenn dies der Fall ist, schreibt es die Daten in %PROGRAMDATA%\Tencent\QQUpdateMgr\UpdateFiles\logo.gif.

  • Als Antwort auf die zweite Anfrage lautet der magische Wert in Hexadezimal 47 49 46 38 39 61 10 10(GIF89a\10\10)

    daemonicLogistics prüft diesen magischen Wert nicht speziell: Wenn die Prüfung des vorherigen magischen Werts nicht zutrifft, verarbeitet es die Daten und entschlüsselt sie mit einer Kombination von XOR-Operationen. Die Daten enthalten Dateien, die unter den in den entschlüsselten Daten angegebenen Pfaden auf die Festplatte geschrieben werden.

Schlussfolgerung

Wir haben das EdgeStepper-Netzwerkimplantat analysiert, das PlushDaemons Adversary-in-the-Middle-Funktionen ermöglicht, um Updates von Rechnern in einem Zielnetzwerk zu entführen. Außerdem haben wir die Tools LittleDaemon und DaemonicLogistics analysiert, die zusammen das SlowStepper-Implantat auf Windows-Rechnern einsetzen. Diese Implantate geben PlushDaemon die Möglichkeit, Ziele überall auf der Welt zu kompromittieren.

IoCs

Eine umfassende Liste von Kompromittierungsindikatoren und Beispielen finden Sie in unserem GitHub-Repository.

Dateien

SHA-1 Filename ESET detection name Description
8F569641691ECB3888CD4C11932A5B8E13F04B07 bioset Linux/Agent.AEP EdgeStepper.
06177810D61A69F34091CC9689B813740D4C260F bioset.conf Win32/Rozena.BXX EdgeStepper encrypted configuration.
69974455D8C13C5D57C1EE91E147FF9AED49AEBC popup_4.2.0.2246.dll Win32/Agent.AGXK LittleDaemon.
2857BC730952682D39F426D185769938E839A125 sogou_wubi_15.4.0.2508_0000.exe Win32/Agent.AFDT LittleDaemon.

Netzwerk

IP Domain Hosting provider First seen Details
8.212.132[.]120 ds20221202.dsc.wcsset[.]com Alibaba (US) Technology Co., Ltd. 2024‑07‑12 DNS/Hijacking node.
47.242.198[.]250 test.dsc.wcsset[.]com Alibaba Cloud LLC 2024‑07‑12 DNS/Hijacking node.

MITRE ATT&CK-Techniken

Diese Tabelle wurde mit der Version 18 des MITRE ATT&CK-Frameworks erstellt.

Tactic ID Name Description
Resource Development T1583.001 Acquire Infrastructure: Domains PlushDaemon uses EdgeStepper to redirect traffic to specific subdomains that are part of PlushDaemon’s infrastructure on wcsset[.]com.
T1583.002 Acquire Infrastructure: DNS Server Part of the PlushDaemon infrastructure is used to host its malicious DNS nodes.
T1583.004 Acquire Infrastructure: Server PlushDaemon has acquired servers to host its DNS/hijacking nodes and C&C servers.
T1608.001 Stage Capabilities: Upload Malware PlushDaemon hosts its payloads on DNS/hijacking servers.
Initial Access T1659 Content Injection Hijacking nodes from PlushDaemon process hijacked traffic and reply to legitimate software with instructions to download malware such as LittleDaemon.
Execution T1106 Native API DaemonicLogistics executes the SlowStepper implant using the ShellExecute API.
Defense Evasion T1070.004 Indicator Removal: File Deletion Some variants of LittleDaemon can remove themselves.
T1036.005 Masquerading: Match Legitimate Name or Location DaemonicLogistics creates a subdirectory named Tencent, where it stores its files.
T1036.008 Masquerading: Masquerade File Type DaemonicLogistics and SlowStepper’s loader can decrypt files that masquerade as ZIP and GIF files.
T1027.009 Obfuscated Files or Information: Embedded Payloads Files masquerading as ZIPs and GIF files contain embedded encrypted components.
T1027.013 Obfuscated Files or Information: Encrypted/Encoded File Components of the SlowStepper implant are encrypted on disk.
Discovery T1518.001 Software Discovery: Security Software Discovery DaemonicLogistics checks for the presence of 360tray.exe – a component of 360 Total Security.
T1016 System Network Configuration Discovery DaemonicLogistics attempts to obtain the ethernet or Wi-Fi adapter’s MAC address.
T1057 Process Discovery DaemonicLogistics lists processes.
Command and Control T1071.001 Application Layer Protocol: Web Protocols LittleDaemon and DaemonicLogistics use HTTP to communicate with their server.
T1573 Encrypted Channel LittleDaemon downloads via HTTP the encrypted DaemonicLogistics that downloads via HTTP the encrypted SlowStepper implant.
T1665 Hide Infrastructure LittleDaemon and DaemonicLogistics make downloads by sending HTTP requests to legitimate domains.