ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor

In dem Beitrag erzählen wir Ihnen, wie die Cybergruppe OceanLotus (APT32 und APT-C-00) kürzlich einen der öffentlich zugänglichen Exploits für genutzt hat CVE-2017-11882, Speicherbeschädigungs-Schwachstellen in Microsoft Office und wie die Malware der Gruppe sicherstellt, dass sie auf kompromittierten Systemen bestehen bleibt, ohne Spuren zu hinterlassen. Als Nächstes beschreiben wir, wie die Gruppe seit Anfang 2019 selbstextrahierende Archive zum Ausführen von Code verwendet.

OceanLotus ist auf Cyberspionage spezialisiert, vorrangige Ziele sind die Länder Südostasiens. Angreifer fälschen Dokumente, die die Aufmerksamkeit potenzieller Opfer auf sich ziehen, um sie zum Einsetzen einer Hintertür zu bewegen, und arbeiten außerdem an der Entwicklung von Tools. Die zum Erstellen von Honeypots verwendeten Methoden variieren bei verschiedenen Angriffen – von Dateien mit „doppelter Erweiterung“, selbstextrahierenden Archiven, Makrodokumenten bis hin zu bekannten Exploits.

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor

Verwendung des Exploits im Microsoft Equation Editor

Mitte 2018 führte OceanLotus eine Kampagne durch, bei der die Schwachstelle CVE-2017-11882 ausgenutzt wurde. Eines der bösartigen Dokumente der Cybergruppe wurde von den Spezialisten des 360 Threat Intelligence Center analysiert (auf Chinesisch studieren), einschließlich einer detaillierten Beschreibung des Exploits. Der folgende Beitrag gibt einen Überblick über ein solches bösartiges Dokument.

Die erste Stufe

Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) ähnelt dem in der oben genannten Studie erwähnten. Interessant ist, dass es sich an Nutzer richtet, die sich für kambodschanische Politik interessieren (CNRP – Kambodscha National Salvation Party, Ende 2017 aufgelöst). Trotz der Erweiterung .doc liegt das Dokument im RTF-Format vor (siehe Abbildung unten), enthält Junk-Code und ist außerdem verstümmelt.

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 1. Müll in RTF

Trotz des Vorhandenseins fehlerhafter Elemente öffnet Word diese RTF-Datei erfolgreich. Wie Sie in Abbildung 2 sehen können, ist hier eine EQNOLEFILEHDR-Struktur am Offset 0xC00, gefolgt von einem MTEF-Header und dann einem MTEF-Eintrag (Abbildung 3) für die Schriftart.

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 2. FONT-Datensatzwerte

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 3. FONT-Aufzeichnungsformat

Möglicher Feldüberlauf Name, da seine Größe vor dem Kopieren nicht überprüft wird. Ein zu langer Name löst die Sicherheitslücke aus. Wie Sie dem Inhalt der RTF-Datei entnehmen können (Offset 0xC26 in Abbildung 2), wird der Puffer mit Shellcode gefüllt, gefolgt von einem Dummy-Befehl (0x90) und Absenderadresse 0x402114. Die Adresse ist ein Dialogelement in EQNEDT32.exeauf Anweisungen hinweisen RET. Dadurch zeigt EIP auf den Anfang des Feldes NameDie enthält den Shellcode.

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 4. Beginn des Exploit-Shellcodes

Adresse 0x45BD3C speichert eine Variable, die dereferenziert wird, bis sie einen Zeiger auf die aktuell geladene Struktur erreicht MTEFData. Hier ist der Rest des Shellcodes.

Der Zweck des Shellcodes besteht darin, den zweiten Teil des Shellcodes auszuführen, der in das geöffnete Dokument eingebettet ist. Zunächst versucht der ursprüngliche Shellcode, den Dateideskriptor des geöffneten Dokuments zu finden, indem er alle Systemdeskriptoren durchläuft (NtQuerySystemInformation mit Argument SystemExtendedHandleInformation) und prüfen, ob sie übereinstimmen PID Deskriptor und PID Prozess WinWord und ob das Dokument mit einer Zugriffsmaske geöffnet wurde - 0x12019F.

Um zu bestätigen, dass das richtige Handle gefunden wurde (und nicht das Handle eines anderen geöffneten Dokuments), wird der Inhalt der Datei mithilfe der Funktion angezeigt CreateFileMapping, und der Shellcode prüft, ob die letzten vier Bytes des Dokuments übereinstimmen.yyyy» (Eierjagd-Methode). Sobald eine Übereinstimmung gefunden wird, wird das Dokument in einen temporären Ordner kopiert (GetTempPath) Wie ole.dll. Anschließend werden die letzten 12 Bytes des Dokuments gelesen.

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 5. End-of-Document-Markierungen

32-Bit-Wert zwischen Markern AABBCCDD и yyyy ist der Offset des nächsten Shellcodes. Es wird mit einer Funktion aufgerufen CreateThread. Derselbe Shellcode wurde extrahiert, der zuvor von der OceanLotus-Gruppe verwendet wurde. Python-Emulationsskript, das wir im März 2018 veröffentlicht haben, läuft immer noch für den Dump der zweiten Stufe.

Die zweite Stufe

Komponenten extrahieren

Datei- und Verzeichnisnamen werden dynamisch ausgewählt. Der Code wählt zufällig den Namen einer ausführbaren Datei oder DLL-Datei aus C:Windowssystem32. Anschließend stellt es eine Anfrage an seine Ressourcen und ruft das Feld ab FileDescription als Ordnernamen verwenden. Wenn das nicht funktioniert, wählt der Code zufällig einen Ordnernamen aus den Verzeichnissen aus %ProgramFiles% oder C:Windows (von GetWindowsDirectoryW). Es vermeidet die Verwendung eines Namens, der mit vorhandenen Dateien in Konflikt geraten könnte, und stellt sicher, dass er nicht die folgenden Wörter enthält: windows, Microsoft, desktop, system, system32 oder syswow64. Wenn das Verzeichnis bereits existiert, wird „NLS_{6 Zeichen}“ an den Namen angehängt.

Ressource 0x102 analysiert und Dateien abgelegt %ProgramFiles% oder %AppData%, in einen zufällig ausgewählten Ordner. Die Erstellungszeit wurde geändert, um dieselben Werte zu haben wie kernel32.dll.

Hier sehen Sie beispielsweise den Ordner und die Liste der Dateien, die durch Auswahl der ausführbaren Datei erstellt wurden C:Windowssystem32TCPSVCS.exe als Datenquelle.

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 6. Extraktion verschiedener Komponenten

Ressourcenstruktur 0x102 in einer Pipette ist ziemlich kompliziert. Kurz gesagt enthält es:
- Dateinamen
– Dateigröße und Inhalt
— Komprimierungsformat (COMPRESSION_FORMAT_LZNT1von der Funktion verwendet RtlDecompressBuffer)

Die erste Datei wird als gespeichert TCPSVCS.exe, was legitim ist AcroTranscoder.exe (entsprechend FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Möglicherweise ist Ihnen aufgefallen, dass einige DLL-Dateien größer als 11 MB sind. Dies liegt daran, dass in der ausführbaren Datei ein großer zusammenhängender Puffer mit Zufallsdaten platziert wird. Es ist möglich, dass auf diese Weise die Erkennung durch einige Sicherheitsprodukte vermieden werden kann.

Beständigkeit sichern

Ressource 0x101 im Dropper enthält zwei 32-Bit-Ganzzahlen, die angeben, wie Persistenz erzwungen werden soll. Der erste Wert gibt an, wie die Malware ohne Administratorrechte bestehen bleibt.

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Tabelle 1. Persistenzmechanismus für Nicht-Administratoren

Der Wert der zweiten Ganzzahl gibt an, wie die Malware ihre Persistenz sicherstellen soll, indem sie mit Administratorrechten ausgeführt wird.

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Tabelle 2. Administrator-Persistenzmechanismus

Der Dienstname ist der Dateiname ohne Erweiterung; Der Anzeigename ist der Name des Ordners, aber wenn er bereits vorhanden ist, wird die Zeichenfolge „Revision 1” (die Zahl erhöht sich, bis ein unbenutzter Name gefunden wird). Die Betreiber haben darauf geachtet, dass die Persistenz durch den Dienst belastbar ist – im Falle eines Ausfalls muss der Dienst nach 1 Sekunde neu gestartet werden. Dann der Wert WOW64 Der neue Registrierungsschlüssel für den Dienst ist auf 4 gesetzt, was darauf hinweist, dass es sich um einen 32-Bit-Dienst handelt.

Eine geplante Aufgabe wird über mehrere COM-Schnittstellen erstellt: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Im Wesentlichen erstellt die Malware eine versteckte Aufgabe, legt die Kontoinformationen zusammen mit den aktuellen Benutzer- oder Administratorinformationen fest und legt dann den Auslöser fest.

Dies ist eine tägliche Aufgabe mit einer Dauer von 24 Stunden und Abständen zwischen zwei Durchläufen von 10 Minuten, was bedeutet, dass sie ständig ausgeführt wird.

Bösartiges Bit

In unserem Beispiel die ausführbare Datei TCPSVCS.exe (AcroTranscoder.exe) ist legitime Software, die die mit ihr gelöschten DLLs lädt. In diesem Fall ist es von Interesse Flash Video Extension.dll.

Seine Funktion DLLMain ruft einfach eine andere Funktion auf. Es gibt einige Fuzzy-Prädikate:

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 7. Fuzzy-Prädikate

Nach diesen irreführenden Prüfungen erhält der Code einen Abschnitt .text Datei TCPSVCS.exe, ändert seinen Schutz in PAGE_EXECUTE_READWRITE und überschreibt es mit Dummy-Anweisungen:

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 8. Reihenfolge der Anweisungen

Am Ende die Adresse der Funktion FLVCore::Uninitialize(void), exportiert Flash Video Extension.dll, die Anweisung wird hinzugefügt CALL. Dies bedeutet, dass die schädliche DLL geladen wird, wenn die Laufzeit aufgerufen wird WinMain в TCPSVCS.exe, zeigt der Befehlszeiger auf NOP, was zum Aufruf führt FLVCore::Uninitialize(void), nächste Stufe.

Die Funktion erstellt einfach einen Mutex, beginnend mit {181C8480-A975-411C-AB0A-630DB8B0A221}gefolgt vom aktuellen Benutzernamen. Anschließend wird die gespeicherte *.db3-Datei, die positionsunabhängigen Code enthält, gelesen und verwendet CreateThread Inhalte auszuführen.

Der Inhalt der *.db3-Datei ist der Shellcode, den das OceanLotus-Team normalerweise verwendet. Wir haben die Nutzlast mithilfe des von uns veröffentlichten Emulatorskripts erneut erfolgreich dekomprimiert. auf GitHub.

Das Skript ruft die letzte Stufe ab. Bei dieser Komponente handelt es sich um eine Hintertür, die wir bereits analysiert haben vorherige OceanLotus-Studie. Dies kann durch die GUID bestimmt werden {A96B020F-0000-466F-A96D-A91BBF8EAC96} Binärdatei. Die Malware-Konfiguration ist weiterhin in der PE-Ressource verschlüsselt. Es hat ungefähr die gleiche Konfiguration, aber die C&C-Server unterscheiden sich von den vorherigen:

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

Die OceanLotus-Gruppe demonstriert erneut eine Kombination verschiedener Techniken, um einer Entdeckung zu entgehen. Sie kehrten mit einem „fertigen“ Schema des Infektionsprozesses zurück. Durch die Wahl zufälliger Namen und das Füllen ausführbarer Dateien mit zufälligen Daten reduzieren sie die Anzahl zuverlässiger IoCs (basierend auf Hashes und Dateinamen). Darüber hinaus müssen Angreifer durch das Laden von DLLs Dritter nur die legitime Binärdatei entfernen AcroTranscoder.

Selbstextrahierende Archive

Nach RTF-Dateien wechselte die Gruppe zu selbstextrahierenden (SFX) Archiven mit gemeinsamen Dokumentsymbolen, um den Benutzer noch mehr zu verwirren. Threatbook hat darüber geschrieben (Link auf Chinesisch). Beim Start werden selbstextrahierende RAR-Dateien ausgegeben und DLLs mit der Erweiterung .ocx ausgeführt, deren endgültige Nutzlast zuvor dokumentiert wurde {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Seit Mitte Januar 2019 verwendet OceanLotus diese Technik wieder, ändert jedoch im Laufe der Zeit einige Konfigurationen. In diesem Abschnitt werden wir über die Technik und Änderungen sprechen.

Einen Köder herstellen

Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) wurde erstmals 2018 gefunden. Diese SFX-Datei wurde mit Bedacht erstellt – in der Beschreibung (Versions Information) sagt, dass es sich um ein JPEG-Bild handelt. Das SFX-Skript sieht so aus:

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 9. SFX-Befehle

Die Malware wird zurückgesetzt {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), sowie ein Bild 2018 thich thong lac.jpg.

Das Täuschungsbild sieht so aus:

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 10. Täuschungsbild

Sie haben vielleicht bemerkt, 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 ist dem anderer OceanLotus-Komponenten sehr ähnlich – viele Befehlssequenzen JZ/JNZ и PUSH/RETmit Junk-Code verschachtelt.

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 11. Verschleierter Code

Nach dem Filtern des Müllcodes erfolgt der Export DllRegisterServer, genannt regsvr32.exesieht so aus:

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 12. Hauptinstallationscode

Im Grunde schon beim ersten Anruf DllRegisterServer Export legt den Registrierungswert fest HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model für verschlüsselten Offset in der DLL (0x10001DE0).

Wenn die Funktion ein zweites Mal aufgerufen wird, liest sie denselben Wert und wird an dieser Adresse ausgeführt. Von hier aus wird die Ressource gelesen und ausgeführt, und viele Aktionen werden im RAM ausgeführt.

Der Shellcode ist derselbe PE-Loader, der in früheren OceanLotus-Kampagnen verwendet wurde. Es kann mit emuliert werden unser Drehbuch. Am Ende fällt er db293b825dcc419ba7dc2c49fa2757ee.dll, lädt es in den Speicher und führt es aus DllEntry.

Die DLL extrahiert den Inhalt ihrer Ressource, entschlüsselt (AES-256-CBC) und dekomprimiert (LZMA). Die Ressource hat ein bestimmtes Format, das leicht zu dekompilieren ist.

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 13. Konfigurationsstruktur des Installationsprogramms (KaitaiStruct Visualizer)

Die Konfiguration wird explizit festgelegt – je nach Berechtigungsstufe werden Binärdaten beschrieben %appdata%IntellogsBackgroundUploadTask.cpl oder %windir%System32BackgroundUploadTask.cpl (oder SysWOW64 für 64-Bit-Systeme).

Eine weitere Persistenz wird durch die Erstellung einer Aufgabe mit dem Namen gewährleistet BackgroundUploadTask[junk].jobWo [junk] ist eine Menge von Bytes 0x9D и 0xA0.

Name der Aufgabenanwendung %windir%System32control.exe, und der Wert des Parameters ist der Pfad zur heruntergeladenen Binärdatei. Die versteckte Aufgabe wird jeden Tag ausgeführt.

Strukturell ist eine CPL-Datei eine DLL mit einem internen Namen ac8e06de0a6c4483af9837d96504127e.dll, wodurch die Funktion exportiert wird CPlApplet. Diese Datei entschlüsselt ihre einzige Ressource {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, lädt dann diese DLL und ruft ihren einzigen Export auf DllEntry.

Backdoor-Konfigurationsdatei

Die Backdoor-Konfiguration ist verschlüsselt und in ihre Ressourcen eingebettet. Der Aufbau der Konfigurationsdatei ist dem vorherigen sehr ähnlich.

ESET: Neue Lieferpläne für OceanLotus Cybergroup Backdoor
Abbildung 14. Backdoor-Konfigurationsstruktur (KaitaiStruct Visualizer)

Trotz der ähnlichen Struktur wurden die Werte vieler Felder im Vergleich zu den in gezeigten Daten aktualisiert unser alter Bericht.

Das erste Element des binären Arrays enthält die DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), von Tencent identifiziert. Da der Exportname jedoch aus der Binärdatei entfernt wurde, stimmen die Hashes nicht überein.

Zusätzliche Forschung

Beim Sammeln von Proben haben wir auf einige Merkmale geachtet. Die gerade beschriebene Probe erschien etwa im Juli 2018, und ähnliche Exemplare tauchten erst kürzlich auf, nämlich Mitte Januar bis Anfang Februar 2019. Als Infektionsvektor wurde ein SFX-Archiv verwendet, das ein legitimes Täuschungsdokument und eine schädliche OCX-Datei hinterließ.

Obwohl OceanLotus gefälschte Zeitstempel verwendet, ist uns aufgefallen, dass die Zeitstempel von SFX- und OCX-Dateien immer gleich sind (0x57B0C36A (08 um 14:2016 Uhr UTC) und 0x498BE80F (02 um 06:2009 Uhr UTC). Dies weist wahrscheinlich darauf hin, dass die Autoren über eine Art „Konstruktor“ verfügen, der dieselben Vorlagen verwendet und nur einige Merkmale ändert.

Unter den Dokumenten, die wir seit Anfang 2018 untersucht haben, finden sich verschiedene Namen, die auf die angreifenden Länder hinweisen, die uns interessieren:

- Die neuen Kontaktinformationen von Cambodia Media(New).xls.exe
- 李建香 (个人简历).exe (gefälschtes PDF-Dokument eines Lebenslaufs)
– Feedback, Rallye in den USA vom 28.–29. Juli 2018.exe

Seit der Entdeckung der Hintertür {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll und der Veröffentlichung seiner Analyse durch mehrere Forscher haben wir einige Änderungen in den Malware-Konfigurationsdaten beobachtet.

Zuerst begannen die Autoren, Namen aus den Hilfs-DLL-DLLs zu entfernen (DNSprov.dll und zwei Versionen HttpProv.dll). Dann hörten die Betreiber auf, die dritte DLL (zweite Version) zu packen HttpProv.dll) und entscheiden sich dafür, nur eines einzubetten.

Zweitens wurden viele Backdoor-Konfigurationsfelder geändert, wahrscheinlich um eine Entdeckung zu vermeiden, da viele IoCs verfügbar geworden sind. Zu den wichtigen Bereichen, die von den Autoren geändert wurden, gehören die folgenden:

  • Registrierungsschlüssel AppX geändert (siehe IoCs)
  • Mutex-Codierungszeichenfolge („def“, „abc“, „ghi“)
  • Port-Nummer

Schließlich sind für alle analysierten neuen Versionen neue C&Cs im Abschnitt „IoCs“ aufgeführt.

Befund

OceanLotus entwickelt sich weiter. Die Cyber-Gruppe konzentriert sich auf die Verfeinerung und Erweiterung der Tools und Köder. Autoren maskieren bösartige Payloads mit aufmerksamkeitsstarken Dokumenten, die für die beabsichtigten Opfer relevant sind. Sie entwickeln neue Schaltkreise und nutzen auch öffentlich verfügbare Tools wie den Equation Editor-Exploit. Darüber hinaus verbessern sie die Tools, um die Anzahl der auf den Computern der Opfer verbleibenden Artefakte zu verringern und so die Wahrscheinlichkeit zu verringern, dass sie von Antivirensoftware erkannt werden.

Indikatoren für Kompromisse

Es stehen Kompromittierungsindikatoren sowie MITRE ATT&CK-Attribute zur Verfügung auf Welivesecurity и auf GitHub.

Source: habr.com

Kommentar hinzufügen