ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei

Šiame įraše papasakosime, kaip kibernetinė grupė OceanLotus (APT32 ir APT-C-00) neseniai panaudojo vieną iš viešai prieinamų išnaudojimų. CVE-2017-11882, „Microsoft Office“ atminties pažeidimai ir tai, kaip grupės kenkėjiška programa išliks pažeistose sistemose nepalikdama pėdsakų. Toliau aprašysime, kaip nuo 2019 m. pradžios grupė naudojo savaime išsiskleidžiančius archyvus kodui vykdyti.

„OceanLotus“ specializuojasi kibernetinio šnipinėjimo srityje, o prioritetiniai tikslai yra Pietryčių Azijos šalys. Užpuolikai klastoja dokumentus, kurie patraukia potencialių aukų dėmesį, siekdami įtikinti jas atlikti užpakalines duris, taip pat kuria priemones. Medaus puodų kūrimo metodai skiriasi įvairiose atakose: nuo „dvigubo išplėtimo“ failų, savaime išsiskleidžiančių archyvų, dokumentų su makrokomandomis iki žinomų išnaudojimų.

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei

„Microsoft Equation Editor“ išnaudojimo naudojimas

2018 m. viduryje „OceanLotus“ surengė kampaniją, kurioje išnaudojo CVE-2017-11882 pažeidžiamumą. Vieną iš kenkėjiškų kibernetinės grupės dokumentų išanalizavo 360 Threat Intelligence Center specialistai (tyrimai kinų kalba), įskaitant išsamų išnaudojimo aprašymą. Toliau pateiktame įraše pateikiama tokio kenksmingo dokumento apžvalga.

Pirmasis etapas

Dokumentas FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) yra panašus į pirmiau minėtame tyrime. Jis įdomus tuo, kad skirtas vartotojams, besidomintiems Kambodžos politika (CNRP – Cambodia National Rescue Party, likviduota 2017 m. pabaigoje). Nepaisant .doc plėtinio, dokumentas yra RTF formatu (žr. paveikslėlį žemiau), jame yra šiukšlių kodas ir jis taip pat yra iškraipytas.

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
1 pav. "Šiukšlės" RTF

Nors yra iškraipytų elementų, Word sėkmingai atidaro šį RTF failą. Kaip matote 2 paveiksle, 0xC00 poslinkyje yra EQNOLEFILEHDR struktūra, po kurios yra MTEF antraštė ir šrifto MTEF įrašas (3 pav.).

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
2 pav. FONT įvesties reikšmės

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
Pav 3. FONT įrašymo formatas

Galimas perpildymas lauke pavadinimas, nes jo dydis prieš kopijuojant netikrinamas. Per ilgas pavadinimas sukelia pažeidžiamumą. Kaip matote iš RTF failo turinio (0 pav. poslinkis 26xC2), buferis užpildomas apvalkalo kodu, po kurio duodama fiktyvi komanda (0x90) ir grąžinimo adresą 0x402114. Adresas yra dialogo elementas EQNEDT32.exe, nurodant instrukcijas RET. Dėl to EIP nurodo lauko pradžią pavadinimaskuriame yra apvalkalo kodas.

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
4 pav. Išnaudojimo apvalkalo kodo pradžia

adresas 0x45BD3C išsaugo kintamąjį, į kurį neatsižvelgiama, kol pasiekia žymeklį į šiuo metu įkeltą struktūrą MTEFData. Likusi apvalkalo kodas yra čia.

Apvalkalo kodo paskirtis yra vykdyti antrąją apvalkalo kodo dalį, įdėtą į atvirą dokumentą. Pirminis apvalkalo kodas pirmiausia bando rasti atidaryto dokumento failo deskriptorių, kartodamas visus sistemos deskriptorius (NtQuerySystemInformation su argumentu SystemExtendedHandleInformation) ir patikrinti, ar jie sutampa PID deskriptorius ir PID procesą WinWord ir ar dokumentas buvo atidarytas naudojant prieigos kaukę - 0x12019F.

Norint patvirtinti, kad buvo rasta tinkama rankena (o ne kito atidaryto dokumento rankena), failo turinys rodomas naudojant funkciją CreateFileMapping, o apvalkalo kodas patikrina, ar paskutiniai keturi dokumento baitai atitinka "yyyy"(Kiaušinių medžioklės metodas). Kai randama atitiktis, dokumentas nukopijuojamas į laikiną aplanką (GetTempPath) Kaip ole.dll. Tada nuskaitomi paskutiniai 12 dokumento baitų.

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
5 pav. Dokumento pabaigos žymekliai

32 bitų reikšmė tarp žymeklių AABBCCDD и yyyy yra kito apvalkalo kodo poslinkis. Jis vadinamas naudojant funkciją CreateThread. Ištrauktas tas pats apvalkalo kodas, kurį anksčiau naudojo OceanLotus grupė. Python emuliacijos scenarijus, kurį išleidome 2018 m. kovo mėn., vis dar veikia antrojo etapo sąvartynui.

Antrasis etapas

Komponentų pašalinimas

Failų ir katalogų pavadinimai parenkami dinamiškai. Kodas atsitiktinai pasirenka vykdomojo arba DLL failo pavadinimą C:Windowssystem32. Tada jis pateikia užklausą savo ištekliams ir nuskaito lauką FileDescription naudoti kaip aplanko pavadinimą. Jei tai neveikia, kodas atsitiktinai parenka aplanko pavadinimą iš katalogų %ProgramFiles% arba C:Windows (из GetWindowsDirectoryW). Он избегает использования имени, которое может конфликтовать с существующими файлами, и следит за тем, чтобы оно не содержало следующие слова: windows, Microsoft, desktop, system, system32 arba syswow64. Jei katalogas jau yra, prie pavadinimo pridedamas „NLS_{6 simboliai}“.

išteklių 0x102 išanalizuojama ir failai įkeliami %ProgramFiles% arba %AppData%, į atsitiktinai pasirinktą aplanką. Sukūrimo laikas pakeistas, kad būtų tokios pačios vertės kaip kernel32.dll.

Pavyzdžiui, čia yra aplankas ir failų, sukurtų pasirinkus vykdomąjį failą, sąrašas C:Windowssystem32TCPSVCS.exe kaip duomenų šaltinį.

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
6 pav. Įvairių komponentų ištraukimas

Išteklių struktūra 0x102 lašelinėje yra gana sudėtinga. Trumpai tariant, jame yra:
– Failų pavadinimai
— Failo dydis ir turinys
– suspaudimo formatas (COMPRESSION_FORMAT_LZNT1, kurį naudoja funkcija RtlDecompressBuffer)

Pirmasis failas iš naujo nustatomas kaip TCPSVCS.exe, kuris yra teisėtas AcroTranscoder.exe (pagal FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Galbūt pastebėjote, kad kai kurie DLL failai yra didesni nei 11 MB. Taip yra todėl, kad vykdomajame faile yra didelis gretimas atsitiktinių duomenų buferis. Gali būti, kad tai yra būdas išvengti kai kurių saugos produktų aptikimo.

Atkaklumo užtikrinimas

išteklių 0x101 lašintuvu yra du 32 bitų sveikieji skaičiai, nurodantys, kaip turi būti užtikrintas patvarumas. Pirmojo reikšmė nurodo, kaip kenkėjiška programa išliks be administratoriaus teisių.

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
1 lentelė. Patvarumo mechanizmas be administratoriaus teisių

Antrojo sveikojo skaičiaus reikšmė nurodo, kaip kenkėjiška programa turėtų išlikti, kai ji veikia administratoriaus teisėmis.

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
2 lentelė. Patvarumo mechanizmas su administratoriaus teisėmis

Paslaugos pavadinimas yra failo pavadinimas be plėtinio; rodomas pavadinimas yra aplanko pavadinimas, bet jei jis jau yra, prie jo pridedama eilutė “Revision 1“ (skaičius didėja, kol randamas nenaudojamas pavadinimas). Operatoriai pasirūpino, kad paslaugos atkaklumas būtų tvirtas – gedimo atveju paslauga turėtų būti paleista iš naujo po 1 sekundės. Tada vertė WOW64 Naujasis paslaugos registro raktas nustatytas į 4, o tai reiškia, kad tai 32 bitų paslauga.

Suplanuota užduotis sukuriama per kelias COM sąsajas: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Iš esmės kenkėjiška programa sukuria paslėptą užduotį, nustato paskyros informaciją kartu su dabartinio vartotojo arba administratoriaus informacija ir tada nustato aktyviklį.

Tai kasdienė užduotis, kurios trukmė yra 24 valandos, o intervalai tarp dviejų vykdymų yra 10 minučių, o tai reiškia, kad ji veiks nuolat.

Piktybiškas bitas

Mūsų pavyzdyje vykdomasis failas TCPSVCS.exe (AcroTranscoder.exe) yra teisėta programinė įranga, kuri įkelia DLL, kurios iš naujo nustatomos kartu su ja. Šiuo atveju tai įdomu Flash Video Extension.dll.

Jo funkcija DLLMain tiesiog iškviečia kitą funkciją. Yra keletas neaiškių predikatų:

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
7 pav. Neaiškūs predikatai

Po šių klaidinančių patikrinimų kodas gauna skyrių .text failą TCPSVCS.exe, pakeičia savo gynybą į PAGE_EXECUTE_READWRITE ir perrašo jį pridėdamas netikras instrukcijas:

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
8 pav. Instrukcijų seka

Pabaigoje – funkcijos adresas FLVCore::Uninitialize(void), eksportuota Flash Video Extension.dll, pridedama instrukcija CALL. Tai reiškia, kad po kenkėjiško DLL įkėlimo, kai vykdymo laikas iškviečia WinMain в TCPSVCS.exe, instrukcijos žymeklis nurodys NOP, sukeldamas FLVCore::Uninitialize(void), kitas etapas.

Funkcija tiesiog sukuria mutex, pradedant nuo {181C8480-A975-411C-AB0A-630DB8B0A221}po kurio nurodomas dabartinis vartotojo vardas. Tada jis nuskaito iškeltą *.db3 failą, kuriame yra nuo pozicijos nepriklausomas kodas, ir naudoja CreateThread vykdyti turinį.

*.db3 failo turinys yra apvalkalo kodas, kurį paprastai naudoja OceanLotus grupė. Mes vėl sėkmingai išpakavome jo naudingą apkrovą naudodami mūsų paskelbtą emuliatoriaus scenarijų „GitHub“..

Scenarijus ištraukia paskutinį etapą. Šis komponentas yra užpakalinės durys, kurias mes jau išanalizavome ankstesnis OceanLotus tyrimas. Tai gali nustatyti GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} dvejetainis failas. Kenkėjiškos programos konfigūracija vis dar užšifruota PE šaltinyje. Jo konfigūracija yra maždaug tokia pati, tačiau C&C serveriai skiriasi nuo ankstesnių:

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

„OceanLotus“ komanda vėl demonstruoja skirtingų metodų derinį, kad būtų išvengta aptikimo. Jie grįžo su „patobulinta“ infekcijos proceso schema. Pasirinkę atsitiktinius pavadinimus ir užpildydami vykdomuosius failus atsitiktiniais duomenimis, jie sumažina patikimų IoC skaičių (pagal maišą ir failų pavadinimus). Be to, dėl trečiosios šalies DLL įkėlimo, užpuolikams tereikia pašalinti teisėtą dvejetainį failą. AcroTranscoder.

Savaime išsiskleidžiantys archyvai

Po RTF failų grupė perėjo prie savaiminio išskleidimo (SFX) archyvų su įprastomis dokumentų piktogramomis, kad dar labiau suklaidintų vartotoją. Grėsmių knyga apie tai rašė (nuoroda kinų kalba). Paleidus savaime išsiskleidžiantys RAR failai atmetami ir vykdomi DLL su .ocx plėtiniu, kurių galutinė naudingoji apkrova buvo dokumentuota anksčiau {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Nuo 2019 m. sausio vidurio „OceanLotus“ pakartotinai naudoja šią techniką, tačiau laikui bėgant keitė kai kurias konfigūracijas. Šiame skyriuje kalbėsime apie techniką ir pakeitimus.

Sukurti jauką

Dokumentas THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) pirmą kartą buvo rastas 2018 m. Šis SFX failas buvo sukurtas išmintingai – aprašyme (Informacija apie versiją) sakoma, kad tai JPEG vaizdas. SFX scenarijus atrodo taip:

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
9 pav. SFX komandos

Kenkėjiška programa nustatoma iš naujo {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), taip pat nuotrauką 2018 thich thong lac.jpg.

Jauko vaizdas atrodo taip:

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
10 pav. Jauko vaizdas

Galbūt pastebėjote, kad pirmosios dvi SFX scenarijaus eilutės du kartus iškviečia OCX failą, tačiau tai nėra klaida.

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

OCX failo valdymo srautas labai panašus į kitus OceanLotus komponentus – daug komandų sekų JZ/JNZ и PUSH/RET, pakaitomis su šiukšlių kodu.

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
11 pav. Užmaskuotas kodas

Išfiltravę nepageidaujamą kodą, eksportuokite DllRegisterServer, paskambino regsvr32.exe, taip:

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
12 pav. Pagrindinis montuotojo kodas

Iš esmės per pirmąjį skambutį DllRegisterServer eksportas nustato registro vertę HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model užšifruotam poslinkiui DLL (0x10001DE0).

Kai funkcija iškviečiama antrą kartą, ji nuskaito tą pačią reikšmę ir vykdoma tuo adresu. Iš čia skaitomi ir vykdomi ištekliai ir daugelis operatyviosios atminties veiksmų.

Shellcode yra ta pati PE krautuvas, naudotas ankstesnėse OceanLotus kampanijose. Jį galima imituoti naudojant mūsų scenarijus. Galų gale jis iš naujo nustato db293b825dcc419ba7dc2c49fa2757ee.dll, įkelia jį į atmintį ir vykdo DllEntry.

DLL ištraukia savo išteklių turinį, iššifruoja (AES-256-CBC) ir išspaudžia (LZMA). Išteklius turi specifinį formatą, kurį lengva dekompiliuoti.

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
13 pav. Diegimo programos konfigūracijos struktūra (KaitaiStruct Visualizer)

Konfigūracija nurodyta aiškiai – priklausomai nuo privilegijų lygio, dvejetainiai duomenys bus rašomi %appdata%IntellogsBackgroundUploadTask.cpl arba %windir%System32BackgroundUploadTask.cpl (Arba SysWOW64 64 bitų sistemoms).

Tolesnis atkaklumas užtikrinamas sukūrus užduotį su pavadinimu BackgroundUploadTask[junk].jobKur [junk] reiškia baitų rinkinį 0x9D и 0xA0.

Užduoties programos pavadinimas %windir%System32control.exe, o parametro reikšmė yra kelias į atsisiųstą dvejetainį failą. Paslėpta užduotis vykdoma kiekvieną dieną.

Struktūriškai CPL failas yra DLL su vidiniu pavadinimu ac8e06de0a6c4483af9837d96504127e.dll, kuri eksportuoja funkciją CPlApplet. Šis failas iššifruoja vienintelį savo šaltinį {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, tada įkelia šį DLL ir iškviečia vienintelį jo eksportą DllEntry.

Užpakalinių durų konfigūracijos failas

Užpakalinių durų konfigūracija yra užšifruota ir įterpta į jos išteklius. Konfigūracijos failo struktūra labai panaši į ankstesnį.

ESET: naujos užpakalinių durų pristatymo schemos kibernetinei OceanLotus grupei
14 pav. Galinių durų konfigūracijos struktūra (KaitaiStruct Visualizer)

Nors struktūra panaši, daugelis laukų reikšmių buvo atnaujintos iš parodytų mūsų senas pranešimas.

Pirmame dvejetainio masyvo elemente yra DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), nustatė Tencent. Bet kadangi eksporto pavadinimas buvo pašalintas iš dvejetainio, maišos nesutampa.

Papildomi tyrimai

Rinkdami pavyzdžius pastebėjome kai kurias ypatybes. Ką tik aprašytas egzempliorius pasirodė maždaug 2018 m. liepos mėn., o kiti panašūs į jį pasirodė dar 2019 m. sausio viduryje–vasario pradžioje. SFX archyvas buvo naudojamas kaip infekcijos vektorius, pašalinant teisėtą apgaulės dokumentą ir kenkėjišką OSX failą.

Nors OceanLotus naudoja netikras laiko žymes, pastebėjome, kad SFX ir OCX failų laiko žymos visada yra vienodos (0x57B0C36A (08-14-2016 7:15 UTC) ir 0x498BE80F (atitinkamai 02-06-2009 7:34 UTC). Tai tikriausiai rodo, kad autoriai turi kažkokį „dizainerį“, kuris naudoja tuos pačius šablonus ir tiesiog keičia kai kurias charakteristikas.

Tarp dokumentų, kuriuos tyrinėjome nuo 2018 m. pradžios, yra įvairių pavadinimų, nurodančių užpuolikus dominančias šalis:

— Nauja Cambodia Media(New).xls.exe kontaktinė informacija
— 李建香 (个人简历).exe (netikras CV pdf dokumentas)
— atsiliepimai, ralis JAV 28 m. liepos 29-2018 d..exe

Nuo tada, kai buvo aptiktos užpakalinės durys {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll ir kai kurių tyrėjų paskelbus jos analizę, pastebėjome tam tikrus kenkėjiškų programų konfigūracijos duomenų pokyčius.

Pirma, autoriai pradėjo šalinti pavadinimus iš pagalbinių DLL (DNSprov.dll ir dvi versijos HttpProv.dll). Tada operatoriai nustojo pakuoti trečiąjį DLL (antroji versija HttpProv.dll), pasirenkant įterpti tik vieną.

Antra, buvo pakeista daug užpakalinių durų konfigūracijos laukų, kad būtų išvengta aptikimo, nes atsirado daug IoC. Svarbūs autorių modifikuoti laukai yra šie:

  • Pakeistas „AppX“ registro raktas (žr. IoC)
  • mutex kodavimo eilutė („def“, „abc“, „ghi“)
  • prievado numeris

Galiausiai, visose naujose analizuojamose versijose yra nauji C ir C, išvardyti IoC skyriuje.

išvados

„OceanLotus“ toliau vystosi. Kibernetinė grupė orientuojasi į įrankių ir jaukų tobulinimą ir plėtrą. Autoriai užmaskuoja kenksmingus krovinius naudodami dėmesį patraukiančius dokumentus, kurių tema yra susijusi su numatomomis aukomis. Jie kuria naujas schemas ir taip pat naudoja viešai prieinamus įrankius, pvz., Equation Editor exploit. Be to, jie tobulina įrankius, kad sumažintų aukų kompiuteriuose likusių artefaktų skaičių, taip sumažinant galimybę juos aptikti antivirusine programine įranga.

Kompromiso rodikliai

Galimi kompromiso rodikliai ir MITER ATT&CK atributai apie Welifesecurity и „GitHub“..

Šaltinis: www.habr.com

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster