Tímto článkem završujeme sérii publikací věnovaných analýze škodlivého softwaru. V
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.
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.
Existují behaviorální markery charakteristické pro AgentTesla.
Stažený vzorek je spustitelný . NET-soubor chráněný chráničem .NET reaktoru.
Otevřeme to v obslužném programu dnSpy x86 a přejděte ke vstupnímu bodu.
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.
V jednom z vrácených bufferů můžete vidět podpis MZ (0x4D 0x5A). Pojďme si to uložit.
Dumpovaný spustitelný soubor je dynamická knihovna, která je zavaděčem, tzn. extrahuje užitečné zatížení ze sekce zdrojů a spustí jej.
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ů.
- První umožňuje „vložit“ dynamickou knihovnu do nadřazeného vzorku.
- Druhým je přepsání kódu funkce ve vstupním bodě, aby se zavolala požadovaná metoda vložené dynamické knihovny.
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.
Po odstranění chrániče použijeme dříve napsaná pravidla YARA a ujistíme se, že rozbalený malware je skutečně AgentTesla.
Ukázka č. 2
Zdrojový soubor je dokument MS Excel. Vestavěné makro způsobuje spuštění škodlivého kódu.
V důsledku toho se spustí skript PowerShell.
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.
Užitná zátěž je spustitelný soubor . NET-soubor.
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:
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.
Odstraňujeme zmatek pomocí de4dot a nahrát do dnSpy. Z popisu souboru jsme pochopili, že jsme konfrontováni Nakladač CyaX-Sharp.
Tento zavaděč má rozsáhlou funkci antianalýzy.
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
K deaktivaci ochrany využijeme příležitosti dnSpy, který vám umožňuje upravovat IL-kód.
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.
Spustíme a vyhodíme náklad. Pomocí dříve napsaných pravidel YARA se ujistíme, že se jedná o AgentTesla.
Ukázka č. 3
Zdrojový soubor je spustitelný soubor VB Native PE32-soubor.
Analýza entropie ukazuje přítomnost velkého kusu zašifrovaných dat.
Při analýze formuláře žádosti v VB Decompiler můžete si všimnout podivného pixelovaného pozadí.
Graf entropie bmp-image je identický s grafem entropie původního souboru a velikost je 85 % velikosti souboru.
Celkový vzhled obrázku naznačuje použití steganografie.
Věnujme pozornost vzhledu procesního stromu a také přítomnosti injekční značky.
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.
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.
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.
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.
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.
Za druhé jsme si uvědomili mechanismus fixace v systému.
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.
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.
Uložený soubor je chráněn ochranou .NET reaktoru, který lze snadno odstranit pomocí utility de4dot.
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
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
Zdroj: www.habr.com