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.
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.
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).
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.
Abbildung 5 zeigt den Hijacking-Knoten, der LittleDaemon bedient.
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.
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.
- Über das Ruler-System leitet der Verteiler den Datenverkehr an Port 53 auf Port 1090 um und etabliert sich so als DNS-Proxy.
- 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).
- Dann leitet es das Paket an den bösartigen DNS-Knoten weiter.
- 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 |
| 8F569641691ECB3888CD |
bioset | Linux/Agent.AEP | EdgeStepper. |
| 06177810D61A69F34091 |
bioset.conf | Win32/Rozena.BXX | EdgeStepper encrypted configuration. |
| 69974455D8C13C5D57C1 |
popup_4.2.0. |
Win32/Agent.AGXK | LittleDaemon. |
| 2857BC730952682D39F4 |
sogou_wubi_15.4. |
Win32/Agent.AFDT | LittleDaemon. |
Netzwerk
IP
Domain
Hosting provider
First seen
Details
8.212.132[.]120
ds20221202.dsc.
Alibaba (US) Technology Co., Ltd.
2024‑07‑12
DNS/Hijacking node.
47.242.198[.]250
test.dsc.wcsset
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. |







