U ovom postu ćemo vam reći kako je cyber grupa OceanLotus (APT32 i APT-C-00) nedavno koristila jedan od javno dostupnih exploita za , ranjivosti oštećenja memorije u Microsoft Officeu i kako zlonamjerni softver grupe postiže postojanost na ugroženim sustavima bez ostavljanja traga. Zatim ćemo opisati kako je grupa od početka 2019. koristila samoraspakirajuće arhive za pokretanje koda.
OceanLotus je specijaliziran za cyber špijunažu, a prioritetne mete su zemlje jugoistočne Azije. Napadači krivotvore dokumente koji privlače pozornost potencijalnih žrtava kako bi ih uvjerili da izvedu backdoor, a također rade na razvoju alata. Metode koje se koriste za stvaranje honeypots razlikuju se od napada do napada, od datoteka s "dvostrukim proširenjem", samoraspakujućih arhiva, dokumenata s makronaredbama, do poznatih eksploatacija.

Korištenje iskorištavanja u Microsoft Equation Editoru
Sredinom 2018. OceanLotus je proveo kampanju iskorištavanja ranjivosti CVE-2017-11882. Jedan od zlonamjernih dokumenata cyber grupe analizirali su stručnjaci iz 360 Threat Intelligence Center (), uključujući detaljan opis iskorištavanja. Post ispod sadrži pregled takvog zlonamjernog dokumenta.
Prva faza
Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) sličan je onome spomenutom u gornjoj studiji. Zanimljiv je jer je namijenjen korisnicima koje zanima kambodžanska politika (CNRP - Cambodia National Rescue Party, raspuštena krajem 2017.). Unatoč ekstenziji .doc, dokument je u RTF formatu (vidi sliku ispod), sadrži smeće koda, a također je iskrivljen.

Slika 1. "Smeće" u RTF-u
Iako ima iskrivljenih elemenata, Word uspješno otvara ovu RTF datoteku. Kao što možete vidjeti na slici 2, postoji struktura EQNOLEFILEHDR na pomaku 0xC00, nakon čega slijedi MTEF zaglavlje, a zatim MTEF unos (slika 3) za font.

Slika 2. Vrijednosti unosa FONT-a

Slika 3.
Moguće prelijevanje na terenu ime, jer se njegova veličina ne provjerava prije kopiranja. Ime koje je predugačko pokreće ranjivost. Kao što možete vidjeti iz sadržaja RTF datoteke (pomak 0xC26 na slici 2), međuspremnik je ispunjen shellcodeom nakon kojeg slijedi lažna naredba (0x90) i povratnu adresu 0x402114. Adresa je element dijaloga u EQNEDT32.exe, označavajući upute RET. To uzrokuje da EIP pokazuje na početak polja imekoji sadrži shellcode.

Slika 4. Početak eksploatacijskog shellcodea
adresa 0x45BD3C pohranjuje varijablu koja se dereferencira dok ne dosegne pokazivač na trenutno učitanu strukturu MTEFData. Ostatak shell koda je ovdje.
Svrha shellcodea je izvršiti drugi dio shellcodea ugrađenog u otvoreni dokument. Izvorni shellcode prvo pokušava pronaći deskriptor datoteke otvorenog dokumenta ponavljanjem preko svih deskriptora sustava (NtQuerySystemInformation s argumentom SystemExtendedHandleInformation) i provjerava podudaraju li se PID deskriptor i PID postupak WinWord i je li dokument otvoren s pristupnom maskom - 0x12019F.
Kako bi se potvrdilo da je pronađena ispravna oznaka (a ne oznaka drugog otvorenog dokumenta), sadržaj datoteke se prikazuje pomoću funkcije CreateFileMapping, a shellcode provjerava odgovaraju li zadnja četiri bajta dokumenta "yyyy"(Metoda lova na jaja). Kada se pronađe podudaranje, dokument se kopira u privremenu mapu (GetTempPath) Kako ole.dll. Zatim se čita zadnjih 12 bajtova dokumenta.
![]()
Slika 5. Oznake kraja dokumenta
32-bitna vrijednost između markera AABBCCDD и yyyy je pomak sljedećeg shellcodea. Poziva se pomoću funkcije CreateThread. Izdvojen isti shellcode koji je ranije koristila grupa OceanLotus. , koji smo objavili u ožujku 2018., još uvijek radi za izbacivanje druge faze.
Druga faza
Uklanjanje komponenti
Nazivi datoteka i direktorija biraju se dinamički. Kod nasumično odabire naziv izvršne ili DLL datoteke u C:Windowssystem32. Zatim šalje zahtjev svojim resursima i dohvaća polje FileDescription koristiti kao naziv mape. Ako to ne uspije, kôd nasumično odabire naziv mape iz direktorija %ProgramFiles% ili C:Windows (iz Get-aWindowsDirectoryW). Izbjegava korištenje imena koje bi moglo biti u sukobu s postojećim datotekama i osigurava da ne sadrži sljedeće riječi: windows, Microsoft, desktop, system, system32 ili syswow64. Ako direktorij već postoji, nazivu se dodaje "NLS_{6 znakova}".
izvor 0x102 se analizira i datoteke se ubacuju u %ProgramFiles% ili %AppData%, u nasumično odabranu mapu. Promijenjeno vrijeme stvaranja da ima iste vrijednosti kao kernel32.dll.
Na primjer, ovdje je mapa i popis datoteka stvorenih odabirom izvršne datoteke C:Windowssystem32TCPSVCS.exe kao izvor podataka.

Slika 6. Izdvajanje raznih komponenti
Struktura resursa 0x102 u kapaljki je prilično složen. Ukratko, sadrži:
— Imena datoteka
— Veličina i sadržaj datoteke
— Format kompresije (COMPRESSION_FORMAT_LZNT1, koju koristi funkcija RtlDecompressBuffer)
Prva datoteka je resetirana kao TCPSVCS.exe, što je legitimno AcroTranscoder.exe (prema FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).
Možda ste primijetili da su neke DLL datoteke veće od 11 MB. To je zato što je veliki kontinuirani međuspremnik nasumičnih podataka smješten unutar izvršne datoteke. Moguće je da je to način da se izbjegne otkrivanje od strane nekih sigurnosnih proizvoda.
Osiguravanje postojanosti
izvor 0x101 u dropperu sadrži dva 32-bitna cijela broja koji specificiraju kako bi se trebala osigurati postojanost. Vrijednost prve određuje kako će zlonamjerni softver postojati bez administratorskih prava.

Tablica 1. Mehanizam postojanosti bez administratorskih prava
Vrijednost drugog cijelog broja određuje kako zlonamjerni softver treba postići postojanost kada radi s administratorskim pravima.

Tablica 2. Mehanizam postojanosti s administratorskim pravima
Naziv usluge je naziv datoteke bez ekstenzije; naziv za prikaz je naziv mape, ali ako već postoji, dodaje joj se niz "Revision 1” (broj se povećava dok se ne pronađe neiskorišteno ime). Operateri su se pobrinuli da ustrajnost kroz uslugu bude robusna - u slučaju kvara, uslugu treba ponovno pokrenuti nakon 1 sekunde. Zatim vrijednost WOW64 Ključ registra nove usluge postavljen je na 4, što znači da je to 32-bitna usluga.
Planirani zadatak kreira se kroz nekoliko COM sučelja: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. U biti, zlonamjerni softver stvara skriveni zadatak, postavlja podatke o računu zajedno s podacima o trenutnom korisniku ili administratoru, a zatim postavlja okidač.
Ovo je dnevni zadatak u trajanju od 24 sata i intervalima između dva izvršenja od 10 minuta, što znači da će se izvoditi neprekidno.
Zlonamjeran dio
U našem primjeru, izvršna datoteka TCPSVCS.exe (AcroTranscoder.exe) je legitiman softver koji učitava DLL-ove koji se resetiraju zajedno s njim. U ovom slučaju, to je od interesa Flash Video Extension.dll.
Njegova funkcija DLLMain samo poziva drugu funkciju. Prisutni su neki nejasni predikati:

Slika 7. Neizraziti predikati
Nakon ovih pogrešnih provjera, kôd dobiva odjeljak .text datoteka TCPSVCS.exe, mijenja obranu u PAGE_EXECUTE_READWRITE i prepisuje ga dodavanjem lažnih uputa:

Slika 8. Redoslijed instrukcija
Na kraju adrese funkcije FLVCore::Uninitialize(void), izvezeno Flash Video Extension.dll, dodaje se uputa CALL. To znači da nakon učitavanja zlonamjernog DLL-a, kada runtime poziva WinMain в TCPSVCS.exe, pokazivač instrukcija će pokazivati na NOP, uzrokujući FLVCore::Uninitialize(void), sljedeća razina.
Funkcija jednostavno stvara mutex počevši s {181C8480-A975-411C-AB0A-630DB8B0A221}nakon čega slijedi trenutno korisničko ime. Zatim čita izbačenu *.db3 datoteku, koja sadrži kod neovisan o poziciji, i koristi CreateThread izvršiti sadržaj.
Sadržaj *.db3 datoteke je shellcode koji grupa OceanLotus obično koristi. Opet smo uspješno raspakirali njegov sadržaj pomoću skripte emulatora koju smo objavili .
Skripta izdvaja završnu fazu. Ova komponenta je backdoor, koji smo već analizirali . To se može odrediti GUID-om {A96B020F-0000-466F-A96D-A91BBF8EAC96} binarna datoteka. Konfiguracija zlonamjernog softvera i dalje je šifrirana u PE resursu. Ima približno istu konfiguraciju, ali se C&C poslužitelji razlikuju od prethodnih:
- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz
Tim OceanLotusa ponovno demonstrira kombinaciju različitih tehnika za izbjegavanje otkrivanja. Vratili su se s "pročišćenim" dijagramom procesa infekcije. Odabirom nasumičnih naziva i ispunjavanjem izvršnih datoteka nasumičnim podacima, oni smanjuju broj pouzdanih IoC-ova (na temelju hashova i naziva datoteka). Štoviše, zahvaljujući upotrebi učitavanja DLL-a treće strane, napadači trebaju samo ukloniti legitimnu binarnu datoteku AcroTranscoder.
Samoraspakirajuće arhive
Nakon RTF datoteka, grupa je prešla na samoraspakirajuće (SFX) arhive sa zajedničkim ikonama dokumenata kako bi dodatno zbunila korisnika. Threatbook je pisao o ovome (). Nakon pokretanja, samoraspakirajuće RAR datoteke se ispuštaju i DLL-ovi s ekstenzijom .ocx se izvršavaju, čiji je konačni sadržaj prethodno dokumentiran {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Od sredine siječnja 2019. OceanLotus ponovno koristi ovu tehniku, ali s vremenom mijenja neke konfiguracije. U ovom dijelu ćemo govoriti o tehnici i promjenama.
Stvaranje mamca
Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) prvi put je pronađen 2018. Ova SFX datoteka je kreirana mudro - u opisu (Informacije o verziji) kaže da je ovo JPEG slika. SFX skripta izgleda ovako:

Slika 9. SFX naredbe
Malware se resetira {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), kao i sliku 2018 thich thong lac.jpg.
Slika mamca izgleda ovako:

Slika 10. Slika mamca
Možda ste primijetili da prva dva retka u SFX skripti dvaput pozivaju OCX datoteku, ali to nije pogreška.
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
Kontrolni tijek OCX datoteke vrlo je sličan drugim komponentama OceanLotusa - mnoge sekvence naredbi JZ/JNZ и PUSH/RET, naizmjence s kodom smeća.

Slika 11. Zamagljeni kod
Nakon filtriranja bezvrijednog koda, izvezite DllRegisterServer, nazvao regsvr32.exe, izgleda ovako:

Slika 12. Osnovni kôd instalatera
Uglavnom, na prvi poziv DllRegisterServer izvoz postavlja vrijednost registra HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model za šifrirani pomak u DLL (0x10001DE0).
Kada se funkcija pozove drugi put, ona čita istu vrijednost i izvršava se na toj adresi. Odavde se resurs i mnoge radnje u RAM-u čitaju i izvršavaju.
Shellcode je isti PE loader korišten u prošlim OceanLotus kampanjama. Može se emulirati pomoću . Na kraju se resetira db293b825dcc419ba7dc2c49fa2757ee.dll, učitava ga u memoriju i izvršava DllEntry.
DLL izvlači sadržaj svog resursa, dekriptira ga (AES-256-CBC) i dekomprimira (LZMA). Resurs ima poseban format koji se lako dekompilira.

Slika 13. Struktura konfiguracije instalatera (KaitaiStruct Visualizer)
Konfiguracija je eksplicitno navedena - ovisno o razini privilegija, bit će upisani binarni podaci %appdata%IntellogsBackgroundUploadTask.cpl ili %windir%System32BackgroundUploadTask.cpl (Ili SysWOW64 za 64-bitne sustave).
Daljnja postojanost osigurana je stvaranjem zadatka s imenom BackgroundUploadTask[junk].jobGdje [junk] predstavlja skup bajtova 0x9D и 0xA0.
Naziv aplikacije zadatka %windir%System32control.exe, a vrijednost parametra je put do preuzete binarne datoteke. Skriveni zadatak izvodi se svaki dan.
Strukturno, CPL datoteka je DLL s internim imenom ac8e06de0a6c4483af9837d96504127e.dll, koji eksportira funkciju CPlApplet. Ova datoteka dekriptira svoj jedini resurs {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, zatim učitava ovaj DLL i poziva njegov jedini izvoz DllEntry.
Backdoor konfiguracijska datoteka
Backdoor konfiguracija je šifrirana i ugrađena u svoje resurse. Struktura konfiguracijske datoteke vrlo je slična prethodnoj.

Slika 14. Struktura konfiguracije stražnjih vrata (KaitaiStruct Visualizer)
Iako je struktura slična, mnoge vrijednosti polja su ažurirane u odnosu na one prikazane u .
Prvi element binarnog niza sadrži DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), . No budući da je naziv izvoza uklonjen iz binarne datoteke, hashovi se ne podudaraju.
Dodatna istraživanja
Prilikom prikupljanja uzoraka uočili smo neke karakteristike. Upravo opisani primjerak pojavio se oko srpnja 2018., a drugi slični pojavili su se tek od sredine siječnja do početka veljače 2019. SFX arhiva korištena je kao vektor infekcije, ispuštajući legitiman dokument mamac i zlonamjernu OSX datoteku.
Iako OceanLotus koristi lažne vremenske oznake, primijetili smo da su vremenske oznake SFX i OCX datoteka uvijek iste (0x57B0C36A (08 @ 14:2016 UTC) i 0x498BE80F (02. 06. 2009. u 7:34 ujutro UTC). To vjerojatno ukazuje na to da autori imaju nekakvog “dizajnera” koji koristi iste predloške i jednostavno mijenja neke karakteristike.
Među dokumentima koje smo proučavali od početka 2018. postoje različita imena koja ukazuju na zemlje koje su od interesa za napadače:
— Novi podaci za kontakt kambodžanskih medija (novo).xls.exe
— 李建香 (个人简历).exe (lažni pdf dokument životopisa)
— povratne informacije, Rally u SAD-u od 28. do 29. srpnja 2018. exe
Budući da su stražnja vrata otkrivena {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll i objavljivanja njegove analize od strane nekoliko istraživača, uočili smo neke promjene u podacima o konfiguraciji zlonamjernog softvera.
Prvo su autori počeli uklanjati imena iz pomoćnih DLL-ova (DNSprov.dll i dvije verzije HttpProv.dll). Operateri su tada prestali pakirati treći DLL (druga verzija HttpProv.dll), odabirom ugradnje samo jednog.
Drugo, promijenjena su mnoga konfiguracijska polja backdoor-a, što će vjerojatno izbjeći otkrivanje kako je mnogo IoC-ova postalo dostupno. Važna polja koja su autori izmijenili uključuju:
- Ključ registra AppX promijenjen (pogledajte IoC-ove)
- mutex kodirani niz ("def", "abc", "ghi")
- broj porta
Konačno, sve nove analizirane verzije imaju nove C&C navedene u odjeljku IoC.
Zaključci
OceanLotus se nastavlja razvijati. Cyber skupina usmjerena je na usavršavanje i širenje alata i mamaca. Autori prikrivaju zlonamjerne sadržaje koristeći dokumente koji privlače pažnju čija je tema relevantna za namjeravane žrtve. Oni razvijaju nove sheme i također koriste javno dostupne alate, kao što je Equation Editor exploit. Štoviše, poboljšavaju alate za smanjenje broja artefakata preostalih na strojevima žrtava, čime se smanjuje mogućnost otkrivanja antivirusnim softverom.
Pokazatelji kompromisa
Dostupni su indikatori kompromisa kao i MITER ATT&CK atributi и .
Izvor: www.habr.com
