Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3

Med denne artikel fuldender vi rækken af ​​publikationer, der er viet til analyse af skadelig software. I den første del Vi gennemførte en detaljeret analyse af en inficeret fil, som et europæisk firma modtog pr. post og opdagede AgentTesla-spyware der. I anden del beskrev resultaterne af en trin-for-trin-analyse af AgentTesla-hovedmodulet.

I dag vil Ilya Pomerantsev, en specialist i malware-analyse hos CERT Group-IB, fortælle om den første fase af malware-analyse - semi-automatisk udpakning af AgentTesla-prøver ved at bruge eksemplet med tre mini-cases fra praksis hos CERT Group-IB-specialister.

Typisk er det første trin i malwareanalyse fjernelse af beskyttelse i form af en pakker, kryptor, beskytter eller loader. I de fleste tilfælde kan dette problem løses ved at køre malwaren og udføre et dump, men der er situationer, hvor denne metode ikke er egnet. For eksempel, hvis malwaren er en kryptering, hvis den beskytter sine hukommelsesområder mod at blive dumpet, hvis koden indeholder mekanismer til registrering af virtuelle maskiner, eller hvis malwaren genstarter umiddelbart efter start. I sådanne tilfælde anvendes såkaldt "halvautomatisk" udpakning, det vil sige, at forskeren har fuldstændig kontrol over processen og kan gribe ind til enhver tid. Lad os overveje denne procedure ved at bruge tre prøver af AgentTesla-familien som eksempel. Dette er en relativt harmløs malware, hvis du deaktiverer dens netværksadgang.

Prøve nr. 1

Kildefilen er et MS Word-dokument, der udnytter sårbarheden CVE-2017-11882.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Som et resultat bliver nyttelasten downloadet og lanceret.

Analyse af procestræet og adfærdsmarkører viser injektion i processen RegAsm.exe.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Der er adfærdsmarkører, der er karakteristiske for AgentTesla.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Den downloadede prøve er den eksekverbare . NET-fil beskyttet af en beskytter .NET-reaktor.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Lad os åbne det i værktøjet dnSpy x86 og gå videre til indgangspunktet.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Ved at gå til funktionen DatoTimeOffset, finder vi initialiseringskoden for den nye . NET-modul. Lad os sætte breakpoint på den linje, vi er interesseret i, og kør filen.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
I en af ​​de returnerede buffere kan du se MZ-signaturen (0x4D 0x5A). Lad os gemme det.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
En dumpet eksekverbar fil er et dynamisk bibliotek, der er en loader, dvs. udtrækker nyttelasten fra ressourcesektionen og starter den.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Samtidig er de nødvendige ressourcer ikke i sig selv til stede på lossepladsen. De er i forældreprøven.

Hjælpeprogram dnSpy har to ekstremt nyttige funktioner, der vil hjælpe os ret hurtigt med at skabe en "Frankenstein" fra to relaterede filer.

  1. Den første giver dig mulighed for at "indsætte" et dynamisk bibliotek i den overordnede prøve.

    Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3

  2. Den anden er at omskrive funktionskoden ved indgangspunktet for at kalde den ønskede metode for det indsatte dynamiske bibliotek.

    Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3

Vi gemmer vores "Frankenstein", sæt breakpoint på linjen, der returnerer en buffer med dekrypterede ressourcer, og frembring et dump i analogi med det foregående trin.

Det andet dump er skrevet ind VB.NET en eksekverbar fil, der er beskyttet af en beskytter, vi kender ConfuserEx.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Efter at have fjernet beskytteren, bruger vi YARA-reglerne skrevet tidligere og sikrer, at den udpakkede malware virkelig er AgentTesla.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3

Prøve nr. 2

Kildefilen er et MS Excel-dokument. En indbygget makro forårsager udførelse af ondsindet kode.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Som et resultat lanceres PowerShell-scriptet.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Scriptet dekrypterer C#-koden og overfører kontrol til den. Selve koden er en bootloader, som det også kan ses af sandbox-rapporten.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Nyttelasten er en eksekverbar . NET-fil.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Åbner filen i dnSpy x86, kan du se, at den er sløret. Fjernelse af sløring ved hjælp af værktøjet de4dot og vende tilbage til analysen.

Når du undersøger koden, kan du opdage følgende funktion:

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
De kodede linjer er slående Indgang и påberåbe. Vi putter breakpoint til den første linje, kør og gem bufferværdien byte_0.

Dumpen er igen en ansøgning på . NET og beskyttet ConfuserEx.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Vi fjerner sløring vha de4dot og upload til dnSpy. Ud fra filbeskrivelsen forstår vi, at vi står over for CyaX-Sharp læsser.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Denne læsser har omfattende anti-analyse funktionalitet.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Denne funktionalitet omfatter omgåelse af indbyggede Windows-beskyttelsessystemer, deaktivering af Windows Defender samt mekanismer til registrering af sandkasse og virtuelle maskiner. Det er muligt at indlæse nyttelasten fra netværket eller gemme den i ressourceafsnittet. Lancering udføres gennem injektion i sin egen proces, i en duplikat af sin egen proces eller i processer MSBuild.exe, vbc.exe и RegSvcs.exe afhængigt af den parameter valgt af angriberen.

Men for os er de mindre betydningsfulde end AntiDump-funktion, der tilføjer ConfuserEx. Dens kildekode kan findes på GitHub.

For at deaktivere beskyttelsen vil vi benytte lejligheden dnSpy, som giver dig mulighed for at redigere IL-kode.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Gem og installer breakpoint til linjen for at kalde nyttelastdekrypteringsfunktionen. Det er placeret i konstruktøren af ​​hovedklassen.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Vi starter og dumper nyttelasten. Ved at bruge de tidligere skrevne YARA-regler sikrer vi, at dette er AgentTesla.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3

Prøve nr. 3

Kildefilen er den eksekverbare VB Native PE32-fil.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Entropianalyse viser tilstedeværelsen af ​​et stort stykke krypteret data.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Ved analyse af ansøgningsskemaet i VB Decompiler du kan bemærke en mærkelig pixeleret baggrund.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Entropi graf bmp-image er identisk med entropigrafen for den originale fil, og størrelsen er 85% af filstørrelsen.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Det generelle udseende af billedet indikerer brugen af ​​steganografi.

Lad os være opmærksomme på udseendet af procestræet samt tilstedeværelsen af ​​en injektionsmarkør.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Dette indikerer, at udpakningen er i gang. Til Visual Basic-loadere (aka VBKrypt eller VBI Injektor) typisk brug shell-kode at initialisere nyttelasten, samt at udføre selve injektionen.

Analyse i VB Decompiler viste tilstedeværelsen af ​​en begivenhed Load ved formularen FegatassocAirballoon2.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Lad os gå til IDA pro til den angivne adresse og studere funktionen. Koden er stærkt sløret. Det fragment, der interesserer os, præsenteres nedenfor.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Her scannes processens adresserum for en signatur. Denne tilgang er yderst tvivlsom.

Først startadressen til scanningen 0x400100. Denne værdi er statisk og justeres ikke, når basen forskydes. Under ideelle drivhusforhold vil det angive slutningen PE-overskriften på den eksekverbare fil. Databasen er dog ikke statisk, dens værdi kan ændre sig, og det kan tage meget lang tid at søge efter den rigtige adresse på den påkrævede signatur, selvom det ikke vil forårsage et variabelt overløb.

For det andet, betydningen af ​​signaturen iWGK. Jeg synes, det er indlysende, at 4 bytes er for lille til at garantere unikhed. Og hvis du tager det første punkt i betragtning, er sandsynligheden for at lave en fejl ret stor.

Faktisk er det nødvendige fragment knyttet til enden af ​​det tidligere fundne bmp-billeder efter offset 0xA1D0D.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
udførelse Shellkode udføres i to etaper. Den første dechifrerer hoveddelen. I dette tilfælde bestemmes nøglen af ​​brute force.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Dump den dekrypterede Shellkode og se på linjerne.

For det første kender vi nu funktionen til at oprette en underordnet proces: CreateProcessInternalW.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
For det andet blev vi opmærksomme på fikseringsmekanismen i systemet.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Lad os gå tilbage til den oprindelige proces. Lad os sætte breakpoint CreateProcessInternalW og fortsætte udførelsen. Dernæst ser vi sammenhængen NtGetContextThread/NtSetContextThread, som ændrer udførelsesstartadressen til adressen ShellCode.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Vi forbinder til den oprettede proces med en debugger og aktiverer begivenheden Suspender ved indlæsning/aflæsning af bibliotek, genoptag processen og vent på indlæsning . NET-biblioteker.

Yderligere brug ProcessHacker dump regioner indeholdende udpakket . NET-Ansøgning.

Vi stopper alle processer og sletter kopien af ​​den malware, der er blevet indlejret i systemet.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Den dumpede fil er beskyttet af en beskytter .NET-reaktor, som nemt kan fjernes ved hjælp af et hjælpeprogram de4dot.

Valgdeltagelse mislykkedes: Lad os udsætte AgentTesla for rent vand. Del 3
Ved at bruge YARA-reglerne skrevet tidligere sikrer vi os, at dette er AgentTesla.

For at opsummere

Så vi demonstrerede i detaljer processen med semi-automatisk prøveudpakning ved at bruge tre mini-cases som et eksempel, og vi analyserede også malware baseret på en fuldgyldig sag, idet vi fandt ud af, at prøven under undersøgelse er AgentTesla, hvilket etablerede dens funktionalitet og en komplet liste over indikatorer for kompromis.

Analysen af ​​det ondsindede objekt, som vi har udført, kræver meget tid og kræfter, og dette arbejde bør udføres af en særlig medarbejder i virksomheden, men ikke alle virksomheder er klar til at ansætte en analytiker.

En af de tjenester, der leveres af Group-IB Laboratory of Computer Forensics and Malicious Code Analysis, er reaktion på cyberhændelser. Og for at kunderne ikke skal spilde tid på at godkende dokumenter og diskutere dem midt i et cyberangreb, lancerede Group-IB Incident Response Retainer, en hændelsesvarstjeneste før abonnement, der også inkluderer et malware-analysetrin. Mere information om dette kan findes her.

Hvis du endnu en gang vil studere, hvordan AgentTesla-prøver pakkes ud og se, hvordan en CERT Group-IB-specialist gør det, kan du downloade webinarets optagelse om dette emne her.

Kilde: www.habr.com

Tilføj en kommentar