Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3

Tímto článkem završujeme sérii publikací věnovaných analýze škodlivého softwaru. V první část Provedli jsme podrobnou analýzu infikovaného souboru, který evropská společnost obdržela poštou, a objevili v něm spyware AgentTesla. v druhé části popsal výsledky analýzy krok za krokem hlavního modulu AgentTesla.

Ilya Pomerantsev, specialista na analýzu malwaru v CERT Group-IB, dnes bude hovořit o první fázi analýzy malwaru - poloautomatickém rozbalování vzorků AgentTesla na příkladu tří minipřípadů z praxe specialistů CERT Group-IB.

První fází analýzy malwaru je obvykle odstranění ochrany ve formě packeru, kryptoru, ochránce nebo zavaděče. Ve většině případů lze tento problém vyřešit spuštěním malwaru a provedením výpisu, ale existují situace, kdy tato metoda není vhodná. Například, pokud je malware šifrátor, pokud chrání své paměťové oblasti před výpisem, pokud kód obsahuje mechanismy detekce virtuálního počítače nebo pokud se malware restartuje ihned po spuštění. V takových případech se používá tzv. „poloautomatické“ vybalování, to znamená, že výzkumník má nad procesem úplnou kontrolu a může kdykoli zasáhnout. Uvažujme tento postup na příkladu tří vzorků z rodiny AgentTesla. Jedná se o relativně neškodný malware, pokud mu zakážete přístup k síti.

Ukázka č. 1

Zdrojový soubor je dokument MS Word, který využívá zranitelnost CVE-2017-11882.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
V důsledku toho se stáhne a spustí užitečné zatížení.

Analýza procesního stromu a behaviorálních markerů ukazuje injekci do procesu RegAsm.exe.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Existují behaviorální markery charakteristické pro AgentTesla.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Stažený vzorek je spustitelný . NET-soubor chráněný chráničem .NET reaktoru.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Otevřeme to v obslužném programu dnSpy x86 a přejděte ke vstupnímu bodu.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Přechodem na funkci DateTimeOffset, najdeme inicializační kód pro nový . NET-modul. Položme breakpoint na řádku, který nás zajímá, a spusťte soubor.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
V jednom z vrácených bufferů můžete vidět podpis MZ (0x4D 0x5A). Pojďme si to uložit.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Dumpovaný spustitelný soubor je dynamická knihovna, která je zavaděčem, tzn. extrahuje užitečné zatížení ze sekce zdrojů a spustí jej.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Přitom samotné potřebné zdroje na skládce nejsou. Jsou v rodičovském vzorku.

Užitečnost dnSpy má dvě mimořádně užitečné funkce, které nám pomohou poměrně rychle vytvořit „Frankensteina“ ze dvou souvisejících souborů.

  1. První umožňuje „vložit“ dynamickou knihovnu do nadřazeného vzorku.

    Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3

  2. Druhým je přepsání kódu funkce ve vstupním bodě, aby se zavolala požadovaná metoda vložené dynamické knihovny.

    Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3

Uložíme naši sadu „Frankenstein“. breakpoint na lince vracející vyrovnávací paměť s dešifrovanými zdroji a vytvořit výpis analogií s předchozí fází.

Druhý výpis je zapsán VB.NET spustitelný soubor, který je chráněn nám známým ochráncem ConfuserEx.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Po odstranění chrániče použijeme dříve napsaná pravidla YARA a ujistíme se, že rozbalený malware je skutečně AgentTesla.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3

Ukázka č. 2

Zdrojový soubor je dokument MS Excel. Vestavěné makro způsobuje spuštění škodlivého kódu.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
V důsledku toho se spustí skript PowerShell.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Skript dešifruje kód C# a předá mu řízení. Samotný kód je bootloader, jak je také vidět ze zprávy sandboxu.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Užitná zátěž je spustitelný soubor . NET-soubor.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Otevření souboru v dnSpy x86, vidíte, že je to zamlžené. Odstranění zmatku pomocí nástroje de4dot a vrátit se k analýze.

Při zkoumání kódu můžete objevit následující funkci:

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Kódované čáry jsou nápadné Vstupní bod и vzývat. Vložili jsme breakpoint na první řádek, spusťte a uložte hodnotu vyrovnávací paměti byte_0.

Výpis je opět aplikace na . NET a chráněny ConfuserEx.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Odstraňujeme zmatek pomocí de4dot a nahrát do dnSpy. Z popisu souboru jsme pochopili, že jsme konfrontováni Nakladač CyaX-Sharp.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Tento zavaděč má rozsáhlou funkci antianalýzy.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Tato funkce zahrnuje obcházení vestavěných ochranných systémů Windows, deaktivaci programu Windows Defender a také mechanismy detekce sandboxu a virtuálních strojů. Je možné načíst užitečné zatížení ze sítě nebo uložit do sekce zdrojů. Spuštění se provádí prostřednictvím injekce do vlastního procesu, do duplikátu vlastního procesu nebo do procesů MSBuild.exe, vbc.exe и RegSvcs.exe v závislosti na parametru zvoleném útočníkem.

Pro nás jsou však méně významné než AntiDump- funkce, která přidává ConfuserEx. Jeho zdrojový kód lze nalézt na GitHub.

K deaktivaci ochrany využijeme příležitosti dnSpy, který vám umožňuje upravovat IL-kód.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Uložit a nainstalovat breakpoint na řádek volání funkce dešifrování užitečného zatížení. Nachází se v konstruktoru hlavní třídy.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Spustíme a vyhodíme náklad. Pomocí dříve napsaných pravidel YARA se ujistíme, že se jedná o AgentTesla.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3

Ukázka č. 3

Zdrojový soubor je spustitelný soubor VB Native PE32-soubor.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Analýza entropie ukazuje přítomnost velkého kusu zašifrovaných dat.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Při analýze formuláře žádosti v VB Decompiler můžete si všimnout podivného pixelovaného pozadí.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Graf entropie bmp-image je identický s grafem entropie původního souboru a velikost je 85 % velikosti souboru.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Celkový vzhled obrázku naznačuje použití steganografie.

Věnujme pozornost vzhledu procesního stromu a také přítomnosti injekční značky.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
To znamená, že probíhá vybalování. Pro zavaděče jazyka Visual Basic (aka VBKrypt nebo VBIinjektor) typické použití shell kód k inicializaci užitečného zatížení, stejně jako k provedení samotného vstřiku.

Analýza v VB Decompiler ukázal přítomnost události Zatížení ve formuláři FegatassocAirballoon2.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Pojďme IDA pro na zadanou adresu a prostudujte si funkci. Kód je silně zastřený. Fragment, který nás zajímá, je uveden níže.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Zde je adresový prostor procesu skenován na podpis. Tento přístup je velmi pochybný.

Nejprve počáteční adresa skenování 0x400100. Tato hodnota je statická a při posunutí základny se neupravuje. V ideálních skleníkových podmínkách bude znamenat konec PE-záhlaví spustitelného souboru. Databáze však není statická, její hodnota se může měnit a hledání skutečné adresy požadovaného podpisu, byť nezpůsobí proměnné přetečení, může trvat velmi dlouho.

Za druhé, význam podpisu iWGK. Myslím, že je zřejmé, že 4 bajty jsou příliš malé na to, aby zaručily jedinečnost. A pokud vezmete v úvahu první bod, pravděpodobnost, že uděláte chybu, je poměrně vysoká.

Ve skutečnosti je požadovaný fragment připojen ke konci dříve nalezeného bmp- obrázky podle ofsetu 0xA1D0D.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Provedení Shellcode prováděny ve dvou etapách. První dešifruje hlavní tělo. V tomto případě je klíč určen hrubou silou.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Vyhoďte ten dešifrovaný Shellcode a podívejte se na čáry.

Za prvé, nyní známe funkci pro vytvoření podřízeného procesu: CreateProcessInternalW.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Za druhé jsme si uvědomili mechanismus fixace v systému.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Vraťme se k původnímu procesu. Položme breakpoint na CreateProcessInternalW a pokračovat v provádění. Dále vidíme souvislost NtGetContextThread/NtSetContextThread, který změní adresu zahájení provádění na adresu ShellCode.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Na vytvořený proces se připojíme debuggerem a aktivujeme událost Pozastavit při načítání/vykládání knihovny, pokračujte v procesu a počkejte na načtení . NET-knihovny.

Další použití ProcessHacker oblasti výpisu obsahující rozbalené . NET-aplikace.

Zastavíme všechny procesy a smažeme kopii malwaru, která se zabudovala do systému.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Uložený soubor je chráněn ochranou .NET reaktoru, který lze snadno odstranit pomocí utility de4dot.

Volební účast selhala: vystavme AgentTeslu čisté vodě. Část 3
Pomocí pravidel YARA napsaných dříve se ujistíme, že se jedná o AgentTesla.

Abychom to shrnuli

Podrobně jsme tedy demonstrovali proces poloautomatického rozbalování vzorku na příkladu tří mini případů a také analyzovali malware na základě plnohodnotného případu, zjistili jsme, že zkoumaným vzorkem je AgentTesla, a stanovili jeho funkčnost a kompletní seznam indikátorů kompromisu.

Analýza škodlivého předmětu, kterou jsme provedli, vyžaduje mnoho času a úsilí a tuto práci by měl provádět speciální zaměstnanec ve společnosti, ale ne všechny společnosti jsou připraveny zaměstnat analytika.

Jednou ze služeb, které Group-IB Laboratory of Computer Forensics and Malicious Code Analysis poskytuje, je reakce na kybernetické incidenty. A aby zákazníci neztráceli čas schvalováním dokumentů a jejich projednáváním uprostřed kybernetického útoku, Group-IB spustila Pojistka reakce na incident, služba reakce na incidenty před předplatným, která také zahrnuje krok analýzy malwaru. Více informací o tom lze nalézt zde.

Pokud si chcete ještě jednou prostudovat, jak se rozbalují vzorky AgentTesla a podívat se, jak to dělá specialista CERT Group-IB, můžete si stáhnout záznam webináře na toto téma zde.

Zdroj: www.habr.com

Přidat komentář