Dieser Artikel beschreibt zunächst, wie es der OceanLotus-Gang – auch als APT32 und APT-C-00 bekannt – gelang, die Sicherheitslücke CVE-2017-11882 (Memory Corruption Vulnerability) in Microsoft-Office auszunutzen. Außerdem zeigt der Beitrag, wie die OceanLotus-Malware Persistenz auf kompromittierten Computern erreichte, ohne großartig Spuren zu hinterlassen. Der Text schließt mit der Betrachtung, wie sich die APT-32-Gruppierung selbst-entpackende Archive seit Anfang 2019 zunutze macht, um schädlichen Code ausführen zu lassen.

Hintergrund

Das Verfolgen der Aktivitäten von OceanLotus gleicht einer Tour in eine Welt der Täuschungen. Die Cyber-Gang ist dafür bekannt, wie raffiniert sie potenzielle Opfer dazu bringen, die Backdoor auszuführen. Außerdem warten sie stets mit neuen Angriffs-Tools auf. Um sich bekannte Sicherheitslücken zunutze zu machen, dienen Dateien mit doppelten Datei-Endungen, selbst-entpackende Datei-Archive und Makro-Dokumente als Köder. Insgesamt ist OceanLotus sehr aktiv, konzentriert sich aber auf die südostasiatischen Länder.

Zusammenfassung des Equation Editor Exploits

Mitte 2018 führte OceanLotus eine Malware-Kampagne durch, bei der die Sicherheitslücke CVE-2017-11882 ausgenutzt wurde. Tatsächlich veröffentlichten sie mehrere Proofs-of-Concept. Die Sicherheitslücke lag in der Komponente, die für das Rendern und Bearbeiten mathematischer Gleichungen verantwortlich ist. Eines der von OceanLotus verwendeten bösartigen Dokumente wurde vom 360 Threat Intelligence Center (Chinesisch) analysiert. Es enthielt Details zum Exploit. Wir möchten uns hier ein ähnliches Dokument ansehen.

First Stage

Das Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc ähnelt dem aus dem oben erwähnten Artikel. Es adressiert Menschen, die sich für kambodschanische Politik interessieren.  Hintergrund: Die CNRP – Cambodia National Rescue Party – löste sich im Jahr 2017 auf. Das Dokument gibt vor, eine .doc-Datei zu sein. Allerdings handelt es sich hier tatsächlich um eins im .rtf-Format (Abbildung 1). Es enthält viel Datenmüll [Junk] und ist teilweise fehlerhaft.

Abbildung 1: .rtf Datenmüll-Felder

Abbildung 1: .rtf Datenmüll-Felder

Trotz fehlerhafter Elemente kann MS Word die rtf-Datei problemlos öffnen. Wie in (Abbildung 2) zu sehen ist, befindet sich am Offset 0xC00 eine EQNOLEFILEHDR-Struktur, gefolgt vom MTEF-Header und einem MTEF-Record (Abbildung 3) für einen Font.

Abbildung 2: FONT Record Werte

Abbildung 2: FONT Record Werte

Abbildung 3: FONT Record Format

Abbildung 3: FONT Record Format

Ein Overflow im name field ist deshalb möglich, weil dessen Größe vor dem Kopieren nicht überprüft wird. Ein name der zu lang ist, triggert die Sicherheitslücke. Wie man im .rtf-Datei-Inhalt erkennen kann, wird der Buffer zunächst mit Shellcode gefüllt, gefolgt von NOP(0x90)Sled und der Return-Address 0x402114. Diese Adresse ist ein Gadget in EQNEDT32.exe, das auf eine RET-Anweisung verweist. Das führt dazu, dass der EIP am Anfang name field steht, welches den Shellcode enthält.

Abbildung 4: Start des Exploit-Shellcodes

Abbildung 4: Start des Exploit-Shellcodes

Die 0x45BD3C-Adresse speichert eine Variable, die soweit zurückverfolgt wird, bis diese einen Pointer erreicht, der auf die aktuell geladene MTEFData-Struktur zeigt. Dort befindet sich der Rest des Shellcodes.

Der Shellcode dient der Ausführung eines zweiten Codes, welcher auch im .rtf-Dokument eingebettet ist. Zunächst versucht der initiale Shellcode, das Handle des geöffneten Dokuments zu finden. Dazu durchläuft der Code alle Handles des Systems (NtQuerySystemInformation mit SystemExtendedHandleInformation-Argument) und überprüft, ob die PID des Handles mit der PID eines WinWord-Prozesses übereinstimmt und ob das Dokument mit der Zugriffsmaske 0x12019F geöffnet wurde.

Um zu bestätigen, dass das richtige Handle und nicht das Handle eines anderen geöffneten Dokuments gefunden wurde, wird der Inhalt der Datei mit der Funktion CreateFileMapping zugeordnet und der Shellcode überprüft, ob die letzten vier Bytes des Dokuments „yyyy“ sind, diese Technik heißt „Egg Hunting".

Sobald eine Übereinstimmung stattfindet, wird das Dokument als ole.dll in den temporären Ordner (GetTempPath) kopiert. Dann werden die letzten 12 Bytes des Dokuments gelesen.

Abbildung 5: Markierungen am Ende des Dokuments

Abbildung 5: Markierungen am Ende des Dokuments

Der 32-Bit-Wert zwischen den AABBCCDD- und den yyyy-Markierungen ist der Offset zum nächsten Shellcode. Dieser wird mit der CreateThread-Funktion aufgerufen. Der extrahierte Shellcode ist derselbe, den die OceanLotus-Gruppe seit geraumer Zeit verwendet. Das Python-Emulator-Skript, das wir im März 2018 veröffentlicht haben, funktioniert nach wie vor, um den Speicherinhalt der nächsten Stufe anzuzeigen.

Second Stage

Extrahierung der Komponenten

Die Dateinamen und Verzeichnisse werden dynamisch gewählt. Der Code wählt den Dateinamen einer sich in C:\Windows\system32 befindenden ausführbaren oder DLL-Datei zufällig aus. Im Anschluss werden die Ressourcen abgefragt und dann das FileDescription-Field extrahiert, was als Ordnername dient. Wenn das nicht funktioniert, wählt der Code zufällig einen Ordnernamen aus den %ProgramFiles% oder C:\Windows (von GetWindowsDirectoryW) Verzeichnissen.

Um Kollisionen mit anderen Namen zu vermeiden, exkludierten die OceanLotus-Entwickler: windows, Microsoft, desktop, system, system32 und syswow64. Wenn ein Verzeichnis bereits vorhanden ist, fügt der Code dem ausgewählten Verzeichnisnamen „NLS_{sechs Ziffern}“ an.

Die 0x102 Ressource der Second Stage wird analysiert und die Dateien entweder in %ProgramFiles% oder %AppData% im zufällig ausgewählten Ordner abgelegt. Die Erstellungszeitpunkte werden so angepasst, dass sie mit dem Wert von kernel32.dll übereinstimmen.

Nachstehend findet man einen Ordner und eine Liste mit Dateien, die durch die Auswahl der ausführbaren Datei C:\Windows\system32\TCPSVCS.exe als Datenquelle erstellt wurden.

Abbildung 6: Die verschiedenen Komponenten im Verzeichnis

Abbildung 6: Die verschiedenen Komponenten im Verzeichnis

Der Aufbau der 0x102 Ressource im Dropper ist sehr komplex. Kurz gesagt, enthält sie:

  • Dateinamen
  • Dateigrößen und -Inhalte
  • Kompressionsformat (COMPRESSION_FORMAT_LZNT1 wird von der Funktion RtlDecompressBuffer verwendet)

Die erste Datei wird als TCPSVCS.exe abgelegt, welche laut Footprint eigentlich die AcroTranscoder.exe von Adobe ist (laut FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Wie der ein oder andere vielleicht bereits bemerkte, beträgt die Dateigröße einiger DLLs um die 11MB. Das liegt daran, dass ein großer zusammenhängender Puffer von Zufallsdaten in der ausführbaren Datei enthalten ist. Damit möchten die OceanLotus-Hacker möglicherweise einer Erkennung durch Antivirusprogramme entgehen.

Erlangen von Persistenz auf den Computern der Opfer

Die 0x101- Ressource des Droppers enthält zwei 32-Bit-Ganzzahlen, die bestimmen, wie die Persistenz implementiert werden soll. Der Wert der ersten gibt an, wie die OceanLotus-Malware Persistenz ohne Administratorrechte erzielt.

First integer value Persistence mechanism
0 Do not achieve persistence
1 Scheduled task as current user
2 (HKLM|HKCU)\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
3 Creation of a shortcut file (with a .lnk extension) in the subdirectory Microsoft\Windows\Start Menu\Programs\Startup under one of the environment variables: %ALLUSERSPROFILE%, %APPDATA% or %USERPROFILE%

Der Wert der zweiten Ganzzahl gibt an, wie die Malware Persistenz mit erhöhten Rechten erlangt.

Second integer value Persistence mechanism
1 Scheduled task as administrator
2 Creation of a service

Der Servicename ist der Dateiname ohne Erweiterung; der Anzeigename entspricht dem Ordnername. Wenn dieser jedoch bereits existiert, wird die Zeichenfolge „Revision 1“ angehängt (die Nummer erhöht sich, bis ein nicht verwendeter Name gefunden wird). Die Malware-Entwickler stellten sicher, dass die Persistenz durch den Dienst gewahrt bleibt: Bei einem Ausfall des Dienstes erfolgt ein Service-Neustart nach einer Sekunde. Dann wird der Registrierungswert WOW64 des neuen Dienstschlüssels auf 4 festgelegt. Dieser gibt an, dass es sich um einen 32-Bit-Dienst handelt.

Die geplante Task wird durch mehrere COM-Schnittstellen erstellt: ITaskScheduler, ITask, ITaskTrigger, IPersistFile und ITaskScheduler. Im Wesentlichen erstellt die OceanLotus-Malware eine versteckte Aufgabe, legt die Kontoinformationen mit dem aktuellen Benutzer oder den Administratorinformationen fest und bestimmt den Trigger.
Die tägliche Task besitzt eine Dauer von 24 Stunden. Das Intervall zwischen zwei Ausführungen ist auf 10 Minuten festgelegt. Das bedeutet, dass die Task die gesamte Zeit ausgeführt wird.

Das schädliche Bit

In unserem Fall lädt die ausführbare Programmdatei TCPSVCS.exe (AcroTranscoder.exe) die DLLs, die mit ihr vom Dropper abgelegt wurden. Die Flash Video Extension.dll erwies sich als sehr interessant. Deren DLLMain-Function ruft nur eine einzelne Funktion auf. Einige undurchsichtige Variablen gibt es auch:

Abbildung 7: Undurchsichtige Variablen

Abbildung 7: Undurchsichtige Variablen

Nach diesen undurchsichtigen Checks, holt sich der Code den .text-Teil von TCPSVCS.exe, ändert die Schutzstufe zu PAGE_EXECUTE_READWRITE und überschreibt die Section mit Do-Nothing-Anweisungen, die aber keine Nebeneffekte haben.

Abbildung 8: Sequenz von Anweisungen ohne Effekt

Abbildung 8: Sequenz von Anweisungen ohne Effekt

Zum Schluss wird eine CALL-Anweisung an die Adresse der Funktion FLVCore::Uninitialize (void) angehängt (exportiert von der Flash Video Extension.dll).

Das bedeutet, dass wenn die Runtime WinMain in TCPSVCS.exe aufruft (nach dem Laden der schädlichen DLL), der Instruction Pointer auf „NOPsled zeigen wird, was dann wiederum eventuell FLVCore::Uninitialize(void) aufruft – die nächste Stufe.

Diese Funktion erzeugt einen Mutex, der mit {181C8480-A975-411C-AB0A-630DB8B0A221} beginnt, gefolgt vom aktuellen Username. Dann liest dieselbe Funktion die vom Dropper abgelegte Datei mit der .db3-Erweiterung, welche Positions-unabhängigen Code enthält, und benutzt CreateThread um den Inhalt auszuführen.

Die .db3-Datei beinhaltet Shellcode, den OceanLotus immer mal wieder verwendet. Auch diese Payload kann man mit dem Emulator-Skript entpacken (Emulator-Skript auf GitHub).

Das Skript extrahiert die Final Stage. Dahinter verbirgt sich die OceanLotus-Backdoor, welche wir bereits im Artikel: „OceanLotus: Neue Backdoor nutzt bekannte Tricks“ beschrieben. Das Hintertürchen erkennt man an der GUID: {A96B020F-0000-466F-A96D-A91BBF8EAC96} aus der Binary. Die Konfigurationsdatei der Malware liegt nach wie vor in einer PE-Ressource verschlüsselt. Die Konfiguration ist bis auf die neuen C&C-Server unverändert.

  • andreagahuvrauvin[.]com
  • byronorenstein[.]com
  • stienollmache[.]xyz

Wieder einmal wartet OceanLotus mit einer enormen Technik-Kombination auf, um unentdeckt zu bleiben. Durch Zufallsnamen und Zufallsdaten reduzieren sie die Anzahl zuverlässiger IoCs (Hash- und Datei-basierte Indikatoren einer Kompromittierung). Durch den Einsatz von DLL-Side-Loading, müssen die Angreifer nur die legitimen AcroTranscoder-Binärdateien absetzen.

Selbstentpackende Archive

Nach dem die OceanLotus-Entwickler zunächst .rtf-Dateien einsetzten, erweiterten die Cyber-Kriminellen ihr Repertoire um SFX-Archives. Diese nutzen übliche Dokument-Icons, um potenzielle Opfer in die Irre zu führen – wie von Threatbook (in Chinesisch) dokumentiert. Bei der Ausführung werden die sich selbst entpackenden RAR-Dateien abgelegt. Diese führen dann DLL-Files (mit .ocx-Erweiterung) mit der finalen Payload {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll aus.

Diese Technik gebrauchte die OceanLotus-Gruppe bereits seit etwa Mitte Januar 2019. Allerdings passten sie die Einstellungen immer mal wieder an. Der folgende Abschnitt beschreibt die Techniken und Anpassungen, die sie zum Ziel führten.

Der OceanLotus-Köder

Das THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE -Dokument tauchte zuerst im Jahr 2018 auf. Die SFX-Datei ist clever zusammengesetzt, da die Beschreibung (Versionsinfo) vorgibt, eine JPEG-Bilddatei zu sein. Das Skript des SFX ist das folgende:

Abbildung 9: SFX-Befehle

Abbildung 9: SFX-Befehle

Die Malware legt {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC) und das Bild thich-thong-lac.jpg ab.

Abbildung 10: Köder-Bild

Abbildung 10: Köder-Bild

Die ersten beiden Zeilen des SFX-Skripts rufen die OCX-Datei zweimal auf, aber das ist kein Fehler:
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)

Der Steuerungsfluss der OCX-Datei ist anderen OceanLotus-Komponenten sehr ähnlich: Es gibt viele JZ/JNZ- und PUSH/RET-Befehlssequenzen, die mit unnützen Code verschachtelt sind.

Abbildung 11: verschleierter Code

Abbildung 11: verschleierter Code

Nach dem Filtern des Junk-Codes sieht der von regsvr32.exe aufgerufene Export DllRegisterServer folgendermaßen aus:

Abbildung 12: Haupt-Code des Installers

Abbildung 12: Haupt-Code des Installers

Wenn der DllRegisterServer zum ersten Mal aufgerufen wird, setzt er den Reg-Wert HKCU\SOFTWARE\Classes\CLSID\E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}\Model auf einen in der DLL (0x10001DE0) codierten Offset.

Beim zweiten Funktionsaufruf holt sich der Code genau diesen Wert und führt die Funktion an dieser Adresse aus. Von dort wird die Ressource gelesen und ausgeführt. Das Gleiche gilt für einige in-memory-Operations.

Der Shellcode ist derselbe PE-Loader, der bereits in früheren OceanLotus-Kampagnen zum Einsatz kam. Eine Emulierung ist mit dem miasm emulation script möglich. Im Endeffekt legt der Code die db293b825dcc419ba7dc2c49fa2757ee.dll ab, lädt die DLL in den Speicher und führt DllEntry aus.

Die DLL ruft den Inhalt ihrer Ressource ab, entschlüsselt (AES-256-CBC) und dekomprimiert diese (via LZMA). Die Ressource hat ein spezifisches Format, das sich relativ leicht rekonstruieren lässt.

Abbildung 13: Struktur der Installer-Konfiguration (KaitaiStruct Visualizer)

Abbildung 13: Struktur der Installer-Konfiguration (KaitaiStruct Visualizer)

Die Konfiguration ist eindeutig: Abhängig von der Berechtigungsstufe werden die Binärdaten in %appdata%\Intel\logs\BackgroundUploadTask.cpl oder %windir%\System32\BackgroundUploadTask.cpl (oder SysWOW64 für 64-Bit-Systeme) geschrieben.

Als Nächstes kümmert sich die Malware um die Persistenz, indem eine Task mit dem Namen BackgroundUploadTask[Junk].job erstellt wird, wobei [Junk] eine Sammlung von 0x9D- und 0xA0-Bytes ist.

Der Anwendungsname der Task lautet %windir%\System32\control.exe. Der Parameterwert ist der Pfad der abgelegten Binary. Die versteckte Task wird täglich ausgeführt.

Vom Aufbau her ist die CPL-File eine DLL, dessen interner Name ac8e06de0a6c4483af9837d96504127e.dll lautet. Die File exportiert eine CPLApplet-Funktion. Diese Datei entschlüsselt ihre einzige Ressource {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Letztere wird geladen und ruft darauf hin den Export DllEntry auf.

Backdoor Konfigurationsdatei

Die OceanLotus-Backdoor verfügt über eine verschlüsselte Konfigurationsdatei. Diese gleicht der aus dem vorherigen Hintertürchen.

Abbildung 14: Aufbau der Backdoor-Knofigurationsdatei (KaitaiStruct Visualizer)

Abbildung 14: Aufbau der Backdoor-Konfigurationsdatei (KaitaiStruct Visualizer)

Trotz struktureller Parallelen sind viele Werte gegenüber der Backdoor-Konfigurationsdatei – die wir im OceanLotus Whitepaper 2018 darstellten – verändert worden. Das erste Element des Binarys-Array enthalt eine DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), welche Tencent entdeckte. Da der Exportname jedoch aus der Binärdatei entfernt wurde, passen die Hashwerte nicht mehr zu einander.

Die besonderen Bemühungen von OceanLotus

Bei der Suche nach Mustern fiel uns eine Besonderheit auf. Das analysierte Malware-Sample tauchte um Julii 2018 auf – ein ähnliches Mitte Januar respektive Anfang Februar. Als Angriffsvektor gebrauchten die Cyberkriminellen ein SFX Archive, welches ein Köder-Dokument und eine schädliche .ocx-Datei auslieferte.

Obwohl OceanLotus viele verschiedene gefälschte Zeitstempel benutzt, sind die Zeitstempel der SFX- bzw. OCX-Dateien stets 0x57B0C36A (08/14/2016 @ 7:15pm UTC) oder 0x498BE80F (02/06/2009 @ 7:34am UTC). Möglicherweise bedeutet das, dass die Malware-Entwickler eine Art „Builder“ mit dem immer gleichen Template verwenden. Lediglich ein paar Einstellungen werden angepasst.

Unter den seit Anfang 2018 analysierten Dokumenten, tauchten Dokument-Namen auf, die Rückschlüsse auf eine länderspezifische Ausrichtung der OceanLotus-Malware zulassen.

  • The New Contact Information Of Cambodia Media(New).xls.exe
  • 李建香 (个人简历).exe (gefälschtes pdf-Dokument eines Lebenslaufs)
  • feedback, Rally in USA from July 28-29, 2018.exe

Seit der Entdeckung der {A96B020F-Package466F-A96D-A91BBF8EAC96}.dll-Backdoor und den öffentlichen Analysen durch diverse Sicherheitsforschende beobachteten wir einige Veränderungen in der Konfiguration der Malware.
Zunächst begannen die Malware-Entwickler, die Namen aus den Hilfs-DLLs zu entfernen (DNSprov.dll und die zwei Versionen von HttpProv.dll). Dann stoppten sie das Packen der dritten DLL (zweite Version von HttpProv.dll) und implementierten nur noch eine DLL.

Ohnehin änderten sich viele Felder in der Konfigurationsdatei der OceanLotus-Backdoor. Damit wollten sie wahrscheinlich möglichen Entdeckungen durch Antivirenprogrammen vorbeugen, da bereits viele IoCs bekannt waren. Die wichtigsten Änderungen betrifft:

  • der Registrierungsschlüssel "AppX" wurde geändert (siehe IoCs)
  • die Mutex-Kodierungszeichenfolge ("def", "abc", "ghi")
  • die Portnummer

Schließlich kommunizieren alle neuen analysierten Varianten mit den im Abschnitt IoCs aufgeführten C&C-Servern.

Fazit

Die OceanLotus-Gruppierung ist nach wie vor sehr aktiv und entwickelt sich ständig weiter. Die Cyber-Gang konzentriert sich auf den variablen Einsatz unterschiedlicher Tools und Köder. Die Payload der Malware verpacken sie geschickt in lockenden Dokumenten - hier als gefälschtes DOC. Teilweise greifen sie dabei aktuelle Ereignisse auf.

Die OceanLotus-Entwickler probieren hin und wieder neue Techniken aus. Teilweise verwerten sie öffentlich zugänglichen Exploit-Code wieder oder passen diesen an, wie das Beispiel des Equation Editor Exploits zeigt.

Außerdem versuchen OceanLotus ihre Hacker-Techniken dahingehend zu verbessern, dass sie die Anzahl der zurückgelassenen Spuren auf den Computern der Opfer soweit wie möglich reduzieren. Auf diese Weise möchte man Entdeckungen durch Antivirusprogrammen entgehen.

Im Verlauf unserer Untersuchungen stellte sich heraus, dass viele Malware-Vorgänge im Arbeitsspeicher stattfanden und Dateinamen zufällig generiert wurden. Außerdem haben die OceanLotus-Entwickler die Binarys so modifiziert, dass sie nur schwer zu enttarnen waren. Interessanterweise scheinen einige Domain-Namen aus einem Wörterbuch zu stammen.

Die OceanLotus-Cyberkriminellen werden ihrer Cyber-Attacken nicht überdrüssig und setzen die Malware-Kampagnen fort.

Indicators of Compromise (IoCs)

The IoCs in this blogpost, as well as the MITRE ATT&CK attributes, are also available from our GitHub repository.

Registry keys/values:

  • HKCU\SOFTWARE\Classes\CLSID\{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}\Model
  • [HKCU|HKLM]\SOFTWARE\App\
    • AppXbf13d4ea2945444d8b13e2121cb6b663\
      • Application
      • DefaultIcon
    • AppX70162486c7554f7f80f481985d67586d\
      • Application
      • DefaultIcon
    • AppX37cc7fdccd644b4f85f4b22d5a3f105a\
      • Application
      • DefaultIcon

Mutexes:

  • {181C8480-A975-411C-AB0A-630DB8B0A221}_ (+ username)

Domain names
aliexpresscn[.]net
andreagahuvrauvin[.]com
andreagbridge[.]com
aol.straliaenollma[.]xyz
beaudrysang[.]xyz
becreybour[.]com
byronorenstein[.]com
chinaport[.]org
christienoll[.]xyz
christienollmache[.]xyz
cloud.360cn[.]info
dieordaunt[.]com
dns.chinanews[.]network
illagedrivestralia[.]xyz
karelbecker[.]com
karolinblair[.]com
lauradesnoyers[.]com
ntop.dieordaunt[.]com
office.ourkekwiciver[.]com
ourkekwiciver[.]com
sophiahoule[.]com
stienollmache[.]xyz
straliaenollma[.]xyz
ursulapapst[.]xyz

Files:

Documents exploiting CVE-2017-11882:
SHA-1 hashes
D1357B284C951470066AAA7A8228190B88A5C7C3
49DFF13500116B6C085C5CE3DE3C233C28669678
9DF3F0D8525EDF2B88C4A150134C7699A85A1508
50A755B30E8F3646F9476080F2C3AE1347F8F556
BB060E5E7F7E946613A3497D58FBF026AE7C369A
E2D949CF06842B5F7AE6B2DFFAA49771A93A00D9
ESET detection names
Win32/Exploit.CVE-2017-11882.BU
Win32/Exploit.CVE-2017-11882.A
Win32/Exploit.Agent.KT
Win32/Exploit.Agent.LT
Win32/Exploit.CVE-2017-11882.EI
SFX archives and OCX droppers:
SHA-1 hashes
AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB
7642F2181CB189965C596964D2EDF8FE50DA742B
CD13210A142DA4BC02DA47455EB2CFE13F35804A
377FDC842D4A721A103C32CE8CB4DAF50B49F303
B4E6DDCD78884F64825FDF4710B35CDBEAABE8E2
BD39591A02B4E403A25AAE502648264308085DED
B998F1B92ED6246DED13B79D069AA91C35637DEC
CC918F0DA51794F0174437D336E6F3EDFDD3CBE4
83D520E8C3FDAEFB5C8B180187B45C65590DB21A
EFAC23B0E6395B1178BCF7086F72344B24C04DCC
8B991D4F2C108FD572C9C2059685FC574591E0BE
B744878E150A2C254C867BAD610778852C66D50A
3DFC3D81572E16CEAAE3D07922255EB88068B91D
77C42F66DADF5B579F6BCD0771030ADC7AEFA97C
ESET detection names
Win32/Agent.ZUR

MITRE ATT&CK matrix

Tactic ID Name Description
Initial Access T1193 Spearphishing Attachment Deceitful RTF documents and self-extracting archives are sent to potential victims.
Execution T1204 User Execution The user needs to execute the self-extracting archive or open the RTF document.
T1117 Regsvr32 The self-extracting archives execute regsvr32 to run the OceanLotus' backdoor.
T1035 Service Execution The second stage of the exploit tries to run OceanLotus' backdoor as a service.
Persistence T1050 New Service The second stage of the exploit tries to achieve persistence by creating a service.
T1060 Registry Run Keys / Start Folder The second stage of the exploit tries to achieve persistence by adding a value in the Run registry key.
T1053 Scheduled Task The second stage of the exploit tries to achieve persistence by creating a schedule task.
Defense Evasion T1009 Binary Padding The second stage of the exploit fills dropped executables with random data.
T1073 DLL Side-Loading OceanLotus' backdoor is side-loaded by dropping a library and a legitimate, signed executable (AcroTranscoder).
T1112 Modify Registry OceanLotus' backdoor stores its configuration in a registry key.
T1027 Obfuscated Files or Information The second stage of the exploit drops an encrypted shellcode.
T1099 Timestomp The creation time of the files dropped by the second stage of the exploit is set to match the creation time of kernel32.dll.
Discovery T1083 File and Directory Discovery OceanLotus' backdoor can list files and directories.
T1012 Query Registry OceanLotus' backdoor can query the Windows Registry to gather system information.
T1082 System Information Discovery OceanLotus' backdoor captures system information and sends it to its C&C server.
Exfiltration T1002 Data Compressed OceanLotus' backdoor uses LZMA compression before exfiltration.
T1022 Data Encrypted OceanLotus' backdoor uses RC4 encryption before exfiltration.
T1041 Exfiltration Over Command and Control Channel Data exfiltration is done using the already opened channel with the C&C server
T1203 Exploitation for Client Execution The RTF document includes an exploit to execute malicious code. (CVE‑2017‑11882)
Command And Control T1094 Custom Command and Control Protocol OceanLotus' backdoor can exfiltrate data by encoding it in the subdomain field of DNS packets.
T1065 Uncommonly Used Port OceanLotus' backdoor use HTTP over an uncommon TCP port (14146). Port is specified in the backdoor configuration.