Met dit artikel completeren we de reeks publicaties gewijd aan de analyse van kwaadaardige software. IN
Vandaag zal Ilya Pomerantsev, specialist in malware-analyse bij CERT Group-IB, spreken over de eerste fase van malware-analyse: het semi-automatisch uitpakken van AgentTesla-monsters aan de hand van het voorbeeld van drie mini-cases uit de praktijk van CERT Group-IB-specialisten.
Normaal gesproken bestaat de eerste fase van de malwareanalyse uit het verwijderen van bescherming in de vorm van een packer, cryptor, protector of loader. In de meeste gevallen kan dit probleem worden opgelost door de malware uit te voeren en een dump uit te voeren, maar er zijn situaties waarin deze methode niet geschikt is. Als de malware bijvoorbeeld een encryptor is, als deze de geheugenregio's beschermt tegen dumpen, als de code detectiemechanismen voor virtuele machines bevat, of als de malware onmiddellijk na het starten opnieuw opstart. In dergelijke gevallen wordt gebruik gemaakt van het zogenaamde “semi-automatische” uitpakken, dat wil zeggen dat de onderzoeker volledige controle over het proces heeft en op elk moment kan ingrijpen. Laten we deze procedure eens bekijken aan de hand van drie voorbeelden uit de AgentTesla-familie als voorbeeld. Dit is een relatief onschadelijke malware als u de netwerktoegang uitschakelt.
Monster nr. 1
Het bronbestand is een MS Word-document dat misbruik maakt van de kwetsbaarheid CVE-2017-11882.
Als gevolg hiervan wordt de payload gedownload en gelanceerd.
Analyse van de procesboom en gedragsmarkers laat een injectie in het proces zien RegAsm.exe.
Er zijn gedragskenmerken die kenmerkend zijn voor AgentTesla.
Het gedownloade voorbeeld is het uitvoerbare voorbeeld . NET-bestand beschermd door een beschermer .NET-reactor.
Laten we het openen in het hulpprogramma dnSpy x86 en ga verder naar het instappunt.
Door naar de functie te gaan DatumTijdOffset, zullen we de initialisatiecode voor het nieuwe vinden . NET-module. Laten we breekpunt op de lijn waarin we geïnteresseerd zijn en voer het bestand uit.
In een van de geretourneerde buffers ziet u de MZ-handtekening (0x4D 0x5A). Laten we het redden.
Een gedumpt uitvoerbaar bestand is een dynamische bibliotheek die een lader is, d.w.z. haalt de payload uit de resourcesectie en start deze.
Tegelijkertijd zijn de noodzakelijke hulpbronnen zelf niet aanwezig op de stortplaats. Ze zitten in het oudermonster.
Nut dnSpy heeft twee uiterst nuttige functionaliteiten waarmee we vrij snel een “Frankenstein” kunnen maken van twee gerelateerde bestanden.
- Met de eerste kunt u een dynamische bibliotheek in het bovenliggende voorbeeld 'plakken'.
- De tweede is het herschrijven van de functiecode op het toegangspunt om de gewenste methode van de ingevoegde dynamische bibliotheek aan te roepen.
We redden onze “Frankenstein”, set breekpunt op de regel retourneert een buffer met gedecodeerde bronnen, en produceert een dump naar analogie met de vorige fase.
De tweede dump is ingeschreven VB.NET een uitvoerbaar bestand dat wordt beschermd door een bij ons bekende beschermer ConfuserEx.
Nadat we de beschermer hebben verwijderd, gebruiken we de eerder geschreven YARA-regels en zorgen we ervoor dat de uitgepakte malware echt AgentTesla is.
Monster nr. 2
Het bronbestand is een MS Excel-document. Een ingebouwde macro zorgt ervoor dat kwaadaardige code wordt uitgevoerd.
Als gevolg hiervan wordt het PowerShell-script gestart.
Het script decodeert de C#-code en draagt de controle erover over. De code zelf is een bootloader, zoals ook te zien is in het sandboxrapport.
De payload is een uitvoerbaar bestand . NET-bestand.
Het bestand openen in dnSpy x86, je kunt zien dat het versluierd is. Verduistering verwijderen met behulp van het hulpprogramma de4dot en ga terug naar de analyse.
Wanneer u de code onderzoekt, ontdekt u mogelijk de volgende functie:
De gecodeerde lijnen zijn opvallend Ingangspunt и inroepen. We zetten breekpunt naar de eerste regel, voer de bufferwaarde uit en sla deze op byte_0.
Op de dump staat weer een applicatie op . NET en beschermd ConfuserEx.
We verwijderen verduistering met behulp van de4dot en uploaden naar dnSpy. Uit de dossierbeschrijving begrijpen wij dat wij hiermee te maken hebben CyaX-Sharp-lader.
Deze lader beschikt over uitgebreide anti-analysefunctionaliteit.
Deze functionaliteit omvat het omzeilen van ingebouwde Windows-beveiligingssystemen, het uitschakelen van Windows Defender, evenals detectiemechanismen voor sandbox- en virtuele machines. Het is mogelijk om de payload van het netwerk te laden of op te slaan in de resourcesectie. De lancering wordt uitgevoerd door middel van injectie in het eigen proces, in een duplicaat van het eigen proces of in processen MSBuild.exe, vbc.exe и RegSvcs.exe afhankelijk van de door de aanvaller gekozen parameter.
Voor ons zijn ze echter minder belangrijk dan AntiDump-functie die toevoegt ConfuserEx. De broncode is te vinden op
Om de bescherming uit te schakelen, zullen we van de gelegenheid gebruik maken dnSpy, waarmee u kunt bewerken IL-code.
Opslaan en installeren breekpunt naar de regel voor het aanroepen van de decoderingsfunctie van de payload. Het bevindt zich in de constructor van de hoofdklasse.
We lanceren en dumpen de lading. Met behulp van de eerder geschreven YARA-regels zorgen we ervoor dat dit AgentTesla is.
Monster nr. 3
Het bronbestand is het uitvoerbare bestand VB Native PE32-bestand.
Entropieanalyse toont de aanwezigheid van een groot stuk gecodeerde gegevens aan.
Bij het analyseren van het aanvraagformulier in VB-decompiler Mogelijk ziet u een vreemde korrelige achtergrond.
Entropie grafiek bmp-image is identiek aan de entropiegrafiek van het originele bestand en de grootte is 85% van de bestandsgrootte.
Het algemene uiterlijk van de afbeelding duidt op het gebruik van steganografie.
Laten we letten op het uiterlijk van de procesboom, evenals op de aanwezigheid van een injectiemarkering.
Dit geeft aan dat het uitpakken bezig is. Voor Visual Basic-laders (ook bekend als VBKrypt of VInjector) typisch gebruik shellcode om de lading te initialiseren, maar ook om de injectie zelf uit te voeren.
Analyse in VB-decompiler toonde de aanwezigheid van een gebeurtenis aan Laden bij het formulier FegatassocLuchtballon2.
Laten we gaan naar IDA-professional naar het opgegeven adres en bestudeer de functie. De code is zwaar versluierd. Het fragment dat ons interesseert, wordt hieronder weergegeven.
Hier wordt de adresruimte van het proces gescand op een handtekening. Deze aanpak is uiterst twijfelachtig.
Ten eerste het startadres van het scannen 0x400100. Deze waarde is statisch en wordt niet aangepast wanneer de basis wordt verschoven. In ideale kasomstandigheden zal dit het einde aangeven PE-de header van het uitvoerbare bestand. De database is echter niet statisch; de waarde ervan kan veranderen, en het zoeken naar het echte adres van de vereiste handtekening kan erg lang duren, ook al veroorzaakt dit geen overloop van variabelen.
Ten tweede de betekenis van de handtekening iWGK. Ik denk dat het duidelijk is dat 4 bytes te klein is om uniciteit te garanderen. En als je rekening houdt met het eerste punt, is de kans op een fout vrij groot.
In feite is het vereiste fragment bevestigd aan het uiteinde van het eerder gevonden fragment bmp-foto's door offset 0xA1D0D.
executie shell-code in twee fasen uitgevoerd. De eerste ontcijfert het hoofdgedeelte. In dit geval wordt de sleutel bepaald door brute kracht.
Dump de gedecodeerde versie shell-code en kijk naar de lijnen.
Ten eerste kennen we nu de functie om een onderliggend proces te creëren: CreateProcessInternalW.
Ten tweede werden we ons bewust van het mechanisme van fixatie in het systeem.
Laten we teruggaan naar het oorspronkelijke proces. Laten we breekpunt op CreateProcessInternalW en doorgaan met de uitvoering. Vervolgens zien we het verband NtGetContextThread/NtSetContextThread, waardoor het startadres van de uitvoering wordt gewijzigd in het adres ShellCode.
We maken verbinding met het gemaakte proces met een debugger en activeren de gebeurtenis Onderbreken bij het laden/ontladen van de bibliotheek, hervat het proces en wacht tot het is geladen . NET-bibliotheken.
Verder gebruiken ProcessHacker dumpregio's met onverpakte . NET-sollicitatie.
We stoppen alle processen en verwijderen de kopie van de malware die in het systeem is ingebed.
Het gedumpte bestand wordt beschermd door een beschermer .NET-reactor, die eenvoudig kan worden verwijderd met een hulpprogramma de4dot.
Met behulp van de eerder geschreven YARA-regels zorgen we ervoor dat dit AgentTesla is.
Samenvattend
We hebben dus in detail het proces van het semi-automatisch uitpakken van monsters gedemonstreerd met behulp van drie mini-cases als voorbeeld, en hebben ook malware geanalyseerd op basis van een volwaardige case, waarbij we ontdekten dat het onderzochte monster AgentTesla is, waarbij we de functionaliteit en een volledige lijst van indicatoren van compromis.
De analyse van het kwaadaardige object dat we hebben uitgevoerd, vergt veel tijd en moeite, en dit werk moet worden uitgevoerd door een speciale medewerker van het bedrijf, maar niet alle bedrijven zijn bereid een analist in dienst te nemen.
Een van de diensten van het Group-IB Laboratory of Computer Forensics and Malicious Code Analysis is de reactie op cyberincidenten. En zodat klanten geen tijd verspillen met het goedkeuren van documenten en het bespreken ervan tijdens een cyberaanval, lanceerde Group-IB Houder voor incidentrespons, een incidentresponsservice vóór abonnement die ook een stap voor malware-analyse omvat. Meer informatie hierover kunt u vinden
Als u nog eens wilt bestuderen hoe AgentTesla-monsters worden uitgepakt en wilt zien hoe een CERT Group-IB-specialist dat doet, kunt u de webinar-opname over dit onderwerp downloaden
Bron: www.habr.com