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
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.
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.
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
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.
Ushbu konfiguratsiya o'zgarishiga qo'shimcha ravishda, namuna tarmoq filtrlash uchun kutubxonadan foydalanmaydi 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
, 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 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
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).
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.
Shakl 5. Shifrlangan matn izohlarda joylashtirilgan
Shunday qilib, shifrlangan satrlar IDA oynasida qulay tarzda joylashtiriladi xrefs 6-rasmda ko'rsatilganidek, ushbu funktsiya uchun.
6-rasm. Xrefs to f_decrypt funksiyasi
Yakuniy skriptni quyidagi manzilda topishingiz mumkin
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
Manba: www.habr.com