Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3

Týmto článkom dopĺňame sériu publikácií venovaných analýze škodlivého softvéru. IN prvá časť Vykonali sme podrobnú analýzu infikovaného súboru, ktorý európska spoločnosť dostala poštou a objavila tam spyware AgentTesla. In druhá časť opísal výsledky podrobnej analýzy hlavného modulu AgentTesla.

Ilya Pomerantsev, špecialista na analýzu malvéru v CERT Group-IB, dnes porozpráva o prvej fáze analýzy malvéru - poloautomatickom rozbaľovaní vzoriek AgentTesla na príklade troch miniprípadov z praxe špecialistov CERT Group-IB.

Prvým stupňom analýzy malvéru je zvyčajne odstránenie ochrany vo forme balíčka, kryptora, protektora alebo zavádzača. Vo väčšine prípadov sa tento problém dá vyriešiť spustením malvéru a vykonaním výpisu, ale existujú situácie, kedy táto metóda nie je vhodná. Napríklad, ak je malvér šifrovačom, ak chráni svoje pamäťové oblasti pred dumpingom, ak kód obsahuje detekčné mechanizmy virtuálneho počítača alebo ak sa malvér reštartuje ihneď po spustení. V takýchto prípadoch sa používa takzvané „poloautomatické“ vybaľovanie, to znamená, že výskumník má úplnú kontrolu nad procesom a môže kedykoľvek zasiahnuť. Uvažujme tento postup s použitím troch vzoriek rodiny AgentTesla ako príkladu. Ide o relatívne neškodný malvér, ak mu zakážete prístup k sieti.

Ukážka č.1

Zdrojový súbor je dokument MS Word, ktorý využíva zraniteľnosť CVE-2017-11882.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
V dôsledku toho sa stiahne a spustí užitočné zaťaženie.

Analýza procesného stromu a behaviorálnych markerov ukazuje vstreknutie do procesu RegAsm.exe.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Existujú behaviorálne markery charakteristické pre AgentTesla.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Stiahnutá vzorka je spustiteľná . NET-súbor chránený chráničom .NET reaktor.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Otvorme to v utilite dnSpy x86 a prejdite na vstupný bod.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Prechodom na funkciu DateTimeOffset, nájdeme inicializačný kód pre nový . NET-modul. Položme breakpoint na riadku, ktorý nás zaujíma, a spustite súbor.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
V jednom z vrátených medzipamätí môžete vidieť podpis MZ (0x4D 0x5A). Uložme si to.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Dumpovaný spustiteľný súbor je dynamická knižnica, ktorá je zavádzačom, t.j. extrahuje užitočné zaťaženie zo sekcie zdrojov a spustí ho.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Zároveň sa na skládke nenachádzajú potrebné zdroje. Sú v rodičovskej vzorke.

Užitočnosť dnSpy má dve mimoriadne užitočné funkcie, ktoré nám pomôžu pomerne rýchlo vytvoriť „Frankenstein“ z dvoch súvisiacich súborov.

  1. Prvý vám umožňuje „prilepiť“ dynamickú knižnicu do nadradenej vzorky.

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3

  2. Druhým je prepísanie kódu funkcie vo vstupnom bode, aby sa zavolala požadovaná metóda vloženej dynamickej knižnice.

    Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3

Uložíme našu súpravu „Frankenstein“. breakpoint na linke, ktorá vracia vyrovnávaciu pamäť s dešifrovanými zdrojmi, a vytvorí výpis analogicky ako v predchádzajúcej fáze.

Druhý výpis je zapísaný v VB.NET spustiteľný súbor, ktorý je chránený nám známym ochrancom ConfuserEx.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Po odstránení chrániča používame pravidlá YARA napísané skôr a uisťujeme sa, že rozbalený malvér je skutočne AgentTesla.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3

Ukážka č.2

Zdrojový súbor je dokument MS Excel. Vstavané makro spôsobuje spustenie škodlivého kódu.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
V dôsledku toho sa spustí skript PowerShell.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Skript dešifruje kód C# a odovzdá mu kontrolu. Samotný kód je zavádzač, ako je možné vidieť aj zo správy o karanténe.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Užitočné zaťaženie je spustiteľný súbor . NET- súbor.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Otváranie súboru v dnSpy x86, môžete vidieť, že je to zahmlené. Odstránenie zahmlievania pomocou pomôcky de4dot a vrátiť sa k analýze.

Pri skúmaní kódu môžete objaviť nasledujúcu funkciu:

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Zakódované čiary sú nápadné Vstupný bod и vzývať. Dali sme breakpoint do prvého riadku, spustite a uložte hodnotu vyrovnávacej pamäte byte_0.

Výpis je opäť aplikácia na . NET a chránené ConfuserEx.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Odstraňujeme zmätok pomocou de4dot a nahrať do dnSpy. Z popisu súboru sme pochopili, že sme konfrontovaní Nakladač CyaX-Sharp.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Tento nakladač má rozsiahlu funkciu antianalýzy.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Táto funkcia zahŕňa obídenie vstavaných ochranných systémov Windows, zakázanie programu Windows Defender, ako aj detekčných mechanizmov sandbox a virtuálnych strojov. Užitočné zaťaženie je možné načítať zo siete alebo uložiť do sekcie zdrojov. Spustenie sa vykonáva prostredníctvom injekcie do vlastného procesu, do duplikátu vlastného procesu alebo do procesov MSBuild.exe, vbc.exe и RegSvcs.exe v závislosti od parametra zvoleného útočníkom.

Pre nás sú však menej významné ako AntiDump- funkcia, ktorá pridáva ConfuserEx. Jeho zdrojový kód možno nájsť na GitHub.

Na deaktiváciu ochrany využijeme túto príležitosť dnSpy, ktorý vám umožňuje upravovať IL-kód.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Uložiť a nainštalovať breakpoint do riadku volania funkcie dešifrovania užitočného zaťaženia. Nachádza sa v konštruktore hlavnej triedy.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Spustíme a vyhodíme užitočné zaťaženie. Pomocou predtým napísaných pravidiel YARA sa ubezpečíme, že ide o AgentTesla.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3

Ukážka č.3

Zdrojový súbor je spustiteľný súbor VB Native PE32- súbor.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Analýza entropie ukazuje prítomnosť veľkého kusu šifrovaných údajov.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Pri analýze formulára žiadosti v VB Decompiler môžete si všimnúť zvláštne pixelované pozadie.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Graf entropie bmp-image je identický s grafom entropie pôvodného súboru a veľkosť je 85 % veľkosti súboru.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Celkový vzhľad obrázka naznačuje použitie steganografie.

Venujme pozornosť vzhľadu procesného stromu, ako aj prítomnosti injekčnej značky.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
To znamená, že prebieha rozbaľovanie. Pre zavádzače jazyka Visual Basic (aka VBKrypt alebo VBIinjektor) typické použitie shell kód na inicializáciu užitočného zaťaženia, ako aj na vykonanie samotnej injekcie.

Analýza v VB Decompiler ukázal prítomnosť udalosti Load vo formulári FegatassocAirballoon2.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Poďme do IDA pre na zadanú adresu a preštudujte si funkciu. Kód je značne zahmlený. Fragment, ktorý nás zaujíma, je uvedený nižšie.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Tu sa v adresnom priestore procesu skenuje podpis. Tento prístup je mimoriadne pochybný.

Po prvé, počiatočná adresa skenovania 0x400100. Táto hodnota je statická a pri posunutí základne sa neupravuje. V ideálnych skleníkových podmienkach bude znamenať koniec PE-hlavička spustiteľného súboru. Databáza však nie je statická, jej hodnota sa môže meniť a hľadanie skutočnej adresy požadovaného podpisu, hoci nespôsobí premenlivé pretečenie, môže trvať veľmi dlho.

Po druhé, význam podpisu iWGK. Myslím, že je zrejmé, že 4 bajty sú príliš malé na to, aby zaručili jedinečnosť. A ak vezmete do úvahy prvý bod, pravdepodobnosť, že urobíte chybu, je pomerne vysoká.

V skutočnosti je požadovaný fragment pripojený na koniec predtým nájdeného bmp- obrázky s posunom 0xA1D0D.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
poprava Shellcode realizované v dvoch etapách. Prvý dešifruje hlavné telo. V tomto prípade je kľúč určený hrubou silou.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Odložte dešifrovaný Shellcode a pozrite sa na čiary.

Po prvé, teraz poznáme funkciu na vytvorenie podriadeného procesu: CreateProcessInternalW.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Po druhé, uvedomili sme si mechanizmus fixácie v systéme.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Vráťme sa k pôvodnému procesu. Položme breakpoint na CreateProcessInternalW a pokračovať vo vykonávaní. Ďalej vidíme súvislosť NtGetContextThread/NtSetContextThread, ktorý zmení adresu spustenia vykonávania na adresu ShellCode.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Na vytvorený proces sa pripojíme debuggerom a aktivujeme udalosť Pozastaviť pri načítaní/odkladaní knižnice, pokračujte v procese a počkajte na načítanie . NET-knižnice.

Ďalšie použitie ProcessHacker skládkové oblasti obsahujúce rozbalené . NET-aplikácia.

Zastavíme všetky procesy a odstránime kópiu škodlivého softvéru, ktorý je zabudovaný do systému.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Uložený súbor je chránený ochranou .NET reaktor, ktorý sa dá jednoducho odstrániť pomocou pomôcky de4dot.

Volebná účasť zlyhala: vystavme Agent Teslu čistej vode. Časť 3
Pomocou pravidiel YARA napísaných vyššie sa ubezpečíme, že ide o AgentTesla.

Aby sme to zhrnuli

Podrobne sme teda demonštrovali proces poloautomatického rozbaľovania vzoriek na príklade troch mini puzdier a tiež sme analyzovali malvér na základe plnohodnotného prípadu, pričom sme zistili, že skúmaná vzorka je AgentTesla, pričom sme stanovili jeho funkčnosť a úplný zoznam indikátorov kompromisu.

Analýza škodlivého predmetu, ktorú sme vykonali, si vyžaduje veľa času a úsilia a túto prácu by mal vykonávať špeciálny zamestnanec v spoločnosti, ale nie všetky spoločnosti sú pripravené zamestnať analytika.

Jednou zo služieb, ktoré poskytuje Laboratórium počítačovej forenznej analýzy a analýzy škodlivého kódu Group-IB, je reakcia na kybernetické incidenty. A aby zákazníci nestrácali čas schvaľovaním dokumentov a diskusiou o nich uprostred kybernetického útoku, Group-IB spustila Záchytka reakcie na incident, službu odozvy na incidenty pred predplatením, ktorá zahŕňa aj krok analýzy škodlivého softvéru. Viac informácií o tom možno nájsť tu.

Ak si chcete ešte raz naštudovať, ako sa rozbaľujú vzorky AgentTesla a vidieť, ako to robí špecialista CERT Group-IB, môžete si stiahnuť záznam webinára na túto tému tu.

Zdroj: hab.com

Pridať komentár