Úvod do antivirové problematiky - Jak dělíme počítačové viry

Počítačové viry a škodlivé kódy vůbec můžeme dělit podle různých hledisek a podle různých faktorů. Snaha "rozškatulkovat" kódy podle některých znaků přitom často nebývá vůbec jednoduchá a v praxi se lze setkat s kódy, které kombinují vlastnosti několika kategorií. Inu, i v reálném světě není vše jen černé nebo jen bílé.

Upozorňujeme, že oblast počítačových virů se velmi dynamicky vyvíjí a že některé níže uvedené kategorie virů patří v současné době spíše do muzea - nicméně pro úplnost je uvádíme.

Podle viditelných projevů:

  • Viry bez projevů
    Drtivá většina škodlivých kódů se snaží projevovat co nejméně - nebo alespoň projevovat se tak, aby si toho napadený uživatel nevšiml. Důvod je celkem jednoduchý: jakýkoliv projev způsobí, že se škodlivý kód prozradí a že s ním uživatel zpravidla začne bojovat. A pokud to provede jen trochu šikovně, většinou zvítězí. A právě to je důvod, proč se v současné době snaží programátoři omezovat projevy na zcela nezbytné minimum.
  • Viry s grafickými projevy
    Pokud už se autor rozhodne do škodlivého kódu "zamontovat" nějaký projev, zpravidla se jedná o projev grafický. Může jít třeba o zobrazení nějakého poselství na obrazovce (zastavte pokusy na zvířatech, zastavte kácení pralesů apod.) nebo třeba o modifikaci pracovní plochy. Velmi často přitom programátoři začali využívat grafické projevy k tomu, aby přítomnost viru v počítači skryli. Sem patří třeba zobrazování různých předpřipravených obrázků, které vypadají jako hlášení operačního systému, při spouštění škodlivého kódu. Uživateli je oznámeno, že soubor byl porušený, že mu chybí ten a ten ovladač, že nemá aktuální verzi příslušného programu apod. Mezitím se do počítače samozřejmě úspěšně instaluje nebezpečný program - ale uživatel se mylně domnívá, že došlo při spouštění jiného software k závadě, kterou není schopen ovlivnit, a pouští situaci z hlavy.
  • Viry se speciálními projevy
    Některé škodlivé kódy mají speciální projevy, v mnoha případech nelze jejich autorům upřít smysl pro humor. Existují třeba škodlivé kódy, které jsou schopny přinutit systémové hodiny v počítači, aby se rozběhly pozpátku. Úsměvná rutina? Úsměv ovšem tuhne na rtech při pomyšlení, že asi jen velmi těžko budete v případě potřeby určovat, která záloha dat je novější a která starší.

Podle způsobu šíření:

  • Počítačový virus
  • Trojský kůň
  • Zadní vrátka
  • Síťový červ
    S trochou nadsázky by se dalo říci, že je to počítačový virus, který pro své šíření využívá služeb jakékoliv sítě (lokální i globální). Tak jednoduché to ale není. Zatímco počítačový virus potřebuje pro své šíření hostitelské aplikace (výjimkou jsou pouze tzv. doprovodné viry, které přejímají názvy EXE souborů, samy ovšem mají příponu _COM a "hřeší" na skutečnost, že právě tuto příponu operační systémy upřednostňují), červ je zpravidla škodlivým kódem sám o sobě.

Podle času projevu:

  • Viry aktivující se okamžitě
    Dávno pryč je doba, kdy platily poučky "nespouštějte v ten a ten den počítač". Většina soudobých škodlivých kódů se aktivuje ihned po vstupu do počítače. Je to proto, že současné antivirové metody umožňují reagovat na výskyt nového viru během několika hodin. A právě těchto několik (málo) hodin je jediná doba, během které může kód cokoliv vykonat. Pak už začínají mít navrch antivirové technologie.
  • Viry aktivující se k určitému datu
    "Pozor, nezapínejte zítra počítač! Je nebezpečí, že byste mohli přijít o všechna data, neboť udeří zákeřný počítačový virus!" S takovýmito nebo velmi podobnými předpověďmi jsme se mohli relativně pravidelně setkávat počátkem devadesátých let. Antivirová ochrana byla v plenkách (byla-li vůbec) a trvalo jí měsíce, než na výskyt nějakého kódu zareagovala - na druhou stranu trvalo také viru mnoho měsíců než se v době "předemailové" a "předinternetové" rozšířil kolem celého světa. Takže pokud chtěl programátor způsobit skutečnou globální epidemii, stačilo stanovit vhodné datum: ani příliš blízké, aby se virus měl čas rozšířit, a ani příliš vzdálené, aby jej antivirové firmy nestačily vymýtit.
  • Viry aktivující se při určitém úkonu
    Speciálním případem škodlivých kódů byly ty, které se aktivovaly při provedení nějakého úkonu - třeba při každém osmém restartu počítače nebo při každém stisknutí určité klávesy (nebo kombinace kláves). Rozhodně zajímavé byly některé makroviry, které při napsání jména některého z politiků do textového dokumentu k němu přidávaly ještě vlastní komentáře...

Podle nebezpečnosti:

  • Viry nedestruktivní
    Do této kategorie patří většina současných škodlivých kódů. Je to dáno především dvěma skutečnostmi. Jednak jsou klasické počítačové viry (využívající ke svému šíření hostitelského souboru) prakticky na vymření, současné kódy si vytvářejí soubory vlastní. Jednak se programátoři snaží o to, aby jejich výtvory na sebe nikterak neupozorňovaly, protože upozornění rovná se likvidace ze strany napadeného uživatele. A destrukce dat v celém počítači se navíc rovná vyklizení už dobyté pozice.
  • Viry destruktivní
    Tuto kategorii bychom mohli s klidným svědomím rozdělit na dvě podkategorie: viry destruktivní záměrně a nezáměrně. Záměrně destruktivní viry mají "likvidační" rutinu přímo v popisu práce: mažou soubory, poškozují data atd. Nezáměrně destruktivní viry mají poškozování jako "vedlejší produkt": třeba vinou chyby v programovém kódu nebo díky nějakému jinému nedostatku. Ovšem z hlediska uživatele je výsledek v obou případech stejný: ztráta dat.

Podle napadaných oblastí:

  • Boot viry
    Boot sektorové viry infikují proveditelný kód nacházející se v určitých systémových oblastech na disku. Těmito oblastmi mohou být boot sektory disket, tabulka rozdělení pevného disku nebo boot sektor pevného disku.
    Boot sektor existuje na každé disketě, která byla naformátována pomocí MS-DOS, a to bez ohledu na to, zda touto disketou je systémový nebo datový disk. Boot sektor obsahuje krátký program, který používá DOS ke spuštění systému, a to dříve než je kontrola předána jiným systémovým programům a překladači povelů.
    Protože v boot oblastech jsou umístěny velmi důležité instrukce, které zavádějí při každém spuštění operační systém do paměti počítače, stačí, aby virus nebo pouze jeho spouštěcí mechanismus (příkaz skoku na vykonatelný kód) byl umístěn v této oblasti, a virus bude při každém spuštění systému zaveden do paměti.
    Uvedené viry se chovají tak, že obvykle přepíší svým vlastním kódem boot sektor a původní přepsanou část boot sektoru uschovají na jiné místo disku. Virová infekce se potom šíří pomocí boot sektorů disket, které přišly do styku s nakaženým systémem, a do kterých rezidentní boot virus ihned vytvoří svojí repliku.
    Operační systém DOS pro ně byl vzhledem k malé možnosti jeho kontroly velmi výhodným hostitelem, a to především díky vysoké frekvenci používání těch nejjednodušších povelů, jako jsou zápis a čtení z disku, kopírování disket, prohledávání obsahu adresáře atd. Šíření boot sektorových virů ve 32bitových systémech je mnohem obtížnější než v DOSu, protože boot sektorový virus je ve většině případů ihned při startu systému odhalen.
  • Souborové viry
    Souborové viry bychom mohli dále třídit podle cíle infekce - v zásadě jsou to vždy proveditelné soubory, neboť cílem viru je, aby provedením hostitelského kódu došlo k aktivaci viru, a tím také k možnosti jeho rozmnožení. Nejčastěji se tedy jedná o soubory s příponami com, exe, ovl, bin, sys, bat, obj, prg, mnu atd.
    Mechanismus činnosti souborových virů je však podobný ve všech případech. Nejčastěji tyto viry přepisují začátek souboru, kam umístí buď příkaz ke skoku na sebe sama (na tzv. tělo viru), nebo se samy umístí na toto místo. V druhém případě se může jednat o tzv. přepisující či destruktivní viry. Jejich nevýhodou je, že svým zásahem zničí či poškodí hostitelský program. V okamžiku, kdy se jej tedy pokusíte spustit, dojde sice k tomu, že se aktivuje virus, ale program sám už není schopen činnosti. To je nevýhodné nejen pro uživatele, ale i pro virus samotný, neboť tím je samozřejmě uživatel upozorněn na jeho existenci. Přepisující viry jsou proto mnohem méně časté než viry nepřepisující.
  • Přepisující viry
    Bez kontroly zápisu na disk často není možné zachytit činnost některých souborových virů, které jsou velmi hloupé, a proto ve své činnosti přímočaré. Svým kódem přímo přepíší hostitelský program, a tím jej znehodnotí. Proto se nazývají viry přepisující.
    Při volání hostitelského programu se tyto viry vůbec nemusí instalovat do paměti (i když existují i případy, kdy to dělají), a přímo svým kódem přepíší některý program na disku podle jakéhosi, pro každý virus specifického, klíče. Program sám se stává nefunkční a při jeho volání se pouze aktivuje škůdce, potom dojde k chybě v běhu volaného programu.
  • Prodlužující viry
    Jestliže už se souborový virus dostal do systému a nebyl preventivně zachycen, může zde parazitovat. Viry mají několik způsobů replikace a jedním z nich je metoda zapsání těla viru na konec (nebo začátek) souboru, ať už jde o jakýkoliv proveditelný soubor - nejčastěji je to soubor typu com nebo exe. Tím dojde k prodloužení délky infikovaného souboru - odtud název této skupiny virů. Pokud je virus umístěn rezidentně v paměti a obsahuje tzv. stealth techniky, toto prodloužení není viditelné v době, kdy virus má systém pod svou kontrolou, protože všechny změny jsou virem ukrývány.
    Při infekci je přepsáno několik prvních bytů napadeného souboru, podle kterých se při jeho volání předává řízení viru jako prvnímu, nebo u exe souboru je přepsáno několik bytů jeho hlavičky, kde je odkaz na počáteční bod programu. "Chytřejší" viry obsahují sebeidentifikační mechanismus, aby nedošlo k několikanásobnému napadení. Jsou však i výjimky, například dvacetinásobné infikování jednoho souboru virem Jerusalem není nic neobvyklého. Sebeidentifikační proces se stává problémem u polymorfních virů, zejména z důvodu snížení rychlosti detekce, protože celé dekódování je pomalé.
    Odstranění těchto virů je celkem jednoduché - stačí opravit začátek programu a "vykousnout" virus z jeho konce nebo začátku podle konkrétního místa lokalizace těla viru.
  • Doprovodné viry
    Doprovodné viry se přidají ke spustitelnému souboru vytvořením ještě jednoho nového souboru s jinou příponou. Jméno tohoto druhu viru pochází z toho, že virus doprovází napadený soubor průvodním souborem. Virus se může pojmenovat například soubor.com. Pokaždé, když uživatel spustí soubor.exe, operační systém zavede nejdřív soubor soubor.com, a tím systém infikuje. Doprovodný virus je často generován "fágem".
  • Fágy
    Fágy modifikují jiné programy nebo databáze neautorizovaným způsobem. Odborníci se při pojmenování tohoto druhu inspirovali skutečnými fágy, které jsou obzvlášť destruktivní, protože nahrazují tělo infikované buňky svým vlastním genetickým kódem.
    Počítačový fág skutečně nahradí spustitelný soubor svým vlastním kódem, místo aby se k němu připojil. Často také generuje doprovodný soubor. Fágy jsou extrémně destruktivní, protože při infekci zničí každý napadený soubor.
  • Mezerové viry
    Ne vždy musí virus zapsat svoje tělo na konec nebo na začátek exe nebo com souboru. Existují výjimky, kterých naštěstí není mnoho, a ty ukládají tělo viru dovnitř do volných míst hostitelského souboru (především se to týká souboru command.com). To by podle naší definice již nebyly čistě prodlužující viry, protože v tom případě infekcí nedojde k prodloužení souboru.
  • Clusterové viry
    Poměrně zajímavou skupinou virů jsou tzv. clusterové viry. Tyto viry se vyhýbají přímému zápisu do datové oblasti disku, kde cíl infekce sídlí, a místo toho modifikují pouze odkazy adresářové struktury tak, aby ukazovaly na jednu kopii těla viru umístěnou např. na konci disku.
  • Makroviry
    Hlavní nebezpečnou stránkou makrovirů je to, že jsou nezávislé na platformě a operačním systému - podobně jako samotný internet - na rozdíl od souborových nebo boot-sektorových virů. Navíc se makroviry neomezují na spustitelné nebo objektové soubory, ale primárně jsou zaměřeny na soubory datové.

Podle umístění v paměti:

  • Rezidentní viry
    Rezidentní virus, jak název sám prozrazuje, je virus, který setrvává ilegálně v paměti. Takový virus se většinou při prvém spuštění infikovaného souboru (pokud se jedná o souborový virus) nebo při prvém zavedení systému z infikovaného boot sektoru (pokud se jedná o boot sektorový virus) stane rezidentním v paměti a odtud potom provádí svoji škodlivou činnost. Virus zůstává v paměti, dokud systém není vypnut. Výrazné problémy těmto virům nastalo s příchodem 32bitových systémů, kde je jejich chování a přežití závislé na jejich kódu. Všeobecně se dá říci, že čím je virus sofistikovanější a čím používá neobvyklejší příkazy, tím je menší jeho šance na to, že zůstane aktivní a nepovšimnut po startu 32bitového systému.
  • Rezidentní TSR viry
    Některé souborové viry se mohou instalovat do paměti pomocí služeb DOSu jako rezidentní TSR a potom potají provozovat svoji škodlivou činnost a replikovat se. Jedná se vlastně o jakousi podskupinu předchozích rezidentních virů.
    Rozdíl mezi těmito dvěma skupinami je v tom, že TSR viry se instalují "legálně" a lze je identifikovat pomocí kontroly vektorů přerušení nebo prohlédnutím paměti některým ze standardních programů. Přestože objevit a lokalizovat takový virus není jednoduché, v principu je to možné. Je třeba hlídat změny vektorů přerušení určených k instalaci rezidentních programů a ihned tak ohlásit pokus programu, který se chce instalovat do paměti. Poté je možno instalaci softwarově povolit nebo zakázat a program zlikvidovat resetem počítače. Hlídání vstupu virů, které se instalují jako TSR, lze tedy provést poměrně úspěšně. Slabinou metody je rozlišení, kdy se jedná o legální a kdy o ilegální program.
  • Nerezidentní viry
    Viry nepotřebují pro svoji škodlivou činnost nutně být trvale umístěné v paměti. Stačí, když jsou aktivovány společně s hostitelským programem. Pak přebírají řízení jako první, provedou svoji činnost, nejčastěji replikaci, a poté předají řízení zpět hostitelskému programu. To právě je případ tzv. nerezidentních virů neboli virů přímé akce.
    Nerezidentní viry jsou většinou souborovými viry. Je to poměrně rozsáhlá skupina. Takovéto viry však nejsou příliš rozšířené, poněvadž nemohou z důvodu absence v paměti aplikovat pokročilé techniky virů, jako je například stealth technika (viz níže), a tedy se nemohou ukrývat. Pokud nejsou v paměti, nemohou monitorovat a analyzovat funkce vedoucí k jejich vyhledání.

Podle chování:

  • Stealth a substealth
    Neviditelné viry ukrývají modifikace, které na souborech nebo boot sektorech provedly. Monitorují systémové funkce, které používá operační systém pro čtení souborů nebo sektorů z paměťového média, a pak simulují výsledky volání těchto funkcí. Znamená to, že program, který se pokouší číst napadený soubor nebo sektor, vidí místo něj jeho původní, nepozměněný tvar. Antivirový program by tedy nemusel modifikaci objevit. Aby se před detekcí ubránil, musí být takový virus zaveden v průběhu provádění antivirového programu v operační paměti. Dobrý antivirový program by však měl umět rozeznat infekci v okamžiku, když se kód viru zavádí do paměti.
    Neviditelné viry mají obvykle schopnost maskovat velikost souborů nebo jejich obsah při čtení. Viry maskující velikost patří do skupiny virů napadajících soubory. Virus se připojí k cílovému programu a replikuje se, čímž velikost souboru vzroste. Virus ovšem maskuje velikost souboru, takže uživatel napadeného počítače si činnost viru v normálním provozu nevšimne.
    Odhalit neviditelný virus je poměrně snadné. Většina standardních antivirových programů detekuje neviditelné viry, ovšem za předpokladu, že byl antivirový program spuštěn na "zdravém" systému (bez aktivního viru). Pokud před antivirovou kontrolou nastartujete systém ze zabezpečené čisté systémové diskety zablokované proti zápisu, neviditelné viry by měly být detekovány. Jak jsme se zmínili dříve, neviditelné viry se mohou skrýt jenom pokud jsou rezidentní a aktivní v paměti.
  • Polymorfní viry
    Polymorfní virus své tělo zašifruje, a tak se snaží ukrýt svou signaturu před antivirovým programem. Polymorfní viry - nebo i jiné šifrované viry - se šíří tak, že nejdříve dešifrují zašifrovanou část pomocí speciální dešifrovací rutiny (dešifrovací rutina zkonvertuje šifrovaný soubor zpátky do původního stavu). Dešifrovací rutina polymorfního viru se krátce zmocní řízení počítače, aby dešifrovala tělo viru. Poté předá řízení extrahovanému viru a ten může provádět svou činnost.
    První šifrované viry byly nepolymorfní. Jinými slovy, používaly dešifrovací rutiny, které se neměnily z infekce na infekci. Přestože sám virus byl zašifrován a ukryt, antivirový program měl stále možnost virus identifikovat a zneškodnit podle neměnné signatury dešifrovací rutiny.
    Rozpoznat polymorfní virus je mnohem těžší, protože při každém napadení souboru vygeneruje úplně novou dešifrovací rutinu, takže se její signatura mění s každou instalací viru. Obecně mění polymorfní virus svou signaturu použitím jednoduchého generátoru strojového kódu, kterému se říká mutátor (Mutation Engine). Mutátor změní signaturu použitím generátoru náhodných čísel a poměrně jednoduchého matematického algoritmu. Pomocí mutátoru může programátor přetvořit jakýkoliv virus na polymorfní. Stačí jednoduchý zásah do zdrojového kódu v assembleru, který způsobí, že virus zavolá mutátor ještě před svým zkopírováním.
    I když základní skenovací metody (například srovnávání řetězců kódu) nemohou polymorfní viry odhalit, speciálně konstruované vyhledávací stroje, upravené pro identifikaci šifrovacích schémat, je najít mohou. Polymorfní viry nejsou neporazitelné, učinily však ze skenování virů mnohem těžší a dražší úkol. Většina antivirových programů obsahuje kvůli ochraně před polymorfními viry i mechanizmus vyhledávání šifrování.
  • Retroviry (odvetné viry)
    Retrovirus je počítačový virus, který se pokouší uniknout odhalení nebo zabránit operacím antivirových programů přímým napadením antivirového softwaru. Odborníci říkají někdy retrovirům také anti-antiviry. (Nezaměňujte anti-antiviry s antivirovými viry, jejichž úkolem je zneškodnit jiné viry!)
    Vytvořit retrovirus není těžká úloha. Autoři virů mají přirozeně přístup ke všem antivirovým programům na trhu. Jediné, co musí udělat, je prostudovat program, který chtějí porazit, najít v něm nějaké slabé místo a vymyslet způsob, jak ho zneužít. Retrovirus například najde datový soubor, ve kterém si antivirový program uchovává signatury virů, a smaže jej, čímž sníží schopnost antiviru detekovat viry. Sofistikovanější retro virus vyhledá databázi s informacemi o integritě a smaže ji. Odstranění databáze má pro kontrolora integrity stejné důsledky, jako smazání datového souboru pro antivirový program.
    Jiné retroviry detekují aktivaci antivirového programu a pak se před ním ukryjí nebo zastaví provádění antivirového programu, případně spustí ještě před svým odhalením destruktivní rutinu. Některé retroviry pozmění výpočetní prostředí způsobem, který ovlivní operace antivirového programu. Jiné využívají specifická slabá místa a zadní vrátka konkrétních antivirových programů, aby oslabily nebo narušily jejich činnost.
  • Tunelující viry
    Tunelující virus vyhledává původní vektory přerušení v DOSu a BIOSu a volá je přímo, čímž obejde aktivitu jakéhokoliv monitorujícího programu, který je případně v systému zaveden, a jako takový by mohl detekovat pokusy o volání těchto vektorů přerušení.
    Tyto tunelující techniky jsou někdy využívané i na druhé straně bariéry - některé antivirové programy je používají, aby obešly jakékoliv neznámé nebo nedetekované viry, které mohou být aktivní v době jejich spuštění.
  • Armored viry
    Pancéřové (armored) viry se chrání speciálním programovým kódem, který znesnadňuje trasování, zpětný překlad a pochopení kódu viru. Pancéřový virus se může chránit například "obalovým kódem", který odvrátí pozorovatele od operačního kódu. Další možností je skrýt se pomocí zavádějícího kódu, který se tváří, jako by byl umístěn někde jinde, než skutečně je.
  • Multipartitní viry
    Multipartitní viry napadají jak spustitelné soubory, tak boot sektory disku a někdy také boot sektory disket. Jejich jméno pochází z toho, že se neomezují na specifickou oblast disku nebo jistý typ souboru, ale infikují počítač několikanásobným způsobem. Když spustíte aplikaci napadenou multipartitním virem, virus nakazí boot sektor vašeho stroje. Při příštím zavedení systému se virus aktivuje a infikuje každý vhodný program, který spustíte.

Podle rychlosti šíření:

  • Rychlé infektory
    Pod pojmem rychlý infektor chápeme souborový virus, který infikuje nejen spouštěné soubory, ale i otvírané (při kopírování, přesunování apod.).
  • Pomalé infektory
    Pomalé viry je těžké odhalit, protože infikují soubory, které operační systém modifikuje nebo kopíruje. Jinými slovy, "pomalý" virus napadne soubor jen pokud s ním uživatel manipuluje. Například, infikuje boot sektor diskety, když se do boot sektoru zapisuje příkazem FORMAT nebo SYS. Pomalý virus může infikovat kopii souboru, ne však originál.
    Boj s pomalými viry je těžký proces. Kontrolor integrity by si nového souboru měl všimnout a ohlásit ho uživateli, protože pro tento soubor není k dispozici žádný kontrolní součet. Kontrolor integrity je antivirový program, který monitoruje obsah diskových zařízení, velikost všech souborů a jejich kontrolní součty. Na případné nesrovnalosti upozorní uživatele. Jenomže uživatel ani v upozornění na chybný součet pravděpodobně nespatří nic podezřelého, protože instrukci na vytvoření nového souboru zadal sám. Nejčastěji - celkem logicky - nařídí výpočet nového součtu pro nový (infikovaný) soubor.
  • Sparse infector
    Tento termín se používá pro označení virů, které infikují své oběti jen příležitostně a nebo při splnění nějaké podmínky s poměrně malou pravděpodobností. Tedy infikují jen zřídka, odtud jejich název. Výsledkem chování takových virů je minimalizace rizika odhalení jejich přítomnosti v systému uživatelem.
  • ZOO viry
    Tímto termínem jsou označovány viry, které se v reálném světě vůbec nešíří. Existují, antivirové programy je detekují, ale šance setkat se s nimi je rovna nule. Vytvořeny byly buď ze studijních důvodů nebo prostě obsahují takové množství chyb, které je činí neživotaschopnými. V některých případech je také mohli programátoři záměrně vytvořit tak, aby se nemohly šířit, nebo pouze chtěli za každou cenu (nefunkčnost) získat prvenství v některé oblasti (první virus pro Windows 2000 apod.). Někdy se do protikladu k ZOO virům dávají tzv. In-the-wild viry: to jsou škodlivé kódy, s nimiž se lze při troše štěstí (či spíše smůly) setkat.

Související odkazy

Hlavní stránka
Úvod do antivirové problematiky


Copyright © 2010, TrustPort, a.s., Všechna práva vyhrazena.