Výzkum škodlivého kódu je jako puzzle, děláme opak programovaní

Další článek

Analytici malware se snaží pochopit myšlení útočníků. Týdny či měsíce analyzují do detailu různé druhy škodlivého kódu. Jak to v praxi vypadá a co dělají během běžného pracovního dne, vysvětluje Robert Lipovský, senior analytik ve společnosti ESET.

Jak vypadá práce výzkumníka malware?

Jde o výzkum v pravém slova smyslu. My se nevěnujeme detekci. Věnujeme se tomu, co škodlivý kód dělá - prostřednictvím takzvaného reverzního inženýrství. Děláme detailní analýzy a snažíme se pochopit, jak kód funguje, jak přemýšlel útočník, o co mu šlo. Častokrát je to o hledání kontextu. Nedíváme se jen na samotný kód, ale i na metadata: kam se škodlivý kód připojoval, na jaký server, kde se servery nacházejí. Je to jako skládání puzzlů.

Co si pod tím představit v praxi?

Reverzní inženýrství je v principu opak programování. Zatímco programátor má nějakou specifikaci a píše podle ní kód, „reverzeři“ se dívají na existující program, který napsal někdo jiný, nic o něm nevědí a snaží se zjistit, jak funguje a co dělá.

Snažíme se pochopit útočníky a jejich nástroje, nebo zbraně, chcete-li.

Mám si to představit tak, že výzkumník přijde do práce, otevře počítač a má na něm dvě stě řádků kódu a v nich hledá nějaké vzorce? To je jako Matrix?!

I tak se to dá říct. Analýza probíhá dvěma základními formami: statickou a dynamickou. Statická znamená, že se dívám na kód a pouze ho čtu, nespustím ho. Na začátku proběhne něco jako překlad. Program je v strojovém jazyce, tedy nějaké jednotky a nuly či příkazy, kterým rozumí procesor. To se dá přeložit pomocí tzv. disassembleru do jazyka, který je čitelný analytikem.

Dá se jít i o úroveň výš a pomocí dekompilátoru ho přetransformovat do něčeho, co je už velmi podobné i zdrojovému kódu a běžným programovacím jazykem, jako například C++.

Čili jsou tam takové mezikroky. My se nedíváme jen na jednotky a nuly, ale už na instrukce a příkazy a ty si procházíme. Pak už jen záleží na tom, do jaké hloubky chceme jít. Pokud jsou tam statisíce řádků, nemá smysl, abychom šli do úplného detailu a strávili nad tím půl roku. Reverzer se soustředí pouze na podstatné části, protože některé věci se opakují a dobře známe, co dělají.

V čem spočívá zmíněná dynamická analýza?

Ta spočívá ve spuštění programu ve speciálním režimu, tzv. debuggeru, ve kterém se program krokuje. To znamená, že ťukám do klávesnice a postupuji příkaz po příkazu, přičemž vidím, jak je program provádí. Za běhu sledujeme, jak program dělá svou práci, což významně pomáhá při analýze. Pak je třeba už jen hodně času a zkušeností a přijdeme na to, co daný program dělá.

Často se setkáváme i s představou, že výzkumník v reálném čase sleduje nějaký hackerský útok, kterému se snaží zabránit. Je to reálné?

V malém množství případů jsme byli i při probíhajícím útoku; a vidíme ho takříkajíc živě, což trošku připomíná popsanou situaci. Naše analýza však standardně probíhá v klidu a offline režimu na zařízení analytika. Situace, kdy se „něco děje“, znamená, že u klienta se škodlivý kód stále detekuje. Tehdy si můžeme nastavit například upozornění a sledujeme, zda se kód nějak mění nebo vyvíjí, případně objevit další „dílky puzzle“. To je pro nás výzkumníků to zajímavé.

Naši kolegové plní i úlohu SOC (Security Operations Center) a dělají bezpečnostní monitoring. Soustředí se právě na události, které se aktuálně dějí u uživatele a umí nějak zasáhnout. Toto ale není primární úkol mého týmu.

Většina malware se opakuje. Výzkumný tým analyzuje jen minimum toho, co detekujeme.

Vzorků malware jsou tisíce, jak se vybírají ty, které budete analyzovat?

Na to je třeba hodně zkušeností. Snažíme se proto z našich lidí vychovat „malware huntery“. To je schopnost identifikovat to zajímavé, co stojí za naši pozornost. Což je také velmi podstatná část naší práce.

V první linií jsou kolegové z detekce. Jejich prioritou je, aby naše produkty chránili zákazníky, tedy aby detekovali škodlivý kód. My máme, dá se říci luxus, že můžeme našemu výzkumu věnovat mnohem více času. Velká část detekce se provádí automaticky. Pokud se vzorky vyhodnocují manuálně, stráví nad tím detekční inženýři řádově minuty na jednu věc. My se dokážeme na vzorek dívat v průměru týdny. Když je to něco jednodušší, tak je to ve dnech. Vyplývá to z podstaty naší práce: provádíme výzkum a snažíme se zjistit něco nového. Drtivá většina škodlivého kódu se opakuje, možná s drobnými variacemi. Pokud střelím od boku, jde o 98 %. Nás zajímají právě ty zbylé 2 % - my hledáme v podstatě jehlu v kupce sena. To, co je nové, nebo svým způsobem zajímavé z technického pohledu, případně z pohledu cílů.

Na co je dobré pochopit fungování škodlivého kódu, zejména pokud jde o takové vzácné případy?

Nejprve je třeba říci, že i toho nového škodlivého kódu je velmi mnoho. Naše systémy evidují kolem 300 tisíc nových unikátních škodlivých souborů denně. To zahrnuje i ty zmiňované variace.

Výsledky naší práce používáme ke zlepšení našich produktů. Na to, abychom chránili naše zákazníky, potřebujeme pochopit, jak škodlivý kód funguje a být o krok před útočníky. Druhou věcí je, že naše výsledky publikujeme i veřejně a snažíme se tak vzdělávat jednak odborníky, ale i širokou veřejnost.

Technicky perfektní kód může být i obdivuhodný, je ale třeba mít na mysli opovrženíhodné úmysly útočníků.

Když se však řekne výzkumník, většina lidí si asi představí chemika nebo fyzika. Jak se člověk vůbec dostane k výzkumníkovi škodlivého kódu?

Programování samo o sobě je zajímavá disciplína a reverzní inženýrství je minimálně pro nás ještě zajímavější. Dělá to méně lidí, je to úzká specializace a je to opravdu zajímavé pro ty, kteří rádi věci rozebírají a snaží se zjistit, jak věci fungují. Čili ideální pro lidi, kteří jako děti rádi rozebírali hračky. My se snažíme pochopit, jak fungují zbraně útočníků a díky tomu víme ochránit potenciální oběti.

K závěru možná trochu filozofická otázka. Dokáže škodlivý kód výzkumníka fascinovat, pokud je napsaný dobře?

Určitě jsou věci, které jsou obdivuhodně pokročilé a technicky velmi vyspělé a ty nás samozřejmě zaujmou, ačkoliv jsou jejich cíle škodlivé. K takovým případům patřily například útoky na Ukrajině, které způsobily výpadky elektřiny. Použili při nich i zbraň největšího kalibru, jakou jsme kdy analyzovali - Industroyer. Takové věci umí být velmi zajímavé.


Robert Lipovský, Senior Malware Researcher

Výzkumník škodlivého kódu s 13letými zkušenostmi a širokým spektrem odborných znalostí, které zahrnují cílené útoky typu APT, kyberzločin i výzkum zranitelností. V ESETu vede tým výzkumníků, který mimo jiné odhalil, jak se udály první útoky vedoucí k masovému výpadku elektřiny nebo původ NotPetya - kyberútoku, který způsobil historicky největší škody na celém světě.

Své objevy pravidelně prezentuje na bezpečnostních konferencích i v médiích. Také přednáší vysokoškolským studentům a vede předmět Základy reverzního inženýrství na Slovenské technické univerzitě a na Univerzitě Komenského.

Když zrovna nesedí za počítačem, nejraději pilotuje letadlo, poznává nové země, hraje na kytaru či jezdí na snowboardu.

Podívejte se na články z dalších kategorií: