Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa

Selle artikliga lõpetame pahatahtliku tarkvara analüüsile pühendatud väljaannete sarja. IN Esimene osa Tegime üksikasjaliku analüüsi ühele Euroopa ettevõttele posti teel saadud nakatunud faili kohta ja avastasime sealt AgentTesla nuhkvara. sisse teine ​​osa kirjeldas AgentTesla põhimooduli samm-sammult analüüsi tulemusi.

Täna räägib CERT Group-IB pahavaraanalüüsi spetsialist Ilja Pomerantsev ründevara analüüsi esimesest etapist – AgentTesla näidiste poolautomaatsest lahtipakkimisest kolme minijuhtumi näitel CERT Group-IB spetsialistide praktikast.

Tavaliselt on pahavara analüüsi esimene etapp kaitse eemaldamine pakkija, krüpteerija, kaitsja või laadija näol. Enamasti lahendatakse see probleem pahavara käivitamise ja dumpiga, kuid on olukordi, kus see meetod ei sobi. Näiteks kui pahavara on krüpteerija, kui see kaitseb oma mälupiirkondi dumpingu eest, kui kood sisaldab virtuaalmasina tuvastamise mehhanisme või kui pahavara taaskäivitub kohe pärast käivitamist. Sellistel juhtudel kasutatakse nn poolautomaatset lahtipakkimist, st uurijal on täielik kontroll protsessi üle ja ta saab igal ajal sekkuda. Vaatleme seda protseduuri, kasutades näitena kolme AgentTesla perekonna näidist. See on suhteliselt kahjutu pahavara, kui keelate selle juurdepääsu võrgule.

Näidis nr 1

Lähtefail on MS Wordi dokument, mis kasutab turvaauku CVE-2017-11882.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Selle tulemusena laaditakse kasulik koormus alla ja käivitatakse.

Protsessipuu ja käitumismarkerite analüüs näitab protsessi süstimist RegAsm.exe.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
AgentTeslale on iseloomulikud käitumismarkerid.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Allalaaditud näidis on käivitatav . NET-fail on kaitstud kaitsjaga .NET reaktor.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Avame selle utiliidis dnSpy x86 ja liikuge edasi sisenemispunkti.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Funktsioonile minnes DateTimeOffset, leiame uue initsialiseerimiskoodi . NET- moodul. Paneme murdepunkt meid huvitaval real ja käivitage fail.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Ühes tagastatud puhvris näete MZ signatuuri (0x4D 0x5A). Salvestame selle.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Dumping käivitatav fail on dünaamiline teek, mis on laadija, st. eraldab kasuliku koormuse ressursside sektsioonist ja käivitab selle.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Samal ajal pole prügimäel vajalikke ressursse. Nad on vanemvalimis.

Utiliit dnSpy Sellel on kaks äärmiselt kasulikku funktsiooni, mis aitavad meil kahest seotud failist üsna kiiresti "Frankensteini" luua.

  1. Esimene võimaldab teil "kleepida" dünaamilise teegi emaproovi.

    Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa

  2. Teine on funktsiooni koodi ümberkirjutamine sisestuspunktis, et kutsuda sisestatud dünaamilise teegi soovitud meetod.

    Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa

Salvestame oma “Frankensteini”, komplekti murdepunkt real, mis tagastab dekrüptitud ressurssidega puhvri, ja loob analoogselt eelmise etapiga dump.

Teine prügimägi on sisse kirjutatud VB.NET käivitatav fail, mis on kaitstud meile tuttava kaitsjaga ConfuserEx.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Peale kaitsja eemaldamist kasutame varem kirjutatud YARA reegleid ja veendume, et lahtipakitud pahavara on tõesti AgentTesla.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa

Näidis nr 2

Lähtefail on MS Exceli dokument. Sisseehitatud makro käivitab pahatahtliku koodi.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Selle tulemusena käivitatakse PowerShelli skript.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Skript dekrüpteerib C# koodi ja annab sellele juhtimise üle. Kood ise on alglaadur, nagu on näha ka liivakasti aruandest.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Kasulik koormus on käivitatav fail . NET- fail.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Faili avamine sisse dnSpy x86, näete, et see on hägune. Hägustuse eemaldamine utiliidi abil de4dot ja naaske analüüsi juurde.

Koodi uurides võite avastada järgmise funktsiooni:

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Kodeeritud read on silmatorkavad Sisenemispunkt и tugineda. Panime murdepunkt esimesele reale, käivitage ja salvestage puhvri väärtus bait_0.

Prügila on jälle rakendus . NET ja kaitstud ConfuserEx.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Eemaldame segamise kasutades de4dot ja laadige üles dnSpy. Faili kirjeldusest saame aru, millega oleme silmitsi seisnud CyaX-Sharp laadur.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Sellel laaduril on ulatuslik analüüsivastane funktsioon.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
See funktsioon hõlmab sisseehitatud Windowsi kaitsesüsteemidest möödahiilimist, Windows Defenderi keelamist, samuti liivakasti ja virtuaalmasina tuvastamise mehhanisme. Kasulikku koormust on võimalik laadida võrgust või salvestada ressursside sektsiooni. Käivitamine toimub süstimise teel oma protsessi, oma protsessi duplikaati või protsessidesse MSBuild.exe, vbc.exe и RegSvcs.exe olenevalt ründaja valitud parameetrist.

Meie jaoks on need aga vähem olulised kui Antidump-funktsioon, mis lisab ConfuserEx. Selle lähtekoodi leiate aadressilt GitHub.

Kaitse keelamiseks kasutame võimalust dnSpy, mis võimaldab teil redigeerida IL-kood.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Salvestage ja installige murdepunkt kasuliku koormuse dekrüpteerimisfunktsiooni väljakutsumise reale. See asub põhiklassi konstruktoris.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Käivitame ja laseme kasuliku koorma maha. Kasutades varem kirjutatud YARA reegleid, veendume, et see on AgentTesla.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa

Näidis nr 3

Lähtefail on käivitatav fail VB Native PE32- fail.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Entroopiaanalüüs näitab suure hulga krüptitud andmete olemasolu.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Taotlusvormi analüüsimisel sisse VB dekompiler võite märgata kummalist pikslilist tausta.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Entroopia graafik bmp-image on identne originaalfaili entroopiagraafikuga ja suurus on 85% faili suurusest.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Pildi üldilme viitab steganograafia kasutamisele.

Pöörame tähelepanu protsessipuu välimusele, samuti süstimismarkeri olemasolule.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
See näitab, et lahtipakkimine on pooleli. Visual Basicu laadurite jaoks (teise nimega VBKrypt või VBIinjektor) tüüpiline kasutus shellkood kasuliku koormuse lähtestamiseks, samuti süstimiseks ise.

Analüüs sisse VB dekompiler näitas sündmuse olemasolu Koormus vormi juures FegatassocAirballoon2.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Lähme juurde IDA pro määratud aadressile ja uuri funktsiooni. Kood on tugevalt hägustatud. Fragment, mis meid huvitab, on toodud allpool.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Siin skannitakse protsessi aadressiruumi allkirja saamiseks. See lähenemine on äärmiselt kahtlane.

Esiteks skannimise algusaadress 0x400100. See väärtus on staatiline ja seda ei reguleerita aluse nihutamisel. Ideaalsetes kasvuhoonetingimustes näitab see lõppu PE- käivitatava faili päis. Andmebaas ei ole aga staatiline, selle väärtus võib muutuda ning vajaliku allkirja tegeliku aadressi otsimine, kuigi see ei põhjusta muutuja ületäitumist, võib võtta väga kaua aega.

Teiseks allkirja tähendus iWGK. Ma arvan, et on ilmne, et 4 baiti on unikaalsuse tagamiseks liiga väike. Ja kui võtta arvesse esimene punkt, on eksimise tõenäosus üsna suur.

Tegelikult on vajalik fragment kinnitatud varem leitud otsa bmp-pildid nihkega 0xA1D0D.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Performance Shellkood viiakse läbi kahes etapis. Esimene dešifreerib põhiosa. Sel juhul määratakse võti toore jõuga.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Tühjendage dekrüpteeritud Shellkood ja vaadake jooni.

Esiteks teame nüüd alamprotsessi loomise funktsiooni: CreateProcessInternalW.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Teiseks saime teadlikuks fikseerimise mehhanismist süsteemis.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Lähme tagasi algse protsessi juurde. Paneme murdepunkt edasi CreateProcessInternalW ja jätkake täitmist. Järgmisena näeme seost NtGetContextThread/NtSetContextThread, mis muudab täitmise algusaadressi aadressiks ShellCode.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Ühendame loodud protsessiga siluriga ja aktiveerime sündmuse Peata raamatukogu laadimise/mahalaadimise korral, jätkake protsessi ja oodake laadimist . NET- raamatukogud.

Edasine kasutamine ProcessHacker prügipiirkonnad, mis sisaldavad lahti pakkimata . NET-rakendus.

Peatame kõik protsessid ja kustutame süsteemi manustatud pahavara koopia.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Dumpingfail on kaitstud kaitsjaga .NET reaktor, mida saab utiliidi abil hõlpsasti eemaldada de4dot.

Osalemine ebaõnnestus: laseme AgentTesla puhta veega kokku puutuda. 3. osa
Kasutades varem kirjutatud YARA reegleid, veendume, et see on AgentTesla.

Kokkuvõttes

Niisiis demonstreerisime üksikasjalikult näidiste poolautomaatse lahtipakkimise protsessi, kasutades näitena kolme minijuhtumit, ning analüüsisime ka pahavara täieõigusliku juhtumi põhjal, selgitades välja, et uuritav proov on AgentTesla, määrates selle funktsionaalsuse ja kompromissi näitajate täielik loetelu.

Meie poolt läbi viidud pahatahtliku objekti analüüs nõuab palju aega ja vaeva ning seda tööd peaks tegema ettevõttes spetsiaalne töötaja, kuid mitte kõik ettevõtted pole valmis analüütikut tööle võtma.

Üks Group-IB arvutikohtuekspertiisi ja pahatahtliku koodi analüüsi labori pakutavatest teenustest on küberintsidentidele reageerimine. Ja selleks, et kliendid ei raiskaks küberrünnaku ajal aega dokumentide kinnitamisele ja nende arutamisele, käivitas Group-IB Juhtumitele reageerimise hoidja, tellimiseelne intsidentidele reageerimise teenus, mis sisaldab ka pahavara analüüsi sammu. Lisateavet selle kohta leiate siin.

Kui soovite veel kord uurida, kuidas AgentTesla näidiseid lahti pakkitakse ja näha, kuidas CERT Group-IB spetsialist seda teeb, saate alla laadida selleteemalise veebiseminari salvestuse siin.

Allikas: www.habr.com

Lisa kommentaar