In diesem Beitrag berichten wir, wie die Cybergruppe OceanLotus (APT32 und APT-C-00) kĂŒrzlich eine der öffentlich zugĂ€nglichen Exploits fĂŒr , eine Speicherverwundbarkeit in Microsoft Office, verwendet hat und wie die Malware der Gruppe Persistenz in kompromittierten Systemen gewĂ€hrleistet, ohne Spuren zu hinterlassen. Weiterhin beschreiben wir, wie die Gruppe seit Anfang 2019 selbstextrahierende Archive eingesetzt hat, um Code auszufĂŒhren.
OceanLotus spezialisiert sich auf Cyber-Spionage, wobei die priorisierten Ziele in SĂŒdostasien liegen. Die Angreifer fĂ€lschen Dokumente, die die Aufmerksamkeit potenzieller Opfer erregen sollen, um diese zu ĂŒberzeugen, einen Backdoor zu installieren, und arbeiten gleichzeitig an der Entwicklung ihrer Werkzeuge. Die Methoden zur Erstellung von TĂ€uschungen variieren in verschiedenen Angriffen â von âdoppelten Erweiterungenâ, selbstextrahierenden Archiven und Dokumenten mit Makros bis hin zu bekannten Exploits.

Einsatz des Exploits im Microsoft Equation Editor
Mitte 2018 fĂŒhrte OceanLotus eine Kampagne unter Verwendung der Verwundbarkeit CVE-2017-11882 durch. Ein Dokument, das von der Cybergruppe analysiert wurde, wurde vom 360 Threat Intelligence Center (), einschlieĂlich einer detaillierten Beschreibung der Exploits. Im folgenden Beitrag finden Sie einen Ăberblick ĂŒber ein Ă€hnliches schĂ€dliches Dokument.
Erster Schritt
Dokument FW-Bericht ĂŒber die Demonstration der ehemaligen CNRP in der Republik Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) Ă€hnelt dem im obigen Bericht erwĂ€hnten. Es ist interessant, da es sich an Benutzer richtet, die sich fĂŒr die kambodschanische Politik interessieren (CNRP â Kampuchean National Rescue Party, die Ende 2017 aufgelöst wurde). Trotz der .doc-Erweiterung hat das Dokument das RTF-Format (siehe Abbildung unten), enthĂ€lt Junk-Code und ist zudem verzerrt.

Abbildung 1. âJunkâ in RTF
Trotz der vorhandenen verzerrten Elemente öffnet Word diese RTF-Datei erfolgreich. Wie aus Abbildung 2 ersichtlich, zeigt sich hier die Struktur EQNOLEFILEHDR mit der Verschiebung 0xC00, gefolgt von der MTEF-Ăberschrift und dann dem MTEF-Datensatz (Abbildung 3) fĂŒr die Schriftart.

Abbildung 2. Werte des FONT-Datensatzes

Abbildung 3.
Mögliche Ăberlauf im Feld name, da dessen GröĂe vor dem Kopieren nicht ĂŒberprĂŒft wird. Ein zu langer Name löst die Verwundbarkeit aus. Wie aus dem Inhalt der RTF-Datei ersichtlich ist (Verschiebung 0xC26 in Abbildung 2), wird der Puffer mit Shell-Code gefĂŒllt, gefolgt von einem Dummy-Befehl (0x90) und der RĂŒckadresse. 0x402114. Die Adresse ist ein Dialogelement in EQNEDT32.exe, das auf die Anweisung hinweist RET. Dies fĂŒhrt dazu, dass EIP auf den Anfang des Feldes verweist name, das Shellcode enthĂ€lt.

Abbildung 4. Beginn des Shellcodes des Exploits
Adresse 0x45BD3C , speichert eine Variable, die dereferenziert wird, bis sie den Zeiger auf die aktuell geladene Struktur erreicht MTEFData. Hier befindet sich der verbleibende Shellcode.
Der Zweck des Shellcodes besteht darin, den zweiten Fragment des Shellcodes auszufĂŒhren, der in das geöffnete Dokument eingebettet ist. ZunĂ€chst versucht der ursprĂŒngliche Shellcode, den Dateihandler des offenen Dokuments zu finden, indem er alle Handler der System ĂŒberprĂŒft (NtQuerySystemInformation ) mit dem Argument SystemExtendedHandleInformation) und prĂŒft, ob die PID , des Handlers und PID des Prozesses WinWord , und ob das Dokument mit einer Zugriffsmaske geöffnet wurde â 0x12019F.
. Um die Auffindung des richtigen Handlers (und nicht eines anderen offenen Dokuments) zu bestĂ€tigen, wird der Inhalt der Datei mithilfe der Funktion CreateFileMapping, und der Shellcode ĂŒberprĂŒft, ob die letzten vier Bytes des Dokuments «yyyy» entsprechen (Methode Egg Hunting). Sobald eine Ăbereinstimmung gefunden wird, wird das Dokument in einen temporĂ€ren Ordner kopiert (GetTempPath) als ole.dllAnschlieĂend werden die letzten 12 Bytes des Dokuments gelesen.
![]()
Abbildung 5. Dokumenten-Endmarker
32-Bit-Wert zwischen den Markierungen AABBCCDD und yyyy â dies ist die Verschiebung des nĂ€chsten Shell-Codes. Er wird durch die Funktion CreateThreadaufgerufen. Der gleiche Shell-Code, der zuvor von der Gruppe OceanLotus verwendet wurde, wird extrahiert. , das wir im MĂ€rz 2018 veröffentlicht haben, funktioniert weiterhin fĂŒr den Dump der zweiten Phase.
Zweite Phase
Extrahierung der Komponenten
Dateinamen und Verzeichnisse werden dynamisch ausgewĂ€hlt. Der Code wĂ€hlt zufĂ€llig den Namen der ausfĂŒhrbaren Datei oder DLL-Datei in C:Windowssystem32. AnschlieĂend wird eine Anfrage an seine Ressourcen gestellt und das Feld FileDescription extrahiert, um als Ordnername verwendet zu werden. Falls dies nicht funktioniert, wĂ€hlt der Code zufĂ€llig einen Ordnernamen aus den Verzeichnissen %ProgramFiles% oder C:Windows (von GetWindowsDirectoryW). Er vermeidet die Verwendung eines Namens, der mit bestehenden Dateien in Konflikt stehen könnte, und sorgt dafĂŒr, dass er keine der folgenden Wörter enthĂ€lt: windows, Microsoft, desktop, System, system32 oder syswow64. Wenn das Verzeichnis bereits existiert, wird dem Namen âNLS_{6 Zeichen}â hinzugefĂŒgt.
Ressource 0x102 wird analysiert und die Dateien werden in %ProgramFiles% oder %AppData%, in einen zufÀllig ausgewÀhlten Ordner. Das Erstellungsdatum wurde geÀndert, um die gleichen Werte wie zu haben kernel32.dll.
Zum Beispiel ist hier der Ordner und die Liste der Dateien, die durch die Auswahl der ausfĂŒhrbaren Datei erstellt wurden C:Windowssystem32TCPSVCS.exe als Datenquelle.

Abbildung 6. Extraktion verschiedener Komponenten
Ressourcenstruktur 0x102 im Dropper ist ziemlich komplex. Kurz gesagt, er enthÀlt:
â Dateinamen
â GröĂe und Inhalt der Dateien
â Kompressionsformat (COMPRESSION_FORMAT_LZNT1, verwendet von der Funktion RtlDecompressBuffer)
Die erste Datei wird als TCPSVCS.exe, die legitim ist AcroTranscoder.exe (laut FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).
Vielleicht ist Ihnen aufgefallen, dass die GröĂe mancher DLL-Dateien 11 MB ĂŒberschreitet. Das liegt daran, dass ein groĂer zusammenhĂ€ngender Puffer zufĂ€lliger Daten im ausfĂŒhrbaren File untergebracht ist. Es ist nicht ausgeschlossen, dass dies eine Möglichkeit ist, bestimmte Sicherheitsprodukte zu umgehen.
GewÀhrleistung von Persistenz
Ressource 0x101 Im Dropper sind zwei 32-Bit-Ganzzahlen enthalten, die definieren, wie die Persistenz gewÀhrleistet werden soll. Der Wert der ersten Zahl zeigt an, wie die Malware Persistenz ohne Administratorrechte speichern wird.

Tabelle 1. Mechanismus zur GewÀhrleistung der Persistenz ohne Administratorrechte
Der Wert der zweiten Zahl gibt an, wie die Malware Persistenz mit Administratorrechten gewÀhrleisten muss.

Tabelle 2. Mechanismus zur GewÀhrleistung der Persistenz mit Administratorrechten
Der Dienstname ist der Dateiname ohne Erweiterung; der angezeigte Name ist der Ordnername, aber wenn dieser bereits existiert, wird ihm der String âRevision 1â hinzugefĂŒgt (die Zahl wird erhöht, bis ein ungenutzter Name gefunden wird). Die Betreiber haben dafĂŒr gesorgt, dass die Persistenz ĂŒber den Dienst stabil ist â im Falle eines Ausfalls sollte der Dienst nach 1 Sekunde neu gestartet werden. Dann bekommt der neue Registrierungs-Keys des Dienstes den Wert 4, was darauf hinweist, dass es sich um einen 32-Bit-Dienst handelt. WOW64 Ein geplanter Task wird ĂŒber verschiedene COM-Schnittstellen erstellt:
ITaskScheduler ITask, ITaskTrigger, IPersistFile, IPersistFile und ITask. Im Grunde genommen erstellt die Malware eine versteckte Aufgabe, setzt Kontoinformationen zusammen mit Informationen ĂŒber den aktuellen Benutzer oder Administrator und löst dann einen Trigger aus.
Es handelt sich um eine tĂ€gliche Aufgabe mit einer Dauer von 24 Stunden und einem Intervall von 10 Minuten zwischen zwei AusfĂŒhrungen, was bedeutet, dass sie kontinuierlich ausgefĂŒhrt wird.
Malware-Bit
In unserem Beispiel ist die ausfĂŒhrbare Datei TCPSVCS.exe (AcroTranscoder.exe) legitime Software, die DLLs herunterlĂ€dt, die zusammen mit ihr abgelegt werden. In diesem Fall ist von Interesse Flash Video Extension.dll.
Seine Funktion DLLMain ruft einfach eine andere Funktion auf. Es gibt einige vage PrÀdikate:

Abbildung 7. Vage PrÀdikate
Nach diesen irrefĂŒhrenden PrĂŒfungen erhĂ€lt der Code den Abschnitt .text Datei TCPSVCS.exe, Ă€ndert seinen Schutz auf PAGE_EXECUTE_READWRITE und ĂŒberschreibt ihn, indem er Dummy-Befehle hinzufĂŒgt:

Abbildung 8. Befehlsfolge
Am Ende wird an die Adresse der Funktion FLVCore::Uninitialize(void), die exportiert wird, der Befehl Flash Video Extension.dllCALL . Das bedeutet, dass nach dem Laden der bösartigen DLL, wenn die LaufzeitWinMain aufruft, der Befehlszeiger auf NOP zeigen wird, was dazu fĂŒhrt, dass in TCPSVCS.exe, der Zeiger auf die Instruktion wird auf NOP zeigen, was zu einem Aufruf fĂŒhrt FLVCore::Uninitialize(void), der nĂ€chste Schritt.
Die Funktion erstellt einfach ein Mutex, das beginnt mit {181C8480-A975-411C-AB0A-630DB8B0A221}, gefolgt vom aktuellen Benutzernamen. Dann wird die zurĂŒckgesetzte Datei mit der Erweiterung *.db3 gelesen, die positionsunabhĂ€ngigen Code enthĂ€lt, und verwendet CreateThread um den Inhalt auszufĂŒhren.
Der Inhalt der Datei *.db3 besteht aus Shell-Code, der typischerweise von der OceanLotus-Gruppe verwendet wird. Wir haben erfolgreich dessen Payload mit einem Emulator-Skript extrahiert, das wir veröffentlicht haben. .
Das Skript extrahiert die finale Phase. Dieses Element ist ein Backdoor, den wir bereits in . Dies kann anhand der GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} der BinĂ€rdatei festgestellt werden. Die Konfiguration der Malware ist weiterhin im PE-Ressourcenteil verschlĂŒsselt. Sie hat ungefĂ€hr die gleiche Konfiguration, jedoch unterscheiden sich die C&C-Server von den vorherigen:
- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz
Die OceanLotus-Gruppe zeigt erneut eine Kombination verschiedener Techniken, um Entdeckungen zu vermeiden. Sie sind mit einem "verbesserten" Schema des Infektionsprozesses zurĂŒckgekehrt. Durch die Wahl zufĂ€lliger Namen und das FĂŒllen ausfĂŒhrbarer Dateien mit zufĂ€lligen Daten verringern sie die Anzahl der zuverlĂ€ssigen IoCs (auf Basis von Hashes und Dateinamen). DarĂŒber hinaus, durch die Verwendung von Drittanbieter-DLL-Ladungen, mĂŒssen die Angreifer lediglich die legitieme BinĂ€rdatei entfernen. AcroTranscoder.
Selbstentpackende Archive
Nach RTF-Dateien hat die Gruppe auf selbstentpackende (SFX) Archive mit gĂ€ngigen Dokumentensymbolen umgeschaltet, um den Benutzer weiter zu verwirren. Dies wurde von Threatbook berichtet (). Nach der AusfĂŒhrung werden selbstentpackende RAR-Dateien zurĂŒckgesetzt und DLLs mit der Erweiterung .ocx ausgefĂŒhrt, deren finale Payload zuvor dokumentiert wurde. {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Seit Mitte Januar 2019 wendet OceanLotus diese Technik wieder an, Ă€ndert jedoch im Laufe der Zeit einige Konfigurationen. In diesem Abschnitt werden wir die Technik und die Ănderungen beschreiben.
Erstellung von Ködern
Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) erstmals 2018 entdeckt. Diese SFX-Datei wurde clever erstellt â in der Beschreibung (Versionsinformationen) steht, dass es sich um ein JPEG-Bild handelt. Das SFX-Skript sieht folgendermaĂen aus:

Abbildung 9. SFX-Befehle
Die Malware setzt zurĂŒck {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), sowie das Bild 2018 thich thong lac.jpg.
Das Lockbild sieht folgendermaĂen aus:

Abbildung 10. Lockbild
Vielleicht ist Ihnen aufgefallen, dass die ersten beiden Zeilen im SFX-Skript die OCX-Datei zweimal aufrufen, aber das ist kein Fehler.
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
Der Kontrollfluss der OCX-Datei Ă€hnelt stark anderen Komponenten von OceanLotus â viele Befehlfolgen JZ/JNZ und PUSH/RET, die mit Junk-Code abwechseln.

Abbildung 11. Obfuszierter Code
Nach der Filterung des Junk-Codes sieht der Export DllRegisterServer, aufgerufen durch regsvr32.exe, folgendermaĂen aus:

Abbildung 12. Hauptcode des Installers
Im Wesentlichen setzt der erste Aufruf DllRegisterServer den Wert im Registrierungseditor HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Modell auf den verschlĂŒsselten Offset in der DLL (0x10001DE0).
Wenn die Funktion zum zweiten Mal aufgerufen wird, liest sie denselben Wert und fĂŒhrt ihn an dieser Adresse aus. Die Ressource wird von hier gelesen und viele Aktionen im Arbeitsspeicher werden ausgefĂŒhrt.
Der Shellcode ist der gleiche PE-Lader, der in frĂŒheren OceanLotus-Kampagnen verwendet wurde. Er kann mit Hilfe von emuliert werden. Am Ende setzt er db293b825dcc419ba7dc2c49fa2757ee.dll, lĂ€dt ihn in den Speicher und fĂŒhrt ihn aus. DllEntry.
Die DLL extrahiert den Inhalt ihrer Ressource, entschlĂŒsselt ihn (AES-256-CBC) und entpackt ihn (LZMA). Die Ressource hat ein spezifisches Format, das leicht dekompiliert werden kann.

Abbildung 13. Struktur der Installationskonfiguration (KaitaiStruct Visualizer)
Die Konfiguration wird explizit festgelegt â je nach Berechtigungsstufe werden die binĂ€ren Daten in %appdata%IntellogsBackgroundUploadTask.cpl oder %windir%System32BackgroundUploadTask.cpl (oder SysWOW64 fĂŒr 64-Bit-Systeme) geschrieben.
Die Persistenz wird dann durch die Erstellung einer Aufgabe mit dem Namen BackgroundUploadTask[junk].job, wobei [junk] stellt eine Byte-Sequenz dar 0x9D und 0xA0.
Der Name der Aufgabenanwendung %windir%System32control.exe, und der Wert des Parameters ist der Pfad zur hochgeladenen BinÀrdatei. Die verborgene Aufgabe wird jeden Tag gestartet.
Konstruktiv stellt die CPL-Datei eine DLL mit dem internen Namen dar ac8e06de0a6c4483af9837d96504127e.dll, die die Funktion CPlAppletexportiert. Diese Datei entschlĂŒsselt ihr einziges Resource {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, lĂ€dt dann diese DLL und ruft ihren einzigen Export auf. DllEntry.
Die Konfigurationsdatei des Backdoors
ist verschlĂŒsselt und in ihre Ressourcen eingebettet. Die Struktur der Konfigurationsdatei Ă€hnelt sehr der vorherigen.

Abbildung 14. Struktur der Backdoor-Konfiguration (KaitaiStruct Visualizer)
Trotz der Àhnlichen Struktur wurden die Werte vieler Felder im Vergleich zu den in .
Das erste Element des binĂ€ren Arrays enthĂ€lt die DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), . Da der Exportname jedoch aus der BinĂ€rdatei entfernt wurde, stimmen die Hashes nicht ĂŒberein.
Weitere Untersuchungen
Beim Sammeln von Proben fielen uns einige Merkmale auf. Die gerade beschriebene Probe tauchte etwa im Juli 2018 auf, wĂ€hrend andere Ă€hnliche Exemplare erst kĂŒrzlich, Mitte Januar bis Anfang Februar 2019, erschienen. Als Infektionsvektor wurde ein SFX-Archiv verwendet, das ein legitimes Lockdokument und eine schĂ€dliche OCX-Datei ablegt.
Obwohl OceanLotus gefĂ€lschte Zeitstempel verwendet, haben wir festgestellt, dass die Zeitstempel der SFX- und OCX-Dateien immer gleich sind (0x57B0C36A (14.08.2016 @ 19:15 UTC) und 0x498BE80F (06.02.2009 @ 07:34 UTC) respektive). Dies deutet wahrscheinlich darauf hin, dass die Autoren eine Art âBaukastenâ haben, der dieselben Vorlagen verwendet und lediglich einige Merkmale Ă€ndert.
Unter den Dokumenten, die wir seit Anfang 2018 untersucht haben, finden sich verschiedene Namen, die auf die vom Angreifer ins Visier genommenen LĂ€nder hinweisen:
â 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 des Backdoors {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll und der Veröffentlichung seiner Analyse durch mehrere Forscher haben wir einige Ănderungen in den Konfigurationsdaten der Schadsoftware beobachtet.
ZunĂ€chst begannen die Autoren, die Namen aus den unterstĂŒtzenden DLLs zu entfernen (DNSprov.dll und zwei Versionen HttpProv.dll). AnschlieĂend hörten die Betreiber auf, die dritte DLL (zweite Version HttpProv.dll), einzupacken und entschieden sich, nur eine einzubetten.
Zweitens wurden viele Konfigurationsfelder des Backdoors geĂ€ndert, wahrscheinlich um eine Entdeckung zu vermeiden, da viele IoCs verfĂŒgbar wurden. Zu den wichtigen Feldern, die von den Autoren geĂ€ndert wurden, gehören:
- geÀnderter AppX-Registry-Bereich (siehe IoCs)
- Mutex-Codierungszeichenfolge (âdefâ, âabcâ, âghiâ)
- Portnummer
SchlieĂlich gab es in allen neuen analysierten Versionen neue C&C, die im Abschnitt IoCs aufgefĂŒhrt sind.
Fazit
OceanLotus entwickelt sich weiter. Die Cybergruppe konzentriert sich auf die Verbesserung und Erweiterung ihrer Werkzeuge und Lockmittel. Die Autoren tarnen bösartige Payloads mit ansprechenden Dokumenten, deren Themen fĂŒr die vorgesehenen Opfer relevant sind. Sie entwickeln neue Strategien und nutzen zudem öffentlich zugĂ€ngliche Werkzeuge wie den Exploit des Equation Editors. DarĂŒber hinaus verfeinern sie ihre Werkzeuge, um die Anzahl der Artefakte zu verringern, die auf den Maschinen der Opfer verbleiben, und damit die Chance auf eine Erkennung durch Antiviren-Software zu reduzieren.
Indicators of Compromise
Indicators of Compromise as well as MITRE ATT&CK attributes are available und .
Quelle: habr.com
