WinorDLL64: Backdoor aus dem Lazarus Arsenal?

Die Zielregion und die Überschneidungen in Verhalten und Code lassen vermuten, dass das Tool von der berüchtigten, mit Nordkorea verbündeten APT-Gruppe verwendet wird.

Die Zielregion und die Überschneidungen in Verhalten und Code lassen vermuten, dass das Tool von der berüchtigten, mit Nordkorea verbündeten APT-Gruppe verwendet wird.

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 GhostSecretImpact
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 processesLow
Behavior overlap in current directory manipulationLow
Behavior overlap in file and directory listingLow
Behavior overlap in listing volumesLow
Behavior overlap in reading/writing filesLow
Behavior overlap in creating processesLow
Considerable behavior overlap in secure removal of filesLow
Considerable behavior overlap in termination of processesLow
Considerable behavior overlap in collecting system informationLow

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

CategoryCommand IDFunctionalityDescription
New0x03Execute a PowerShell commandWinorDLL64 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.
0x09Compress and download a directoryWinorDLL64 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.
0x0DDisconnect a sessionDisconnects a specified logged-on user from the user’s Remote Desktop Services session. The command can also perform different functionality based on the parameter.
0x0DList sessionsAcquires 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.
0x0EMeasure connection timeUses the Windows API GetTickCount to measure the time required to connect to a specified host.
Modified0x01Get system infoAcquires comprehensive details about the victim’s system and sends them to the operator.
0x0ARemove files securelyOverwrites specified files with a block of random data, renames each file to a random name, and finally securely removes them one by one.
0x0CKill processesTerminates all processes whose names match a supplied pattern and/or with a specific PID.
Old0x02/0x0BCreate a processCreates a process either as the current or specified user and optionally sends its output to the operator.
0x05Set/Get current directoryAttempts to set and subsequently acquire the path of the current working directory.
0x06List volumesIterates 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.
0x06List files in a directoryIterates over files in specified directory and acquires information such as names, attributes, etc. The command can also perform different functionality based on the parameter.
0x07Write to a fileDownloads and appends the stated amount of data to specified file.
0x08Read from a fileThe specified file is read and sent to the operator.
0x0CList processesAcquires 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-1ESET detection nameDescription
1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257FWin64/Wslink.AMemory 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.

TacticIDNameDescription
Resource DevelopmentT1587.001Develop Capabilities: MalwareWinorDLL64 is a custom tool.
ExecutionT1059.001Command and Scripting Interpreter: PowerShellWinorDLL64 can execute arbitrary PowerShell commands.
T1106Native APIWinorDLL64 can execute further processes using the CreateProcessW and CreateProcessAsUserW APIs.
Defense EvasionT1134.002Access Token Manipulation: Create Process with TokenWinorDLL64 can call APIs WTSQueryUserToken and CreateProcessAsUserW to create a process under an impersonated user.
T1070.004Indicator Removal: File DeletionWinorDLL64 can securely remove arbitrary files.
DiscoveryT1087.001Account Discovery: Local AccountWinorDLL64 can enumerate sessions and list associated user, and client names, among other details.
T1087.002Account Discovery: Domain AccountWinorDLL64 can enumerate sessions and list associated domain names –among other details.
T1083File and Directory DiscoveryWinorDLL64 can obtain file and directory listings.
T1135Network Share DiscoveryWinorDLL64 can discover shared network drives.
T1057Process DiscoveryWinorDLL64 can collect information about running processes.
T1012Query RegistryWinorDLL64 can query the Windows registry to gather system information.
T1082System Information DiscoveryWinorDLL64 can obtain information such as computer name, OS and latest service pack version, processor architecture, processor name, and amount of space on fixed drives.
T1614System Location DiscoveryWinorDLL64 can obtain the victim’s default country name using the GetLocaleInfoW API.
T1614.001System Location Discovery: System Language DiscoveryWinorDLL64 can obtain the victim’s default language using the GetLocaleInfoW API.
T1016System Network Configuration DiscoveryWinorDLL64 can enumerate network adapter information.
T1049System Network Connections DiscoveryWinorDLL64 can collect a list of listening ports.
T1033System Owner/User DiscoveryWinorDLL64 can enumerate sessions and list associated user, domain, and client names –among other details.
CollectionT1560.002Archive Collected Data: Archive via LibraryWinorDLL64 can compress and exfiltrate directories using the quicklz library.
T1005Data from Local SystemWinorDLL64 can collect data on the victim’s device.
ImpactT1531Account Access RemovalWinorDLL64 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!

Erhalten Sie E-Mails zu neuen Artikeln zur Cyber-Sicherheitslage in der Ukraine. Jetzt anmelden!

Newsletter-Anmeldung

Hier können Sie mitdiskutieren