Případová studie: CSIRT.CZ a statická analýza malware

Na základě upozornění nejmenované hostingové společnosti jsme se dostali k analýze souboru WindowsDefenderService.ini), který aktuálně není rozpoznán žádným z běžných antivirů, a dále souboru (EventManager.dll), jenž rozpoznají pouze tři antivirové systémy. Po prozkoumání obou jsme se rozhodli publikovat tento blogpost, který by měl ostatním pomoci zjistit, zda jejich servery nebyly napadeny; v závěru článku jsou uvedeny IoC, s jejichž využitím by mělo být možné ověřit, zda i vaše servery nebyly kompromitovány.

K samotné analýze jsme dostali čtyři soubory: a.ps1, EventManager.dll, EventManager.logs a WindowsDefenderService.ini. Během počátečního zkoumání vyšlo rychle najevo, že soubor a.ps1 obsahuje skript v powershellu pro tvorbu snímků obrazovky a jejich ukládání do C:\ProgramData\icon.png. Dále se ukázalo, že soubor EventManager.dll není klasická knihovna, ale xml soubor obsahující javascript. Soubor EventManager.logs je ve skutečnosti ini file a WindowsDefenderService.ini změtí textových znaků, které se po chvíli ukázaly jako payload pro zmíněný javascript, který volá powershell s deobfuskovaným obsahem WindowsDefenderService.ini jako command argumentem. Po deobfuskaci pomocí částečného spuštění kódu, dekompresi a přeložení z base64 byl poprvé vidět i samotný zdrojový kód, který byl napsaný pozpátku.

Po přečtení kódu od konce byla jasně vidět struktura jednotlivých funkcí, nicméně kód zůstával i nadále obfuskován. Již byly ale čitelné některé konstanty. Bylo například zjevné, že malware používá api.ipify.org k zjištění veřejné IP adresy. Malware si sebou rovněž nesl 600 delších řetězců (~65 znaků) kódovaných v BASE64, které ovšem po dekódování nedávaly smysl. Rovněž bylo zřejmé, že malware kontroluje existenci antivirových řešení na infikovaném počítači pomocí řetězců „Kasper“, „Panda“, „ESET“, „Symantec“ a „McAfee“.

Po další chvilce zkoumání a několika substitucích se ukázalo, že názvy funkcí a proměnných jsou zakódovány pomocí funkce ROT13. Po jejich dekódování jsme již dostali čitelný zdrojový kód. Ukázalo se, že malware se připojuje na Command & Control server, odkud dostává další příkazy a krom pořizování snímků obrazovky může vykonat prakticky libovolný příkaz.

Při zjišťování k čemu přesně a jak slouží přiložené BASE64 řetězce, byla nalezena funkce, která je kromě dekódování i „dešifruje” pomocí funkce xor a klíče (slova) „secretkey”. Z těchto řetězců se následně vyklubaly URL pro C&C servery, z nichž se náhodně vybíralo pomocí funkce „get-random”. K tomuto výběru docházelo vždy, pokud došlo ke spuštění nebo k problému v komunikaci.

Persistence malware byla zajištěna využitím registrů, konkrétně ve větvi „run” a to jak „HKLM”, tak „HKCU”, a to díky naplánovaným úlohám „schtasks”. Snímky obrazovky malware ukládal do C:\ProgramData\icon.png. Komunikace s Command & Control serverem probíhala každých 135 +/-15 vteřin. V případě pořizování snímku obrazovky se čekalo dalších 15.

Během následujícího víkendu jsme tak dali dohromady potřebné informace, které jsme pak předali dotčené hostingové společnosti. Bohužel nemáme k dispozici informace o vektoru, kterým k napadení serverů došlo. Proto není možné posoudit, zda se jednalo o náhodný útok, nebo zda někdo záměrně útočil na hostingovou společnost. Nicméně právě z těchto důvodů jsme se rozhodli publikovat informace, které mohou pomoci případným dalším obětem zjistit, zda nebyly jejich servery kompromitovány.

Pokud se tedy chcete přesvědčit, zda tento malware nenapadl i vaše servery, můžete využít následující IoC: Seznam C&C serverů a Manipulace s registry.

Martin Kunc, Jan Neduchal

Autor:

Zanechte komentář

Všechny údaje jsou povinné. E-mail nebude zobrazen.