Scanner
Na počátku technologie skenování programů (zkráceně skenerů) byl geniální nápad:
Vybrat z těla virů nějaké charakteristické skupiny instrukcí a takto získané
sekvence použít pro hledání napadených programů. Tato koncepce sice vyžaduje
pravidelnou aktualizaci (skener umí najít pouze viry, které zná), ale nabízí za
to jedinečnou schopnost rozpoznat napadený program ještě před tím, než ho
začneme používat.
rezidentní skenery (on-the-fly scanner)
nerezidentní skenery (on-demand scanner) Hlavní
výhody a nevýhody skenerů:
Pokud je uživatel zvyklý prohlížet přicházející programy a
diskety aktuální verzí nějakého kvalitního skeneru, snižuje tak výrazným
způsobem pravděpodobnost napadení svého systému. Obvykle se totiž viry přece
jenom šíří pomaleji než nové verze antivirů.
Dobré skenery jsou sice do jisté
míry schopné rozpoznat i nové varianty starších virů, ale na tuto vlastnost není
možné příliš spoléhat. Autor viru je zde ve výhodě a má možnost si vyzkoušet,
zda aktuální verze používaných skenerů jeho dílko odhalí, či nikoliv.
Skenery
zvyšují své šance na zachycení nové varianty tak, že používají více různých
sekvencí pro jeden vir. To také umožňuje přesnější rozpoznání konkrétního viru a
snižuje pravděpodobnost falešného poplachu.
Ani více sekvencí však nedovoluje
dostatečně přesně rozlišit jednotlivé varianty virů tak, jak to vyžaduje třeba
CARO konvence pojmenování virů (tu zřejmě dodržuje pouze antivirus F-PROT).
Některé skenery se proto snaží o tzv. exaktní identifikaci, kdy po nalezení
sekvence ještě spočítají kontrolní součty konstantních oblastí v těle viru a pak
teprve mohou s jistotou tvrdit, že se jmenuje třeba Vienna.648.Reboot.A. Pro
praktické použití sice není takto detailní rozlišení nezbytně nutné, ale nějaká
forma přesnější identifikace snižuje pravděpodobnost, že se antivirový systém
pokusí léčit napadený soubor nevhodným postupem a zníčí ho.
Výběr spolehlivé
sekvence býval relativně snadnou záležitostí. Autoři virů se proto pokoušeli
znesnadnit detekci svých dílek tím, že začali psát zakódované viry. V takovém
případě je možné sekvenci vybrat pouze z velmi malé části kódu - dekryptovací
smyčky. Zbytek těla viru je v každém exempláři jiný.
Opravdová legrace ovšem
začíná až s příchodem polymorfních virů, které umí generovat různé zvary
dekryptovacích smyček. Pro některé z nich je sice možné stvořit sekvence (nebo
několik sekvencí), která vir zachytí, ale ta už obsahuje tolik variabilních
částí, že se často najdou i zdravé programy, ve kterých nějaký fragment kódu
nebo dat takové sekvenci vyhovuje. Většina polymorfních virů ale generuje takové
dekryptory, že nelze hledání podle sekvencí použít. Skenery se nějaký čas
snažily o rozpoznávání polymorfních virů pomocí jednoúčelových funkcí, ale to
byl vlastně krok zpět k vyhledávacím programům se všemi jejich nevýhodami.
Moderní skenery proto obsahují emulátor strojového kódu (algoritmické
vyhledávání virů - patří sem i heuristická analýza), kterým se pokouší emulovat
provedení smyčky, a pak mohou hledat sekvence až v dekryptovaném těle viru.
Kódování viru není jedinou metodou, jak skenerům znepříjemnit život. Skenery
totiž obvykle nehledají sekvence v celém souboru, ale pouze v jeho vybraných
částech. Stačí tedy umístit tělo viru na náhodně vybrané místo uprostřed
napadeného programu a vytvořit k němu "cestičku". Kvalitní skener se s tím
vypořádá, ale jeho tupější bratříčci mají smůlu.
Kvalitní skenery obsahují
tzv. anti-stealth techniky, které dokážou obcházet aktivní stealth viry. Pokud
je totiž takový virus rezidentní v paměti, a antivirus nemá anti-stealth
techniky, bude se nám systém jevit jako čistý - nezavirovaný. V takovém případě
musí skener spoléhat pouze na test operační paměti, který může (ale nemusí
virus) prozradit.
Lepší skenery
dokážou prohlížet i komprimované soubory (PKLITE, LZEXE, ARJ, ZIP, RAR…).
Ukázkovým antivirem je v tomto směru například AntiViral Toolkit Pro (AVP).
Skenery jsou celkově zřejmě nejdůležitejší částí většiny antivirů. Pokud jsou
doplněny heuristickou analýzou dokážou detekovat i neznámé viry. Skenery dokážou
prohlížet na výskyt virů: operační pamět, soubory, dokumenty Wordu, tabulky
Excelu…, systémové části disku (boot sektor, MBR…). Skenery mohou být navíc ve
dvou provedeních:
Podobně jako rezidentní viry
hlídá systém z operační paměti. Kontroluje prováděné operace (kopírování,
spouštění programů…) a pokud zjistí, že manipulujeme s infikovaným
programem, okamžitě nás na to upozorní. Princip je to jednoduchý, ale:
Rezidentní skener nemusí hledat všechny viry, z důvodu, že by se tak chod
počítače výrazně zpomalil (záleží však taky, jak rychle pracuje skenovací
mechanismus). Některé viry mohou navíc rezidentní skenery ovlivnit, či
dokonce vypnout (viz. tunelující viry).
Nejrozšířenější varianta.
Uživatel ho musí spustit manuálně a musí taktéž určit cíl prohlížení
("skenování").
viry lze objevit, ještě před tím, než se stanou aktivními v systému | |
minimální nároky na uživatele | |
pokud je součástí heuristická analýza, lze hledat i neznámé viry | |
nelze hledat neznámé viry (pokud není heuristická analýza) | |
skenery se musí často aktualizovat, jelikož viry přibívají velmi intenzivně |