ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus

V tej objavi vam bomo povedali, kako je kibernetska skupina OceanLotus (APT32 in APT-C-00) nedavno uporabila enega od javno dostopnih podvigov za CVE-2017-11882, ranljivosti zaradi poškodb pomnilnika v Microsoft Officeu in kako zlonamerna programska oprema skupine doseže obstojnost na ogroženih sistemih, ne da bi pustila sled. Nato bomo opisali, kako je skupina od začetka leta 2019 uporabljala samorazširljive arhive za izvajanje kode.

OceanLotus je specializiran za kibernetsko vohunjenje, prednostne tarče pa so države v jugovzhodni Aziji. Napadalci ponarejajo dokumente, ki pritegnejo pozornost potencialnih žrtev, da bi jih prepričali, da izvedejo stranska vrata, poleg tega pa razvijajo orodja. Metode, ki se uporabljajo za ustvarjanje honeypots, se razlikujejo glede na napade, od datotek z »dvojno razširitvijo«, samoraztegljivih arhivov, dokumentov z makri do znanih podvigov.

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus

Uporaba izkoriščanja v urejevalniku Microsoft Equation Editor

Sredi leta 2018 je OceanLotus izvedel kampanjo, ki je izkoriščala ranljivost CVE-2017-11882. Enega od zlonamernih dokumentov kibernetske skupine so analizirali strokovnjaki iz 360 Threat Intelligence Center (raziskovanje v kitajščini), vključno s podrobnim opisom izkoriščanja. Spodnja objava vsebuje pregled takšnega zlonamernega dokumenta.

Prva faza

Dokument FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) je podoben tistemu, omenjenemu v zgornji študiji. Zanimiva je, ker je namenjena uporabnikom, ki jih zanima kamboška politika (CNRP - Cambodia National Rescue Party, razpuščena konec leta 2017). Kljub končnici .doc je dokument v formatu RTF (glej sliko spodaj), vsebuje smeti kodo in je tudi popačen.

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 1. "Smeti" v RTF

Čeprav so elementi popačeni, Word uspešno odpre to datoteko RTF. Kot lahko vidite na sliki 2, obstaja struktura EQNOLEFILEHDR pri odmiku 0xC00, ki ji sledi glava MTEF in nato vnos MTEF (slika 3) za pisavo.

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 2. Vrednosti vnosa FONT

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 3. Format zapisa FONT

Možno prelivanje na terenu Ime, ker se njegova velikost pred kopiranjem ne preverja. Predolgo ime sproži ranljivost. Kot lahko vidite iz vsebine datoteke RTF (odmik 0xC26 na sliki 2), je medpomnilnik napolnjen z ukazno kodo, ki ji sledi navidezni ukaz (0x90) in povratni naslov 0x402114. Naslov je element pogovornega okna v EQNEDT32.exe, ki označuje navodila RET. To povzroči, da EIP kaže na začetek polja Imeki vsebuje lupinsko kodo.

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 4. Začetek lupinske kode izkoriščanja

naslov 0x45BD3C shrani spremenljivko, ki je dereferencirana, dokler ne doseže kazalca na trenutno naloženo strukturo MTEFData. Preostanek lupinske kode je tukaj.

Namen lupinske kode je izvršiti drugi del lupinske kode, ki je vdelan v odprt dokument. Izvirna lupinska koda najprej poskuša najti datotečni deskriptor odprtega dokumenta s ponavljanjem čez vse sistemske deskriptorje (NtQuerySystemInformation z argumentom SystemExtendedHandleInformation) in preverjanje, ali se ujemajo PID deskriptor in PID proces WinWord in ali je bil dokument odprt z masko za dostop - 0x12019F.

Za potrditev, da je bil najden pravilni ročaj (in ne ročaj drugega odprtega dokumenta), se vsebina datoteke prikaže s funkcijo CreateFileMapping, lupinska koda pa preveri, ali se zadnji štirje bajti dokumenta ujemajo z "yyyy« (metoda lova na jajca). Ko je ujemanje najdeno, se dokument prekopira v začasno mapo (GetTempPath) Kako ole.dll. Nato se prebere zadnjih 12 bajtov dokumenta.

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 5. Označevalci konca dokumenta

32-bitna vrednost med markerji AABBCCDD и yyyy je odmik naslednje lupinske kode. Imenuje se z uporabo funkcije CreateThread. Ekstrahirana ista lupinska koda, ki jo je prej uporabljala skupina OceanLotus. Emulacijski skript Python, ki smo ga izdali marca 2018, še vedno deluje za odlaganje druge stopnje.

Druga faza

Odstranjevanje komponent

Imena datotek in imenikov se izbirajo dinamično. Koda naključno izbere ime izvedljive datoteke ali datoteke DLL C:Windowssystem32. Nato pošlje zahtevo svojim virom in pridobi polje FileDescription uporabiti kot ime mape. Če to ne deluje, koda naključno izbere ime mape iz imenikov %ProgramFiles% ali C:Windows (iz GetWindowsDirectoryW). Izogiba se uporabi imena, ki bi lahko bilo v nasprotju z obstoječimi datotekami, in zagotavlja, da ne vsebuje naslednjih besed: windows, Microsoft, desktop, system, system32 ali syswow64. Če imenik že obstaja, se imenu doda "NLS_{6 znakov}".

vir 0x102 se analizira in datoteke se vržejo vanj %ProgramFiles% ali %AppData%, v naključno izbrano mapo. Spremenjen čas ustvarjanja, da ima enake vrednosti kot kernel32.dll.

Tukaj je na primer mapa in seznam datotek, ustvarjenih z izbiro izvršljive datoteke C:Windowssystem32TCPSVCS.exe kot vir podatkov.

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 6. Ekstrahiranje različnih komponent

Struktura virov 0x102 v kapalki je precej zapleteno. Na kratko, vsebuje:
— Imena datotek
— Velikost in vsebina datoteke
— Format stiskanja (COMPRESSION_FORMAT_LZNT1, ki ga uporablja funkcija RtlDecompressBuffer)

Prva datoteka je ponastavljena kot TCPSVCS.exe, kar je legitimno AcroTranscoder.exe (po navedbah FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Morda ste opazili, da so nekatere datoteke DLL večje od 11 MB. To je zato, ker je v izvedljivo datoteko nameščen velik neprekinjen medpomnilnik naključnih podatkov. Možno je, da je to način, kako se izogniti odkrivanju nekaterih varnostnih izdelkov.

Zagotavljanje vztrajnosti

vir 0x101 v kapalnici vsebuje dve 32-bitni celi števili, ki določata, kako naj bo zagotovljena obstojnost. Vrednost prve določa, kako bo zlonamerna programska oprema obstajala brez skrbniških pravic.

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Tabela 1. Mehanizem obstojnosti brez skrbniških pravic

Vrednost drugega celega števila določa, kako naj zlonamerna programska oprema doseže obstojnost, ko deluje s skrbniškimi pravicami.

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Tabela 2. Mehanizem obstojnosti s skrbniškimi pravicami

Ime storitve je ime datoteke brez končnice; prikazno ime je ime mape, če pa že obstaja, se ji doda niz »Revision 1” (število se povečuje, dokler se ne najde neuporabljeno ime). Operaterji so poskrbeli, da je bila vztrajnost skozi storitev robustna – v primeru okvare je treba storitev znova zagnati po 1 sekundi. Potem vrednost WOW64 Registrski ključ nove storitve je nastavljen na 4, kar pomeni, da gre za 32-bitno storitev.

Načrtovano opravilo se ustvari prek več vmesnikov COM: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. V bistvu zlonamerna programska oprema ustvari skrito nalogo, nastavi podatke o računu skupaj s podatki o trenutnem uporabniku ali skrbniku in nato nastavi sprožilec.

To je dnevna naloga s trajanjem 24 ur in intervali med dvema izvršitvama po 10 minut, kar pomeni, da bo potekala neprekinjeno.

Zlonamerni bit

V našem primeru je izvršljiva datoteka TCPSVCS.exe (AcroTranscoder.exe) je zakonita programska oprema, ki naloži DLL-je, ki se ponastavijo skupaj z njo. V tem primeru je zanimivo Flash Video Extension.dll.

Njegova funkcija DLLMain samo pokliče drugo funkcijo. Prisotnih je nekaj mehkih predikatov:

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 7. Mehki predikati

Po teh zavajajočih preverjanjih koda dobi razdelek .text mapa TCPSVCS.exe, spremeni svoj zagovor v PAGE_EXECUTE_READWRITE in ga prepiše z dodajanjem navideznih navodil:

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 8. Zaporedje navodil

Na koncu naslova funkcije FLVCore::Uninitialize(void), izvoženo Flash Video Extension.dll, je dodano navodilo CALL. To pomeni, da po nalaganju zlonamerne DLL, ko kliče izvajalno okolje WinMain в TCPSVCS.exe, bo kazalec ukaza pokazal na NOP, kar povzroči FLVCore::Uninitialize(void), naslednja stopnja.

Funkcija preprosto ustvari mutex, ki se začne z {181C8480-A975-411C-AB0A-630DB8B0A221}ki mu sledi trenutno uporabniško ime. Nato prebere izstavljeno datoteko *.db3, ki vsebuje kodo, neodvisno od položaja, in uporabi CreateThread za izvedbo vsebine.

Vsebina datoteke *.db3 je ukazna koda, ki jo običajno uporablja skupina OceanLotus. Z uporabo skripta emulatorja, ki smo ga objavili, smo ponovno uspešno razpakirali njegov uporabni tovor na GitHubu.

Skript izloči zadnjo stopnjo. Ta komponenta je stranska vrata, ki smo jih že analizirali prejšnja študija OceanLotus. To lahko določi GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} binarna datoteka. Konfiguracija zlonamerne programske opreme je še vedno šifrirana v viru PE. Ima približno enako konfiguracijo, vendar se C&C strežniki razlikujejo od prejšnjih:

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

Ekipa OceanLotus ponovno prikazuje kombinacijo različnih tehnik za preprečevanje odkrivanja. Vrnili so se z "izpopolnjenim" diagramom procesa okužbe. Z izbiro naključnih imen in polnjenjem izvedljivih datotek z naključnimi podatki zmanjšajo število zanesljivih IoC (na podlagi zgoščenj in imen datotek). Poleg tega morajo napadalci zaradi uporabe nalaganja DLL tretjih oseb le odstraniti zakonito dvojiško datoteko AcroTranscoder.

Samoraztegljivi arhivi

Po datotekah RTF se je skupina premaknila na samoraztegljive (SFX) arhive s skupnimi ikonami dokumentov, da bi uporabnika dodatno zmedli. Threatbook je pisal o tem (povezava v kitajščini). Po zagonu se samoraztegljive datoteke RAR izbrišejo in izvedejo se DLL-ji s pripono .ocx, katerih končna vsebina je bila predhodno dokumentirana {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Od sredine januarja 2019 OceanLotus ponovno uporablja to tehniko, vendar sčasoma spreminja nekatere konfiguracije. V tem razdelku bomo govorili o tehniki in spremembah.

Ustvarjanje vabe

Dokument THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) je bil prvič najden leta 2018. Ta datoteka SFX je bila ustvarjena pametno - v opisu (Informacije o različici) pravi, da je to slika JPEG. Skript SFX izgleda takole:

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 9. Ukazi SFX

Zlonamerna programska oprema se ponastavi {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), pa tudi sliko 2018 thich thong lac.jpg.

Slika vabe je videti takole:

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 10. Slika vabe

Morda ste opazili, da prvi dve vrstici v skriptu SFX dvakrat kličeta datoteko OCX, vendar to ni napaka.

{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)

Nadzorni tok datoteke OCX je zelo podoben drugim komponentam OceanLotus – veliko zaporedij ukazov JZ/JNZ и PUSH/RET, izmenično s kodo smeti.

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 11. Zakrita koda

Po filtriranju neželene kode izvozite DllRegisterServer, poklical regsvr32.exe, izgleda na naslednji način:

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 12. Osnovna koda namestitvenega programa

V bistvu na prvi klic DllRegisterServer izvoz nastavi vrednost registra HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model za šifriran odmik v DLL (0x10001DE0).

Ko je funkcija drugič poklicana, prebere isto vrednost in se izvede na tem naslovu. Od tu se vir in številna dejanja v RAM-u berejo in izvajajo.

Shellcode je isti nalagalnik PE, uporabljen v preteklih kampanjah OceanLotus. Lahko ga posnemate z uporabo naš scenarij. Na koncu se ponastavi db293b825dcc419ba7dc2c49fa2757ee.dll, ga naloži v pomnilnik in izvede DllEntry.

DLL ekstrahira vsebino svojega vira, jo dešifrira (AES-256-CBC) in dekompresira (LZMA). Vir ima poseben format, ki ga je enostavno razstaviti.

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 13. Struktura konfiguracije namestitvenega programa (KaitaiStruct Visualizer)

Konfiguracija je podana eksplicitno - glede na raven privilegijev bodo zapisovani binarni podatki %appdata%IntellogsBackgroundUploadTask.cpl ali %windir%System32BackgroundUploadTask.cpl (Ali SysWOW64 za 64-bitne sisteme).

Nadaljnja obstojnost je zagotovljena z ustvarjanjem naloge z imenom BackgroundUploadTask[junk].jobČe [junk] predstavlja niz bajtov 0x9D и 0xA0.

Ime aplikacije opravila %windir%System32control.exe, vrednost parametra pa je pot do prenesene binarne datoteke. Skrita naloga se izvaja vsak dan.

Strukturno je datoteka CPL DLL z notranjim imenom ac8e06de0a6c4483af9837d96504127e.dll, ki izvozi funkcijo CPlApplet. Ta datoteka dešifrira svoj edini vir {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, nato naloži ta DLL in pokliče njegov edini izvoz DllEntry.

Backdoor konfiguracijska datoteka

Konfiguracija zakulisnih vrat je šifrirana in vdelana v njene vire. Struktura konfiguracijske datoteke je zelo podobna prejšnji.

ESET: nove zakulisne sheme dostave za kibernetsko skupino OceanLotus
Slika 14. Konfiguracijska struktura backdoor (KaitaiStruct Visualizer)

Čeprav je struktura podobna, je bilo veliko vrednosti polj posodobljenih glede na prikazane v naše staro poročilo.

Prvi element binarnega polja vsebuje DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), identificiral Tencent. Toda ker je bilo ime izvoza odstranjeno iz binarne datoteke, se zgoščeni vrednosti ne ujemajo.

Dodatne raziskave

Med zbiranjem vzorcev smo opazili nekatere značilnosti. Pravkar opisani primerek se je pojavil okoli julija 2018, drugi podobni pa so se pojavili šele od sredine januarja do začetka februarja 2019. Arhiv SFX je bil uporabljen kot vektor okužbe, pri čemer je bil odvržen zakonit dokument z vabo in zlonamerna datoteka OSX.

Čeprav OceanLotus uporablja lažne časovne žige, smo opazili, da so časovni žigi datotek SFX in OCX vedno enaki (0x57B0C36A (08. 14. 2016 ob 7:15 UTC) in 0x498BE80F (02. 06. 2009 ob 7:34 UTC). To verjetno kaže na to, da imajo avtorji nekakšnega "dizajnera", ki uporablja iste predloge in preprosto spremeni nekatere lastnosti.

Med dokumenti, ki smo jih preučevali od začetka leta 2018, so različna imena, ki označujejo države, ki so zanimive za napadalce:

— Novi kontaktni podatki Cambodia Media (novo).xls.exe
— 李建香 (个人简历).exe (lažni pdf dokument življenjepisa)
— povratne informacije, Rally v ZDA od 28. do 29. julija 2018.exe

Ker so bila zadnja vrata odkrita {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll in objavo analize več raziskovalcev smo opazili nekaj sprememb v podatkih o konfiguraciji zlonamerne programske opreme.

Najprej so avtorji začeli odstranjevati imena iz pomožnih DLL (DNSprov.dll in dve različici HttpProv.dll). Operaterji so nato prenehali pakirati tretji DLL (druga različica HttpProv.dll), pri čemer se odločite za vdelavo samo enega.

Drugič, veliko konfiguracijskih polj zakulisnih vrat je bilo spremenjenih, kar bi se verjetno izognilo zaznavanju, ko je postalo na voljo veliko IoC. Pomembna polja, ki so jih spremenili avtorji, vključujejo:

  • Spremenjen registrski ključ AppX (glejte IoC)
  • kodirni niz mutex ("def", "abc", "ghi")
  • številko vrat

Končno imajo vse nove analizirane različice v razdelku IoC navedene nove C&C.

Ugotovitve

OceanLotus se še naprej razvija. Kibernetska skupina je osredotočena na izboljšanje in razširitev orodij in vab. Avtorji prikrijejo zlonamerno vsebino z dokumenti, ki pritegnejo pozornost, katerih tema je pomembna za predvidene žrtve. Razvijajo nove sheme in uporabljajo tudi javno dostopna orodja, kot je Equation Editor exploit. Poleg tega izboljšujejo orodja za zmanjšanje števila artefaktov, ki ostanejo na strojih žrtev, s čimer se zmanjša možnost odkrivanja s protivirusno programsko opremo.

Kazalniki kompromisa

Na voljo so indikatorji kompromisa in atributi MITER ATT&CK na Welivesecurity и na GitHubu.

Vir: www.habr.com

Dodaj komentar