Šiuo straipsniu užbaigiame publikacijų seriją, skirtą kenkėjiškos programinės įrangos analizei. IN
Šiandien CERT Group-IB kenkėjiškų programų analizės specialistas Ilja Pomerancevas kalbės apie pirmąjį kenkėjiškų programų analizės etapą – pusiau automatinį „AgentTesla“ pavyzdžių išpakavimą pagal trijų mini atvejų pavyzdį iš CERT Group-IB specialistų praktikos.
Paprastai pirmasis kenkėjiškų programų analizės etapas yra pakuotojo, šifravimo priemonės, apsaugos ar įkroviklio apsaugos pašalinimas. Daugeliu atvejų šią problemą galima išspręsti paleidus kenkėjišką programą ir atlikus išrašymą, tačiau yra situacijų, kai šis metodas netinka. Pavyzdžiui, jei kenkėjiška programa yra šifravimo priemonė, jei ji apsaugo savo atminties sritis nuo išmetimo, jei kode yra virtualios mašinos aptikimo mechanizmų arba jei kenkėjiška programa paleidžiama iš karto po paleidimo. Tokiais atvejais naudojamas vadinamasis „pusiau automatinis“ išpakavimas, tai yra, tyrėjas visiškai kontroliuoja procesą ir gali bet kada įsikišti. Panagrinėkime šią procedūrą, kaip pavyzdį naudodami tris AgentTesla šeimos pavyzdžius. Tai gana nekenksminga kenkėjiška programa, jei išjungiate jos prieigą prie tinklo.
1 pavyzdys
Šaltinio failas yra MS Word dokumentas, kuriame naudojamas pažeidžiamumas CVE-2017-11882.
Dėl to naudingas krovinys atsisiunčiamas ir paleidžiamas.
Proceso medžio ir elgesio žymenų analizė rodo injekciją į procesą RegAsm.exe.
Yra AgentTesla būdingų elgesio žymenų.
Atsisiųstas pavyzdys yra vykdomasis . NET- failas, apsaugotas apsauga .NET reaktorius.
Atidarykime jį paslaugų programoje dnSpy x86 ir pereikite prie įėjimo taško.
Eidami į funkciją DateTimeOffset, rasime naujojo inicijavimo kodą . NET- modulis. Padėkime lūžio taškas mus dominančioje eilutėje ir paleiskite failą.
Viename iš grąžintų buferių galite pamatyti MZ parašą (0x4D 0x5A). Išsaugokime.
Išmestas vykdomasis failas yra dinaminė biblioteka, kuri yra įkroviklis, t.y. ištraukia naudingąją apkrovą iš išteklių skyriaus ir paleidžia ją.
Tuo pačiu metu sąvartyne nėra reikalingų išteklių. Jie yra pirminiame pavyzdyje.
Naudingumas dnSpy turi dvi itin naudingas funkcijas, kurios padės mums gana greitai sukurti „Frankenšteiną“ iš dviejų susijusių failų.
- Pirmasis leidžia „įklijuoti“ dinaminę biblioteką į pirminį pavyzdį.
- Antrasis – perrašyti funkcijos kodą įėjimo taške, kad būtų iškviestas norimas įterptos dinaminės bibliotekos metodas.
Išsaugome savo „Frankenšteiną“, rinkinį lūžio taškas eilutėje, grąžinant buferį su iššifruotais ištekliais, ir sukurti iškrovimą pagal analogiją su ankstesniu etapu.
Antrasis sąvartynas įrašytas VB.NET vykdomąjį failą, kuris yra apsaugotas mums pažįstamo apsaugos ConfuserEx.
Nuėmę apsaugą, naudojame anksčiau parašytas YARA taisykles ir įsitikiname, kad išpakuota kenkėjiška programa tikrai yra AgentTesla.
2 pavyzdys
Šaltinio failas yra MS Excel dokumentas. Dėl integruotos makrokomandos vykdomas kenkėjiškas kodas.
Dėl to paleidžiamas PowerShell scenarijus.
Scenarijus iššifruoja C# kodą ir perduoda jam valdymą. Pats kodas yra įkrovos įkroviklis, kaip matyti iš smėlio dėžės ataskaitos.
Naudingoji apkrova yra vykdomasis failas . NET-failas.
Failo atidarymas dnSpy x86, matote, kad jis užtemdytas. Uždengimo pašalinimas naudojant įrankį de4dot ir grįžti prie analizės.
Nagrinėdami kodą galite atrasti šią funkciją:
Užkoduotos eilutės yra įspūdingos Įejimas и remtis. Mes dedame lūžio taškas į pirmąją eilutę, paleiskite ir išsaugokite buferio reikšmę baitas_0.
Sąvartynas vėl yra programa . NET ir apsaugotas ConfuserEx.
Pašaliname užmaskavimą naudodami de4dot ir įkelti į dnSpy. Iš failo aprašymo suprantame, su kuo susiduriame CyaX-Sharp krautuvas.
Šis krautuvas turi plačias anti-analizės funkcijas.
Ši funkcija apima integruotų „Windows“ apsaugos sistemų apėjimą, „Windows Defender“ išjungimą, taip pat smėlio dėžės ir virtualios mašinos aptikimo mechanizmus. Galima įkelti naudingąją apkrovą iš tinklo arba saugoti išteklių skyriuje. Paleidimas atliekamas įpurškiant į savo procesą, į jo paties proceso dublikatą arba į procesus MSBuild.exe, vbc.exe и RegSvcs.exe priklausomai nuo užpuoliko pasirinkto parametro.
Tačiau mums jie mažiau reikšmingi nei Antidempingas- funkcija, kuri prideda ConfuserEx. Jo šaltinio kodą galima rasti adresu
Norėdami išjungti apsaugą, pasinaudosime galimybe dnSpy, kuri leidžia redaguoti IL-kodas.
Išsaugokite ir įdiekite lūžio taškas į naudingojo krovinio iššifravimo funkcijos iškvietimo liniją. Jis yra pagrindinės klasės konstruktoriuje.
Paleidžiame ir išmetame naudingą krovinį. Naudodami anksčiau parašytas YARA taisykles įsitikiname, kad tai yra AgentTesla.
3 pavyzdys
Šaltinio failas yra vykdomasis failas VB Native PE32-failas.
Entropijos analizė rodo, kad yra daug užšifruotų duomenų.
Analizuodami paraiškos formą VB dekompiliatorius galite pastebėti keistą pikselių foną.
Entropijos grafikas bmp-image yra identiškas pradinio failo entropijos grafikai, o dydis yra 85% failo dydžio.
Bendra vaizdo išvaizda rodo, kad naudojama steganografija.
Atkreipkite dėmesį į proceso medžio išvaizdą, taip pat į injekcijos žymeklio buvimą.
Tai rodo, kad vyksta išpakavimas. „Visual Basic“ krautuvams (dar žinomas kaip VBKrypt arba VBI injektorius) įprastas naudojimas apvalkalo kodas inicijuoti naudingą apkrovą, taip pat atlikti pačią injekciją.
Analizė į VB dekompiliatorius parodė įvykio buvimą Įkelti prie formos FegatassocAirballoon2.
Eime IDA pro nurodytu adresu ir išstudijuokite funkciją. Kodas yra labai užmaskuotas. Mus dominantis fragmentas pateikiamas žemiau.
Čia proceso adresų erdvė nuskaitoma, ar nėra parašo. Šis požiūris yra labai abejotinas.
Pirma, nuskaitymo pradžios adresas 0x400100. Ši vertė yra statinė ir nereguliuojama, kai pagrindas perkeliamas. Idealiomis šiltnamio sąlygomis jis parodys pabaigą PE- vykdomojo failo antraštė. Tačiau duomenų bazė nėra statiška, jos reikšmė gali keistis, o tikrojo reikiamo parašo adreso paieška, nors ir nesukels kintamojo perpildymo, gali užtrukti labai ilgai.
Antra, parašo prasmė iWGK. Manau, akivaizdu, kad 4 baitai yra per maži, kad garantuotų unikalumą. Ir jei atsižvelgsite į pirmąjį tašką, tikimybė suklysti yra gana didelė.
Tiesą sakant, reikalingas fragmentas yra pritvirtintas prie anksčiau rasto galo bmp- nuotraukos poslinkiu 0xA1D0D.
Įvykdymas Shellkodas atliekami dviem etapais. Pirmasis iššifruoja pagrindinį korpusą. Šiuo atveju raktas nustatomas brutalios jėgos pagalba.
Išmeskite iššifruotą Shellkodas ir pažiūrėk į linijas.
Pirma, dabar žinome funkciją sukurti antrinį procesą: CreateProcessInternalW.
Antra, mes sužinojome apie fiksavimo sistemoje mechanizmą.
Grįžkime prie pradinio proceso. Padėkime lūžio taškas apie CreateProcessInternalW ir tęsti vykdymą. Toliau matome ryšį NtGetContextThread/NtSetContextThread, kuris pakeičia vykdymo pradžios adresą į adresą ShellCode.
Prisijungiame prie sukurto proceso su derintuvu ir aktyvuojame įvykį Sustabdyti bibliotekos įkėlimą / iškrovimą, tęskite procesą ir palaukite, kol bus įkeltas . NET- bibliotekas.
Tolesnis naudojimas ProcessHacker sąvartynų regionai, kuriuose yra neišpakuotų . NET- taikymas.
Sustabdome visus procesus ir ištriname kenkėjiškos programos kopiją, kuri buvo įdėta į sistemą.
Išmestas failas yra apsaugotas apsauga .NET reaktorius, kurį galima lengvai pašalinti naudojant pagalbinę priemonę de4dot.
Naudodami anksčiau parašytas YARA taisykles įsitikiname, kad tai yra AgentTesla.
apibendrinti
Taigi, mes išsamiai pademonstravome pusiau automatinio mėginio išpakavimo procesą, kaip pavyzdį naudodami tris mini dėklus, taip pat išanalizavome kenkėjiškas programas, remdamiesi visaverčiu atveju, išsiaiškinome, kad tiriamas pavyzdys yra „AgentTesla“, nustatydami jo funkcionalumą ir visas kompromiso rodiklių sąrašas.
Mūsų atlikta kenkėjiško objekto analizė reikalauja daug laiko ir pastangų, o šį darbą įmonėje turėtų atlikti specialus darbuotojas, tačiau ne visos įmonės yra pasirengusios įdarbinti analitiką.
Viena iš Group-IB Kompiuterinės ekspertizės ir kenkėjiškų kodų analizės laboratorijos teikiamų paslaugų – reagavimas į kibernetinius incidentus. Kad klientai negaištų laiko tvirtindami dokumentus ir aptardami juos kibernetinės atakos metu, Group-IB pradėjo Reagavimo į incidentus laikiklis, išankstinio prenumeratos reagavimo į incidentus paslauga, kuri taip pat apima kenkėjiškų programų analizės veiksmą. Daugiau informacijos apie tai galima rasti
Jei norite dar kartą ištirti, kaip išpakuojami AgentTesla pavyzdžiai ir kaip tai daro CERT Group-IB specialistas, galite atsisiųsti internetinio seminaro įrašą šia tema
Šaltinis: www.habr.com