Ushbu postda biz sizga OceanLotus kiberguruhi (APT32 va APT-C-00) yaqinda ommaga ochiq bo'lgan ekspluatatsiyalardan birini qanday ishlatganini aytib beramiz.
OceanLotus kiber-josuslikka ixtisoslashgan bo'lib, ustuvor maqsadlari Janubi-Sharqiy Osiyo mamlakatlari hisoblanadi. Hujumchilar potentsial qurbonlarning e'tiborini tortadigan hujjatlarni ularni orqa eshikni bajarishga ishontirish uchun soxtalashtiradilar, shuningdek, vositalarni ishlab chiqish ustida ishlamoqdalar. Asal po'stlog'ini yaratishda qo'llaniladigan usullar "ikki marta kengaytmali" fayllardan, o'z-o'zidan ochiladigan arxivlardan, makroli hujjatlardan ma'lum ekspluatatsiyalargacha bo'lgan hujumlarda farqlanadi.
Microsoft Equation Editor-da ekspluatatsiyadan foydalanish
2018-yil o‘rtalarida OceanLotus CVE-2017-11882 zaifligidan foydalangan holda kampaniya o‘tkazdi. Kiberguruhning zararli hujjatlaridan biri 360 Threat Intelligence Center mutaxassislari tomonidan tahlil qilindi (
birinchi bosqichi
Hujjat FW Report on demonstration of former CNRP in Republic of Korea.doc
(SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3
) yuqoridagi tadqiqotda aytib o'tilganlarga o'xshaydi. Bu qiziq, chunki u Kambodja siyosatiga qiziqqan foydalanuvchilarga qaratilgan (CNRP - Kambodja milliy qutqaruv partiyasi, 2017 yil oxirida tarqatib yuborilgan). .doc kengaytmasiga qaramay, hujjat RTF formatida (quyidagi rasmga qarang), axlat kodini o'z ichiga oladi va u ham buzilgan.
Shakl 1. RTFda "Axlat"
Buzilgan elementlar mavjud bo'lsa ham, Word ushbu RTF faylini muvaffaqiyatli ochadi. 2-rasmda ko'rib turganingizdek, 0xC00 ofsetida EQNOLEFILEHDR tuzilmasi, undan keyin MTEF sarlavhasi, keyin esa shrift uchun MTEF yozuvi (3-rasm) mavjud.
2-rasm. FONT kiritish qiymatlari
Shakl 3.
Maydonda toshib ketishi mumkin ism, chunki nusxa olishdan oldin uning o'lchami tekshirilmaydi. Juda uzun ism zaiflikni keltirib chiqaradi. RTF faylining mazmunidan ko'rinib turibdiki (0-rasmda 26xC2 ofset), bufer qobiq kodi bilan to'ldirilgan va undan keyin qo'g'irchoq buyrug'i (0x90
) va qaytish manzili 0x402114
. Manzil dialog elementi hisoblanadi EQNEDT32.exe
, ko'rsatmalarni ko'rsatuvchi RET
. Bu EIP maydonning boshlanishiga ishora qiladi ismqobiq kodini o'z ichiga oladi.
Rasm 4. Exploit shellcodening boshlanishi
Manzil 0x45BD3C
joriy yuklangan tuzilmaga ko'rsatgichga etgunga qadar, o'zgarmaydigan o'zgaruvchini saqlaydi MTEFData
. Shellkodning qolgan qismi shu yerda.
Shellcodening maqsadi ochiq hujjatga o'rnatilgan qobiq kodining ikkinchi qismini bajarishdir. Asl qobiq kodi birinchi navbatda barcha tizim identifikatorlarini takrorlash orqali ochiq hujjatning fayl deskriptorini topishga harakat qiladi (NtQuerySystemInformation
argument bilan SystemExtendedHandleInformation
) va ularning mos kelishini tekshirish PID tavsiflovchi va PID jarayon WinWord
va hujjat kirish niqobi bilan ochilganmi - 0x12019F
.
To'g'ri tutqich (boshqa ochiq hujjatning tutqichi emas) topilganligini tasdiqlash uchun faylning mazmuni funksiya yordamida ko'rsatiladi. CreateFileMapping
, va qobiq kodi hujjatning oxirgi to'rt bayti mos kelishini tekshiradi "yyyy
"(tuxum ovlash usuli). Moslik topilgach, hujjat vaqtinchalik jildga ko'chiriladi (GetTempPath
) Qanaqasiga ole.dll
. Keyin hujjatning oxirgi 12 bayti o'qiladi.
Shakl 5. Hujjat belgilarining oxiri
Markerlar orasidagi 32 bitli qiymat AABBCCDD
и yyyy
keyingi qobiq kodining ofsetidir. Funktsiya yordamida chaqiriladi CreateThread
. Ilgari OceanLotus guruhi tomonidan ishlatilgan qobiq kodini chiqarib oldi.
Ikkinchi bosqich
Komponentlarni olib tashlash
Fayl va katalog nomlari dinamik ravishda tanlanadi. Kod tasodifiy bajariladigan yoki DLL fayl nomini tanlaydi C:Windowssystem32
. Keyin u o'z resurslariga so'rov yuboradi va maydonni oladi FileDescription
jild nomi sifatida foydalanish uchun. Agar bu ishlamasa, kod tasodifiy kataloglardan papka nomini tanlaydi %ProgramFiles%
yoki C:Windows
(GetWindowsDirectoryW dan). U mavjud fayllarga zid bo'lishi mumkin bo'lgan nomdan foydalanishni oldini oladi va unda quyidagi so'zlarni o'z ichiga olmaydi: windows
, Microsoft
, desktop
, system
, system32
yoki syswow64
. Agar katalog allaqachon mavjud bo'lsa, nomga "NLS_{6 belgi}" qo'shiladi.
resurs 0x102
tahlil qilinadi va fayllar ichiga tashlanadi %ProgramFiles%
yoki %AppData%
, tasodifiy tanlangan jildga. Yaratish vaqti bir xil qiymatlarga ega bo'lishi uchun o'zgartirildi kernel32.dll
.
Misol uchun, bu erda bajariladigan faylni tanlash orqali yaratilgan papka va fayllar ro'yxati C:Windowssystem32TCPSVCS.exe
ma'lumotlar manbai sifatida.
Shakl 6. Turli komponentlarni ajratib olish
Resurs tuzilishi 0x102
bir tomchi ichida juda murakkab. Bir so'z bilan aytganda, u quyidagilarni o'z ichiga oladi:
- Fayl nomlari
- Fayl hajmi va mazmuni
— Siqish formati (COMPRESSION_FORMAT_LZNT1
, funksiya tomonidan ishlatiladi RtlDecompressBuffer
)
Birinchi fayl sifatida tiklanadi TCPSVCS.exe
, bu qonuniydir AcroTranscoder.exe
(ko'ra.) FileDescription
, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3
).
Ba'zi DLL fayllari 11 MB dan katta ekanligini payqagan bo'lishingiz mumkin. Buning sababi, bajariladigan fayl ichida tasodifiy ma'lumotlarning katta qo'shni buferi joylashtirilgan. Bu ba'zi xavfsizlik mahsulotlari tomonidan aniqlanmaslikning bir usuli bo'lishi mumkin.
Qat'iylikni ta'minlash
resurs 0x101
tomizgichda qat'iylikni qanday ta'minlash kerakligini ko'rsatadigan ikkita 32 bitli tamsayı mavjud. Birinchisining qiymati zararli dastur administrator huquqlarisiz qanday davom etishini bildiradi.
Jadval 1. Administrator huquqlarisiz doimiylik mexanizmi
Ikkinchi butun sonning qiymati administrator huquqlari bilan ishlayotganda zararli dastur qanday qilib barqarorlikka erishishi kerakligini belgilaydi.
Jadval 2. Administrator huquqlari bilan doimiylik mexanizmi
Xizmat nomi kengaytmasiz fayl nomi; displey nomi jildning nomidir, lekin agar u allaqachon mavjud bo'lsa, unga " qatori qo'shiladiRevision 1
” (ishlatilmagan ism topilmaguncha raqam ortadi). Operatorlar xizmat orqali qat'iylik mustahkam ekanligiga ishonch hosil qilishdi - ishlamay qolganda, xizmat 1 soniyadan keyin qayta ishga tushirilishi kerak. Keyin qiymat WOW64
Yangi xizmatning ro'yxatga olish kitobi kaliti 4 ga o'rnatilgan bo'lib, u 32 bitli xizmat ekanligini ko'rsatadi.
Rejalashtirilgan vazifa bir nechta COM interfeyslari orqali yaratiladi: ITaskScheduler
, ITask
, ITaskTrigger
, IPersistFile
и ITaskScheduler
. Asosan, zararli dastur yashirin vazifani yaratadi, joriy foydalanuvchi yoki administrator ma'lumotlari bilan birga hisob ma'lumotlarini o'rnatadi va keyin tetikni o'rnatadi.
Bu 24 soat davom etadigan va 10 daqiqalik ikkita ijro orasidagi intervalli kundalik vazifa bo'lib, u doimiy ravishda ishlaydi.
Zararli bit
Bizning misolimizda bajariladigan fayl TCPSVCS.exe
(AcroTranscoder.exe
) u bilan birga qayta o'rnatilgan DLL fayllarini yuklaydigan qonuniy dasturiy ta'minot. Bunday holda, bu qiziqish uyg'otadi Flash Video Extension.dll
.
Uning funktsiyasi DLLMain
faqat boshqa funktsiyani chaqiradi. Ba'zi noaniq predikatlar mavjud:
7-rasm. Noaniq predikatlar
Ushbu noto'g'ri tekshiruvlardan so'ng kod bo'lim oladi .text
fayl TCPSVCS.exe
, himoyasini o'zgartiradi PAGE_EXECUTE_READWRITE
va soxta ko'rsatmalarni qo'shish orqali uni qayta yozadi:
Rasm 8. Ko'rsatmalar ketma-ketligi
Funktsiya manzili oxirida FLVCore::Uninitialize(void)
, eksport qilindi Flash Video Extension.dll
, ko'rsatma qo'shiladi CALL
. Bu shuni anglatadiki, zararli DLL yuklangandan so'ng, ish vaqti qo'ng'iroq qilganda WinMain
в TCPSVCS.exe
, ko'rsatma ko'rsatkichi sabab bo'ladigan NOP ga ishora qiladi FLVCore::Uninitialize(void)
, keyingi bosqich.
Funktsiya oddiygina bilan boshlanadigan mutex yaratadi {181C8480-A975-411C-AB0A-630DB8B0A221}
keyin joriy foydalanuvchi nomi. Keyin u joylashuvga bog'liq bo'lmagan kodni o'z ichiga olgan dumping *.db3 faylini o'qiydi va foydalanadi CreateThread
tarkibni bajarish uchun.
*.db3 faylining mazmuni OceanLotus guruhi odatda foydalanadigan qobiq kodidir. Biz chop etgan emulyator skriptidan foydalanib, uning foydali yukini yana muvaffaqiyatli ochdik
Skript yakuniy bosqichni chiqaradi. Ushbu komponent biz allaqachon tahlil qilgan orqa eshikdir {A96B020F-0000-466F-A96D-A91BBF8EAC96}
ikkilik fayl. Zararli dastur konfiguratsiyasi hali ham PE resursida shifrlangan. U taxminan bir xil konfiguratsiyaga ega, ammo C&C serverlari avvalgilaridan farq qiladi:
- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz
OceanLotus jamoasi aniqlanmaslik uchun yana turli usullarning kombinatsiyasini namoyish etadi. Ular infektsiya jarayonining "tozalangan" diagrammasi bilan qaytishdi. Tasodifiy nomlarni tanlash va bajariladigan fayllarni tasodifiy ma'lumotlar bilan to'ldirish orqali ular ishonchli IoC sonini kamaytiradi (xeshlar va fayl nomlari asosida). Bundan tashqari, uchinchi tomon DLL yuklashdan foydalanish tufayli, tajovuzkorlar faqat qonuniy ikkilik faylni olib tashlashlari kerak. AcroTranscoder
.
O'z-o'zidan ochiladigan arxivlar
RTF fayllaridan so'ng, guruh foydalanuvchini chalkashtirib yuborish uchun umumiy hujjat piktogrammalari bilan o'z-o'zidan ochiladigan (SFX) arxivlarga o'tdi. Bu haqda Threatbook yozgan ({A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
. 2019-yil yanvar oyi oʻrtalaridan boshlab OceanLotus ushbu texnikadan qayta foydalanmoqda, biroq vaqt oʻtishi bilan baʼzi konfiguratsiyalarni oʻzgartirmoqda. Ushbu bo'limda biz texnika va o'zgarishlar haqida gapiramiz.
Lure yaratish
Hujjat THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE
(SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB
) birinchi marta 2018 yilda topilgan. Ushbu SFX fayli oqilona yaratilgan - tavsifda (Versiya haqida ma'lumot) bu JPEG tasvir ekanligini aytadi. SFX skripti quyidagicha ko'rinadi:
9-rasm. SFX buyruqlari
Zararli dastur qayta tiklanadi {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx
(SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC
), shuningdek, rasm 2018 thich thong lac.jpg.
Yopiq rasm quyidagicha ko'rinadi:
10-rasm. Aldash tasviri
Siz SFX skriptidagi dastlabki ikkita satr OCX faylini ikki marta chaqirishini payqagandirsiz, ammo bu xato emas.
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
OCX faylining boshqaruv oqimi boshqa OceanLotus komponentlariga juda o'xshaydi - ko'plab buyruqlar ketma-ketligi JZ/JNZ
и PUSH/RET
, axlat kodi bilan almashtiriladi.
11-rasm. Buzilgan kod
Keraksiz kodni filtrlagandan so'ng, eksport qiling DllRegisterServer
, chaqirildi regsvr32.exe
, quyidagicha:
Rasm 12. Asosiy o'rnatuvchi kodi
Asosan, birinchi qo'ng'iroqda DllRegisterServer
eksport ro'yxatga olish qiymatini o'rnatadi HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model
DLL da shifrlangan ofset uchun (0x10001DE0
).
Funktsiya ikkinchi marta chaqirilganda, u xuddi shu qiymatni o'qiydi va shu manzilda ishlaydi. Bu erdan resurs va RAMdagi ko'plab harakatlar o'qiladi va bajariladi.
Shellcode o'tgan OceanLotus kampaniyalarida ishlatilgan bir xil PE yuklagichidir. U yordamida taqlid qilish mumkin db293b825dcc419ba7dc2c49fa2757ee.dll
, uni xotiraga yuklaydi va bajaradi DllEntry
.
DLL o'z resursi tarkibini chiqaradi, shifrini ochadi (AES-256-CBC) va uni ochadi (LZMA). Resurs o'ziga xos formatga ega, uni dekompilyatsiya qilish oson.
Shakl 13. O'rnatuvchi konfiguratsiya tuzilishi (KaitaiStruct Visualizer)
Konfiguratsiya aniq ko'rsatilgan - imtiyozlar darajasiga qarab, ikkilik ma'lumotlar yoziladi %appdata%IntellogsBackgroundUploadTask.cpl
yoki %windir%System32BackgroundUploadTask.cpl
(yoki SysWOW64
64 bitli tizimlar uchun).
Keyinchalik qat'iyatlilik nom bilan vazifa yaratish orqali ta'minlanadi BackgroundUploadTask[junk].job
qayerda [junk]
baytlar to'plamini ifodalaydi 0x9D
и 0xA0
.
Vazifa ilova nomi %windir%System32control.exe
, va parametr qiymati yuklab olingan ikkilik faylga yo'ldir. Yashirin vazifa har kuni ishlaydi.
Strukturaviy jihatdan, CPL fayli ichki nomga ega bo'lgan DLL faylidir ac8e06de0a6c4483af9837d96504127e.dll
, qaysi funktsiyani eksport qiladi CPlApplet
. Bu fayl o'zining yagona resursini parolini hal qiladi {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
, keyin ushbu DLL-ni yuklaydi va uning yagona eksportini chaqiradi DllEntry
.
Orqa eshik konfiguratsiya fayli
Orqa eshik konfiguratsiyasi shifrlangan va uning resurslariga kiritilgan. Konfiguratsiya faylining tuzilishi avvalgisiga juda o'xshash.
14-rasm. Orqa eshik konfiguratsiyasi tuzilishi (KaitaiStruct Visualizer)
Tuzilishi o'xshash bo'lsa-da, ko'plab maydon qiymatlari ko'rsatilganidan yangilangan
Ikkilik massivning birinchi elementi DLL ni o'z ichiga oladi (HttpProv.dll
MD5: 2559738D1BD4A999126F900C7357B759
),
Qo'shimcha tadqiqotlar
Namunalarni yig'ishda biz ba'zi xususiyatlarga e'tibor qaratdik. Hozirgina tasvirlangan namuna 2018 yil iyul oyida paydo bo'lgan va shunga o'xshash boshqalar 2019 yil yanvar oyining o'rtalaridan fevral oyining boshlarida paydo bo'lgan. SFX arxivi qonuniy aldash hujjati va zararli OSX faylini tashlab, infektsiya vektori sifatida ishlatilgan.
OceanLotus soxta vaqt belgilaridan foydalansa ham, biz SFX va OCX fayllarining vaqt belgilari har doim bir xil ekanligini payqadik (0x57B0C36A
(08 @ 14:2016 UTC) va 0x498BE80F
(02/06/2009 @ 7:34 UTC) mos ravishda). Bu, ehtimol, mualliflarning bir xil shablonlardan foydalanadigan va ba'zi xususiyatlarni o'zgartiradigan qandaydir "dizayner" ga ega ekanligini ko'rsatadi.
2018 yil boshidan beri biz o'rgangan hujjatlar orasida hujumchilarni qiziqtirgan mamlakatlarni ko'rsatadigan turli nomlar mavjud:
— Kambodja ommaviy axborot vositalarining yangi aloqa ma'lumotlari (New).xls.exe
— míngyín (yàngíngyín).exe (CVning soxta pdf hujjati)
— fikr-mulohaza, 28 yil 29-2018 iyul kunlari AQShda Rally.exe
Orqa eshik topilganidan beri {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
va uning tahlilini bir nechta tadqiqotchilar tomonidan nashr etilganda, biz zararli dastur konfiguratsiyasi ma'lumotlarida ba'zi o'zgarishlarni kuzatdik.
Birinchidan, mualliflar yordamchi DLL-lardan nomlarni olib tashlashni boshladilar (DNSprov.dll
va ikkita versiya HttpProv.dll
). Keyin operatorlar uchinchi DLL-ni (ikkinchi versiya HttpProv.dll
), faqat bittasini joylashtirishni tanlash.
Ikkinchidan, orqa eshik konfiguratsiyasining ko'p maydonlari o'zgartirildi, chunki ko'plab IoC mavjud bo'lganda aniqlashdan qochish mumkin. Mualliflar tomonidan o'zgartirilgan muhim maydonlarga quyidagilar kiradi:
- AppX ro'yxatga olish kitobi kaliti o'zgartirildi (qarang IoCs)
- mutex kodlash qatori ("def", "abc", "ghi")
- port raqami
Nihoyat, tahlil qilingan barcha yangi versiyalarda IoC bo'limida ro'yxatga olingan yangi C&C mavjud.
topilmalar
OceanLotus rivojlanishda davom etmoqda. Kiberguruh asboblar va hiyla-nayranglarni takomillashtirish va kengaytirishga qaratilgan. Mualliflar mavzusi mo'ljallangan qurbonlarga tegishli bo'lgan diqqatni tortuvchi hujjatlardan foydalangan holda zararli yuklarni yashiradi. Ular yangi sxemalarni ishlab chiqadilar, shuningdek, Equation Editor ekspluatatsiyasi kabi ommaviy foydalanish mumkin bo'lgan vositalardan foydalanadilar. Bundan tashqari, ular qurbonlarning mashinalarida qolgan artefaktlar sonini kamaytirish uchun vositalarni takomillashtirmoqda va shu bilan antivirus dasturlari tomonidan aniqlash imkoniyatini kamaytiradi.
Murosaga kelish ko'rsatkichlari
Murosa ko'rsatkichlari, shuningdek, MITER ATT&CK atributlari mavjud
Manba: www.habr.com