Med denne artikel fuldender vi rækken af publikationer, der er viet til analyse af skadelig software. I
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.
Som et resultat bliver nyttelasten downloadet og lanceret.
Analyse af procestræet og adfærdsmarkører viser injektion i processen RegAsm.exe.
Der er adfærdsmarkører, der er karakteristiske for AgentTesla.
Den downloadede prøve er den eksekverbare . NET-fil beskyttet af en beskytter .NET-reaktor.
Lad os åbne det i værktøjet dnSpy x86 og gå videre til indgangspunktet.
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.
I en af de returnerede buffere kan du se MZ-signaturen (0x4D 0x5A). Lad os gemme det.
En dumpet eksekverbar fil er et dynamisk bibliotek, der er en loader, dvs. udtrækker nyttelasten fra ressourcesektionen og starter den.
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.
- Den første giver dig mulighed for at "indsætte" et dynamisk bibliotek i den overordnede prøve.
- Den anden er at omskrive funktionskoden ved indgangspunktet for at kalde den ønskede metode for det indsatte dynamiske bibliotek.
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.
Efter at have fjernet beskytteren, bruger vi YARA-reglerne skrevet tidligere og sikrer, at den udpakkede malware virkelig er AgentTesla.
Prøve nr. 2
Kildefilen er et MS Excel-dokument. En indbygget makro forårsager udførelse af ondsindet kode.
Som et resultat lanceres PowerShell-scriptet.
Scriptet dekrypterer C#-koden og overfører kontrol til den. Selve koden er en bootloader, som det også kan ses af sandbox-rapporten.
Nyttelasten er en eksekverbar . NET-fil.
Å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:
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.
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.
Denne læsser har omfattende anti-analyse funktionalitet.
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å
For at deaktivere beskyttelsen vil vi benytte lejligheden dnSpy, som giver dig mulighed for at redigere IL-kode.
Gem og installer breakpoint til linjen for at kalde nyttelastdekrypteringsfunktionen. Det er placeret i konstruktøren af hovedklassen.
Vi starter og dumper nyttelasten. Ved at bruge de tidligere skrevne YARA-regler sikrer vi, at dette er AgentTesla.
Prøve nr. 3
Kildefilen er den eksekverbare VB Native PE32-fil.
Entropianalyse viser tilstedeværelsen af et stort stykke krypteret data.
Ved analyse af ansøgningsskemaet i VB Decompiler du kan bemærke en mærkelig pixeleret baggrund.
Entropi graf bmp-image er identisk med entropigrafen for den originale fil, og størrelsen er 85% af filstørrelsen.
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.
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.
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.
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.
udførelse Shellkode udføres i to etaper. Den første dechifrerer hoveddelen. I dette tilfælde bestemmes nøglen af brute force.
Dump den dekrypterede Shellkode og se på linjerne.
For det første kender vi nu funktionen til at oprette en underordnet proces: CreateProcessInternalW.
For det andet blev vi opmærksomme på fikseringsmekanismen i systemet.
Lad os gå tilbage til den oprindelige proces. Lad os sætte breakpoint på CreateProcessInternalW og fortsætte udførelsen. Dernæst ser vi sammenhængen NtGetContextThread/NtSetContextThread, som ændrer udførelsesstartadressen til adressen ShellCode.
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.
Den dumpede fil er beskyttet af en beskytter .NET-reaktor, som nemt kan fjernes ved hjælp af et hjælpeprogram de4dot.
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
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
Kilde: www.habr.com