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 (из GetWindowsDirectoryW). Он избегает использования имени, которое может конфликтовать с существующими файлами, и следит за тем, чтобы оно не содержало следующие слова: 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

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster