
Ushbu maqola zararli dasturlarni tahlil qilishga bag'ishlangan nashrlarimiz seriyasini yakunlaydi. Biz Yevropa kompaniyasi elektron pochta orqali olgan zararlangan faylni batafsil tahlil qildik va unda AgentTesla josuslik dasturini topdik. AgentTesla asosiy modulining bosqichma-bosqich tahlili natijalarini tasvirlab berdi.
Bugun CERT Group-IB zararli dasturlarni tahlil qilish bo'yicha mutaxassisi Ilya Pomerantsev zararli dasturlarni tahlil qilishning birinchi bosqichini - CERT Group-IB mutaxassislarining uchta mini-keys tadqiqotidan foydalangan holda AgentTesla namunalarini yarim avtomatik ravishda ochishni muhokama qiladi.
Odatda, zararli dasturlarni tahlil qilishda birinchi qadam qadoqlovchi, kriptor, himoyachi yoki yuklovchi kabi himoyani olib tashlashdir. Ko'pgina hollarda, bu muammo zararli dasturni ishga tushirish va dumpni amalga oshirish orqali hal qilinadi, ammo bu usul mos bo'lmagan holatlar mavjud. Misol uchun, agar zararli dastur shifrlovchi bo'lsa, u xotira hududlarini dampingdan himoya qilsa, kodda virtual mashinani aniqlash mexanizmlari mavjud bo'lsa yoki zararli dastur ishga tushirilgandan so'ng darhol qayta ishga tushsa. Bunday hollarda "yarim avtomatlashtirilgan" deb ataladigan o'ram qo'llaniladi, ya'ni tadqiqotchi jarayonni to'liq nazorat qiladi va istalgan vaqtda aralasha oladi. Keling, misol sifatida AgentTesla oilasidan uchta namunadan foydalanib, ushbu protsedurani ko'rib chiqaylik. Ushbu zararli dastur, agar tarmoqqa kirish o'chirilgan bo'lsa, nisbatan zararsizdir.
Namuna №1
Manba fayli CVE-2017-11882 zaifligidan foydalanadigan MS Word hujjatidir.

Natijada, foydali yuk yuklab olinadi va ishga tushiriladi.
Jarayon daraxti va xulq-atvor belgilarini tahlil qilish jarayonga in'ektsiyani ko'rsatadi RegAsm.exe.


AgentTesla uchun xarakterli xulq-atvor belgilari mavjud.

Yuklab olingan namuna bajariladi .NET- himoyachi bilan himoyalangan fayl .NET reaktori.

Keling, uni yordamchi dasturda ochamiz dnSpy x86 va kirish nuqtasiga o'tamiz.

Funktsiyaga kirish DateTimeOffset, biz yangining ishga tushirish kodini topamiz .NET-modul. Keling, o'rnatamiz to'xtash nuqtasi bizni qiziqtirgan qatorda faylni ishga tushiring.

Qaytarilgan buferlardan birida siz MZ imzosini ko'rishingiz mumkin (0x4D 0x5A). Keling, saqlaylik.

To'ldirilgan bajariladigan fayl dinamik kutubxona bo'lib, u yuklovchi rolini o'ynaydi, ya'ni manba bo'limidan foydali yukni chiqaradi va uni ishga tushiradi.

Biroq, kerakli resurslarning o'zi chiqindixonada etishmayapti. Ular ota-ona namunasida joylashgan.
Qulaylik dnSpy ikkita juda foydali xususiyatga ega bo'lib, ular ikkita bog'liq fayldan "Frankenshteyn" ni juda tez yaratishga yordam beradi.
- Birinchisi, dinamik kutubxonani asosiy namunaga "joylashtirish" imkonini beradi.

- Ikkinchisi, kiritilgan dinamik kutubxonaning kerakli usulini chaqirish uchun kirish nuqtasida funktsiya kodini qayta yozish.

Biz "Frankenshteyn"imizni saqlaymiz va qo'yamiz to'xtash nuqtasi shifrlangan resurslar bilan buferni qaytaradigan satrda va biz oldingi bosqichga o'xshash borini ishlab chiqaramiz.
Ikkinchi axlatxonada yozilgan VB.NET Bizga tanish bo'lgan himoyachi tomonidan himoyalangan bajariladigan fayl ConfuserEx.


Himoyachini olib tashlaganimizdan so'ng, biz ilgari yozilgan YARA qoidalaridan foydalanamiz va paketdan chiqarilgan zararli dastur haqiqatan ham AgentTesla ekanligini tasdiqlaymiz.
![]()
Namuna №2
Manba fayl MS Excel hujjatidir. O'rnatilgan makros zararli kodning bajarilishiga olib keladi.

Bu PowerShell skriptining ishga tushirilishiga olib keladi.


Skript C# kodini shifrlaydi va unga boshqaruvni o'tkazadi. Sandbox hisobotidan ko'rinib turibdiki, kodning o'zi yuklovchi hisoblanadi.


Foydali yuk bajariladigan fayldir .NETfayl.

Faylni ochish dnSpy x86, siz uning xiralashganligini ko'rishingiz mumkin. Yordamchi dastur yordamida noaniqlikni olib tashlaymiz de4dot va biz tahlilga qaytamiz.
Kodni o'rganayotganda siz quyidagi funktsiyani topishingiz mumkin:

Kodlangan chiziqlar diqqatni tortadi Kirish nuqtasi и iltijo. qo'yamiz to'xtash nuqtasi birinchi qatorda bufer qiymatini ishga tushiring va saqlang bayt_0.
Dump yana bir dastur hisoblanadi .NET va himoyalangan ConfuserEx.

![]()
Foydalanish orqali noaniqlikni olib tashlash de4dot va uni yuklang dnSpyFayl tavsifidan biz duch kelganimizni tushunamiz CyaX-Sharp yuklagich.

Ushbu yuklab oluvchi keng qamrovli tahlilga qarshi funksiyaga ega.

Bu funksiya oʻrnatilgan Windows xavfsizlik tizimlarini chetlab oʻtishni, Windows Defenderni oʻchirib qoʻyishni va sinov maydonlari va virtual mashinalarni aniqlashni oʻz ichiga oladi. U foydali yukni tarmoqdan yuklab olishi yoki uni resurs bo'limida saqlashi mumkin. Ishga tushirish o'z jarayoniga, o'z jarayonining dublikasiga yoki jarayonlariga in'ektsiya orqali amalga oshiriladi. MSBuild.exe, vbc.exe и RegSvcs.exe tajovuzkor tomonidan tanlangan parametrga bog'liq.
Biroq, biz uchun ular kamroq ahamiyatga ega AntiDump- qo'shadigan funktsiya ConfuserExUning manba kodini quyidagi manzilda topish mumkin .
Himoyani o'chirish uchun biz imkoniyatdan foydalanamiz dnSpy, bu sizga tahrir qilish imkonini beradi IL-kod.


Saqlaymiz va o'rnatamiz to'xtash nuqtasi foydali yukni dekodlash funksiyasi chaqiruv qatoriga. U asosiy sinf konstruktorida joylashgan.

Biz yukni ishga tushiramiz va tashlaymiz. Oldin yozilgan YARA qoidalaridan foydalanib, biz bu AgentTesla ekanligini tasdiqlaymiz.
![]()
Namuna №3
Manba fayli bajariladigan fayldir VB Native PE32fayl.

Entropiya tahlili shifrlangan ma'lumotlarning katta qismi mavjudligini ko'rsatadi.

Ariza shaklini tahlil qilishda VB dekompilyatori Siz g'alati pikselli fonni ko'rishingiz mumkin.


Entropiya grafigi bmp- tasvir asl faylning entropiya grafigi bilan bir xil va hajmi fayl hajmining 85% ni tashkil qiladi.

Tasvirning umumiy ko'rinishi steganografiyadan foydalanishni ko'rsatadi.
Keling, jarayon daraxtining ko'rinishiga, shuningdek, in'ektsiya belgisi mavjudligiga e'tibor beraylik.

![]()
Bu qadoqdan chiqarish davom etayotganligini ko'rsatadi. Visual Basic yuklagichlari uchun (aka VBKrypt yoki VBInjector) foydalanish bilan tavsiflanadi qobiq kodi foydali yukni ishga tushirish, shuningdek, in'ektsiyani o'zi bajarish uchun.
Tahlil ichida VB dekompilyatori hodisaning mavjudligini ko'rsatdi yuk shaklda FegatassocAirballoon2.

Keling, davom etaylik IDA pro Belgilangan manzilga boramiz va funktsiyani ko'rib chiqamiz. Kod juda xiralashgan. Bizni qiziqtirgan fragment quyida keltirilgan.

Bu erda jarayonning manzil maydoni imzo uchun skanerdan o'tkaziladi. Ushbu yondashuv juda shubhali.
Birinchidan, skanerlashni boshlash manzili 0x400100Bu qiymat statik va bazani siljitganda sozlanmaydi. Ideal issiqxona sharoitida u oxirigacha ishora qiladi PE- bajariladigan fayl sarlavhasi. Biroq, ma'lumotlar bazasi statik emas; uning qiymati o'zgarishi mumkin va kerakli imzoning haqiqiy manzilini qidirish, garchi u o'zgaruvchini to'ldirib yubormasa ham, juda uzoq vaqt talab qilishi mumkin.
Ikkinchidan, imzoning ma'nosi iWGKMenimcha, 4 bayt noyoblikni kafolatlash uchun juda kichik. Va birinchi nuqtani hisobga olsak, xato ehtimoli juda yuqori.
Darhaqiqat, ko'rib chiqilayotgan bo'lak ilgari topilgan qismning oxiriga biriktirilgan bmp-ofset bo'yicha tasvirlar 0xA1D0D.

Ijroiya Shellcode U ikki bosqichda amalga oshiriladi. Birinchisi, asosiy qismning shifrini ochishni o'z ichiga oladi. Bunday holda, kalit qo'pol kuch bilan aniqlanadi.

Biz shifrlanganini tashlab yuboramiz Shellcode va chiziqlarga qaraylik.
Birinchidan, biz endi bola jarayonini yaratish funksiyasini bilamiz: CreateProcessInternalW.

Ikkinchidan, biz tizimdagi fiksatsiya mexanizmini bilib oldik.

Keling, asl jarayonga qaytaylik. Keling, qo'ying to'xtash nuqtasi haqida CreateProcessInternalW va ijroni davom ettiring. Keyinchalik, biz ulanishni kuzatamiz NtGetContextThread/NtSetContextThread, bu bajarilishning boshlang'ich manzilini manzilga o'zgartiradi ShellCode.

Biz tuzatuvchi bilan yaratilgan jarayonga ulanamiz va hodisani faollashtiramiz. Kutubxonani yuklash/tushirishni to'xtatib turing, biz jarayonni davom ettiramiz va yuklab olishni kutamiz .NET-kutubxonalar.
Keyingi, yordamida ProcessHucker qadoqlanmagan shakldagi axlatxonalar .NET-ilova.
Biz barcha jarayonlarni to'xtatamiz va tizimga kirib qolgan zararli dastur nusxasini olib tashlaymiz.


Olib tashlangan fayl himoyachi bilan himoyalangan. .NET reaktori, bu yordam dasturi yordamida osongina olib tashlanishi mumkin de4dot.

Ilgari yozilgan YARA qoidalaridan foydalanib, biz AgentTesla bilan ishlayotganimizni tekshirishimiz mumkin.
Xulosa qilaylik
Shunday qilib, biz uchta mini-keys yordamida namunani yarim avtomatlashtirilgan ochish jarayonini batafsil namoyish qildik, shuningdek, to'liq ish bo'yicha zararli dasturiy ta'minot tahlilini o'tkazdik, tekshirilayotgan namunani AgentTesla sifatida aniqladik, uning funksionalligini o'rnatdik va murosaga kelish ko'rsatkichlarining to'liq ro'yxatini aniqladik.
Biz o'tkazgan zararli dasturlarni tahlil qilish juda ko'p vaqt va kuch talab qiladi va bu ishni kompaniya ichidagi maxsus xodim bajarishi kerak, ammo hamma kompaniyalar ham tahlilchini jalb qilishni xohlamaydilar.
Group-IB ning Kompyuter kriminalistikasi va zararli dasturlarni tahlil qilish laboratoriyasi tomonidan taqdim etilgan xizmatlardan biri bu kiber hodisalarga javob berishdir. Mijozlarning hujjatlarni muvofiqlashtirish va ularni kiberhujum o'rtasida muhokama qilish uchun vaqtni behuda sarflamasligi uchun Group-IB ishga tushirildi. Hodisaga javobni saqlash vositasi, obuna oldidan hodisalarga javob berish xizmati, shuningdek, zararli dasturlarni tahlil qilish. Bu haqda batafsil ma'lumotni bu yerda topishingiz mumkin. .
Agar siz AgentTesla namunalarini qanday ochishni va Group-IB CERT mutaxassisi buni qanday amalga oshirishini ko'rishni istasangiz, ushbu mavzu bo'yicha vebinar yozuvini yuklab olishingiz mumkin. .
Manba: www.habr.com


