Das Elastic Security Intelligence & Analytics Team erforscht viele Arten von Angreiferinnovationen und hat sich kürzlich auf eine Aktivitätsgruppe konzentriert, die Remote-Vorlagen, VBA-Code-Umgehung und DLL-Sideloading-Techniken nutzte. Basierend auf der Ähnlichkeit des Codes und gemeinsamen Taktiken, Techniken und Verfahren (TTPs) bewertete das Team, dass diese Aktivität möglicherweise mit einer in China ansässigen Gruppe namens APT40 oder Leviathan in Verbindung steht. Die Kampagne der Gruppe scheint auf malaysische Regierungsbeamte abzuzielen, um die politische Krise in 2020 in Malaysia zu locken.
Anatomie des Angriffs
Um ihre APT-Kampagne (Advanced Persistent Threat) zu starten, lieferte die Gruppe wahrscheinlich ein Microsoft Word-Dokument als Phishing-Köderanhang. Das Bild, das in dem Köder verwendet wird (Abbildung 2), scheint aus einer Rundfunkankündigung zu stammen, die von einem malaysischen Blogger geteilt wurde (Abbildung 1). Das Köderbild enthält die gleiche Sendezeit, aber das Datum und das Sprachthema wurden entfernt. Sobald dieser Anhang geöffnet ist, wird im Hintergrund ein Köderdokument angezeigt, das die folgenden Aktionen ausführt:
- Das Köderdokument lädt die Remote-Vorlage RemoteLoad.dotm herunter
- Die Remotevorlage führt VBA-Makrocode aus
- Der VBA-Makrocode entpackt zwei eingebettete base64-codierte DLLs (sl1.tmp und sl2.tmp) und führt sie in c:\users\public\ aus.
Diese Technik ist als Template-Injection bekannt, an die Sie sich vielleicht aus unserem Blogbeitrag "Verteidigung gegen die Gamaredon Group" erinnern. Dies ist ein effektiver Ansatz, der von Angreifern verwendet wird, um Perimeterkontrollen wie E-Mail-Gateways zu umgehen.
Beide eingebetteten DLLs (sl1.tmp und sl2.tmp) sind ähnlich und exportieren die gleichen Funktionsnamen: RCT und RCP. Die erste DLL (sl1.tmp) wird verwendet, um eine gutartige ausführbare Datei namens LogiMailApp.exe und eine zugehörige Bibliothek LogiMail.dll herunterzuladen. und die zweite DLL (sl2.tmp) wird zum Ausführen von LogiMailApp.exe verwendet, die aufgrund einer inhärenten DLL-Sicherheitslücke in der Suchreihenfolge automatisch versucht, LogiMail.dll auszuführen, auf die wir in Kürze eingehen werden.
Dateiname | Dateityp | Größe (Bytes) | MD5 | Kompilierzeit |
LogiMailApp.exe | Win32 EXE | 311656 | 850a163ce1f9cff0367854038d8cfa7e | 2012-09-26 22:13:13+00:00 |
LogiMail.dll | Win32-DLL | 105984 | b5a5dc78fb392fae927e9461888f354d | 2020-06-03 04:08:29+00:00 |
sl1.tmp | Win32-DLL | 3072 | ccbdda7217ba439dfb6bbc6c3bd594f8 | 2019-11-29 17:15:29+00:00 |
sl2.tmp | Win32-DLL | 3072 | dbfa006d64f39cde78b0efda1373309c | 2019-11-29 21:23:44+00:00 |
Tabelle 1: Metadaten für abgelegte Dateien
Diese Implementierung fiel unseren Forschern durch eine Verhaltenseigenart auf:
- Die Microsoft Office-Anwendung winword.exe die sl1.tmp und sl2.tmp DLLs lädt, verwendet die LoadLibraryA-Methode, die mäßig selten vorkommt
- Diese DLLs führen explizite Befehle aus oder installieren eine Nutzlast von einer URL mithilfe der CallWindowProcA-Methode, was außergewöhnlich selten vorkommt
- Beide DLLs werden nach der Ausführung gelöscht
Eingebettete DLLs
Die eingebetteten DLLs sl1.tmp und sl2.tmp haben eine sehr eingeschränkte Funktionalität – sie exportieren die RCP- und RCT-Funktionen. Die RCP-Funktion implementiert die WinExec-Methode zum Ausführen von Befehlen, wobei die RCT-Funktion die URLDownloadToFileA-Methode verwendet, um eine Datei von einer angegebenen URL herunterzuladen.
DLL-Querladen einer Backdoor
LogiMailApp.exe, das von sl1.tmp heruntergeladen und von sl2.tmp ausgeführt wird, ist anfällig für eine Form von DLL-Suchreihenfolge-Hijacking, die als Sideloading bezeichnet wird und automatisch nach LogiMail.dll sucht und diese ausführt, wenn sie im selben Verzeichnis gefunden werden. Formen des DLL-Search-Order-Hijacking können mit vielen Softwareanwendungen von Drittanbietern verwendet werden. In diesem Fall wurde das Search-Order-Hijacking verwendet, um eine Hintertür zu laden, die die folgenden bemerkenswerten Funktionen exportiert:
Die vom Angreifer erstellte Binärdatei exportiert LogiMail.dll die Funktion DllGetClassObject, die kritische Logik für den Ausführungsablauf dieses Beispiels enthält:
- Laden Sie ein AES-verschlüsseltes Objekt der zweiten Stufe in %TEMP%~liseces1.pcs herunter
- Ableiten eines 128-Bit-AES-Schlüssels und eines Initialisierungsvektors von SHA256 einer hartcodierten Zeichenkette
- Lesen und Entschlüsseln von %TEMP%~liseces1.pcs im Speicher mit den Funktionen ReadFile und CryptDecrypt
- Löschen Sie %TEMP%~liseces1.pcs von der Festplatte
Hintertür der zweiten Stufe
Die entschlüsselte Backdoor der zweiten Stufe wird dem Speicher zugeordnet und dann ihr ursprünglicher Einstiegspunkt (OEP) aufgerufen, wodurch erfolgreiche Erkennungen auf der Grundlage von Dateisystem-Scans umgangen werden.
Sowohl der Payload-Staging-Server als auch die Infrastruktur der zweiten Stufe verwenden dynamisches DNS:
Diese Payload unterstützt die folgenden Funktionen:
- Grundlegende Anti-Debug-Überprüfungen
- System- und Benutzererkennung
- Ausführung über die Kommandozeile
- Erkennung, Hochladen und Herunterladen von Dateien
- Persistenz über Run Registry
- Verschlüsseln Sie C2-Datenverkehr mit demselben AES-Schlüssel
Mögliche APT40/Leviathan-Verbindung
Anfang des Jahres gab das malaysische Computer Emergency Response Team (MyCERT) eine Empfehlung zu Spionageaktivitäten heraus, die auf ihr Land abzielen. Der Bericht listete verschiedene TTPs auf und enthielt mehrere Stichproben und andere technische Indikatoren, die mit einer Bedrohungsgruppe namens APT40/Leviathan übereinstimmen.
Auf hoher Ebene folgt diese Stichprobe dem anhaltenden Trend, malaysische Opfer mit spezifischen TTPs wie Remote-Vorlagen, der Verwendung von Makros, der Verwendung von DLL-Sideloading-Techniken und der Nutzung eines In-Memory-Implantats mit dynamischem DNS für Befehl und Steuerung ins Visier zu nehmen. Genauer gesagt teilt sich das Implantat der zweiten Stufe aus diesem Köder einzigartige Strings und URL-Referenzen und enthält ähnliche Funktionen, die mit den vorherigen Berichten für APT40/Leviathan korrelieren. Angesichts dieser Ähnlichkeiten geht unser Intelligence & Analytics Team mit mäßiger Sicherheit davon aus, dass diese Aktivität mit APT40/Leviathan in Verbindung steht.
Ähnlichkeiten von Implant String mit MyCERT Sample:
- /list_direction
- /post_document
- /post_login
- Öffnen der Remote-Datei %s fehlgeschlagen für: %s
- Fehler beim Öffnen der Pipe %s
- Download Lesepfad fehlgeschlagen %s
- %02X-%02X-%02X-%02X-%02X-%02X
- Software\Microsoft\Windows\CurrentVersion\Run
- ntkd
Fazit
In diesem Beitrag haben wir eine aktuelle Stichprobe hervorgehoben, die höchstwahrscheinlich das Werk eines hochorganisierten Angreifers darstellt. Aktivitätsgruppen wie diese sind für jeden von Bedeutung, schon allein deshalb, weil sie einen höheren Reifegrad der Post-Exploit-Innovation darstellen. Ihre hochmodernen TTPs von heute sind morgen für jedermann der Alltag; Es ist wichtig, aus diesen Ereignissen zu lernen.
Wir hoffen, dass wir durch den Austausch einiger dieser Erkenntnisse dazu beitragen können, das Bewusstsein zu schärfen und uns weiterhin auf den Schutz der weltweiten Daten vor Angriffen zu konzentrieren. Um Organisationen weiter zu unterstützen, haben wir unten alle beobachteten MITRE ATT&CK-Techniken® und Indicators of Compromise (IoCs) hinzugefügt.
MITRE ATT&CK-Techniken®
- T1193 - Spearphishing-Anhang
- T1221 - Injektion von Schablonen
- T1060 - Registry Run Keys / Startordner
- T1073 - DLL-Seitenladen
- T1129 - Ausführung durch Modullast
- T1055 - Prozess-Injektion
- T1107 - Löschen von Dateien
- T1140 - Deobfuszieren/Dekodieren von Dateien oder Informationen
- T1059 - Befehlszeilenschnittstelle
Indikatoren für Kompromittierung (IOCs)
Dateinamen und Pfade
Bubar Parlimen.zip
Bubar Parlimen.docx
RemoteLoad.dotm
C:\Users\Public\sl1.tmp
C:\Users\Public\sl2.tmp
C:\Users\*\AppData\Local\Temp\~liseces1.pcs
C:\Users\*\AppData\Local\Microsoft\Office\LogiMailApp.exe
C:\Users\*\AppData\Local\Microsoft\Office\LogiMail.dll
Registrierungsschlüssel
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\ntkd
URLs
hxxps[:]//armybar[.]hopto[.]org/LogiMail.dll
hxxps[:]//armybar[.]hopto[.]org/LogiMailApp[.]exe
hxxps[:]//armybar[.]hopto[.]org/Encrypted
hxxp[:]//tomema.myddns[.]me/postlogin
hxxp[:]//tomema[.]myddns[.]me/list_direction
hxxp[:]//tomema[.]myddns[.]me/post_document
Ips
104[.]248[.]148[.]156
139[.]59[.]31[.]188
HTTPS-Zertifikat
74b5e317527c93539dbaaf84d6a61da92a56012a
Hashes
523cbdaf31ddc920e5b6c873f3ab42fb791fb4c9d1f4d9e6a7f174105d4f72a1
ab541df861c6045a17006969dac074a7d300c0a8edd0a5815c8b871b62ecdda7
145daf50aefb7beec32556fd011e10c9eaa71e356649edfce4404409c1e8fa30
93810c5fd9a287d85c182d2ad13e7d30f99df76e55bb40e5bc7a486d259810c8
925f404b0207055f2a524d9825c48aa511199da95120ed7aafa52d3f7594b0c9
feca9ad5058bc8571d89c9d5a1eebce09e709cc82954f8dce1564e8cc6750a77
06a4246be400ad0347e71b3c4ecd607edda59fbf873791d3772ce001f580c1d3
77ef350639b767ce0a748f94f723a6a88609c67be485b9d8ff8401729b8003d2
YARA
rule APT_APT40_Implant_June2020 {
meta:
version = "1.0"
author = "Elastic Security"
date_added = "2020-06-19"
description = "APT40 second stage implant"
strings:
$a = "/list_direction" fullword wide
$b = "/post_document" fullword wide
$c = "/postlogin" fullword wide
$d = "Download Read Path Failed %s" fullword ascii
$e = "Open Pipe Failed %s" fullword ascii
$f = "Open Remote File %s Failed For: %s" fullword ascii
$g = "Download Read Path Failed %s" fullword ascii
$h = "\\cmd.exe" fullword wide
condition:
all of them
}