An dësem Post wäerte mir Iech soen wéi d'Cybergrupp OceanLotus (APT32 an APT-C-00) viru kuerzem ee vun den ëffentlech verfügbaren Ausnotzen benotzt huet fir
OceanLotus spezialiséiert op Cyberspionage, mat prioritär Ziler sinn Länner a Südostasien. Ugräifer verschmieden Dokumenter déi d'Opmierksamkeet vu potenziellen Affer zéien fir se ze iwwerzeegen fir d'Hannerdier auszeféieren, a schaffen och un der Entwécklung vun Tools. D'Methoden, déi benotzt gi fir Honeypots ze kreéieren, variéieren iwwer Attacken, vu "Double-Extension" Dateien, selbst extrahéierend Archiven, Dokumenter mat Makroen, bis bekannten Ausnotzen.
Benotzt en Exploit am Microsoft Equation Editor
Mëtt 2018 huet OceanLotus eng Kampagne gemaach déi d'CVE-2017-11882 Schwachstelle exploitéiert. Ee vun de béiswëlleg Dokumenter vun der Cybergrupp gouf vun Spezialisten vum 360 Threat Intelligence Center analyséiert (
Déi éischt Stuf
Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc
(SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3
) ass ähnlech wéi déi an der Etude uewen ernimmt. Et ass interessant well et u Benotzer riicht, déi an der kambodschanescher Politik interesséiert sinn (CNRP - Cambodia National Rescue Party, um Enn vum 2017 opgeléist). Trotz der .doc-Extensioun ass d'Dokument am RTF-Format (kuckt d'Bild hei ënnen), enthält Müllcode, an ass och verzerrt.
Figur 1. "Garbage" an RTF
Och wann et verréckt Elementer gëtt, mécht Word dës RTF-Datei erfollegräich op. Wéi Dir an der Figur 2 kënnt gesinn, gëtt et eng EQNOLEFILEHDR Struktur am Offset 0xC00, gefollegt vun engem MTEF Header, an dann eng MTEF Entrée (Figur 3) fir d'Schrëft.
Figur 2. FONT Entrée Wäerter
Figure 3.
Méiglech Iwwerschwemmung am Feld Numm, well seng Gréisst net virun der Kopie gepréift gëtt. En Numm deen ze laang ass léist eng Schwachstelle aus. Wéi Dir aus dem Inhalt vun der RTF-Datei kënnt gesinn (Offset 0xC26 an der Figur 2), ass de Puffer mat Shellcode gefëllt gefollegt vun engem Dummy Kommando (0x90
) an zréck Adress 0x402114
. D'Adress ass en Dialog Element an EQNEDT32.exe
, Instruktioune uginn RET
. Dëst verursaacht EIP op den Ufank vum Feld ze weisen Nummenthält de Shellcode.
Figur 4. Ufank vun der exploit shellcode
Adress 0x45BD3C
späichert eng Variabel déi dereferenzéiert gëtt bis se e Pointer op déi aktuell gelueden Struktur erreecht MTEFData
. De Rescht vum Shellcode ass hei.
Den Zweck vum Shellcode ass dat zweet Stéck Shellcode auszeféieren, deen am oppene Dokument agebonnen ass. Den ursprénglechen Shellcode probéiert als éischt de Dateideskriptor vum oppenen Dokument ze fannen andeems Dir iwwer all Systemdeskriptoren (NtQuerySystemInformation
mat engem Argument SystemExtendedHandleInformation
) a kontrolléiert ob se passen Colombera Beschreiwung an Colombera Prozess WinWord
an ob d'Dokument mat enger Zougangsmaske opgemaach gouf - 0x12019F
.
Fir ze bestätegen datt de richtege Grëff fonnt gouf (an net de Grëff fir en anert opgemaacht Dokument), gëtt den Inhalt vun der Datei mat der Funktioun ugewisen CreateFileMapping
, an de Shellcode kontrolléiert ob déi lescht véier Bytes vum Dokument mat "yyyy
"(Eeër Juegd Method). Wann e Match fonnt gëtt, gëtt d'Dokument an en temporäre Dossier kopéiert (GetTempPath
) Wéi ole.dll
. Da ginn déi lescht 12 Bytes vum Dokument gelies.
Figur 5. Enn vun Dokument Marker
32-Bit Wäert tëscht Marker AABBCCDD
и yyyy
ass den Offset vum nächste Shellcode. Et gëtt genannt d'Funktioun ze benotzen CreateThread
. Extrahéiert dee selwechte Shellcode dee fréier vun der OceanLotus Grupp benotzt gouf.
Déi zweet Stuf
Ewechzehuelen Komponente
Datei- an Verzeichnisnimm ginn dynamesch gewielt. De Code wielt zoufälleg den Numm vun der ausführbarer oder DLL Datei an C:Windowssystem32
. Et mécht dann eng Ufro un seng Ressourcen an retrieves d'Feld FileDescription
als Dossier Numm ze benotzen. Wann dëst net funktionnéiert, wielt de Code zoufälleg en Dossiernumm aus den Verzeichnisser %ProgramFiles%
oder C:Windows
(vum GetWindowsDirectoryW). Et vermeit en Numm ze benotzen, dee mat existéierende Dateien konflikt kéint a garantéiert datt et net déi folgend Wierder enthält: windows
, Microsoft
, desktop
, system
, system32
oder syswow64
. Wann de Verzeichnis schonn existéiert, gëtt "NLS_{6 Zeechen}" un den Numm bäigefüügt.
Ressource 0x102
gëtt analyséiert an d'Dateie gi gedumpt %ProgramFiles%
oder %AppData%
, zu engem zoufälleg ausgewielten Dossier. Geännert Kreatiounszäit fir déiselwecht Wäerter ze hunn wéi kernel32.dll
.
Zum Beispill, hei ass den Dossier an d'Lëscht vun de Dateien erstallt andeems Dir den ausführbar auswielen C:Windowssystem32TCPSVCS.exe
als Datenquell.
Figur 6. Verschidde Komponente extrahéieren
Ressource Struktur 0x102
an engem Dropper ass zimlech komplex. An enger Nossschuel enthält et:
- Dateinumm
- Dateigréisst an Inhalt
- Kompressiounsformat (COMPRESSION_FORMAT_LZNT1
, benotzt vun der Funktioun RtlDecompressBuffer
)
Déi éischt Datei gëtt zréckgesat als TCPSVCS.exe
, wat legitim ass AcroTranscoder.exe
(geméiss FileDescription
, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3
).
Dir hutt vläicht gemierkt datt e puer DLL Dateien méi grouss wéi 11 MB sinn. Dëst ass well e grousse kontinuéierleche Puffer vun zoufälleg Daten an der ausführbarer Datei plazéiert ass. Et ass méiglech datt dëst e Wee ass fir Detektioun vu Sécherheetsprodukter ze vermeiden.
Ausdauer garantéieren
Ressource 0x101
am Dropper enthält zwee 32-Bit ganz Zuelen déi spezifizéieren wéi d'Persistenz soll geliwwert ginn. De Wäert vun der éischter spezifizéiert wéi d'Malware ouni Administratorrechter bestoe bleift.
Dësch 1. Persistenz Mechanismus ouni Administrator Rechter
De Wäert vum zweete Ganzt spezifizéiert wéi d'Malware d'Persistenz sollt erreechen wann se mat Administratorrechter lafen.
Dësch 2. Persistenz Mechanismus mat Administrator Rechter
De Servicenumm ass den Dateinumm ouni Extensioun; den Affichage Numm ass den Numm vum Dossier, awer wann et scho gëtt, gëtt d'String " derbäi bäigefüügtRevision 1
” (d'Zuel klëmmt bis en onbenotzten Numm fonnt gëtt). D'Bedreiwer hunn dofir gesuergt datt d'Persistenz duerch de Service robust war - am Fall vun engem Ausfall, sollt de Service no 1 Sekonn nei gestart ginn. Dann de Wäert WOW64
De Registry-Schlëssel vum neie Service ass op 4 gesat, wat beweist datt et en 32-Bit Service ass.
Eng geplangten Aufgab gëtt duerch verschidde COM-Interfaces erstallt: ITaskScheduler
, ITask
, ITaskTrigger
, IPersistFile
и ITaskScheduler
. Wesentlech erstellt d'Malware eng verstoppt Aufgab, setzt d'Kontoinformatioun zesumme mat der aktueller Benotzer- oder Administratorinformatioun, a setzt dann den Ausléiser.
Dëst ass eng deeglech Aufgab mat enger Dauer vu 24 Stonnen an Intervalle tëscht zwou Ausféierungen vun 10 Minutten, dat heescht datt se kontinuéierlech leeft.
Béiswëlleg bëssen
An eisem Beispill, déi ausführbar Datei TCPSVCS.exe
(AcroTranscoder.exe
) ass eng legitim Software déi DLLs lued déi zesumme mat zréckgesat ginn. An dësem Fall ass et interessant Flash Video Extension.dll
.
Seng Funktioun DLLMain
rifft just eng aner Funktioun. E puer fuzzy Prädikate sinn präsent:
Figur 7. Fuzzy Prädikater
No dëse irféierende Kontrollen kritt de Code eng Sektioun .text
Datei TCPSVCS.exe
, ännert seng Verteidegung un PAGE_EXECUTE_READWRITE
an iwwerschreift et andeems Dir Dummy Instruktiounen bäidréit:
Figur 8. Sequenz vun Uweisungen
Um Enn op d'Funktioun Adress FLVCore::Uninitialize(void)
, exportéiert Flash Video Extension.dll
, Instruktioun gëtt dobäi CALL
. Dëst bedeit datt no der béiswëlleg DLL gelueden ass, wann d'Runtime rifft WinMain
в TCPSVCS.exe
, wäert den Instruktiounszeiger op NOP weisen, verursaacht FLVCore::Uninitialize(void)
, nächst Etapp.
D'Funktioun erstellt einfach e Mutex mat {181C8480-A975-411C-AB0A-630DB8B0A221}
gefollegt vum aktuelle Benotzernumm. Et liest dann de gedumpte * .db3-Datei, déi Positiounonofhängege Code enthält, a benotzt CreateThread
den Inhalt auszeféieren.
Den Inhalt vun der *.db3 Datei ass de Shellcode deen d'OceanLotus Grupp typesch benotzt. Mir hunn erëm erfollegräich seng Notzlaascht mat dem Emulator Skript ausgepackt, dee mir publizéiert hunn
De Skript extrahéiert déi lescht Etapp. Dëse Bestanddeel ass eng Backdoor, déi mir scho analyséiert hunn {A96B020F-0000-466F-A96D-A91BBF8EAC96}
binär Datei. D'Malware Konfiguratioun ass nach ëmmer an der PE Ressource verschlësselt. Et huet ongeféier déiselwecht Konfiguratioun, awer d'C&C Serveren sinn anescht wéi déi virdrun:
- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz
D'OceanLotus Team weist erëm eng Kombinatioun vu verschiddenen Techniken fir Detektioun ze vermeiden. Si sinn zréck mat engem "raffinéierte" Diagramm vum Infektiounsprozess. Andeems se zoufälleg Nimm auswielen an Ausféierbaren mat zoufälleg Daten ausfëllen, reduzéieren se d'Zuel vun zouverlässeg IoCs (baséiert op Hashes an Dateinumm). Ausserdeem, dank der Notzung vun Drëtt Partei DLL Luede, Ugräifer brauchen nëmmen déi legitim binär ewechzehuelen AcroTranscoder
.
Self-Extraktioun Archiver
No RTF-Dateien ass d'Grupp op selbstextraktéierend (SFX) Archiven mat gemeinsame Dokumentikonen geplënnert fir de Benotzer weider duercherneen ze bréngen. Threatbook huet iwwer dëst geschriwwen ({A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
. Zënter Mëtt Januar 2019 hunn OceanLotus dës Technik nei benotzt, awer e puer Konfiguratiounen iwwer Zäit änneren. An dëser Rubrik wäerte mir iwwer d'Technik an Ännerungen schwätzen.
Schafen eng Lure
Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE
(SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB
) gouf fir d'éischt am Joer 2018 fonnt. Dës SFX Datei gouf verstänneg erstallt - an der Beschreiwung (Versioun Info) et seet datt dëst e JPEG Bild ass. De SFX Skript gesäit esou aus:
Figur 9. SFX Kommandoen
D'Malware gëtt zréckgesat {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx
(SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC
), souwéi eng Foto 2018 thich thong lac.jpg.
D'Decoy Bild gesäit esou aus:
Figur 10. Decoy Bild
Dir hutt vläicht gemierkt datt déi éischt zwou Zeilen am SFX Skript d'OCX Datei zweemol nennen, awer dëst ass kee Feeler.
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
De Kontrollfloss vun enger OCX Datei ass ganz ähnlech wéi aner OceanLotus Komponenten - vill Kommandosequenzen JZ/JNZ
и PUSH/RET
, ofwiesselnd mat Gerempels Code.
Figur 11. Obfuscated Code
Nodeems Dir de Junkcode ausfiltert, exportéiert DllRegisterServer
, genannt regsvr32.exe
, wéi follegt:
Figur 12. Basis Installateur Code
Prinzipiell um éischten Uruff DllRegisterServer
export setzt Registry Wäert HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model
fir verschlësselte Offset an DLL (0x10001DE0
).
Wann d'Funktioun eng zweete Kéier genannt gëtt, liest se dee selwechte Wäert a leeft op där Adress aus. Vun hei aus ginn d'Ressource a vill Aktiounen am RAM gelies an ausgefouert.
De Shellcode ass dee selwechte PE Loader deen a vergaangene OceanLotus Kampagnen benotzt gouf. Et kann emuléiert ginn benotzt db293b825dcc419ba7dc2c49fa2757ee.dll
, lued et an d'Erënnerung an leeft aus DllEntry
.
D'DLL extrahéiert den Inhalt vu senger Ressource, entschlësselt (AES-256-CBC) an dekompriméiert (LZMA) et. D'Ressource huet e spezifescht Format dat einfach ze dekompiléieren ass.
Figur 13. Installateur Konfiguratioun Struktur (KaitaiStruct Visualizer)
D'Konfiguratioun ass explizit spezifizéiert - ofhängeg vum Privilegniveau ginn binär Daten geschriwwe ginn %appdata%IntellogsBackgroundUploadTask.cpl
oder %windir%System32BackgroundUploadTask.cpl
(oder SysWOW64
fir 64-Bit Systemer).
Weider Persistenz gëtt gesuergt andeems Dir eng Aufgab mam Numm erstellt BackgroundUploadTask[junk].job
wou [junk]
stellt eng Rei vu Bytes duer 0x9D
и 0xA0
.
Aufgab Applikatioun Numm %windir%System32control.exe
, an de Parameterwäert ass de Wee op déi erofgeluede binär Datei. Déi verstoppt Aufgab leeft all Dag.
Strukturell ass eng CPL Datei eng DLL mat engem internen Numm ac8e06de0a6c4483af9837d96504127e.dll
, déi eng Funktioun exportéiert CPlApplet
. Dëse Fichier entschlësselt seng eenzeg Ressource {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
, lued dann dës DLL a rifft säin eenzegen Export DllEntry
.
Backdoor Configuratiounsdatei
D'Backdoor Konfiguratioun ass verschlësselt an a seng Ressourcen agebonnen. D'Struktur vun der Konfiguratiounsdatei ass ganz ähnlech wéi déi virdrun.
Figur 14. Backdoor Configuratioun Struktur (KaitaiStruct Visualizer)
Och wann d'Struktur ähnlech ass, sinn vill vun de Feldwäerter aktualiséiert ginn vun deenen, déi an der gewisen ginn
Dat éischt Element vun der binärer Array enthält eng DLL (HttpProv.dll
MD5: 2559738D1BD4A999126F900C7357B759
),
Zousätzlech Fuerschung
Beim Sammelen vun Echantillon hu mir e puer Charakteristiken gemierkt. D'Exemplare just beschriwwen erschéngt ronderëm Juli 2018, an anerer wéi et erschéngen sou viru kuerzem wéi Mëtt Januar bis Ufank Februar 2019. D'SFX Archiv gouf als Infektiounsvektor benotzt, e legitimen Decoy Dokument an eng béiswëlleg OSX Datei erof.
Och wann OceanLotus gefälschte Zäitstempel benotzt, hu mir gemierkt datt d'Zäitstempele vu SFX an OCX Dateien ëmmer d'selwecht sinn (0x57B0C36A
(08/14/2016 @ 7:15 UTC) an 0x498BE80F
(02/06/2009 @ 7:34am UTC) respektiv). Dëst beweist wahrscheinlech datt d'Auteuren eng Zort "Designer" hunn, déi déiselwecht Schabloune benotzt an einfach e puer Charakteristiken ännert.
Ënnert den Dokumenter, déi mir zënter dem Ufank vum 2018 studéiert hunn, ginn et verschidden Nimm, déi d'Länner vun Interessi un den Ugräifer uginn:
- Déi nei Kontaktinformatioun vu Cambodia Media(New).xls.exe
— 李建香 (个人简历).exe (gefälschte pdf Dokument vun engem CV)
- Feedback, Rally an den USA vum 28.-29. Juli 2018.exe
Zënter der Hannerdier entdeckt gouf {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
an d'Publikatioun vu senger Analyse vu verschiddene Fuerscher, hu mir e puer Ännerungen an de Malware Konfiguratiounsdaten observéiert.
Als éischt hunn d'Auteuren ugefaang Nimm vun den Helper DLLs ze läschen (DNSprov.dll
an zwou Versiounen HttpProv.dll
). D'Betreiber hunn dunn opgehalen déi drëtt DLL (déi zweet Versioun HttpProv.dll
), wielt nëmmen eng embed.
Zweetens, vill Backdoor Konfiguratiounsfelder goufen geännert, méiglecherweis fir d'Erkennung z'evitéieren wéi vill IoCs verfügbar sinn. Wichteg Felder geännert vun den Auteuren enthalen:
- AppX Registry Schlëssel geännert (kuckt IoCs)
- mutex Encoding String ("def", "abc", "ghi")
- port Zuel
Endlech, all nei Versiounen analyséiert hunn nei C&Cs an der IoCs Sektioun opgezielt.
Conclusiounen
OceanLotus weider ze entwéckelen. De Cyber Grupp konzentréiert sech op d'Verfeinerung an Ausbau vun Tools a Köder. Autoren verkleeden béiswëlleg Notzlaascht mat opmierksamste Dokumenter deenen hir Thema relevant ass fir déi virgesinn Affer. Si entwéckelen nei Schemaen a benotzen och ëffentlech verfügbar Tools, sou wéi den Equation Editor Exploit. Ausserdeem verbesseren se Tools fir d'Zuel vun den Artefakte ze reduzéieren déi op de Maschinnen vun den Affer bleiwen, an doduerch d'Chance vun der Detektioun duerch Antivirus Software ze reduzéieren.
Indikatoren vum Kompromëss
Indikatoren vu Kompromëss souwéi MITER ATT&CK Attributer sinn verfügbar
Source: will.com