Výskum škodlivého kódu je ako skladanie puzzle, robíme opak programovania

Robert Lipovsky portret

Výskumníci škodlivého kódu sa snažia pochopiť útočníkov a fungovanie ich zbraní. Aby boli úspešní, týždne či mesiace analyzujú do detailu rôzne druhy škodlivého kódu. Ako to v praxi vyzerá a čo robia počas bežného pracovného dňa, vysvetľuje Robert Lipovský, senior analytik škodlivého kódu v spoločnosti ESET.

V rozhovore sa dočítate:

  • Ako vyzerá práca výskumníka škodlivého kódu?
  • Čo je to reverzné inžinierstvo a ako prebieha?
  • Ako sa dá porozumieť škodlivému kódu?
  • Prečo je analýza škodlivého kódu užitočná?
  • Pre koho je tento typ výskumu vhodný?

Čo si mám predstaviť pod prácou výskumníka škodlivého kódu? Ako vyzerá jeho práca?

Ako napovedá už názov, ide o výskum škodlivého kódu. Misia ESETu je chrániť ľudí a našou úlohou v rámci tejto misie je porozumieť škodlivému kódu, čiže vírusom, trójskym koňom a tak ďalej. Ide o výskum v pravom slova zmysle. My sa nevenujeme detekcii. Venujeme sa tomu, čo škodlivý kód robí – prostredníctvom takzvaného reverzného inžinierstva. Robíme detailné analýzy a snažíme sa pochopiť ako kód funguje, ako rozmýšľal útočník alebo o čo mu išlo. Chceme pochopiť útočníkov a ich nástroje, alebo zbrane ak chcete. Častokrát je to aj o hľadaní kontextu. Nepozeráme sa len na samotný kód, ale aj na metadáta: kam sa škodlivý kód pripájal, na aký server, kde sa servery nachádzajú. Je to ako skladanie puzzle.

Čo si mám pod tým však predstaviť?

Reverzné inžinierstvo je v princípe opak programovania. Kým programátor má nejakú špecifikáciu a píše podľa nej kód, „reverzeri“ sa pozerajú na existujúci program, ktorý napísal niekto iný, nič o ňom nevedia a snažia sa zistiť, ako funguje a čo robí.

Mám si to predstaviť tak, že výskumník príde do práce, otvorí počítač a má na ňom dvesto riadkov kódu, pričom v nich hľadá nejaké vzorce? Niečo, ako v Matrixe?

Dá sa to predstaviť aj takto. Analýza prebieha dvoma základnými formami: statickou a dynamickou. Statická znamená, že sa pozerám na kód a iba ho čítam, nespustím ho. Na začiatku prebehne niečo ako preklad. Program je v strojovom jazyku, teda nejaké jednotky a nuly či príkazy, ktorým rozumie procesor. To sa dá preložiť pomocou tzv. disassembleru do jazyka, ktorý je čitateľný analytikom.

Dá sa ísť aj o úroveň vyššie a pomocou dekompilátora ho pretransformovať do niečoho, čo je už veľmi podobné aj zdrojovému kódu a bežným programovacím jazykom, ako napríklad C++. Čiže sú tam takéto medzikroky a my sa nepozeráme len na jednotky a nuly, ale už na inštrukcie a príkazy a tie si prechádzame. Potom už len záleží od toho, do akej hĺbky chceme ísť. Ak sú tam státisíce riadkov, nemá zmysel, aby sme išli do úplného detailu a strávili nad tým pol roka. Reverzer sa sústredí iba na podstatné časti, pretože niektoré veci sa opakujú a dobre poznáme, čo robia.

Viruslab ESET, Bratislava, zdroj: ESET

Čo je spomínaná dynamická analýza?

Tá spočíva v tom, že sa program spustí v špeciálnom režime, tzv. debuggeri, v ktorom program krokujeme. To znamená, že ťukám do klávesnice a postupujem príkaz po príkaze, pričom vidím, ako sa program vykonáva. To pomáha, pretože za behu sledujeme, ako program robí svoju robotu, čo významne pomáha pri analýze. Potom treba už len veľa času a skúseností a prídeme na to, čo daný program robí.

Ďalšou predstavou môže byť, že si výskumník sadne za počítač a v reálnom čase sleduje nejaký hackerský útok, ktorému sa snaží zabrániť, prípadne zistiť, kto je útočník. Je to reálne?

V malom množstve prípadov sme aj pri prebiehajúcom útoku a vidíme ho takpovediac naživo, čo trošku pripomína popísanú situáciu. Naša analýza však štandardne prebieha v pokoji a offline režime na zariadení analytika. Situácia, kedy sa „niečo deje“, znamená, že u klienta sa škodlivý kód stále deteguje. Vtedy si môžeme nastaviť napríklad upozornenia a sledujeme, či sa kód nejako mení alebo vyvíja, prípadne objaviť ďalšie „dieliky puzzle“. To je pre nás výskumníkov to zaujímavé.

Naši kolegovia plnia aj úlohu SOC (Security Operation Center) a robia security monitoring. Oni sa sústredia práve na udalosti, ktoré sa aktuálne dejú u používateľa a vedia nejako zasiahnuť. Toto ale nie je primárna úloha môjho tímu.

ESET office Bratislava, zdroj: ESET

Vy sa teda snažíte len zanalyzovať škodlivý kód a pochopiť ho.

Áno. Zabudol som však spomenúť ešte jednu dôležitú časť práce výskumníka. Aby sme niečo analyzovali, musíme najskôr vedieť, čo by to malo byť. Musíme identifikovať, čo by stálo za to, aby sme sa na to vôbec pozreli. A na to treba veľa skúseností. Snažíme sa preto z našich ľudí vychovať „malware hunterov“ (po slovensky „lovci škodlivého kódu“). To je schopnosť identifikovať to zaujímavé, čo stojí za našu pozornosť. Toto je tiež veľmi podstatná časť našej práce.

Ako to funguje?

V prvej línií sú kolegovia z detekcie. Ich prioritou je, aby naše produkty chránili našich zákazníkov, teda aby detegovali škodlivý kód. My máme, dá sa povedať, „luxus“, že môžeme nášmu výskumu venovať oveľa viac času. Veľká časť detekcie sa vykonáva automaticky. Ak sa vzorky vyhodnocujú manuálne, strávia nad tým detekční inžinieri rádovo minúty na jednu vec. My sa dokážeme na vzorku pozerať v priemere týždne. Keď je to niečo jednoduchšie, tak je to v dňoch. Vyplýva to z podstaty našej práce: robíme výskum a snažíme sa zistiť niečo nové. Drvivá väčšina škodlivého kódu sa opakuje, možno s drobnými variáciami. Ak strelím od boku, ide o 98 %. Nás zaujímajú práve tie zvyšné 2 % – my hľadáme v podstate ihlu v kope sena. To, čo je nové, alebo svojim spôsobom zaujímavé z technického pohľadu, prípadne z pohľadu cieľov.

Na čo je dobré pochopiť fungovanie škodlivého kódu, najmä pokiaľ ide o takéto vzácne prípady?

Najprv treba povedať, že aj toho nového škodlivého kódu je veľmi veľa. Ak odhliadneme od známych vzoriek, ktoré sa opakujú, tak naše systémy evidujú okolo 300-tisíc nových unikátnych škodlivých súborov denne. To zahŕňa aj tie spomínané variácie. Ale späť k otázke.

Výsledky našej práce používame na zlepšenie našich produktov. Na to, aby sme chránili našich zákazníkov, potrebujeme pochopiť, ako škodlivý kód funguje a byť o krok pred útočníkmi. Druhou vecou je, že naše výsledky publikujeme aj verejne a snažíme sa tak vzdelávať jednak odborníkov, ale aj širokú verejnosť.

Pracovný život v ESET Slovensko, zdroj: ESET

Povedali sme si, ako táto práca vyzerá. Keď sa však povie slovo výskumník, väčšina ľudí si asi predstaví chemika alebo fyzika. Ako sa človek vôbec dostane k výskumníkovi škodlivého kódu?

Programovanie samé o sebe je zaujímavá disciplína a reverzné inžinierstvo je minimálne pre nás ešte zaujímavejšie. Robí to menej ľudí, je to úzka špecializácia a je to naozaj zaujímavé pre tých, ktorí radi veci rozoberajú a snažia sa zistiť, ako veci fungujú. Čiže ideálne pre ľudí, ktorí ako deti radi rozoberali hračky J. Táto zvedavosť sa dá využiť na niečo pozitívne. My sa snažíme pochopiť, ako fungujú zbrane útočníkov a vďaka tomu vieme ochrániť potenciálne obete.

Má takýto výskumník dobré možnosti uplatniť sa?

U nás v ESETe sú možnosti výskumníkov naozaj široké. V rámci nášho technického oddelenia je množstvo rozmanitých úloh a každý si nájde to, čo ho zaujíma. My sa snažíme podporovať ľudí v tom, aby robili naozaj to, čo ich baví. Či už ide o rôzne platformy, programovacie jazyky, alebo povahu práce. Napríklad, či niekoho baví viac analyzovať, ako nás, alebo byť bližšie k tým reálnym útokom a robiť incident response, prípadne vylepšovať detekciu. Tých možností je veľa.

Aké zručnosti sú potrebné na tento druh práce? Spomenul si zvedavosť.

Zvedavosť je asi jeden zo základných soft skillov. Ďalším je túžba neustále sa učiť, aj keď to znie ako klišé, ale u nás to naozaj platí. Samotné IT sa vyvíja veľmi rýchlo, ale u nás to platí dvojnásobne. My sa s útočníkmi vlastne hráme na mačku a myš. Snažíme sa pochopiť ako funguje malvér, aké techniky využívajú útočníci. Naopak, útočníci vymýšľajú stále nové techniky, aby obišli našu detekciu a aby sa im útok podaril. To znamená, že sa výskumník nebude nudiť, no vyžaduje si to neustále vzdelávanie.

Čo sa týka hard skillov, základný jazyk, v ktorom fungujeme, je assembly. To je ten medzikrok medzi klasickými programovacími jazykmi a jednotkami a nulami. Assembly jazyk sa učí aj na niektorých vysokých školách, avšak je určite menej rozšírený ako napríklad Java, či C++.

Človek nemusí byť špičkový programátor, toto nie je naša úloha, ale samozrejme poznanie každého programovacieho jazyka je výhodou, pretože tak človek vie pochopiť fungovanie programov. Tiež si „reverzeri“ programujú rôzne pomocné skripty.

Kde sa môžu tieto veci potenciálni reverzeri naučiť?

Učí sa to na technických školách, aj keď si študenti musia vybrať špecializáciu, ktorá tieto predmety zahŕňa. V dnešnej dobe internetu sa to však dá naučiť aj samoštúdiom. Človek sa nemôže spoliehať na to, že mu všetko dá škola. Tak či tak sa bude musieť veľa vecí doučiť sám. Máme to šťastie, že je dnes dostupné obrovské množstvo kvalitného materiálu. Treba mať len záujem, chuť a nájsť si na to čas.

Spolupracuje v tomto smere ESET so školami?

Ako som spomenul škola dá len nejaké základy. Dlhodobý problém našich technických škôl je, že nepripravujú dostatočne ľudí do praxe, aj keď sa to pomaly zlepšuje. Aj preto spolupracujeme so školami a snažíme sa do výučby vniesť viac praktických vecí. Takto si zároveň vychovávame potenciálnych šikovných talentovaných ľudí. Jednak vedieme bakalárske a diplomové práce, ale podieľame sa aj na výučbe vlastných predmetov, napríklad učíme základy reverzného inžinierstva. Ten sa sústreďuje práve na to, o čom sme sa doteraz rozprávali. Veľa našich kolegov sú absolventi práve tohto predmetu, patrili medzi najšikovnejších a bavilo ich to. No nie je to jediný spôsob, ako sa ku nám dostať. Často k nám prichádzajú aj ľudia cez klasický pracovný inzerát.

K závere možno trochu filozofická otázka. Dokáže škodlivý kód výskumníka fascinovať, keď je napísaný dobre?

Určite sú veci, ktoré sú obdivuhodne pokročilé a technicky veľmi vyspelé a tie nás samozrejme zaujmú, hoci sú ich ciele škodlivé. K takýmto prípadom patrili napríklad útoky na Ukrajine, ktoré spôsobili výpadky elektriny v krajine. Použili pri nich aj zbraň najväčšieho kalibru, akú sme kedy analyzovali, Industroyer. Takéto veci vedia byť veľmi zaujímavé.

Spomínal si, že s útočníkmi hráme hru na mačku a myš, pričom obe strany sa snažia zdokonaliť. Dá sa teda povedať, že sa rokmi škodlivý kód stáva sofistikovanejším a komplikovanejším a možno to aj vám trvá dlhšie?

Neviem, či to trvá dlhšie, pretože aj naše vrstvy ochrany a detekčné technológie sa vyvíjajú. Určite však platí, že je vývoj badateľný na oboch stranách – tak na strane ochrany, ako aj na strane útočníkov.

Robert Lipovský, Senior Malware Researcher v spoločnosti ESET

Výskumník škodlivého kódu s 13-ročnými skúsenosťami a širokým spektrom odborných znalostí, ktoré zahŕňajú cielené útoky typu APT, kyberzločin, ako aj výskum zraniteľností. Vedie tím výskumníkov, ktorý, okrem iného, odhalil ako sa udiali prvé kyberútoky vedúce k masovému výpadku elektriny, či pôvod epidémie NotPetya – kyberútoku, ktorý spôsobil historicky najväčšie škody na celom svete.

O takýchto objavoch pravidelne publikuje v odborných ako aj mainstreamových médiách a prezentuje na bezpečnostných konferenciách, ako napríklad RSA, Black Hat, či Virus Bulletin. Taktiež prednáša vysokoškolským študentom a vedie predmet Základy Reverzného Inžinierstva na Slovenskej Technickej Univerzite – jeho alma mater a na Univerzite Komenského.

Keď práve nesedí za počítačom, najradšej pilotuje lietadlo, spoznáva nové krajiny, hrá na gitare, či jazdí na snowboarde.