WinorDLL64: Eine Hintertür aus dem riesigen Lazarus-Arsenal?

WinorDLL64: Eine Hintertür aus dem riesigen Lazarus-Arsenal?

Quellknoten: 1975596

Die Zielregion und Überschneidungen in Verhalten und Code deuten darauf hin, dass das Tool von der berüchtigten nordkoreanischen APT-Gruppe verwendet wird

ESET-Forscher haben eine der Nutzlasten des entdeckt Wslink-Downloader die wir bereits im Jahr 2021 entdeckt haben. Wir haben diese Nutzlast basierend auf ihrem Dateinamen WinorDLL64 genannt WinorDLL64.dll. Wslink, der den Dateinamen hatte WinorLoaderDLL64.dll, ist ein Ladeprogramm für Windows-Binärdateien, das im Gegensatz zu anderen Ladeprogrammen als Server ausgeführt wird und empfangene Module im Arbeitsspeicher ausführt. Wie der Wortlaut schon sagt, dient ein Loader als Werkzeug, um eine Nutzlast oder die eigentliche Malware auf das bereits kompromittierte System zu laden. Der anfängliche Wslink-Kompromittierungsvektor wurde nicht identifiziert.

Die zunächst unbekannte Wslink-Payload wurde kurz nach der Veröffentlichung unseres Blogposts aus Südkorea auf VirusTotal hochgeladen und traf eine unserer YARA-Regeln basierend auf dem eindeutigen Namen von Wslink WinorDLL64. In Bezug auf Wslink hat die ESET-Telemetrie nur wenige Erkennungen gesehen – in Mitteleuropa, Nordamerika und im Nahen Osten.

Das WinorDLL64 payload dient als Hintertür, die vor allem umfangreiche Systeminformationen erfasst, Mittel zur Dateimanipulation wie Exfiltrieren, Überschreiben und Entfernen von Dateien bereitstellt und zusätzliche Befehle ausführt. Interessanterweise kommuniziert es über eine Verbindung, die bereits vom Wslink-Loader hergestellt wurde.

Im Jahr 2021 haben wir keine Daten gefunden, die darauf hindeuten würden, dass Wslink ein Tool eines bekannten Bedrohungsakteurs ist. Nach einer ausführlichen Analyse der Nutzlast haben wir jedoch zugeschrieben WinorDLL64 an die Lazarus-APT-Gruppe mit geringem Vertrauen basierend auf der Zielregion und einer Überschneidung sowohl im Verhalten als auch im Code mit bekannten Lazarus-Beispielen.

Diese berüchtigte, mit Nordkorea verbündete Gruppe ist seit mindestens 2009 aktiv und für hochkarätige Vorfälle wie die beiden verantwortlich Sony Pictures Entertainment-Hack und zig Millionen Dollar Cyberraub im Jahr 2016, der WannaCryptor (auch bekannt als WannaCry) im Jahr 2017 und eine lange Geschichte störender Angriffe gegen Südkoreanische öffentliche und kritische Infrastruktur seit mindestens 2011. US-CERT und das FBI nennen diese Gruppe VERSTECKTE KOBRA.

Basierend auf unserem umfangreiches Wissen Von den Aktivitäten und Operationen dieser Gruppe glauben wir, dass Lazarus aus einem großen Team besteht, das systematisch organisiert und gut vorbereitet ist und aus mehreren Untergruppen besteht, die ein großes Instrumentarium verwenden. Letztes Jahr, wir entdeckte ein Lazarus-Tool das nutzte die CVE ‑ 2021‑21551 Schwachstelle, 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 kompromittierten Maschinen geblendet wurde. Wir haben auch eine ausführliche Beschreibung der Struktur der virtuellen Maschine Wird in Wslink-Beispielen verwendet.

Dieser Blogpost erklärt die Zuordnung von WinorDLL64 zu Lazarus und liefert eine Analyse der Payload.

Links zu Lazarus

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

Die folgenden Details fassen die unterstützenden Fakten für unsere geringe Vertrauenszuschreibung an Lazarus zusammen:

1. Viktimologie

  • Forscherkollegen von AhnLab bestätigten in ihrer Telemetrie südkoreanische Opfer von Wslink, was angesichts der traditionellen Lazarus-Ziele ein relevanter Indikator ist und wir nur wenige Treffer beobachtet haben.

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

2. Malware

  • Das neueste von McAfee gemeldete GhostSecret-Beispiel (FE887FCAB66D7D7F79F05E0266C0649F0114BA7C) ist von Februar 2018; Wir haben die erste Probe von Wslink Ende 2018 entdeckt und andere Forscher haben im August 2018 Treffer gemeldet, die sie nach unserer Veröffentlichung offengelegt haben. Daher wurden diese Proben in einem relativ kurzen Zeitabstand entdeckt.
  • Das PE-reiche Header weisen darauf hin, dass dieselbe Entwicklungsumgebung und Projekte ähnlicher Größe in mehreren anderen bekannten Lazarus-Beispielen verwendet wurden (z. 70DE783E5D48C6FBB576BC494BAF0634BC304FD6; 8EC9219303953396E1CB7105CDB18ED6C568E962). Wir fanden diese Überschneidung anhand der folgenden Regeln, die nur diese Wslink- und Lazarus-Beispiele abdecken, was ein Indikator mit geringem Gewicht ist. Wir haben sie getestet Retrohunt von VirusTotal und unser internes Dateikorpus.

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

Diese Regel kann in die folgende Notation übersetzt werden, die besser lesbar ist und von VirusTotal verwendet wird, wo man die Produktversion und die Build-ID sehen kann (VS2010-Build 30319), Anzahl und Art der verwendeten Quell-/Objektdateien ([LTCG C++] wobei LTCG für Link Time Code Generation steht, [ASM], [ C ]), und Anzahl der Exporte ([ERW.]) in der Regel:

[LTCG C++] VS2010 Build 30319 count=7
[EXP] VS2010 Build 30319 count=1
[ASM] VS2010 Build 30319 Anzahl = 10
[ C ] VS2010 build 30319 zählt in [ 90 .. 108 ]

  • Der GhostSecret-Artikel beschrieb „eine einzigartige Datenerfassungs- und Implantierungs-Installationskomponente, die Port 443 auf eingehende Kontrollserververbindungen abhört“, die zusätzlich als Dienst lief. 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 beide den gleichen Zweck erfüllen, obwohl die Implementierung unterschiedlich ist.
  • Der Loader wird durch den Code Virtualizer von Oreans virtualisiert, der ein kommerzieller Schutz ist, der verwendet wird häufig von Lazarus.
  • Der Lader verwendet die Speichermodul Bibliothek, um Module direkt aus dem Speicher zu laden. Die Bibliothek wird normalerweise nicht von Malware verwendet, ist aber bei nordkoreanisch ausgerichteten Gruppen wie Lazarus und Kimsuky sehr beliebt.
  • Überschneidung im Code zwischen WinorDLL64 und GhostSecret, die wir während unserer Analyse gefunden haben. Die Ergebnisse und die Signifikanz bei der Zuordnung sind in Tabelle 1 aufgeführt.

Tabelle 1. Ähnlichkeiten zwischen WinorDLL64 und GhostSecret und ihre Bedeutung bei der Zuordnung beider zum selben Bedrohungsakteur

Andere Ähnlichkeiten zwischen WinorDLL64 und GhostSecret Impact der HXNUMXO Observatorien
Codeüberlappung im Code, der für die Prozessorarchitektur verantwortlich ist Sneaker
Codeüberlappung bei der aktuellen Verzeichnismanipulation Sneaker
Codeüberlappung beim Abrufen der Prozessliste Sneaker
Codeüberlappung beim Senden von Dateien Sneaker
Verhaltensüberschneidung bei Listungsprozessen Sneaker
Verhaltensüberschneidung bei der aktuellen Verzeichnismanipulation Sneaker
Verhaltensüberschneidung in der Datei- und Verzeichnisliste Sneaker
Verhaltensüberschneidung beim Auflisten von Volumina Sneaker
Verhaltensüberschneidung beim Lesen/Schreiben von Dateien Sneaker
Verhaltensüberschneidung beim Erstellen von Prozessen Sneaker
Erhebliche Verhaltensüberschneidung beim sicheren Entfernen von Dateien Sneaker
Erhebliche Verhaltensüberschneidungen bei der Beendigung von Prozessen Sneaker
Erhebliche Verhaltensüberschneidung beim Sammeln von Systeminformationen Sneaker

Die Codeüberlappung in der Funktion zum Senden von Dateien ist in Abbildung 2 und Abbildung 3 hervorgehoben.

Abbildung 2. GhostSecret sendet eine Datei

Abbildung 3. Wslink sendet eine Datei

Technische Analyse

WinorDLL64 dient als Hintertür, die vor allem umfangreiche Systeminformationen erfasst, Mittel zur Dateimanipulation bereitstellt und zusätzliche Befehle ausführt. Interessanterweise kommuniziert es über eine TCP-Verbindung, die bereits von seinem Ladeprogramm aufgebaut wurde, und verwendet einige der Funktionen des Ladeprogramms.

Abbildung 4. Visualisierung der Kommunikation von Wslink

Die Hintertür ist eine DLL mit einem einzigen unbenannten Export, der einen Parameter akzeptiert – eine Struktur für die Kommunikation, die bereits in unserem beschrieben wurde vorheriger Blogpost. Die Struktur enthält einen TLS-Kontext – Socket, Key, 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 aufgebaute Verbindung auszutauschen.

Die folgenden Tatsachen lassen uns mit hoher Zuversicht glauben, dass die Bibliothek tatsächlich Teil von Wslink ist:

  • Die eindeutige Struktur wird überall in der erwarteten Weise verwendet, z. B. werden der TLS-Kontext und andere sinnvolle Parameter in der erwarteten Reihenfolge an die richtigen Rückrufe geliefert.
  • Der Name der DLL lautet WinorDLL64.dll und Wslinks Name war WinorLoaderDLL64.dll.

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

Abbildung 5. Der Hauptteil der Befehlsempfangsschleife der Hintertür

Die Befehlsliste mit unseren Beschriftungen finden Sie in Abbildung 6.

Abbildung 6. Die Befehlsliste

Tabelle 2 enthält eine Zusammenfassung der WinorDLL64-Befehle, wobei sich geänderte und alte Kategorien auf die Beziehung zur zuvor dokumentierten GhostSecret-Funktionalität beziehen. Wir heben nur signifikante Änderungen in der modifizierten Kategorie hervor.

Tabelle 2. Übersicht über Backdoor-Befehle

Kategorie Befehls-ID Funktionalität Beschreibung
Neu 0x03 Führen Sie einen PowerShell-Befehl aus WinorDLL64 weist den PowerShell-Interpreter an, uneingeschränkt zu laufen und Befehle von der Standardeingabe zu lesen. Anschließend übergibt die Hintertür den angegebenen Befehl an den Interpreter und sendet die Ausgabe an den Operator.
0x09 Verzeichnis komprimieren und herunterladen WinorDLL64 iteriert rekursiv über ein angegebenes Verzeichnis. Der Inhalt jeder Datei und jedes Verzeichnisses wird separat komprimiert und in eine temporäre Datei geschrieben, die anschließend an den Betreiber gesendet und dann sicher entfernt wird.
0x0D Trennen Sie eine Sitzung Trennt einen angegebenen angemeldeten Benutzer von der Remotedesktopdienste-Sitzung des Benutzers. Der Befehl kann basierend auf dem Parameter auch unterschiedliche Funktionen ausführen.
0x0D Sitzungen auflisten Erfasst verschiedene Details zu allen Sitzungen auf dem Gerät des Opfers und sendet sie an den Betreiber. Der Befehl kann basierend auf dem Parameter auch unterschiedliche Funktionen ausführen.
0x0E Verbindungszeit messen Verwendet die Windows-API GetTickCount um die Zeit zu messen, die zum Herstellen einer Verbindung zu einem bestimmten Host erforderlich ist.
Geändert 0x01 Systeminformationen abrufen Erfasst umfassende Details über das System des Opfers und sendet sie an den Betreiber.
0x0A Dateien sicher entfernen Überschreibt angegebene Dateien mit einem Block zufälliger Daten, benennt jede Datei in einen zufälligen Namen um und entfernt sie schließlich sicher eine nach der anderen.
0x0C Tötungsprozess Beendet alle Prozesse, deren Namen einem angegebenen Muster und/oder mit einer bestimmten PID entsprechen.
Alt 0x02/0x0B Erstellen Sie einen Prozess Erstellt einen Prozess entweder als aktueller oder als angegebener Benutzer und sendet optional seine Ausgabe an den Operator.
0x05 Aktuelles Verzeichnis setzen/erhalten Versucht, den Pfad des aktuellen Arbeitsverzeichnisses festzulegen und anschließend abzurufen.
0x06 Bände auflisten Iteriert über Laufwerke von C: bis Z: und ruft den Laufwerktyp und den Volumenamen ab. Der Befehl kann basierend auf dem Parameter auch unterschiedliche Funktionen ausführen.
0x06 Dateien in einem Verzeichnis auflisten Iteriert über Dateien im angegebenen Verzeichnis und ruft Informationen wie Namen, Attribute usw. ab. Der Befehl kann basierend auf dem Parameter auch unterschiedliche Funktionen ausführen.
0x07 In eine Datei schreiben Lädt die angegebene Datenmenge herunter und hängt sie an die angegebene Datei an.
0x08 Aus einer Datei lesen Die angegebene Datei wird gelesen und an den Bediener gesendet.
0x0C Prozesse auflisten Erfasst Details zu allen laufenden Prozessen auf dem Gerät des Opfers und sendet zusätzlich die ID des aktuellen Prozesses.

Zusammenfassung

Die Payload von Wslink dient der Bereitstellung von Mitteln zur Dateimanipulation, der Ausführung weiteren Codes und dem Abruf umfassender Informationen über das zugrunde liegende System, die möglicherweise später aufgrund des spezifischen Interesses an Netzwerksitzungen für laterale Bewegungen genutzt werden können. Der Wslink-Loader lauscht auf einem in der Konfiguration angegebenen Port und kann zusätzliche verbindende Clients bedienen und sogar verschiedene Payloads laden.

WinorDLL64 enthält eine Überschneidung in der Entwicklungsumgebung, im Verhalten und im Code mit mehreren Lazarus-Beispielen, was darauf hindeutet, dass es sich um ein Werkzeug aus dem riesigen Arsenal dieser nordkoreanischen APT-Gruppe handeln könnte.

ESET Research bietet private APT-Intelligence-Berichte und Daten-Feeds. Bei Fragen zu diesem Service besuchen Sie bitte die ESET Threat Intelligence 

IoCs

SHA-1 Name der ESET-Erkennung Beschreibung
1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F Win64/Wslink.A Speicherauszug der entdeckten Wslink-Nutzlast WinorDll64.

MITRE ATT&CK-Techniken

Diese Tabelle wurde mit erstellt Version 12 des ATT&CK-Frameworks. Techniken vom Lader erwähnen wir nicht noch einmal, nur die Nutzlast.

Taktik ID Name und Vorname Beschreibung
Ressourcenentwicklung T1587.001 Entwicklungsfähigkeiten: Malware WinorDLL64 ist ein benutzerdefiniertes Tool.
ausführung T1059.001 Befehls- und Skriptinterpreter: PowerShell WinorDLL64 kann beliebige PowerShell-Befehle ausführen.
T1106 Native API WinorDLL64 kann über die weitere Prozesse ausführen CreateProcessW und CreateProcessAsUserW APIs.
Verteidigungsflucht T1134.002 Zugriffstoken-Manipulation: Prozess mit Token erstellen WinorDLL64 kann APIs aufrufen WTSQueryUserToken und CreateProcessAsUserW um einen Prozess unter einem imitierten Benutzer zu erstellen.
T1070.004 Indikatorentfernung: Dateilöschung WinorDLL64 kann beliebige Dateien sicher entfernen.
Angewandte F&E T1087.001 Kontoerkennung: Lokales Konto WinorDLL64 kann unter anderem Sitzungen auflisten und zugehörige Benutzer- und Clientnamen auflisten.
T1087.002 Kontoerkennung: Domänenkonto WinorDLL64 kann Sitzungen aufzählen und zugehörige Domänennamen auflisten – neben anderen Details.
T1083 Datei- und Verzeichniserkennung WinorDLL64 kann Datei- und Verzeichnislisten erhalten.
T1135 Erkennung von Netzwerkfreigaben WinorDLL64 kann freigegebene Netzlaufwerke erkennen.
T1057 Prozesserkennung WinorDLL64 kann Informationen über laufende Prozesse sammeln.
T1012 Registrierung abfragen WinorDLL64 kann die Windows-Registrierung abfragen, um Systeminformationen zu sammeln.
T1082 Systeminformationserkennung WinorDLL64 kann Informationen wie Computername, Betriebssystem und neueste Service Pack-Version, Prozessorarchitektur, Prozessorname und Speicherplatz auf Festplatten abrufen.
T1614 Erkennung des Systemstandorts WinorDLL64 kann den standardmäßigen Ländernamen des Opfers mithilfe von ermitteln GetLocaleInfoW API.
T1614.001 Erkennung des Systemstandorts: Erkennung der Systemsprache WinorDLL64 kann die Standardsprache des Opfers mithilfe von abrufen GetLocaleInfoW API.
T1016 Ermittlung der Systemnetzwerkkonfiguration WinorDLL64 kann Netzwerkadapterinformationen aufzählen.
T1049 Erkennung von Systemnetzwerkverbindungen WinorDLL64 kann eine Liste von Listening-Ports sammeln.
T1033 Erkennung des Systembesitzers/Benutzers WinorDLL64 kann Sitzungen auflisten und zugehörige Benutzer-, Domänen- und Clientnamen auflisten – neben anderen Details.
Sammlung T1560.002 Gesammelte Daten archivieren: Archiv über Bibliothek WinorDLL64 kann Verzeichnisse mithilfe von komprimieren und exfiltrieren schnellz Bibliothek.
T1005 Daten vom lokalen System WinorDLL64 kann Daten auf dem Gerät des Opfers sammeln.
Impact der HXNUMXO Observatorien T1531 Entfernen des Kontozugriffs WinorDLL64 kann einen angemeldeten Benutzer von bestimmten Sitzungen trennen.

Zeitstempel:

Mehr von Wir leben Sicherheit