Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3

Met hierdie artikel voltooi ons die reeks publikasies wat gewy is aan die ontleding van kwaadwillige sagteware. IN die eerste deel Ons het 'n gedetailleerde ontleding gedoen van 'n besmette lêer wat 'n Europese maatskappy per pos ontvang het en AgentTesla-spioenware daar ontdek. In tweede deel beskryf die resultate van 'n stap-vir-stap ontleding van die hoof AgentTesla module.

Vandag sal Ilya Pomerantsev, 'n spesialis in wanware-analise by CERT Group-IB, praat oor die eerste fase van wanware-analise - semi-outomatiese uitpak van AgentTesla-monsters deur die voorbeeld van drie mini-gevalle uit die praktyk van CERT Group-IB-spesialiste te gebruik.

Tipies is die eerste fase in wanware-analise die verwydering van beskerming in die vorm van 'n pakker, kriptor, beskermer of laaier. In die meeste gevalle kan hierdie probleem opgelos word deur die wanware uit te voer en 'n storting uit te voer, maar daar is situasies waar hierdie metode nie geskik is nie. Byvoorbeeld, as die wanware 'n enkripteerder is, as dit sy geheuestreke beskerm teen gestort word, as die kode virtuele masjienopsporingsmeganismes bevat, of as die wanware onmiddellik herlaai nadat dit begin het. In sulke gevalle word sogenaamde “semi-outomatiese” uitpak gebruik, dit wil sê die navorser het volle beheer oor die proses en kan enige tyd ingryp. Kom ons kyk na hierdie prosedure deur drie voorbeelde van die AgentTesla-familie as voorbeeld te gebruik. Dit is 'n relatief onskadelike wanware as jy sy netwerktoegang deaktiveer.

Monster nr. 1

Die bronlêer is 'n MS Word-dokument wat die kwesbaarheid CVE-2017-11882 uitbuit.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Gevolglik word die loonvrag afgelaai en geloods.

Ontleding van die prosesboom en gedragsmerkers toon inspuiting in die proses RegAsm.exe.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Daar is gedragsmerkers kenmerkend van AgentTesla.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Die afgelaaide voorbeeld is die uitvoerbare een NET.-lêer beskerm deur 'n beskermer .NET Reactor.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Kom ons maak dit oop in die nut dnSpy x86 en gaan aan na die toegangspunt.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Deur na die funksie te gaan Datum TydOffset, sal ons die inisialiseringskode vir die nuwe vind NET.-module. Kom ons sit breekpunt op die lyn waarin ons belangstel en voer die lêer uit.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
In een van die teruggekeerde buffers kan jy die MZ handtekening (0x4D 0x5A). Kom ons stoor dit.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
'n Gedumpte uitvoerbare lêer is 'n dinamiese biblioteek wat 'n laaier is, d.w.s. onttrek die loonvrag uit die hulpbronafdeling en begin dit.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Terselfdertyd is die nodige hulpbronne self nie in die storting aanwesig nie. Hulle is in die ouermonster.

Nuts dnSpioen het twee uiters nuttige funksies wat ons sal help om redelik vinnig 'n "Frankenstein" uit twee verwante lêers te skep.

  1. Die eerste laat jou toe om 'n dinamiese biblioteek in die ouermonster te "plak".

    Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3

  2. Die tweede is om die funksiekode by die toegangspunt te herskryf om die verlangde metode van die ingevoegde dinamiese biblioteek te roep.

    Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3

Ons bêre ons “Frankenstein”, stel breekpunt op die lyn wat 'n buffer met gedekripteerde hulpbronne terugstuur, en 'n storting produseer na analogie van die vorige stadium.

Die tweede stortingsterrein is ingeskryf VB.NET 'n uitvoerbare lêer wat beskerm word deur 'n beskermer wat aan ons bekend is VerwarrEx.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Nadat ons die beskermer verwyder het, gebruik ons ​​die YARA-reëls wat vroeër geskryf is en maak seker dat die uitgepakte wanware werklik AgentTesla is.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3

Monster nr. 2

Die bronlêer is 'n MS Excel-dokument. 'n Ingeboude makro veroorsaak die uitvoering van kwaadwillige kode.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
As gevolg hiervan word die PowerShell-skrip geloods.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Die skrip dekripteer die C#-kode en dra beheer daaroor oor. Die kode self is 'n selflaaiprogram, soos ook uit die sandbox-verslag gesien kan word.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Die loonvrag is 'n uitvoerbare NET.-lêer.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Maak die lêer oop in dnSpy x86, kan jy sien dat dit vertroebel is. Verwyder verduistering met behulp van die hulpprogram de4 punt en keer terug na analise.

Wanneer u die kode ondersoek, kan u die volgende funksie ontdek:

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Die geënkodeerde lyne is treffend Toegangspunt и roep. Ons sit breekpunt na die eerste reël, hardloop en stoor die bufferwaarde greep_0.

Die storting is weer 'n aansoek op NET. en beskerm VerwarrEx.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Ons verwyder verduistering met behulp van de4 punt en laai op na dnSpioen. Uit die lêerbeskrywing verstaan ​​ons dat ons gekonfronteer word CyaX-Sharp laaier.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Hierdie laaier het uitgebreide anti-analise funksionaliteit.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Hierdie funksionaliteit sluit in die omseil van ingeboude Windows-beskermingstelsels, die deaktivering van Windows Defender, sowel as sandbox- en virtuele masjien-opsporingsmeganismes. Dit is moontlik om die loonvrag vanaf die netwerk te laai of dit in die hulpbronafdeling te stoor. Bekendstelling word uitgevoer deur inspuiting in sy eie proses, in 'n duplikaat van sy eie proses, of in prosesse MSBuild.exe, vbc.exe и RegSvcs.exe afhangende van die parameter wat deur die aanvaller gekies is.

Vir ons is hulle egter minder betekenisvol as Antidump-funksie wat byvoeg VerwarrEx. Die bronkode daarvan kan gevind word by GitHub.

Om beskerming te deaktiveer, sal ons die geleentheid gebruik dnSpioen, wat jou toelaat om te wysig IL-kode.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Stoor en installeer breekpunt na die lyn om die loonvrag-dekripsiefunksie te roep. Dit is geleë in die konstruktor van die hoofklas.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Ons lanseer en stort die loonvrag. Deur die voorheen geskrewe YARA-reëls te gebruik, maak ons ​​seker dat dit AgentTesla is.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3

Monster nr. 3

Die bronlêer is die uitvoerbare VB Inheemse PE32-lêer.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Entropie-analise toon die teenwoordigheid van 'n groot stuk geënkripteerde data.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
By die ontleding van die aansoekvorm in VB Decompiler jy kan dalk 'n vreemde gepixeleerde agtergrond opmerk.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Entropie grafiek bmp-beeld is identies aan die entropiegrafiek van die oorspronklike lêer, en die grootte is 85% van die lêergrootte.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Die algemene voorkoms van die beeld dui op die gebruik van steganografie.

Kom ons let op die voorkoms van die prosesboom, sowel as die teenwoordigheid van 'n inspuitmerker.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Dit dui aan dat uitpak aan die gang is. Vir Visual Basic-laaiers (aka VBKrypt of VBI Injector) tipiese gebruik dopkode om die loonvrag te inisialiseer, asook om die inspuiting self uit te voer.

Ontleding in VB Decompiler die teenwoordigheid van 'n gebeurtenis getoon het vrag by die vorm Fegatassoc Lugballon2.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Kom ons gaan na IDA pro na die gespesifiseerde adres en bestudeer die funksie. Die kode is baie verduister. Die fragment wat ons interesseer, word hieronder aangebied.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Hier word die proses se adresspasie geskandeer vir 'n handtekening. Hierdie benadering is uiters twyfelagtig.

Eerstens, die beginadres van die skandering 0x400100. Hierdie waarde is staties en word nie aangepas wanneer die basis geskuif word nie. In ideale kweekhuistoestande sal dit die einde aandui PE-die kop van die uitvoerbare lêer. Die databasis is egter nie staties nie, die waarde daarvan kan verander, en om na die regte adres van die vereiste handtekening te soek, alhoewel dit nie 'n veranderlike oorloop sal veroorsaak nie, kan baie lank neem.

Tweedens, die betekenis van die handtekening iWGK. Ek dink dit is duidelik dat 4 grepe te klein is om uniekheid te waarborg. En as jy die eerste punt in ag neem, is die waarskynlikheid om 'n fout te maak redelik hoog.

Trouens, die vereiste fragment is aan die einde van die voorheen gevind bmp-prente volgens offset 0xA1D0D.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Optrede Shell-kode in twee fases uitgevoer. Die eerste ontsyfer die hoofliggaam. In hierdie geval word die sleutel deur brute krag bepaal.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Gooi die ontsyferde een Shell-kode en kyk na die lyne.

Eerstens ken ons nou die funksie om 'n kinderproses te skep: CreateProcessInternalW.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Tweedens het ons bewus geword van die meganisme van fiksasie in die sisteem.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Kom ons gaan terug na die oorspronklike proses. Kom ons sit breekpunt op CreateProcessInternalW en gaan voort met uitvoering. Volgende sien ons die verband NtGetContextThread/NtSetContextThread, wat die uitvoering begin adres verander na die adres Shell-kode.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Ons koppel aan die geskepde proses met 'n ontfouter en aktiveer die gebeurtenis Skors op biblioteek laai/aflaai, hervat die proses en wag vir laai NET.-biblioteke.

Verdere gebruik ProcessHacker stortingsgebiede wat uitgepak bevat NET.-toepassing.

Ons stop alle prosesse en vee die kopie van die wanware uit wat in die stelsel ingebed is.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Die gestort lêer word deur 'n beskermer beskerm .NET Reactor, wat maklik verwyder kan word met behulp van 'n nut de4 punt.

Opkoms het misluk: kom ons stel AgentTesla bloot aan skoon water. Deel 3
Met behulp van die YARA-reëls wat vroeër geskryf is, maak ons ​​seker dat dit AgentTesla is.

om op te som

Dus, ons het die proses van semi-outomatiese monsteruitpak in detail gedemonstreer met behulp van drie mini-houers as 'n voorbeeld, en ook wanware ontleed op grond van 'n volwaardige saak, om uit te vind dat die monster wat bestudeer word AgentTesla is, wat die funksionaliteit daarvan vasstel en 'n volledige lys van aanwysers van kompromie.

Die ontleding van die kwaadwillige voorwerp wat ons uitgevoer het, verg baie tyd en moeite, en hierdie werk moet deur 'n spesiale werknemer in die maatskappy uitgevoer word, maar nie alle maatskappye is gereed om 'n ontleder in diens te neem nie.

Een van die dienste wat deur die Group-IB Laboratory of Computer Forensics and Malicious Code Analysis verskaf word, is reaksie op kubervoorvalle. En sodat kliënte nie tyd mors om dokumente goed te keur en te bespreek te midde van 'n kuberaanval nie, het Group-IB van stapel gestuur Voorvalreaksiehouer, 'n voorintekening-voorvalreaksiediens wat ook 'n wanware-ontledingstap insluit. Meer inligting hieroor kan gevind word hier.

As jy weer wil bestudeer hoe AgentTesla-monsters uitgepak word en sien hoe 'n CERT Group-IB-spesialis dit doen, kan jy die webinar-opname oor hierdie onderwerp aflaai hier.

Bron: will.com

Voeg 'n opmerking