ZiÅÄ mÄs jums pastÄstÄ«sim, kÄ OceanLotus kibergrupa (APT32 un APT-C-00) nesen izmantoja vienu no publiski pieejamajiem paÅÄmieniem
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.
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 (
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.
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).
2. attÄls. FONT ierakstu vÄrtÄ«bas
Skaitlis 3.
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.exe
norÄdot uz instrukcijÄm RET
. TÄdÄjÄdi EIP norÄda uz lauka sÄkumu nosaukumsKas satur Äaulas kodu.
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.
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.
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.
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_LZNT1
ko 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.
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.
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:
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:
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.
Skripts izgÅ«st pÄdÄjo posmu. Å is komponents ir aizmugures durvis, kurÄ mÄs jau esam analizÄjuÅ”i {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 ({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:
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:
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/RET
ielikts nevÄlamÄ kodÄ.
11. attÄls. ObfuskÄts kods
PÄc atkritumu koda filtrÄÅ”anas notiek eksportÄÅ”ana DllRegisterServer
, zvanīja regsvr32.exe
, sekojoŔi:
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 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.
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].job
Kur [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.
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
Pirmais binÄrÄ masÄ«va elements satur DLL (HttpProv.dll
MD5: 2559738D1BD4A999126F900C7357B759
),
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
Avots: www.habr.com