ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor

Ziņā mēs jums pastāstÄ«sim, kā OceanLotus kibergrupa (APT32 un APT-C-00) nesen izmantoja vienu no publiski pieejamajiem paņēmieniem CVE-2017-11882, Microsoft Office atmiņas bojājuma ievainojamÄ«bas un to, kā grupas ļaunprogrammatÅ«ra nodroÅ”ina noturÄ«bu uzlauztajās sistēmās, neatstājot pēdas. Tālāk mēs aprakstām, kā kopÅ” 2019. gada sākuma grupa koda palaiÅ”anai izmanto paÅ”izpletes arhÄ«vus.

OceanLotus specializējas kiberspiegoÅ”anā, prioritārie mērÄ·i ir Dienvidaustrumāzijas valstis. Uzbrucēji vilto dokumentus, kas piesaista potenciālo upuru uzmanÄ«bu, lai pārliecinātu viņus veikt aizmugures durvis, kā arÄ« strādā pie rÄ«ku izstrādes. Meduspodu veidoÅ”anas metodes atŔķiras dažādos uzbrukumos - no "dubultā paplaÅ”inājuma" failiem, paÅ”izpletes arhÄ«viem, makro dokumentiem un beidzot ar labi zināmiem varoņdarbiem.

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor

IzmantoŔanas izmantoŔana Microsoft vienādojumu redaktorā

2018. gada vidÅ« OceanLotus veica kampaņu, kurā tika izmantota ievainojamÄ«ba CVE-2017-11882. Vienu no kibergrupas ļaunprātÄ«gajiem dokumentiem analizēja 360 draudu izlÅ«koÅ”anas centra speciālisti (mācÄ«ties Ä·Ä«nieÅ”u valodā), tostarp detalizēts ekspluatācijas apraksts. Zemāk esoÅ”ajā ziņojumā ir sniegts pārskats par Ŕādu ļaunprātÄ«gu dokumentu.

Pirmais posms

Dokuments FW Report on demonstration of former CNRP in Republic of Korea.doc (sha-1: D1357B284C951470066AAA7A8228190B88A5C7C3) ir lÄ«dzÄ«gs iepriekÅ” minētajā pētÄ«jumā minētajam. Tas ir interesants ar to, ka tas ir paredzēts lietotājiem, kuri interesējas par Kambodžas politiku (CNRP - Cambodia National Salvation Party, likvidēta 2017. gada beigās). Neskatoties uz paplaÅ”inājumu .doc, dokuments ir RTF formātā (skatiet attēlu zemāk), satur nevēlamo kodu un ir arÄ« izkropļots.

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
1. attēls. Atkritumi RTF

Neskatoties uz nepareizu elementu klātbÅ«tni, Word veiksmÄ«gi atver Å”o RTF failu. Kā redzams 2. attēlā, Å”eit ir EQNOLEFILEHDR struktÅ«ra ar nobÄ«di 0xC00, kam seko MTEF galvene un pēc tam fonta MTEF ieraksts (3. attēls).

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
2. attēls. FONT ierakstu vērtības

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
Skaitlis 3. FONT ierakstīŔanas formāts

Iespējama lauka pārplÅ«de nosaukums, jo tā izmērs pirms kopÄ“Å”anas netiek pārbaudÄ«ts. Pārāk garÅ” nosaukums izraisa ievainojamÄ«bu. Kā redzat no RTF faila satura (nobÄ«de 0xC26 2. attēlā), buferis tiek aizpildÄ«ts ar shell kodu, kam seko fiktÄ«va komanda (0x90) un atgrieÅ”anas adresi 0x402114. Adrese ir dialoga elements EQNEDT32.exenorādot uz instrukcijām RET. Tādējādi EIP norāda uz lauka sākumu nosaukumsKas satur čaulas kodu.

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
4. attēls. Ekspluatācijas čaulas koda sākums

adrese 0x45BD3C saglabā mainÄ«go, uz kuru tiek noņemta atsauce, lÄ«dz tas sasniedz rādÄ«tāju uz paÅ”laik ielādēto struktÅ«ru MTEFData. Å eit ir pārējais čaulas kods.

Shellkoda mērķis ir izpildīt otro čaulas koda daļu, kas iegulta atvērtajā dokumentā. Pirmkārt, sākotnējais čaulas kods mēģina atrast atvērtā dokumenta faila deskriptoru, atkārtojot visus sistēmas deskriptorus (NtQuerySystemInformation ar argumentu SystemExtendedHandleInformation) un pārbaudot, vai tie atbilst PID deskriptors un PID process WinWord un vai dokuments tika atvērts ar piekļuves masku - 0x12019F.

Lai apstiprinātu, ka ir atrasts pareizais rokturis (nevis cita atvērta dokumenta rokturis), faila saturs tiek parādÄ«ts, izmantojot funkciju CreateFileMapping, un čaulas kods pārbauda, ā€‹ā€‹vai dokumenta pēdējie četri baiti atbilst "yyyyĀ» (Olu medÄ«bu metode). Kad atbilstÄ«ba ir atrasta, dokuments tiek kopēts pagaidu mapē (GetTempPath) Kā ole.dll. Pēc tam tiek nolasÄ«ti dokumenta pēdējie 12 baiti.

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
5. attēls. Dokumenta beigu marķieri

32 bitu vērtÄ«ba starp marÄ·ieriem AABBCCDD Šø yyyy ir nākamā čaulas koda nobÄ«de. To sauc ar funkciju CreateThread. Izvilkts tas pats čaulas kods, ko iepriekÅ” izmantoja grupa OceanLotus. Python emulācijas skripts, kuru izlaidām 2018. gada martā, joprojām darbojas otrā posma izgāztuvē.

Otrais posms

Komponentu izvilkŔana

Failu un direktoriju nosaukumi tiek izvēlēti dinamiski. Kods nejauÅ”i izvēlas izpildāmā vai DLL faila nosaukumu C:Windowssystem32. Pēc tam tas iesniedz pieprasÄ«jumu saviem resursiem un izgÅ«st lauku FileDescription lai izmantotu kā mapes nosaukumu. Ja tas nedarbojas, kods nejauÅ”i atlasa mapes nosaukumu no direktorijiem %ProgramFiles% vai C:Windows (no GetWindowsDirectoryW). Tas izvairās izmantot nosaukumu, kas varētu bÅ«t pretrunā esoÅ”ajiem failiem, un nodroÅ”ina, ka tajā nav Ŕādu vārdu: windows, Microsoft, desktop, system, system32 vai syswow64. Ja direktorijs jau pastāv, nosaukumam tiek pievienots "NLS_{6 rakstzÄ«mes}".

resursi 0x102 parsēti un faili izmesti %ProgramFiles% vai %AppData%, uz nejauÅ”i izvēlētu mapi. IzveidoÅ”anas laiks ir mainÄ«ts uz tādām paŔām vērtÄ«bām kā kernel32.dll.

Piemēram, Å”eit ir mape un to failu saraksts, kas izveidoti, atlasot izpildāmo failu C:Windowssystem32TCPSVCS.exe kā datu avots.

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
6. attēls. Dažādu komponentu ieguve

Resursu struktÅ«ra 0x102 pilinātājā ir diezgan sarežģīta. ÄŖsumā tas satur:
- failu nosaukumi
ā€” Faila lielums un saturs
ā€” saspieÅ”anas formāts (COMPRESSION_FORMAT_LZNT1ko izmanto funkcija RtlDecompressBuffer)

Pirmais fails tiek izmests kā TCPSVCS.exe, kas ir likumīgi AcroTranscoder.exe (saskaņā ar FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Iespējams, esat ievērojuÅ”i, ka daži DLL faili ir lielāki par 11 MB. Tas ir tāpēc, ka izpildāmajā failā tiek ievietots liels blakus esoÅ”u nejauÅ”u datu buferis. Iespējams, tas ir veids, kā izvairÄ«ties no dažu droŔības produktu atklāŔanas.

Noturības nodroŔināŔana

resursi 0x101 pilinātājā ir divi 32 bitu veseli skaitļi, kas norāda, kā ir jānodroÅ”ina noturÄ«ba. Pirmā vērtÄ«ba norāda, kā ļaunprogrammatÅ«ra saglabāsies bez administratora tiesÄ«bām.

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
1. tabula. Neadministratora noturības mehānisms

Otrā veselā skaitļa vērtÄ«ba norāda, kā ļaunprogrammatÅ«rai jānodroÅ”ina noturÄ«ba, darbojoties ar administratora privilēģijām.

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
2. tabula. Administratora noturības mehānisms

Pakalpojuma nosaukums ir faila nosaukums bez paplaÅ”inājuma; parādāmais nosaukums ir mapes nosaukums, bet, ja tas jau pastāv, virkne "Revision 1ā€ (skaitlis palielinās, lÄ«dz tiek atrasts neizmantots nosaukums). Operatori ir parÅ«pējuÅ”ies, lai noturÄ«ba caur servisu bÅ«tu noturÄ«ga ā€“ kļūmes gadÄ«jumā pakalpojums ir jārestartē pēc 1 sekundes. Tad vērtÄ«ba WOW64 Pakalpojuma jaunā reÄ£istra atslēga ir iestatÄ«ta uz 4, kas norāda, ka Å”is ir 32 bitu pakalpojums.

Plānotais uzdevums tiek izveidots, izmantojot vairākas COM saskarnes: ITaskScheduler, ITask, ITaskTrigger, IPersistFile Šø ITaskScheduler. BÅ«tÄ«bā ļaunprogrammatÅ«ra izveido slēptu uzdevumu, iestata konta informāciju kopā ar paÅ”reizējā lietotāja vai administratora informāciju un pēc tam iestata trigeri.

Šis ir ikdienas uzdevums, kura ilgums ir 24 stundas un intervāli starp diviem braucieniem ir 10 minūtes, kas nozīmē, ka tas darbosies pastāvīgi.

Ļaunprātīgs bits

Mūsu piemērā izpildāmā TCPSVCS.exe (AcroTranscoder.exe) ir likumīga programmatūra, kas ielādē kopā ar to atmestos DLL. Šajā gadījumā tas interesē Flash Video Extension.dll.

Tā funkcija DLLMain vienkārŔi izsauc citu funkciju. Ir daži neskaidri predikāti:

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
7. attēls. IzplÅ«duÅ”ie predikāti

Pēc Ŕīm maldinoÅ”ajām pārbaudēm kods saņem sadaļu .text failu TCPSVCS.exe, maina savu aizsardzÄ«bu uz PAGE_EXECUTE_READWRITE un pārraksta to ar fiktÄ«viem norādÄ«jumiem:

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
8. attēls. Instrukciju secība

Beigās uz funkcijas adresi FLVCore::Uninitialize(void), eksportēts Flash Video Extension.dll, tiek pievienota instrukcija CALL. Tas nozÄ«mē, ka pēc ļaunprātÄ«gā DLL ielādes izpildlaika zvani WinMain Š² TCPSVCS.exe, norādÄ«jumu rādÄ«tājs norādÄ«s uz NOP, kā rezultātā tiks izsaukts FLVCore::Uninitialize(void), nākamais posms.

Funkcija vienkārÅ”i izveido mutex, sākot ar {181C8480-A975-411C-AB0A-630DB8B0A221}kam seko paÅ”reizējais lietotājvārds. Pēc tam tas nolasa izmesto *.db3 failu, kas satur no pozÄ«cijas neatkarÄ«gu kodu, un izmanto CreateThread lai izpildÄ«tu saturu.

Faila *.db3 saturs ir čaulas kods, ko parasti izmanto OceanLotus komanda. Mēs atkal veiksmīgi atspiedām tā lietderīgo slodzi, izmantojot mūsu publicēto emulatora skriptu. vietnē GitHub.

Skripts izgÅ«st pēdējo posmu. Å is komponents ir aizmugures durvis, kurā mēs jau esam analizējuÅ”i IepriekŔējais OceanLotus pētÄ«jums. To var noteikt GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} binārais fails. Ä»aunprātÄ«gas programmatÅ«ras konfigurācija joprojām ir Å”ifrēta PE resursā. Tam ir aptuveni tāda pati konfigurācija, taču C&C serveri atŔķiras no iepriekŔējiem:

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

OceanLotus grupa atkal demonstrē dažādu paņēmienu kombināciju, lai izvairÄ«tos no atklāŔanas. Viņi atgriezās ar "pabeigtu" infekcijas procesa shēmu. Izvēloties nejauÅ”us nosaukumus un aizpildot izpildāmos failus ar nejauÅ”iem datiem, tie samazina uzticamo IoC skaitu (pamatojoties uz jaucējfunkcijām un failu nosaukumiem). Turklāt, izmantojot treŔās puses DLL ielādi, uzbrucējiem ir jānoņem tikai likumÄ«gais binārs AcroTranscoder.

PaŔizplūŔanas arhīvi

Pēc RTF failiem grupa pārgāja uz paÅ”izpletes (SFX) arhÄ«viem ar kopÄ«gām dokumentu ikonām, lai vēl vairāk mulsinātu lietotāju. Par to rakstÄ«ja draudu grāmata (saite Ä·Ä«nieÅ”u valodā). StartÄ“Å”anas laikā paÅ”izpletes RAR faili tiek izmesti un tiek izpildÄ«ti DLL ar paplaÅ”inājumu .ocx, kuru galÄ«gā slodze iepriekÅ” tika dokumentēta. {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. KopÅ” 2019. gada janvāra vidus OceanLotus ir atkārtoti izmantojis Å”o paņēmienu, taču laika gaitā mainÄ«jis dažas konfigurācijas. Å ajā sadaļā mēs runāsim par tehniku ā€‹ā€‹un izmaiņām.

Lure izveide

Dokuments THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (sha-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) pirmo reizi tika atrasts 2018. gadā. Å is SFX fails tika izveidots ar prātu - aprakstā (Versijas informācija) saka, ka tas ir JPEG attēls. SFX skripts izskatās Ŕādi:

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
9. attēls. SFX komandas

Ļaunprātīga programmatūra tiek atiestatīta {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (sha-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), kā arī attēlu 2018 thich thong lac.jpg.

Mānekļa attēls izskatās Ŕādi:

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
10. attēls. Mānekļa attēls

Iespējams, esat pamanījis, ka SFX skripta pirmās divas rindas divreiz izsauc OCX failu, taču tā nav kļūda.

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

OCX faila vadÄ«bas plÅ«sma ir ļoti lÄ«dzÄ«ga citiem OceanLotus komponentiem - daudzām komandu secÄ«bām JZ/JNZ Šø PUSH/RETielikts nevēlamā kodā.

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
11. attēls. Obfuskēts kods

Pēc atkritumu koda filtrÄ“Å”anas notiek eksportÄ“Å”ana DllRegisterServer, zvanÄ«ja regsvr32.exe, sekojoÅ”i:

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
12. attēls. Galvenā uzstādītāja kods

BÅ«tÄ«bā, pirmo reizi zvanot DllRegisterServer eksports nosaka reÄ£istra vērtÄ«bu HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model Å”ifrētai nobÄ«dei DLL (0x10001DE0).

Kad funkcija tiek izsaukta otrreiz, tā nolasa to paÅ”u vērtÄ«bu un tiek izpildÄ«ta Å”ajā adresē. No Å”ejienes resurss tiek nolasÄ«ts un izpildÄ«ts, un daudzas darbÄ«bas tiek veiktas RAM.

Shellcode ir tas pats PE iekrāvējs, kas tika izmantots iepriekŔējās OceanLotus kampaņās. To var atdarināt ar mÅ«su skripts. Beigās viņŔ nokrÄ«t db293b825dcc419ba7dc2c49fa2757ee.dll, ielādē to atmiņā un izpilda DllEntry.

DLL izvelk sava resursa saturu, atÅ”ifrē (AES-256-CBC) un atspiež (LZMA). Resursam ir Ä«paÅ”s formāts, ko ir viegli dekompilēt.

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
13. attēls. InstalÄ“Å”anas programmas konfigurācijas struktÅ«ra (KaitaiStruct Visualizer)

Konfigurācija ir iestatÄ«ta skaidri ā€” atkarÄ«bā no privilēģiju lÄ«meņa tiks rakstÄ«ti binārie dati %appdata%IntellogsBackgroundUploadTask.cpl vai %windir%System32BackgroundUploadTask.cpl (Vai SysWOW64 64 bitu sistēmām).

Turpmāka noturÄ«ba tiek nodroÅ”ināta, izveidojot uzdevumu ar nosaukumu BackgroundUploadTask[junk].jobKur [junk] ir baitu kopa 0x9D Šø 0xA0.

Uzdevuma lietojumprogrammas nosaukums %windir%System32control.exe, un parametra vērtÄ«ba ir ceļŔ uz lejupielādēto bināro failu. Slēptais uzdevums darbojas katru dienu.

Strukturāli CPL fails ir DLL ar iekŔējo nosaukumu ac8e06de0a6c4483af9837d96504127e.dll, kas eksportē funkciju CPlApplet. Å is fails atÅ”ifrē savu vienÄ«go resursu {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, pēc tam ielādē Å”o DLL un izsauc tā vienÄ«go eksportÄ“Å”anu DllEntry.

Aizmugures durvju konfigurācijas fails

Aizmugurējo durvju konfigurācija ir Å”ifrēta un iegulta tās resursos. Konfigurācijas faila struktÅ«ra ir ļoti lÄ«dzÄ«ga iepriekŔējai.

ESET: jaunas piegādes shēmas OceanLotus Cybergroup Backdoor
14. attēls. Aizmugures durvju konfigurācijas struktūra (KaitaiStruct Visualizer)

Neskatoties uz līdzīgu struktūru, daudzu lauku vērtības ir atjauninātas, salīdzinot ar datiem, kas parādīti mūsu vecais ziņojums.

Pirmais binārā masīva elements satur DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), identificēja Tencent. Bet, tā kā eksporta nosaukums ir noņemts no binārā faila, jaucējkodi nesakrīt.

Papildu pētījumi

Vācot paraugus, mēs pievērsām uzmanÄ«bu dažām Ä«paŔībām. Tikko aprakstÄ«tais paraugs parādÄ«jās aptuveni 2018. gada jÅ«lijā, un citi tamlÄ«dzÄ«gi parādÄ«jās pavisam nesen, 2019. gada janvāra vidÅ« ā€“ februāra sākumā. SFX arhÄ«vs tika izmantots kā infekcijas pārnēsātājs, izmetot likumÄ«gu mānekļu dokumentu un ļaunprātÄ«gu OCX failu.

Lai gan OceanLotus izmanto viltotus laikspiedolus, mēs pamanÄ«jām, ka SFX un OCX failu laikspiedoli vienmēr ir vienādi (0x57B0C36A (08 plkst. 14:2016 UTC) un 0x498BE80F (attiecÄ«gi 02. plkst. 06:2009 UTC). Tas, iespējams, norāda, ka autoriem ir kāds "konstruktors", kas izmanto tās paÅ”as veidnes un tikai maina dažus raksturlielumus.

Starp dokumentiem, kurus esam pētÄ«juÅ”i kopÅ” 2018. gada sākuma, ir dažādi nosaukumi, kas norāda uz uzbrÅ«koÅ”ajām interesēm:

- Cambodia Media(New).xls.exe jaunā kontaktinformācija
- Ꝏå»ŗ香 (äøŖäŗŗē®€åŽ†).exe (viltots CV pdf dokuments)
ā€” atsauksmes, Rallijs ASV no 28.-29.exe

KopÅ” aizmugures durvju atklāŔanas {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll un publicējot tās analÄ«zi, ko veica vairāki pētnieki, mēs novērojām dažas izmaiņas ļaunprātÄ«gas programmatÅ«ras konfigurācijas datos.

Pirmkārt, autori sāka noņemt nosaukumus no palÄ«ga DLL DLL (DNSprov.dll un divas versijas HttpProv.dll). Pēc tam operatori pārtrauca treŔā DLL (otrā versija) iesaiņoÅ”anu HttpProv.dll), izvēloties iegult tikai vienu.

Otrkārt, ir mainÄ«ti daudzi aizmugures durvju konfigurācijas lauki, iespējams, lai izvairÄ«tos no atklāŔanas, jo ir kļuvuÅ”i pieejami daudzi IoC. Starp svarÄ«gajām autoru modificētajām jomām ir Ŕādas:

  • mainÄ«ta reÄ£istra atslēga AppX (skatiet IoC)
  • mutex kodÄ“Å”anas virkne ("def", "abc", "ghi")
  • porta numurs

Visbeidzot, visām jaunajām analizētajām versijām ir jauni C&C, kas norādīti IoC sadaļā.

Atzinumi

OceanLotus turpina attÄ«stÄ«ties. Kibergrupa ir vērsta uz instrumentu un mānekļu uzlaboÅ”anu un paplaÅ”ināŔanu. Autori maskē ļaunprātÄ«gas kravas ar uzmanÄ«bu piesaistoÅ”iem dokumentiem, kas attiecas uz paredzētajiem upuriem. Viņi izstrādā jaunas shēmas un izmanto arÄ« publiski pieejamus rÄ«kus, piemēram, vienādojumu redaktora izmantoÅ”anu. Turklāt viņi uzlabo rÄ«kus, lai samazinātu upuru iekārtās atstāto artefaktu skaitu, tādējādi samazinot iespēju, ka pretvÄ«rusu programmatÅ«ra tos atklās.

Kompromisa rādītāji

Ir pieejami kompromisa indikatori, kā arÄ« MITER ATT&CK atribÅ«ti par Welifesecurity Šø vietnē GitHub.

Avots: www.habr.com

Pievieno komentāru