Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3

Med denne artikkelen fullfører vi serien med publikasjoner viet til analyse av skadelig programvare. I første del Vi gjennomførte en detaljert analyse av en infisert fil som et europeisk selskap mottok per post og oppdaget AgentTesla-spyware der. I andre del beskrev resultatene av en trinn-for-trinn-analyse av hovedmodulen i AgentTesla.

I dag vil Ilya Pomerantsev, en spesialist i malware-analyse ved CERT Group-IB, snakke om det første stadiet av malware-analyse - halvautomatisk utpakking av AgentTesla-prøver ved å bruke eksemplet med tre minicases fra praksisen til CERT Group-IB-spesialister.

Vanligvis er det første trinnet i malware-analyse fjerning av beskyttelse i form av en pakker, kryptor, beskytter eller laster. I de fleste tilfeller kan dette problemet løses ved å kjøre skadelig programvare og utføre en dumping, men det er situasjoner der denne metoden ikke er egnet. For eksempel, hvis skadevaren er en kryptering, hvis den beskytter minneområdene fra å bli dumpet, hvis koden inneholder mekanismer for registrering av virtuelle maskiner, eller hvis skadelig programvare starter på nytt umiddelbart etter oppstart. I slike tilfeller brukes såkalt «halvautomatisk» utpakking, det vil si at forskeren har full kontroll over prosessen og kan gripe inn når som helst. La oss vurdere denne prosedyren ved å bruke tre prøver av AgentTesla-familien som et eksempel. Dette er en relativt ufarlig skadelig programvare hvis du deaktiverer nettverkstilgangen.

Prøve nr. 1

Kildefilen er et MS Word-dokument som utnytter sårbarheten CVE-2017-11882.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Som et resultat blir nyttelasten lastet ned og lansert.

Analyse av prosesstreet og atferdsmarkører viser injeksjon i prosessen RegAsm.exe.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Det er atferdsmarkører som er karakteristiske for AgentTesla.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Det nedlastede eksemplet er det kjørbare . NET-fil beskyttet av en beskytter .NET Reactor.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
La oss åpne den i verktøyet dnSpy x86 og gå videre til inngangspunktet.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Ved å gå til funksjonen DatoTimeOffset, vil vi finne initialiseringskoden for den nye . NET-modul. La oss sette stoppunkt på linjen vi er interessert i og kjøre filen.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
I en av de returnerte bufferne kan du se MZ-signaturen (0x4D 0x5A). La oss lagre det.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
En dumpet kjørbar fil er et dynamisk bibliotek som er en laster, dvs. trekker ut nyttelasten fra ressursdelen og starter den.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Samtidig er ikke de nødvendige ressursene i seg selv tilstede i dumpen. De er i foreldreutvalget.

Nytte dnSpy har to ekstremt nyttige funksjoner som vil hjelpe oss ganske raskt å lage en "Frankenstein" fra to relaterte filer.

  1. Den første lar deg "lime inn" et dynamisk bibliotek i den overordnede prøven.

    Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3

  2. Den andre er å omskrive funksjonskoden ved inngangspunktet for å kalle ønsket metode for det innsatte dynamiske biblioteket.

    Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3

Vi lagrer vårt "Frankenstein", sett stoppunkt på linjen som returnerer en buffer med dekrypterte ressurser, og produserer en dump i analogi med forrige trinn.

Den andre dumpen er skrevet inn VB.NET en kjørbar fil som er beskyttet av en beskytter som er kjent for oss ConfuserEx.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Etter å ha fjernet beskytteren, bruker vi YARA-reglene som er skrevet tidligere og sørger for at den utpakkede skadevare virkelig er AgentTesla.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3

Prøve nr. 2

Kildefilen er et MS Excel-dokument. En innebygd makro forårsaker kjøring av ondsinnet kode.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Som et resultat blir PowerShell-skriptet lansert.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Skriptet dekrypterer C#-koden og overfører kontrollen til den. Selve koden er en bootloader, som også kan sees fra sandkasserapporten.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Nyttelasten er en kjørbar . NET-fil.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Åpner filen i dnSpy x86, kan du se at den er tilslørt. Fjerne tilsløring ved hjelp av verktøyet de4dot og gå tilbake til analysen.

Når du undersøker koden, kan du oppdage følgende funksjon:

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
De kodede linjene er slående Inngangspunkt и påberope. Vi putter stoppunkt til den første linjen, kjør og lagre bufferverdien byte_0.

Dumpen er igjen en søknad på . NET og beskyttet ConfuserEx.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Vi fjerner tilsløring ved hjelp av de4dot og last opp til dnSpy. Fra filbeskrivelsen forstår vi at vi står overfor CyaX-Sharp-laster.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Denne lasteren har omfattende antianalysefunksjonalitet.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Denne funksjonaliteten inkluderer omgåelse av innebygde Windows-beskyttelsessystemer, deaktivering av Windows Defender, samt gjenkjenningsmekanismer for sandkasse og virtuelle maskiner. Det er mulig å laste nyttelasten fra nettverket eller lagre den i ressursdelen. Lansering utføres gjennom injeksjon i sin egen prosess, i et duplikat av sin egen prosess, eller inn i prosesser MSBuild.exe, vbc.exe и RegSvcs.exe avhengig av parameteren valgt av angriperen.

For oss er de imidlertid mindre betydningsfulle enn AntiDump-funksjon som legger til ConfuserEx. Kildekoden finner du på GitHub.

For å deaktivere beskyttelsen vil vi benytte anledningen dnSpy, som lar deg redigere IL-kode.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Lagre og installer stoppunkt til linjen for å kalle nyttelastdekrypteringsfunksjonen. Den ligger i konstruktøren til hovedklassen.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Vi lanserer og dumper nyttelasten. Ved å bruke de tidligere skrevne YARA-reglene, sørger vi for at dette er AgentTesla.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3

Prøve nr. 3

Kildefilen er den kjørbare filen VB Native PE32-fil.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Entropianalyse viser tilstedeværelsen av et stort stykke kryptert data.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Ved analyse av søknadsskjemaet i VB-dekompiler du kan legge merke til en merkelig pikselert bakgrunn.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Entropi graf bmp-image er identisk med entropigrafen til den originale filen, og størrelsen er 85 % av filstørrelsen.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Det generelle utseendet til bildet indikerer bruken av steganografi.

La oss ta hensyn til utseendet til prosesstreet, samt tilstedeværelsen av en injeksjonsmarkør.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Dette indikerer at utpakking pågår. For Visual Basic-lastere (aka VBKrypt eller VBInjektor) typisk bruk skallkode å initialisere nyttelasten, samt å utføre selve injeksjonen.

Analyse i VB-dekompiler viste tilstedeværelsen av en hendelse Laste på skjemaet FegatassocAirballoon2.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
La oss gå til IDA pro til den angitte adressen og studer funksjonen. Koden er sterkt tilslørt. Fragmentet som interesserer oss presenteres nedenfor.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Her skannes prosessens adresserom for en signatur. Denne tilnærmingen er ekstremt tvilsom.

Først startadressen for skanningen 0x400100. Denne verdien er statisk og justeres ikke når basen forskyves. Under ideelle drivhusforhold vil det indikere slutten PE-overskriften til den kjørbare filen. Databasen er imidlertid ikke statisk, verdien kan endres, og det kan ta veldig lang tid å søke etter den virkelige adressen til den nødvendige signaturen, selv om det ikke vil føre til et variabelt overløp.

For det andre, betydningen av signaturen iWGK. Jeg tror det er åpenbart at 4 byte er for lite til å garantere unikhet. Og hvis du tar med det første punktet, er sannsynligheten for å gjøre en feil ganske høy.

Faktisk er det nødvendige fragmentet festet til enden av det tidligere funnet bmp-bilder etter offset 0xA1D0D.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
utførelse Skallkode utføres i to etapper. Den første tyder hoveddelen. I dette tilfellet bestemmes nøkkelen av brute force.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Dump den dekrypterte Skallkode og se på linjene.

Først kjenner vi nå funksjonen for å lage en underordnet prosess: CreateProcessInternalW.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
For det andre ble vi klar over mekanismen for fiksering i systemet.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
La oss gå tilbake til den opprinnelige prosessen. La oss sette stoppunkt CreateProcessInternalW og fortsetter utførelsen. Deretter ser vi sammenhengen NtGetContextThread/NtSetContextThread, som endrer utførelsesstartadressen til adressen ShellCode.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Vi kobler til den opprettede prosessen med en debugger og aktiverer hendelsen Suspender ved lasting/lossing av bibliotek, gjenoppta prosessen og vent på lasting . NET-biblioteker.

Videre bruk ProcessHacker dump regioner som inneholder utpakket . NET-applikasjon.

Vi stopper alle prosesser og sletter kopien av skadelig programvare som har blitt innebygd i systemet.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Den dumpede filen er beskyttet av en beskytter .NET Reactor, som enkelt kan fjernes ved hjelp av et verktøy de4dot.

Valgdeltakelsen mislyktes: la oss utsette AgentTesla for rent vann. Del 3
Ved å bruke YARA-reglene skrevet tidligere, sørger vi for at dette er AgentTesla.

For å oppsummere

Så vi demonstrerte i detalj prosessen med semi-automatisk prøveutpakking ved å bruke tre mini-kofferter som eksempel, og analyserte også skadevare basert på en fullverdig sak, og fant ut at prøven som studeres er AgentTesla, og etablerte funksjonaliteten og en komplett liste over indikatorer på kompromiss.

Analysen av det ondsinnede objektet som vi utførte krever mye tid og krefter, og dette arbeidet bør utføres av en spesiell ansatt i selskapet, men ikke alle selskaper er klare til å ansette en analytiker.

En av tjenestene som tilbys av Group-IB Laboratory of Computer Forensics and Malicious Code Analysis er respons på cyberhendelser. Og for at kundene ikke skal kaste bort tid på å godkjenne dokumenter og diskutere dem midt i et cyberangrep, lanserte Group-IB Incident Response Retainer, en pre-abonnement hendelsesresponstjeneste som også inkluderer et skadevareanalysetrinn. Mer informasjon om dette finner du her.

Hvis du igjen vil studere hvordan AgentTesla-prøver pakkes ut og se hvordan en CERT Group-IB-spesialist gjør det, kan du laste ned webinaropptaket om dette emnet her.

Kilde: www.habr.com

Legg til en kommentar