Med denne artikkelen fullfører vi serien med publikasjoner viet til analyse av skadelig programvare. I
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.
Som et resultat blir nyttelasten lastet ned og lansert.
Analyse av prosesstreet og atferdsmarkører viser injeksjon i prosessen RegAsm.exe.
Det er atferdsmarkører som er karakteristiske for AgentTesla.
Det nedlastede eksemplet er det kjørbare . NET-fil beskyttet av en beskytter .NET Reactor.
La oss åpne den i verktøyet dnSpy x86 og gå videre til inngangspunktet.
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.
I en av de returnerte bufferne kan du se MZ-signaturen (0x4D 0x5A). La oss lagre det.
En dumpet kjørbar fil er et dynamisk bibliotek som er en laster, dvs. trekker ut nyttelasten fra ressursdelen og starter den.
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.
- Den første lar deg "lime inn" et dynamisk bibliotek i den overordnede prøven.
- Den andre er å omskrive funksjonskoden ved inngangspunktet for å kalle ønsket metode for det innsatte dynamiske biblioteket.
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.
Etter å ha fjernet beskytteren, bruker vi YARA-reglene som er skrevet tidligere og sørger for at den utpakkede skadevare virkelig er AgentTesla.
Prøve nr. 2
Kildefilen er et MS Excel-dokument. En innebygd makro forårsaker kjøring av ondsinnet kode.
Som et resultat blir PowerShell-skriptet lansert.
Skriptet dekrypterer C#-koden og overfører kontrollen til den. Selve koden er en bootloader, som også kan sees fra sandkasserapporten.
Nyttelasten er en kjørbar . NET-fil.
Å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:
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.
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.
Denne lasteren har omfattende antianalysefunksjonalitet.
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å
For å deaktivere beskyttelsen vil vi benytte anledningen dnSpy, som lar deg redigere IL-kode.
Lagre og installer stoppunkt til linjen for å kalle nyttelastdekrypteringsfunksjonen. Den ligger i konstruktøren til hovedklassen.
Vi lanserer og dumper nyttelasten. Ved å bruke de tidligere skrevne YARA-reglene, sørger vi for at dette er AgentTesla.
Prøve nr. 3
Kildefilen er den kjørbare filen VB Native PE32-fil.
Entropianalyse viser tilstedeværelsen av et stort stykke kryptert data.
Ved analyse av søknadsskjemaet i VB-dekompiler du kan legge merke til en merkelig pikselert bakgrunn.
Entropi graf bmp-image er identisk med entropigrafen til den originale filen, og størrelsen er 85 % av filstørrelsen.
Det generelle utseendet til bildet indikerer bruken av steganografi.
La oss ta hensyn til utseendet til prosesstreet, samt tilstedeværelsen av en injeksjonsmarkør.
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.
La oss gå til IDA pro til den angitte adressen og studer funksjonen. Koden er sterkt tilslørt. Fragmentet som interesserer oss presenteres nedenfor.
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.
utførelse Skallkode utføres i to etapper. Den første tyder hoveddelen. I dette tilfellet bestemmes nøkkelen av brute force.
Dump den dekrypterte Skallkode og se på linjene.
Først kjenner vi nå funksjonen for å lage en underordnet prosess: CreateProcessInternalW.
For det andre ble vi klar over mekanismen for fiksering i systemet.
La oss gå tilbake til den opprinnelige prosessen. La oss sette stoppunkt på CreateProcessInternalW og fortsetter utførelsen. Deretter ser vi sammenhengen NtGetContextThread/NtSetContextThread, som endrer utførelsesstartadressen til adressen ShellCode.
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.
Den dumpede filen er beskyttet av en beskytter .NET Reactor, som enkelt kan fjernes ved hjelp av et verktøy de4dot.
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
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
Kilde: www.habr.com