ESET-Forscher haben eine zuvor unbekannte Lazarus-Backdoor entdeckt, mit der ein Logistikunternehmen in Südafrika angegriffen wurde. Die Hintertür, die sie Vyveva genannt haben, besteht aus mehreren Komponenten und kommuniziert mit ihrem C&C-Server über das Tor-Netzwerk. Bisher konnten wir das Installationsprogramm, den Loader und die Haupt-Payload finden - eine Backdoor mit einer TorSocket-DLL. Der bisher unbekannte Angriff wurde im Juni 2020 entdeckt.

Obwohl Vyveva seit mindestens Dezember 2018 verwendet wird, ist sein initialer Angriffsvektor bisher noch unbekannt. Unsere Telemetriedaten deuten auf eine gezielte Auslieferung hin, da wir nur zwei angegriffene Maschinen gefunden haben, die beide Server des Logistikunternehmens in Südafrika sind. Die Backdoor bietet Funktionen zur Ausleitung von Dateien, zum Timestomping (Änderung oder Löschung von Zeitstempeln zur Verschleierung), zur Informationssammlung über die Opfermaschine und ihre Laufwerke. Außerdem fanden wir andere gängige Backdoor-Funktionen, wie das Ausführen von beliebigem Code, der von den Betreibern der Malware angegeben wird. Dies deutet darauf hin, dass das Ziel der Operation höchstwahrscheinlich Spionage ist.

Dieser Blogpost ist die erste öffentliche Analyse der Komponenten von Vyveva.

Zuschreibung an Lazarus

Vyveva-Code hat mehrere Ähnlichkeiten mit älteren Malware-Samples von Lazarus, welche von ESET-Produkten als NukeSped-Malware-Familie erkannt werden. Die Ähnlichkeiten enden hier jedoch nicht: Auch die Verwendung von gefälschtem TLS in der Netzwerkkommunikation, Befehlszeilenausführungsketten und die Art der Verwendung von Verschlüsselungs- und Tor-Diensten weisen alle auf Lazarus hin. Daher können wir Vyveva mit hoher Sicherheit dieser APT-Gruppe zuordnen.

Ein Beispiel für die zahlreichen Code-Ähnlichkeiten ist in Abbildung 1 dargestellt – das Auflösen eindeutig benannter Tor-Bibliotheksexporte.

  • 92F5469DBEFDCEE1343934BE149AFC1241CC8497 msobjs.drx Vyveva-Backdoor
  • BF98EA1326E5F8C351E68C79B5D1E0164C7BE728 taskhosts.exe Win32/NukeSped.HV trojan

Abbildung 1. Hex-Rays-Dekompilierung die Ähnlichkeit von Vyveva (links) und eines NukeSped-Samples (rechts) aufweist

Technische Analyse

Bis jetzt ist es uns gelungen, drei der zahlreichen Komponenten zu finden, aus denen Vyveva besteht - Installer, Loader und Backdoor. Der Installer ist die chronologisch erste Stufe, die gefunden wurde. Sie setzt die Existenz anderer, bereits auf der Maschine vorhandenen, Komponenten voraus, was auf die Existenz einer früheren, unbekannten Stufe, einen Dropper, hindeutet. Der Loader dient zum Entschlüsseln der Backdoor mit einem einfachen XOR-Entschlüsselungsalgorithmus.

Abbildung 2 zeigt die Funktionalität des Installationsprogramms, der Backdoor und der Tor-Bibliothek.

Abbildung 2. Übersicht über die Vyveva-Komponenten

Installer

Das Installationsprogramm hat zwei Hauptziele: Es erstellt einen Dienst, der die Persistenz des Backdoor-Loaders sicherstellt, und es speichert die eingebettete Standard-Backdoor-Konfiguration in der Registrierung.

Um einen legitim aussehenden Dienst zu erstellen, werden seine Attribute wie Dienst- und Anzeigename mit einer Kombination von Wörtern aus den Attributen vorhandener, zufällig ausgewählter Dienste gebildet. Es ist auch möglich, diese Attribute dem Installationsprogramm über die Befehlszeilenparameter -‍dll, -svc, -disp, -desc, und -group mitzugeben. In freier Wildbahn haben wir folgende Verwendung der Parameter beobachtet:

<SYSDIR>\powerctl.exe -svc powerctl -dll powerctl.dll

Für die letztere Aufgabe legt das Installationsprogramm zuerst einen zufällig generierten Wert als Konfigurationsinfektions-ID fest, die jedes Opfer eindeutig identifiziert, und speichert sie dann in der Registrierung, wie in Abbildung 3 dargestellt.

[HKLM\SOFTWARE\Microsoft\DirectX]
    UsageMask = <CONFIG_DATA>

Abbildung 3. Konfigurationsregistrierungswert

Einer der Einträge in der Konfiguration ist eine Liste verschlüsselter C&C-Server: Beispielsweise wird das von uns analysierte Installations-Sample mit den folgenden C&Cs konfiguriert:

  • 4bjt2rceijktwedi[.]onion:80
  • cwwpxpxuswo7b6tr[.]onion:80

Backdoor-Funktionalität

Die Backdoor, die Hauptkomponente von Vyveva, stellt eine Verbindung zu C&C-Servern her und führt Befehle aus, die von den Hintermännern ausgegeben werden. Sie verfügt über 23 Befehle, von denen einige asynchron sind und in eigenen Threads ausgeführt werden. Die meisten von ihnen sind gewöhnliche Befehle für Datei- und Prozessoperationen oder das Sammeln von Informationen, aber es gibt auch einen weniger gebräuchlichen Befehl für die Manipulation der Dateizeitstempel (Timestomping). Die Hintertür kann auch Datei-Metadaten für Erstellung, Schreiben und Zugriff von einer „Spenderdatei“ in eine Zieldatei kopieren oder ein zufälliges Datum aus den Jahren 2000 bis 2004 verwenden.

Andere erwähnenswerte Befehle sind der Datei-Upload-Befehl von Vyveva und der Befehl 0x26. Der Befehl zum Hochladen von Dateien kann Verzeichnisse rekursiv ausleiten und unterstützt das Filtern von Dateierweiterungen, um z. B. nur Office-Dokumente auszuwählen. Der Befehl 0x26 zeigt die Existenz einer anderen, unbekannten Komponente an, die wir zum Zeitpunkt des Schreibens noch nicht beobachtet haben.

Die vollständige Liste der Befehle ist in Tabelle 1 aufgeführt.

Tabelle 1. Vyveva-Backdoor-Befehle

ID Description
0x03 Antworte auf "Ping" vom Server
0x10 Informationen zum Computer abrufen - Benutzername, Computername, IP, Codepage, Betriebssystemversion, Betriebssystemarchitektur, Tickanzahl, Zeitzone, aktuelles Verzeichnis
0x11 Informationen zu Laufwerken abrufen - Typ, Größe, Name, Seriennummer, Dateisystemtyp
0x12 Daten in die angegebene Datei schreiben, optional Timestomp.
0x13
    Geben Sie die angegebene Datei oder das angegebene Verzeichnis hoch

  • Dateigröße, letzte Schreibzeit, Inhalt
  • Verzeichnisstatistiken - Gesamtgröße der Dateien, Anzahl der Dateien, Anzahl der Verzeichnisse
  •   o Für jeden Eintrag - Name, Attribute
      o Verzeichnisse - Rekurs in Verzeichnisse
      o Dateigröße, letzte Schreibzeit, Inhalt
    Optionen

  • Verwenden Sie die Komprimierung für Dateiinhalte (zlib 1.2.5).
  • Dateierweiterungsfilter (Whitelist / Blacklist)
  • Rekursionsflag
0x14
    Liste des angegebenen Verzeichnisses abrufen

  • Name, Attribute, Schreibzeit
  • Verzeichnisse - ist nicht leer
  • Dateigröße
0x15 Aktuelles Verzeichnis auf angegebenes Verzeichnis festlegen
0x16 Angegebenen Prozess erstellen
0x17 Informationen zum Ausführen von Prozessen abrufen - PID, PPID, ausführbarer Dateipfad
0x18 Prozesse durch PID oder ausführbaren Dateipfad beenden
0x19
    Prozess mit umgeleiteter Ausgabe erstellen und Ausgabe hochladen
    Der Befehl verwendet eine Formatzeichenfolge, die auf die Ausführung über cmd.exe hinweist

  • "% param0% / c"% param1%>% tmp_fpath% "2> & 1"
  • Wenn die Ausgabe leer ist, wird stattdessen die eindeutige Zeichenfolge " \ X0D \ x0A" hochgeladen

0x1A
    Den angegebenen Pfad löschen. Löschmethoden für Dateien:

  • Nur löschen
  • überschreiben & verschieben & löschen
0x1B Kopieren der Datei-Metadaten für Erstellung, Schreiben und Zugriff von einer Quelldatei oder dem Verzeichnis in die Zieldatei oder das Verzeichnis.
Wenn die Quelle nicht vorhanden ist, wird eine Zufallszeit aus dem Zeitraum 2000-2004 für die Erstellungs- und die letzte Schreibzeit verwendet. Die Zugriffszeit bleibt unverändert.
0x1C
    Informationen zum angegebenen Pfad abrufen:

  • Datei - Attribute, Erstellungs- / Schreib- / Zugriffszeit, Typ, Größe
  • Verzeichnis / Laufwerk - Gesamtgröße der Dateien, Anzahl der Dateien, Anzahl der Verzeichnisse (mit optionaler Filterung und Rekursion der Erweiterung)
0x1D Aktuelles Konfigurations-Blob festlegen, in Registrierung speichern
0x1E Aktuellen Konfigurations-Blob abrufen
0x1F Laufwerksüberwachung aktivieren / deaktivieren (Konfigurationsfeld enable_drive_watchdog)
0x20 Sitzungs-Watchdog aktivieren / deaktivieren (Konfigurationsfeld enable_session_watchdog)
0x21 Konfigurationswert in Bezug auf die Verzögerung der Backdoor-Ausführung festlegen (Konfigurationsfeld delay_until_time)
0x23 Daten speichern, die vom asynchronen Befehl verwendet werden (bezogen auf die Befehle 0x12, 0x13)
0x24 Beenden Sie die Ausführung des asynchronen Befehls (bezogen auf die Befehle 0x12, 0x13).
0x25 Konfigurationswert für die Verzögerung zwischen fehlgeschlagenen C&C-Verbindungsversuchen festlegen (Konfigurationsfeld wait_minutes)
0x26
    Wenn <SYSDIR>\wsdchngr.drx existiert

  • Konfigurationsregistrierungswert löschen
  • Backdoor-Datei löschen (selbst löschen)
  • Löschdatei löschen
  • Lesen, entschlüsseln, laden von wsdchngr.drx und Aufruf des SamIPromote-Export in einem neuen Thread
  • Beenden des aktuellen Threads

Von besonderem Interesse sind die Watchdogs der Backdoor, die optional aktiviert oder deaktiviert werden können. Es gibt einen Laufwerk-Watchdog, der zum Überwachen neu verbundener und getrennter Laufwerke verwendet wird, und einen Sitzungs-Watchdog, der die Anzahl der aktiven Sitzungen (d.h. angemeldete Benutzer) überwacht. Diese Komponenten können eine Verbindung zum C&C-Server außerhalb des regulären, vorkonfigurierten Drei-Minuten-Intervalls sowie bei neuen Laufwerks- und Sitzungsereignissen auslösen.

Konfiguration

Die Konfiguration der Backdoor, die anfänglich vom Installationsprogramm festgelegt wird, wird aus dem Registrierungswert gelesen (siehe Abbildung 3). Wenn die Konfiguration durch einen C&C-Befehl geändert wird, wird der in der Registrierung gespeicherte Wert aktualisiert. Eine beispielhafte Konfiguration und ihre Struktur sind in Abbildung 4 dargestellt.

Abbildung 4. Konfigurationsstruktur und kommentiertes Beispiel

Das Feld wait_minutes gibt die Wartezeit vor der nächsten Verbindung zum C&C nach einem fehlgeschlagenen Verbindungsversuch an. Wenn die Ausführung der Hintertür bis zu einer bestimmten Zeit und einem bestimmten Datum verzögert werden muss, kann dies im Feld delay_until_time angegeben werden. Das Feld encrypted_cncs ist eine verschlüsselte Zeichenfolge, die durch Semikolons getrennte C&Cs enthält.

Tor-Bibliothek

Vyveva verwendet die auf dem offiziellen Tor-Quellcode basierende Tor-Bibliothek, um mit einem C&C-Server zu kommunizieren, der zufällig aus der Konfiguration ausgewählt wurde. Sie kontaktiert den C&C in Abständen von drei Minuten und sendet Informationen über den Computer des Opfers und seine Laufwerke, bevor Befehle empfangen werden. Das Exportverzeichnis der Backdoor enthält die Datei TorSocket.dll mit selbsterklärenden Exporten close_ch, connect_ch, open_ch, read_ch, write_ch.

Fazit

Vyveva ist eine weitere Ergänzung des umfangreichen Malware-Arsenals von Lazarus. Der Angriff auf ein Unternehmen in Südafrika zeigt auch die breite geografische Ausrichtung dieser APT-Gruppe.

Falls Sie Fragen haben oder Samples zu diesem Thema einreichen möchten, wenden Sie sich an uns: threatintel@eset.com.

Indicators of Compromise (IoCs)

Samples

SHA-1 Filename ESET detection name Description
DAD50AD3682A3F20B2F35BE2A94B89E2B1A73067 powerctl.exe Win32/NukeSped.HX Installer
69529EED679B0C7F1ACC1FD782A4B443CEC0CF83 powerctl.dll Win32/NukeSped.HX Loader (x86)
043ADDFB93A10D187DDE4999D78096077F26E9FD wwanauth.dll Win64/NukeSped.EQ Loader (x64)
1E3785FC4FE5AB8DAB31DDDD68257F9A7FC5BF59 wwansec.dll Win32/NukeSped.HX Loader (x86)
4D7ADD8145CB096359EBC3E4D44E19C2735E0377 msobjs.drx - Backdoor (encrypted)
92F5469DBEFDCEE1343934BE149AFC1241CC8497 msobjs.drx Win32/NukeSped.HX Backdoor (decrypted with fixed MZ header)
A5CE1DF767C89BF29D40DC4FA6EAECC9C8979552 JET76C5.tmp - Backdoor Tor library (encrypted)
66D17344A7CE55D05A324E1C6BE2ECD817E72680 JET76C5.tmp Win32/NukeSped.HY Backdoor Tor library (decrypted with fixed MZ header) 

Filenames

%WINDIR%\System32\powerctl.exe
%WINDIR%\SysWOW64\powerctl.exe
%WINDIR%\System32\power.dat
%WINDIR%\SysWOW64\power.dat

%WINDIR%\System32\wwanauth.dll
%WINDIR%\SysWOW64\wwanauth.dll
%WINDIR%\System32\wwansec.dll
%WINDIR%\SysWOW64\wwansec.dll
%WINDIR%\System32\powerctl.dll
%WINDIR%\SysWOW64\powerctl.dll

%WINDIR%\System32\JET76C5.tmp
%WINDIR%\SysWOW64\JET76C5.tmp
%WINDIR%\System32\msobjs.drx
%WINDIR%\SysWOW64\msobjs.drx

MITRE ATT&CK techniques

This table was built using version 8 of the MITRE ATT&CK framework.

Tactic   ID   Name   Description  
Execution  T1569.002 System Services: Service Execution  Vyveva loader executes via a service.
T1106 Native API  Vyveva backdoor uses the CreateProcessA API to execute files.
Persistence  T1543.003 Create or Modify System Process: Windows Service  Vyveva installer creates a new service to establish persistence for its loader.
Defense Evasion  T1140 Deobfuscate/Decode Files or Information  Vyveva decrypts strings and components (backdoor, Tor library).
T1070.006 Indicator Removal on Host: Timestomp  Vyveva backdoor can timestomp files.
T1036.004 Masquerading: Masquerade Task or Service  Vyveva installer can create a service with attributes mimicking existing services.
T1112 Modify Registry  Vyveva stores its configuration in the registry. 
T1027 Obfuscated Files or Information  Vyveva has encrypted strings and components.
Discovery  T1083 File and Directory Discovery  Vyveva backdoor can obtain file and directory listings.
T1057 Process Discovery  Vyveva backdoor can list running processes.
T1082 System Information Discovery  Vyveva backdoor can obtain system information, including computer name, ANSI code page, OS version and architecture.
T1016 System Network Configuration Discovery  Vyveva backdoor can obtain the local IP address of the victim computer.
T1033 System Owner/User Discovery  Vyveva backdoor can obtain victim's username.
T1124 System Time Discovery  Vyveva backdoor can obtain system time and time zone.
Collection  T1560.002 Archive Collected Data: Archive via Library  Vyveva backdoor can compress files with zlib before sending to C&C.
T1005 Data from Local System  Vyveva backdoor can collect files from computer.
T1025 Data from Removable Media  Vyveva backdoor can notify C&C about newly inserted removable media and collect files from them.
Command and Control  T1573.001 Encrypted Channel: Symmetric Cryptography  Vyveva backdoor encrypts C&C traffic using XOR.
T1573.002 Encrypted Channel: Asymmetric Cryptography  Vyveva backdoor communicates with C&C via Tor.
Exfiltration  T1041 Exfiltration Over C2 Channel  Vyveva exfiltrates data to C&C server.