Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3

Tällä artikkelilla viimeistelemme haittaohjelmien analysointiin omistetun julkaisusarjan. SISÄÄN ensimmäinen osa Teimme yksityiskohtaisen analyysin eurooppalaisen yrityksen postitse vastaanottamasta tartunnan saaneesta tiedostosta ja löysimme sieltä AgentTesla-vakoiluohjelmia. Sisään toinen osa kuvasi AgentTesla-päämoduulin vaiheittaisen analyysin tuloksia.

Tänään CERT Group-IB:n haittaohjelmaanalyysin asiantuntija Ilja Pomerantsev puhuu haittaohjelmaanalyysin ensimmäisestä vaiheesta - AgentTesla-näytteiden puoliautomaattisesta purkamisesta CERT Group-IB:n asiantuntijoiden käytännön kolmen mini-tapauksen esimerkin avulla.

Tyypillisesti haittaohjelmaanalyysin ensimmäinen vaihe on suojauksen poistaminen pakkaajan, kryptoijan, suojan tai lataajan muodossa. Useimmissa tapauksissa tämä ongelma voidaan ratkaista suorittamalla haittaohjelma ja suorittamalla vedos, mutta on tilanteita, joissa tämä menetelmä ei sovellu. Esimerkiksi jos haittaohjelma on salaaja, jos se suojaa muistialueitaan tyhjentämiseltä, jos koodi sisältää virtuaalikoneen tunnistusmekanismeja tai jos haittaohjelma käynnistyy uudelleen välittömästi käynnistyksen jälkeen. Tällaisissa tapauksissa käytetään ns. "puoliautomaattista" purkamista, eli tutkijalla on täydellinen hallinta prosessiin ja hän voi puuttua asiaan koska tahansa. Tarkastellaan tätä menettelyä käyttämällä esimerkkinä kolmea AgentTesla-perheen näytettä. Tämä on suhteellisen vaaraton haittaohjelma, jos poistat sen verkkoyhteyden käytöstä.

Näyte nro 1

Lähdetiedosto on MS Word -asiakirja, joka hyödyntää haavoittuvuutta CVE-2017-11882.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Tämän seurauksena hyötykuorma ladataan ja käynnistetään.

Prosessipuun ja käyttäytymismerkkien analyysi osoittaa injektion prosessiin RegAsm.exe.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
On olemassa AgentTeslalle ominaisia ​​käyttäytymismarkkereita.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Ladattu näyte on suoritettava . NET-suojalla suojattu tiedosto .NET-reaktori.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Avataan se apuohjelmassa dnSpy x86 ja siirry sisääntulopisteeseen.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Menemällä toimintoon DateTimeOffset, löydämme alustuskoodin uudelle . NET-moduuli. Laitetaan breakpoint haluamallamme rivillä ja suorita tiedosto.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Yhdessä palautetuista puskureista näet MZ-allekirjoituksen (0x4D 0x5A). Säästetään se.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Poistettu suoritettava tiedosto on dynaaminen kirjasto, joka on latausohjelma, ts. poimii hyötykuorman resurssiosiosta ja käynnistää sen.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Samaan aikaan kaatopaikalla ei ole itse tarvittavia resursseja. Ne ovat emonäytteessä.

Apuohjelma dnSpy sisältää kaksi erittäin hyödyllistä toimintoa, jotka auttavat meitä melko nopeasti luomaan "Frankensteinin" kahdesta toisiinsa liittyvästä tiedostosta.

  1. Ensimmäisen avulla voit "liitä" dynaamisen kirjaston päänäytteeseen.

    Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3

  2. Toinen on kirjoittaa toimintokoodi uudelleen aloituspisteessä kutsumaan lisätyn dynaamisen kirjaston haluttua menetelmää.

    Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3

Tallennamme ”Frankensteinin”, settimme breakpoint rivillä, joka palauttaa puskurin salauksella puretuilla resursseilla, ja tuottaa vedoksen analogisesti edellisen vaiheen kanssa.

Toinen kaato on kirjoitettu sisään VB.NET suoritettava tiedosto, joka on suojattu meille tutulla suojalla ConfuserEx.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Suojauksen poistamisen jälkeen käytämme aiemmin kirjoitettuja YARA-sääntöjä ja varmistamme, että pakkaamaton haittaohjelma on todella AgentTesla.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3

Näyte nro 2

Lähdetiedosto on MS Excel -dokumentti. Sisäänrakennettu makro aiheuttaa haitallisen koodin suorittamisen.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Tämän seurauksena PowerShell-komentosarja käynnistetään.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Skripti purkaa C#-koodin salauksen ja siirtää ohjauksen sille. Koodi itsessään on käynnistyslatain, kuten näkyy myös hiekkalaatikkoraportista.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Hyötykuorma on suoritettava tiedosto . NET-tiedosto.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Tiedoston avaaminen sisään dnSpy x86, voit nähdä, että se on hämärtynyt. Hämärtymisen poistaminen apuohjelman avulla de4dot ja palaa analyysiin.

Kun tutkit koodia, saatat löytää seuraavan toiminnon:

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Koodatut rivit ovat silmiinpistäviä Sisääntulopiste и vedota. Laitamme breakpoint ensimmäiselle riville, suorita ja tallenna puskurin arvo tavu_0.

Kaatopaikka on jälleen sovellus . NET ja suojattu ConfuserEx.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Poistamme hämärtymisen käyttämällä de4dot ja lataa osoitteeseen dnSpy. Tiedoston kuvauksesta ymmärrämme, että kohtaamme CyaX-Sharp kuormaaja.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Tässä kuormaimessa on laajat anti-analyysitoiminnot.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Tämä toiminto sisältää sisäänrakennettujen Windowsin suojausjärjestelmien ohituksen, Windows Defenderin poistamisen käytöstä sekä hiekkalaatikon ja virtuaalikoneen tunnistusmekanismit. Hyötykuorma on mahdollista ladata verkosta tai tallentaa resurssiosaan. Käynnistys suoritetaan injektoimalla omaan prosessiinsa, oman prosessinsa kopioon tai prosesseihin MSBuild.exe, vbc.exe и RegSvcs.exe riippuen hyökkääjän valitsemasta parametrista.

Meille ne ovat kuitenkin vähemmän tärkeitä kuin Antidump-toiminto, joka lisää ConfuserEx. Sen lähdekoodi löytyy osoitteesta GitHub.

Käytämme tilaisuutta suojauksen poistamiseksi käytöstä dnSpy, jonka avulla voit muokata IL-koodi.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Tallenna ja asenna breakpoint hyötykuorman salauksenpurkutoiminnon kutsulinjalle. Se sijaitsee pääluokan rakentajassa.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Käynnistämme ja tyhjennämme hyötykuorman. Aiemmin kirjoitettujen YARA-sääntöjen avulla varmistamme, että tämä on AgentTesla.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3

Näyte nro 3

Lähdetiedosto on suoritettava tiedosto VB Native PE32-tiedosto.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Entropiaanalyysi osoittaa suuren osan salattua dataa.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Kun analysoit hakemuslomaketta sisään VB Decompiler saatat huomata outoa pikselöityä taustaa.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Entropiakuvaaja bmp-image on identtinen alkuperäisen tiedoston entropiakaavion kanssa ja koko on 85 % tiedoston koosta.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Kuvan yleisilme viittaa steganografian käyttöön.

Kiinnitetään huomiota prosessipuun ulkonäköön sekä injektiomerkin olemassaoloon.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Tämä osoittaa, että pakkauksen purkaminen on käynnissä. Visual Basic -lataimille (alias VBKrypt tai VBI-injektori) tyypilliseen käyttöön shellcode hyötykuorman alustamiseen sekä itse ruiskutuksen suorittamiseen.

Analyysi sisään VB Decompiler osoitti tapahtuman olemassaolon Ladata lomakkeella FegatassocAirballoon2.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Mennään IDA pro määritettyyn osoitteeseen ja tutki toimintoa. Koodi on pahasti hämärtynyt. Meitä kiinnostava fragmentti on esitetty alla.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Täällä prosessin osoiteavaruudesta tarkistetaan allekirjoitus. Tämä lähestymistapa on erittäin kyseenalainen.

Ensin skannauksen aloitusosoite 0x400100. Tämä arvo on staattinen, eikä sitä säädetä, kun alustaa siirretään. Ihanteellisissa kasvihuoneolosuhteissa se osoittaa loppua PE-suoritettavan tiedoston otsikko. Tietokanta ei kuitenkaan ole staattinen, sen arvo voi muuttua ja vaaditun allekirjoituksen todellisen osoitteen etsiminen voi kestää hyvin kauan, vaikka se ei aiheutakaan muuttujan ylivuotoa.

Toiseksi allekirjoituksen merkitys iWGK. Mielestäni on selvää, että 4 tavua on liian pieni takaamaan ainutlaatuisuuden. Ja jos otat huomioon ensimmäisen kohdan, virheen tekemisen todennäköisyys on melko korkea.

Itse asiassa vaadittu fragmentti on kiinnitetty aiemmin löydetyn päähän bmp-kuvat offsetilla 0xA1D0D.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
suoritus Shellcode toteutetaan kahdessa vaiheessa. Ensimmäinen tulkitsee päärungon. Tässä tapauksessa avain määräytyy raa'alla voimalla.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Poista salaus purettu Shellcode ja katso linjoja.

Ensinnäkin tiedämme nyt toiminnon aliprosessin luomiseksi: CreateProcessInternalW.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Toiseksi tulimme tietoisiksi järjestelmän kiinnittymismekanismista.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Palataan alkuperäiseen prosessiin. Laitetaan breakpoint päälle CreateProcessInternalW ja jatka toteuttamista. Seuraavaksi näemme yhteyden NtGetContextThread/NtSetContextThread, joka muuttaa suorituksen aloitusosoitteen osoitteeksi ShellCode.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Yhdistämme luotuun prosessiin debuggerilla ja aktivoimme tapahtuman Keskeytä kirjaston lataaminen/purku, jatka prosessia ja odota latausta . NET-kirjastot.

Jatkossa käyttöä ProcessHacker kaatoalueet, jotka sisältävät pakkaamattomia . NET-sovellus.

Pysäytämme kaikki prosessit ja poistamme järjestelmään upotetun haittaohjelman kopion.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Poistettu tiedosto on suojattu suojauksella .NET-reaktori, joka voidaan helposti poistaa apuohjelmalla de4dot.

Äänestysprosentti epäonnistui: altistetaan AgentTesla puhtaalle vedelle. Osa 3
Aiemmin kirjoitettujen YARA-sääntöjen avulla varmistamme, että tämä on AgentTesla.

Yhteenvetona

Joten esitimme yksityiskohtaisesti puoliautomaattisen näytteen purkamisen käyttämällä esimerkkinä kolmea minikoteloa, ja analysoimme myös haittaohjelmia täysimittaisen tapauksen perusteella ja selvitimme, että tutkittava näyte on AgentTesla, selvittimme sen toiminnallisuuden ja täydellinen luettelo kompromissin osoittimista.

Suorittamamme haitallisen kohteen analysointi vaatii paljon aikaa ja vaivaa, ja tämä työ tulisi suorittaa yrityksen erityistyöntekijällä, mutta kaikki yritykset eivät ole valmiita palkkaamaan analyytikkoa.

Yksi Group-IB:n tietokonerikosteknisen ja haittakoodianalyysin laboratorion tarjoamista palveluista on reagointi kybertapahtumiin. Ja jotta asiakkaat eivät tuhlaa aikaa asiakirjojen hyväksymiseen ja niistä keskustelemiseen kyberhyökkäyksen keskellä, Group-IB käynnisti Tapahtumavastauksen säilytin, tilausta edeltävä tapausvastauspalvelu, joka sisältää myös haittaohjelmien analysointivaiheen. Lisätietoja tästä löytyy täällä.

Jos haluat vielä kerran tutkia AgentTesla-näytteiden purkamista ja nähdä kuinka CERT Group-IB -asiantuntija tekee sen, voit ladata tästä aiheesta webinaarin tallenteen täällä.

Lähde: will.com

Lisää kommentti