ESET-Forscher haben eine der Payloads des Wslink-Downloaders entdeckt, den wir bereits 2021 aufgedeckt haben. Wir haben diese Payload WinorDLL64 genannt, basierend auf ihrem Dateinamen WinorDLL64.dll. Wslink, der den Dateinamen WinorLoaderDLL64.dll trug, ist ein Loader für Windows-Binärdateien, der im Gegensatz zu anderen solchen Loadern als Server läuft und empfangene Module im Speicher ausführt. Wie der Wortlaut vermuten lässt, dient ein Loader als Werkzeug, um eine Payload, also die eigentliche Malware, auf das bereits kompromittierte System zu laden. Der ursprüngliche Wslink-Kompromittierungsvektor wurde noch nicht identifiziert.

Der zunächst unbekannte Wslink Payload wurde kurz nach der Veröffentlichung unseres Blogposts von Südkorea aus auf VirusTotal hochgeladen und löste eine unserer YARA-Regeln aus, die auf Wslinks eindeutigem Namen WinorDLL64 basiert. Was Wslink betrifft, so hat die ESET-Telemetrie nur wenige Entdeckungen gemacht - in Mitteleuropa, Nordamerika und im Nahen Osten.

Diese WinorDLL64 Payload dient als Backdoor, die vor allem umfangreiche Systeminformationen sammelt, Mittel zur Dateimanipulation bereitstellt, wie z. B. das Stehlen, Überschreiben und Entfernen von Dateien, und zusätzliche Befehle ausführt. Interessanterweise kommuniziert sie über eine Verbindung, die bereits durch den Wslink-Loader aufgebaut wurde.

Im Jahr 2021 haben wir keine Daten gefunden, die darauf hindeuten, dass Wslink ein Tool von einem bekannten Bedrohungsakteur ist. Nach einer umfassenden Analyse dieser Payload können wir WinorDLL64 jedoch mit ein klein wenig Sicherheit der Lazarus-APT-Gruppe zuordnen - aufgrund der Zielregion und der Überschneidung von Verhalten und Code mit bekannten Lazarus-Samples.

Diese berüchtigte, mit Nordkorea verbündete Gruppe ist seit mindestens 2009 aktiv und verantwortlich für viel beachtete Vorfälle wie den Hack von Sony Pictures Entertainment und Cyberdiebstähle in Millionenhöhe im Jahr 2016, den WannaCryptor-Ausbruch im Jahr 2017 und eine lange Reihe von Störangriffen auf die öffentliche und kritische Infrastruktur Südkoreas seit mindestens 2011. Das US-CERT und das FBI bezeichnen diese Gruppe als HIDDEN COBRA.

Aufgrund unserer umfassenden Kenntnisse über die Aktivitäten und Operationen dieser Gruppe glauben wir, dass Lazarus aus einem großen Team besteht, das systematisch organisiert und gut vorbereitet ist und sich aus mehreren Untergruppen zusammensetzt, die ein umfangreiches Toolset nutzen. Letztes Jahr entdeckten wir ein Lazarus-Tool, das die Sicherheitslücke CVE-2021-21551 ausnutzte, um einen Mitarbeiter eines Luft- und Raumfahrtunternehmens in den Niederlanden und einen politischen Journalisten in Belgien anzugreifen. Es war der erste aufgezeichnete Missbrauch der Schwachstelle; in Kombination führten das Tool und die Schwachstelle dazu, dass die Überwachung aller Sicherheitslösungen auf den kompromittierten Rechnern ausgeschaltet wurde. Wir haben auch eine ausführliche Beschreibung der Struktur der virtuellen Maschine geliefert, die in den Samples von Wslink verwendet wurde.

Dieser Blogpost erklärt die Attribution von WinorDLL64 zu Lazarus und bietet eine Analyse dieser Payload.

Verbindungen zu Lazarus

Wir haben Überschneidungen sowohl im Verhalten als auch im Code mit Lazarus Samples aus Operation GhostSecret und dem von McAfee beschriebenen Bankshot-Implantat entdeckt. Die Beschreibung der Implantate in den GhostSecret- und Bankshot-Artikeln enthält Überschneidungen in der Funktionalität mit WinorDLL64 und wir haben einige Code-Überschneidungen in den Samples gefunden. In diesem Blogpost werden wir nur das Sample FE887FCAB66D7D7F79F05E0266C0649F0114BA7C aus GhostSecret für den Vergleich mit WinorDLL64 (1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F) verwenden, sofern nicht anders angegeben.

Die folgenden Details fassen die Fakten zusammen, die für unsere (wenn auch geringe) Zuversicht sprechen, Lazarus zuzuordnen:

1. Zielwahl

  • Kollegen von AhnLab haben in ihren Telemetriedaten südkoreanische Opfer von Wslink bestätigt, was angesichts der traditionellen Lazarus-Ziele und der Tatsache, dass wir nur wenige Treffer beobachtet haben, ein wichtiger Indikator ist.

Abbildung 1. Gemeldetes südkoreanisches Opfer, wobei mstoned7 der Forscher von Ahnlab ist

2. Malware

  • Das jüngste von McAfee gemeldete GhostSecret Sample (FE887FCAB66D7D7F79F05E0266C0649F0114BA7C) stammt vom Februar 2018; wir entdeckten das erste Sample von Wslink Ende 2018 und andere Forscher meldeten Treffer im August 2018, die sie nach unserer Veröffentlichung bekannt gaben. Diese Samples wurden also in einem relativ kurzen zeitlichen Abstand entdeckt.
  • Die "PE rich headers" zeigen an, dass dieselbe Entwicklungsumgebung und Projekte von ähnlicher Größe in mehreren anderen bekannten Lazarus Samples verwendet wurden (z.B. 70DE783E5D48C6FBB576BC494BAF0634BC304FD6; 8EC9219303953396E1CB7105CDB18ED6C568E962). Wir haben diese Überschneidung anhand der folgenden Regeln gefunden, die nur diese Wslink- und Lazarus-Samples abdecken, was ein Indikator mit geringem Gewicht ist. Wir haben sie mit VirusTotals Retrohunt und unserem internen Datenbestand getestet.

rich_signature.length == 80 and
pe.rich_signature.toolid(175, 30319) == 7 and
pe.rich_signature.toolid(155, 30319) == 1 and
pe.rich_signature.toolid(158, 30319) == 10 and
pe.rich_signature.toolid(170, 30319) >= 90 and
pe.rich_signature.toolid(170, 30319) <= 108

Diese Regel kann in die folgende, besser lesbare und von VirusTotal verwendete Notation übersetzt werden, in der die Produktversion und die Build-ID (VS2010 Build 30319), die Anzahl und der Typ der verwendeten Quell-/Objektdateien ([LTCG C++], wobei LTCG für "Link Time Code Generation" steht, [ASM], [ C ]) und die Anzahl der Exporte ([EXP]) in der Regel zu sehen sind:

[LTCG C++] VS2010 build 30319 count=7
[EXP] VS2010 build 30319 count=1
[ASM] VS2010 build 30319 count=10
[ C ] VS2010 build 30319 count in [ 90 .. 108 ]

  • Der GhostSecret-Artikel beschrieb "eine einzigartige Komponente zum Sammeln von Daten und zur Implantat-Installation, die auf Port 443 auf eingehende Kontroll-Server-Verbindungen wartet", die zusätzlich als Dienst ausgeführt wurde. Dies ist eine genaue Beschreibung des Verhaltens des Wslink-Downloaders, abgesehen von der Portnummer, die je nach Konfiguration variieren kann. Zusammenfassend lässt sich sagen, dass, obwohl die Implementierung unterschiedlich ist, beide dem gleichen Zweck dienen.
  • Der Loader wird von Oreans' Code Virtualizer virtualisiert, einem kommerziellen Schutzprogramm, das häufig von Lazarus verwendet wird.
  • Der Loader verwendet die MemoryModule-Bibliothek, um Module direkt aus dem Speicher zu laden. Diese Bibliothek wird nicht häufig von Malware verwendet, ist aber bei den mit Nordkorea verbündeten Gruppen wie Lazarus und Kimsuky recht beliebt.
  • Überschneidungen im Code von WinorDLL64 und GhostSecret, die wir bei unserer Analyse gefunden haben. Die Ergebnisse und die Bedeutung für die Zuordnung sind in Tabelle 1 aufgeführt.

Tabelle 1. Ähnlichkeiten zwischen WinorDLL64 und GhostSecret und ihre Bedeutung für die Zuordnung beider zu ein und demselben Bedrohungsakteur

Other similarities between WinorDLL64 and GhostSecret Impact
Code overlap in code responsible to get processor architecture Low
Code overlap in current directory manipulation Low
Code overlap in getting the process list Low
Code overlap in file sending Low
Behavior overlap in listing processes Low
Behavior overlap in current directory manipulation Low
Behavior overlap in file and directory listing Low
Behavior overlap in listing volumes Low
Behavior overlap in reading/writing files Low
Behavior overlap in creating processes Low
Considerable behavior overlap in secure removal of files Low
Considerable behavior overlap in termination of processes Low
Considerable behavior overlap in collecting system information Low

Codeüberschneidungen bei der Funktion zum Senden von Dateien sind in Abbildung 2 und Abbildung 3 hervorgehoben.

Abbildung 2. GhostSecret sendet eine Datei

Abbildung 3. Wslink sendet eine Datei

Technische Analyse

WinorDLL64 dient als Backdoor, die vor allem umfangreiche Systeminformationen erlangt, Mittel zur Dateimanipulation bereitstellt und zusätzliche Befehle ausführt. Interessanterweise kommuniziert sie über eine TCP-Verbindung, die bereits vom Loader aufgebaut wurde, und nutzt einige der Funktionen des Loaders.

Abbildung 4. Visualisierung der Kommunikation von Wslink

Die Backdoor ist eine DLL mit einem einzigen unbenannten Export, der einen Parameter akzeptiert - eine Struktur für die Kommunikation, die bereits in unserem vorherigen Blogpost beschrieben wurde. Die Struktur enthält einen TLS-Kontext - Socket, Schlüssel, IV - und Callbacks zum Senden und Empfangen von mit 256-Bit-AES-CBC verschlüsselten Nachrichten, die es WinorDLL64 ermöglichen, Daten sicher mit dem Betreiber über eine bereits bestehende Verbindung auszutauschen.

Die folgenden Fakten lassen uns mit großer Sicherheit annehmen, dass die Bibliothek tatsächlich Teil von Wslink ist:

  • Die eindeutige Struktur wird überall in der erwarteten Weise verwendet, d.h. der TLS-Kontext und andere aussagekräftige Parameter werden in der erwarteten Reihenfolge an die richtigen Callbacks übergeben.
  • Der Name der DLL ist WinorDLL64.dll und der Name von Wslink war WinorLoaderDLL64.dll.

WinorDLL64 nimmt mehrere Befehle entgegen. Abbildung 5 zeigt die Schleife, die Befehle empfängt und verarbeitet. Jeder Befehl ist an eine eindeutige ID gebunden und nimmt eine Konfiguration an, die zusätzliche Parameter enthält.

Abbildung 5. Der Hauptteil der Befehls-Empfangsschleife der Backdoor

Die Befehlsliste mit unseren Bezeichnungen ist in Abbildung 6 dargestellt.

Abbildung 6. Die Befehlsliste

Tabelle 2 enthält eine Zusammenfassung der WinorDLL64-Befehle, wobei sich die Kategorien "modified" und "old" auf die Beziehung zu den zuvor dokumentierten GhostSecret-Funktionen beziehen. Wir heben nur die wesentlichen Änderungen in der Kategorie "Modified" hervor.

Tabelle 2. Übersicht der Backdoor-Befehle

Category Command ID Functionality Description
New 0x03 Execute a PowerShell command WinorDLL64 instructs the PowerShell interpreter to run unrestricted and to read commands from standard input. Afterwards, the backdoor passes the specified command to the interpreter and sends the output to the operator.
0x09 Compress and download a directory WinorDLL64 recursively iterates over a specified directory. The content of each file and directory is compressed separately and written to a temporary file that is afterwards sent to the operator and then removed securely.
0x0D Disconnect a session Disconnects a specified logged-on user from the user’s Remote Desktop Services session. The command can also perform different functionality based on the parameter.
0x0D List sessions Acquires various details about all sessions on the victim’s device and sends them to the operator. The command can also perform different functionality based on the parameter.
0x0E Measure connection time Uses the Windows API GetTickCount to measure the time required to connect to a specified host.
Modified 0x01 Get system info Acquires comprehensive details about the victim’s system and sends them to the operator.
0x0A Remove files securely Overwrites specified files with a block of random data, renames each file to a random name, and finally securely removes them one by one.
0x0C Kill processes Terminates all processes whose names match a supplied pattern and/or with a specific PID.
Old 0x02/0x0B Create a process Creates a process either as the current or specified user and optionally sends its output to the operator.
0x05 Set/Get current directory Attempts to set and subsequently acquire the path of the current working directory.
0x06 List volumes Iterates over drives from C: to Z: and acquires the drive type and volume name. The command can also perform different functionality based on the parameter.
0x06 List files in a directory Iterates over files in specified directory and acquires information such as names, attributes, etc. The command can also perform different functionality based on the parameter.
0x07 Write to a file Downloads and appends the stated amount of data to specified file.
0x08 Read from a file The specified file is read and sent to the operator.
0x0C List processes Acquires details about all running processes on the victim’s device and additionally sends ID of the current process.

Fazit

Diese Payload von Wslink dient der Bereitstellung von Mitteln zur Dateimanipulation, der Ausführung von weiterem Code und der Beschaffung umfangreicher Informationen über das zugrundeliegende System, die möglicherweise später für laterale Bewegungen genutzt werden können, da ein besonderes Interesse an Netzwerksitzungen besteht. Der Wslink Loader lauscht auf einem in der Konfiguration angegebenen Port und kann weitere Verbindungsclients bedienen und sogar verschiedene Payloads laden.

WinorDLL64 weist Überschneidungen in der Entwicklungsumgebung, im Verhalten und im Code mit mehreren Lazarus-Samples auf, was darauf hindeutet, dass es sich um ein Tool aus dem umfangreichen Arsenal dieser nordkoreanisch ausgerichteten APT-Gruppe handeln könnte.

For any inquiries about our research published on WeLiveSecurity, please contact us at threatintel@eset.com.
Um mehr darüber zu erfahren, wie Threat Intelligence die Cybersicherheit Ihres Unternehmens verbessern kann, besuchen Sie unsere ESET Threat Intelligence Webseite.

IoCs

SHA-1 ESET detection name Description
1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F Win64/Wslink.A Memory dump of discovered Wslink payload WinorDll64.

MITRE ATT&CK techniques

This table was built using version 12 of the ATT&CK framework. We do not mention techniques from the loader again, only the payload.

Tactic ID Name Description
Resource Development T1587.001 Develop Capabilities: Malware WinorDLL64 is a custom tool.
Execution T1059.001 Command and Scripting Interpreter: PowerShell WinorDLL64 can execute arbitrary PowerShell commands.
T1106 Native API WinorDLL64 can execute further processes using the CreateProcessW and CreateProcessAsUserW APIs.
Defense Evasion T1134.002 Access Token Manipulation: Create Process with Token WinorDLL64 can call APIs WTSQueryUserToken and CreateProcessAsUserW to create a process under an impersonated user.
T1070.004 Indicator Removal: File Deletion WinorDLL64 can securely remove arbitrary files.
Discovery T1087.001 Account Discovery: Local Account WinorDLL64 can enumerate sessions and list associated user, and client names, among other details.
T1087.002 Account Discovery: Domain Account WinorDLL64 can enumerate sessions and list associated domain names –among other details.
T1083 File and Directory Discovery WinorDLL64 can obtain file and directory listings.
T1135 Network Share Discovery WinorDLL64 can discover shared network drives.
T1057 Process Discovery WinorDLL64 can collect information about running processes.
T1012 Query Registry WinorDLL64 can query the Windows registry to gather system information.
T1082 System Information Discovery WinorDLL64 can obtain information such as computer name, OS and latest service pack version, processor architecture, processor name, and amount of space on fixed drives.
T1614 System Location Discovery WinorDLL64 can obtain the victim’s default country name using the GetLocaleInfoW API.
T1614.001 System Location Discovery: System Language Discovery WinorDLL64 can obtain the victim’s default language using the GetLocaleInfoW API.
T1016 System Network Configuration Discovery WinorDLL64 can enumerate network adapter information.
T1049 System Network Connections Discovery WinorDLL64 can collect a list of listening ports.
T1033 System Owner/User Discovery WinorDLL64 can enumerate sessions and list associated user, domain, and client names –among other details.
Collection T1560.002 Archive Collected Data: Archive via Library WinorDLL64 can compress and exfiltrate directories using the quicklz library.
T1005 Data from Local System WinorDLL64 can collect data on the victim’s device.
Impact T1531 Account Access Removal WinorDLL64 can disconnect a logged-on user from specified sessions.

Haben Sie Fragen und Anregungen zu diesem, anderen oder zukünftigen Themen, die Sie gern betrachtet sehen wollen? Dann nutzen Sie gern die Kommentarfunktion unter diesem Artikel oder nutzen unser Kontaktformular!