OceanLotus: macOS uchun zararli dastur yangilanishi

2019-yil mart oyida OceanLotus kiberguruhidan macOS zararli dasturlarining yangi namunasi mashhur onlayn skanerlash xizmati VirusTotalga yuklandi. Backdoor executable fayli biz o‘rgangan macOS zararli dasturining oldingi versiyasi bilan bir xil imkoniyatlarga ega, biroq uning tuzilishi o‘zgardi va uni aniqlash qiyinlashdi. Afsuski, biz ushbu namunaga tegishli tomchi topa olmadik, shuning uchun biz infektsiya vektorini hali bilmaymiz.

Biz yaqinda nashr qildik OceanLotus haqida post va operatorlar qanday qilib qat'iylikni ta'minlashga, kod bajarilishini tezlashtirishga va Windows tizimlarida oyoq izini kamaytirishga harakat qilmoqda. Shuningdek, ushbu kiberguruhda macOS uchun komponent ham borligi maʼlum. Ushbu postda macOS uchun zararli dasturning eng yangi versiyasidagi o'zgarishlar oldingi versiyaga nisbatan batafsil bayon etilgan (Trend Micro tomonidan tasvirlangan), shuningdek, IDA Hex-Rays API yordamida tahlil paytida satrlarning shifrini ochishni qanday avtomatlashtirishingiz mumkinligini tasvirlaydi.

OceanLotus: macOS uchun zararli dastur yangilanishi

Tahlil

Keyingi uchta qism SHA-1 xesh bilan namunani tahlil qilishni tavsiflaydi E615632C9998E4D3E5ACD8851864ED09B02C77D2. Fayl chaqiriladi chirog'li, ESET antivirus mahsulotlari uni OSX/OceanLotus.D sifatida aniqlaydi.

Anti-disk raskadrovka va sandbox himoyasi

Barcha macOS OceanLotus ikkiliklari singari, namuna UPX bilan qadoqlangan, ammo paketlovchini identifikatsiyalash vositalarining aksariyati uni taniy olmaydi. Ehtimol, ular asosan "UPX" qatorining mavjudligiga bog'liq imzoni o'z ichiga oladi, shuningdek, Mach-O imzolari kamroq tarqalgan va tez-tez yangilanmaydi. Bu xususiyat statik aniqlashni qiyinlashtiradi. Qizig'i shundaki, qadoqdan chiqarilgandan so'ng, kirish joyi bo'limning boshida __cfstring segmentida .TEXT. Ushbu bo'lim quyidagi rasmda ko'rsatilganidek, bayroq atributlariga ega.

OceanLotus: macOS uchun zararli dastur yangilanishi
Shakl 1. MACH-O __cfstring bo'lim atributlari

2-rasmda ko'rsatilganidek, bo'limdagi kod joylari __cfstring kodni satrlar sifatida ko'rsatish orqali ba'zi demontaj vositalarini aldashga imkon beradi.

OceanLotus: macOS uchun zararli dastur yangilanishi
Shakl 2. IDA tomonidan ma'lumotlar sifatida aniqlangan orqa eshik kodi

Amalga oshirilgandan so'ng, ikkilik tuzatuvchining mavjudligini doimiy ravishda tekshirishdan iborat bo'lgan antidebugger sifatida ish zarrachasini yaratadi. Ushbu oqim uchun:

- Qo'ng'iroq qilayotgan har qanday tuzatuvchini o'chirishga harakat qiladi ptrace с PT_DENY_ATTACH so'rov parametri sifatida
- Funktsiyani chaqirish orqali ba'zi eksklyuziv portlar ochiq yoki yo'qligini tekshiradi task_get_exception_ports
- Quyidagi rasmda ko'rsatilganidek, disk raskadrovka ulanganligini, bayroq mavjudligini tekshirish orqali tekshiradi P_TRACED joriy jarayonda

OceanLotus: macOS uchun zararli dastur yangilanishi
Shakl 3. sysctl funksiyasi yordamida tuzatuvchi ulanishini tekshirish

Agar kuzatuvchi tuzatuvchining mavjudligini aniqlasa, funksiya chaqiriladi exit. Bundan tashqari, namuna ikkita buyruqni bajarish orqali atrof-muhitni tekshiradi:

ioreg -l | grep -e "Manufacturer" и sysctl hw.model

Keyin namuna qaytish qiymatini ma'lum virtualizatsiya tizimlaridan qattiq kodlangan satrlar ro'yxatiga nisbatan tekshiradi: acle, vmware, virtual quti yoki parallellar. Nihoyat, keyingi buyruq mashina quyidagi "MBP", "MBA", "MB", "MM", "IM", "MP" va "XS" lardan biri ekanligini tekshiradi. Bu tizim modeli kodlari, masalan, "MBP" MacBook Pro, "MBA" MacBook Air va boshqalarni anglatadi.

system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}

Asosiy qo'shimchalar

Trend Micro tadqiqotidan keyin orqa eshik buyruqlari o'zgarmagan bo'lsa-da, biz yana bir nechta o'zgartirishlarni payqadik. Ushbu namunada foydalanilgan C&C serverlari juda yangi va 22.10.2018/XNUMX/XNUMX da yaratilgan.

- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com

Resurs URL manzili quyidagicha o‘zgartirildi /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
C&C serveriga yuborilgan birinchi paketda quyidagi jadvaldagi buyruqlar tomonidan to'plangan barcha ma'lumotlarni o'z ichiga olgan xost mashinasi haqida qo'shimcha ma'lumotlar mavjud.

OceanLotus: macOS uchun zararli dastur yangilanishi

Ushbu konfiguratsiya o'zgarishiga qo'shimcha ravishda, namuna tarmoq filtrlash uchun kutubxonadan foydalanmaydi libcurl, lekin tashqi kutubxona. Uni topish uchun orqa eshik joriy katalogdagi har bir faylni kalit bilan AES-256-CBC yordamida shifrlashga harakat qiladi. gFjMXBgyXWULmVVVzyxy, nollar bilan to'ldirilgan. Har bir fayl shifrlangan va shunday saqlanadi /tmp/store, va funksiya yordamida uni kutubxona sifatida yuklashga urinish amalga oshiriladi dlopen. Shifrni ochishga urinish muvaffaqiyatli qo'ng'iroqqa olib kelganda dlopen, orqa eshik eksport qilingan funksiyalarni chiqaradi Boriry и ChadylonV, ular server bilan tarmoq aloqasi uchun mas'uldir. Bizda namunaning asl joylashuvidagi tomchi yoki boshqa fayllar yo‘q, shuning uchun biz bu kutubxonani tahlil qila olmaymiz. Bundan tashqari, komponent shifrlanganligi sababli, ushbu satrlarga asoslangan YARA qoidasi diskda topilgan faylga mos kelmaydi.

Yuqoridagi maqolada aytilganidek, u yaratadi mijoz identifikatori. Bu identifikator quyidagi buyruqlardan birining qaytish qiymatining MD5 xeshi hisoblanadi:

- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformSerialNumber/ { split($0, line, """); printf("%s", line[4]); }'
- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, """); printf("%s", line[4]); }'
- ifconfig en0 | awk '/ether /{print $2}' (MAC manzilini oling)
- noma'lum jamoa ("x1ex72x0a"), oldingi namunalarda ishlatilgan

Xeshlashdan oldin, ildiz huquqlarini ko'rsatish uchun qaytarish qiymatiga "0" yoki "1" qo'shiladi. Bu mijoz identifikatori ichida saqlanadi /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, agar kod ildiz sifatida yoki ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML da boshqa barcha holatlarda ishga tushirilsa. Fayl odatda funksiya yordamida yashiriladi _chflags, uning vaqt tamg'asi buyruq yordamida o'zgartiriladi touch –t tasodifiy qiymat bilan.

Satrlarni dekodlash

Oldingi variantlarda bo'lgani kabi, satrlar AES-256-CBC (o'n oltilik kalit) yordamida shifrlangan. 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 nol bilan to'ldirilgan va IV nol bilan to'ldirilgan) funksiya orqali CCCrypt. Kalit oldingi versiyalardan o'zgardi, lekin guruh hali ham bir xil string shifrlash algoritmidan foydalanganligi sababli, shifrni ochish avtomatlashtirilishi mumkin. Ushbu postga qo'shimcha ravishda biz ikkilik faylda mavjud satrlarni shifrlash uchun Hex-Rays API-dan foydalanadigan IDA skriptini chiqarmoqdamiz. Ushbu skript kelajakda OceanLotus tahlilida va biz hali ololmagan mavjud namunalarni tahlil qilishda yordam berishi mumkin. Skript funksiyaga uzatilgan argumentlarni qabul qilishning universal usuliga asoslangan. Bundan tashqari, u parametr tayinlarini qidiradi. Usul funktsiya argumentlari ro'yxatini olish va keyin uni qayta qo'ng'iroqqa o'tkazish uchun qayta ishlatilishi mumkin.

Funktsiya prototipini bilish parolni ochish, skript ushbu funktsiyaga barcha oʻzaro havolalarni, barcha argumentlarni topadi, soʻngra maʼlumotlarning shifrini ochadi va oʻzaro mos yozuvlar manzilidagi izoh ichiga oddiy matnni joylashtiradi. Skript to'g'ri ishlashi uchun u base64 dekodlash funksiyasi tomonidan ishlatiladigan maxsus alifboga o'rnatilishi va kalit uzunligini o'z ichiga olgan global o'zgaruvchi aniqlanishi kerak (bu holda DWORD, 4-rasmga qarang).

OceanLotus: macOS uchun zararli dastur yangilanishi
4-rasm. key_len global o'zgaruvchining ta'rifi

Funktsiya oynasida siz shifrni ochish funksiyasini sichqonchaning o'ng tugmasi bilan bosishingiz va "Argumentlarni chiqarish va shifrini ochish" tugmasini bosishingiz mumkin. Skript 5-rasmda ko'rsatilganidek, sharhlarda shifrlangan satrlarni joylashtirishi kerak.

OceanLotus: macOS uchun zararli dastur yangilanishi
Shakl 5. Shifrlangan matn izohlarda joylashtirilgan

Shunday qilib, shifrlangan satrlar IDA oynasida qulay tarzda joylashtiriladi xrefs 6-rasmda ko'rsatilganidek, ushbu funktsiya uchun.

OceanLotus: macOS uchun zararli dastur yangilanishi
6-rasm. Xrefs to f_decrypt funksiyasi

Yakuniy skriptni quyidagi manzilda topishingiz mumkin Github ombori.

xulosa

Yuqorida aytib o'tilganidek, OceanLotus o'zining asboblar to'plamini doimiy ravishda yaxshilaydi va yangilaydi. Bu safar kiberguruh Mac foydalanuvchilari bilan ishlash uchun zararli dasturlarni takomillashtirdi. Kod unchalik o'zgarmadi, lekin ko'plab Mac foydalanuvchilari xavfsizlik mahsulotlarini e'tiborsiz qoldirishganligi sababli, zararli dasturlarni aniqlashdan himoya qilish ikkinchi darajali ahamiyatga ega.

ESET mahsulotlari tadqiqot vaqtida ushbu faylni allaqachon aniqlagan edi. C&C aloqasi uchun foydalaniladigan tarmoq kutubxonasi endi diskda shifrlanganligi sababli, tajovuzkorlar tomonidan ishlatiladigan aniq tarmoq protokoli hali ma'lum emas.

Murosaga kelish ko'rsatkichlari

Murosa ko'rsatkichlari, shuningdek, MITER ATT&CK atributlari ham mavjud GitHub.

Manba: www.habr.com

a Izoh qo'shish