|
Detekce a dezinfekce virů pomocí antivirových programůSkener (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.
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.
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 virus. 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ů (nejblíže k ní je F-PROT antivirus).
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é
tvary 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, 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 Kaspersky Anti-Virus.
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, sešity Excelu…, systémové oblasti disku (boot
sektor, MBR…). Skenery mohou být navíc ve dvou provedeních:
- paměťově rezidentní skener (on-access scanner)
Podobně jako paměťově rezidentní viry hlídá on-acces skener systém z operační paměti. Kontroluje veškerou
činnost uživatele se soubory (kopírování, spouštění souborů) a pokud zjistí, že manipuluje s infikovaným
programem, okamžitě ho na tuto skutečnost upozorní. Hlavní výhodou je, že uživatel je upozorněn
na tuto skutečnost těsně před nejhorším (před aktivací samotného viru). On-access skenery jsou tak v dnešní
době velice důležitou a oblíbenou součástí většiny antivirových programů. Použití on-access skeneru pro DOS
sice viditelně spomalovalo chod počítače, ale to už prakticky neplatí v době rychlých počítaču s operačním systémem MS Windows.
Windows je totiž sám o sobě velice "náladový" produkt, a tak i bez on-access skeneru běhá někdy rychleji a někdy pomaleji :)
Některé viry mohou paměťově rezidentní skenery ovlivnit, či dokonce vypnout (viz. tunelující viry).
- skener "na požádání" (on-demand scanner)
Manuální typ skeneru. Uživatel obvykle definuje oblasti (pevný disk, adresář, disketa) které chce on-demand skenerem prohlédnout
a stiskne tlačítko pro zahájení testu. On-demand skener pak hromadně prohlédne všechny vybrané oblasti na výskyt virů.
On-demand skener lze obvykle spojit s kalendářem úloh (scheduler) a kontrolu provádět automaticky v předem definovaných časech.
Bližší informace o moderních skenerech lze najít v článku "Skenery - detaily".
Kontrola integrity (integrity checker, CRC checker…)
Kontrola integrity je založena na porovnávání aktuálního stavu důležitých programů a oblastí
na disku s informacemi, které si o nich kontrolní program uložil při jejich příchodu do
systému nebo při své instalaci.
Jestliže se do takto chráněného počítače dostane vir, tak na sebe zdvořile upozorní změnou
některého z kontrolovaných objektů a je záhy detekován. Takto je možné spolehlivě zachytit
i nové viry, o kterých zatím nic neví skenery a které nemusí odhalit ani heuristická analýza.
Aby se tato idylka proměnila v realitu je nutné kontrolu integrity správně nainstalovat.
To především znamená zahrnout do seznamu kontrolovaných objektů pokud možno všechny důležité
a často používané programy.
Existují ovšem i soubory, jejichž kontrola nemá smysl. Sem patří některé starší programy,
které si svou konfiguraci zapisují přímo do svého EXE-souboru (například TC.EXE - kompilátor
Turbo C od firmy Borland). Jejich kontrola je samozřejmě také možná, ale při změně nastavení
spustí falešný poplach. Pak už záleží je na znalostech uživatele, jestli dokáže rozpoznat, o
co se jedná.
To ovšem není jediný problém. Snadno může dojít k této situaci: Na počítač napadený boot
virem, je nainstalována kontrola integrity, která si mimo jiné uschová i kopii boot sektoru.
Po čase je vir nalezen a odstraněn nějakým jiným antivirovým programem. Při svém dalším
spuštění kontrola zjistí, že obsah boot sektoru už není, co býval. Oznámí to uživateli a
dotáže se, zda je vhodné obnovit správný stav. Pravděpodobně dostane souhlas a s pocitem
dobře vykonané práce vrátí vir do boot sektoru.
Tato situace jistě není příliš milá. Proto jsou většinou i antivirové systémy založené na
kontrole integrity obvykle vybaveny nějakým skenerem. I tak se ovšem před jejich instalací
vyplatí zkontrolovat i disk nějakým jiným, kvalitním, skenerem.
Viry většinou napadají soubory tak, že modifikují jejich začátek a za konec se připojí. Na
základě odložených informací o souboru se tak se ho může program pro kontrolu integrity pokusit
odstranit, aniž by o něm cokoliv věděl. A protože si musí už kvůli detekci pamatovat
kontrolní součty celého souboru, může snadno kontrolovat, zda byl jeho pokus o léčení
úspěšný.
Díky tomu patří odstraňování viru programem pro kontrolu integrity k relativně bezpečným
postupům. (Tedy ne že by bylo tak úspěšné, ale program pro kontrolu integrity je schopen
zkontrolovat, jestli se soubor skutečně podařilo uvést do korektního stavu).
Klasických programů pro kontrolu integrity pomalu ale jistě ubývá. Většinou se vyskytují ve spojení
s on-demand skenerem, což značně snižuje nároky na uživatele. Uživatel v tomto případě totiž
nemusí ručně analyzovat změny v souborech, místo toho takto postižené soubory automaticky otestuje
on-demand skener, který je často obohacen i o heuristickou analýzou pro detekci neznámých virů.
Heuristická analýza (Heuristic Analyzer - Code Analyzer)
Heuristická analýza je další z mnoha kouzelných termínů, které věrně doprovázejí moderní
antivirové programy. V podstatě jde o rozbor kódu hledající postupy pro činnost virů typické
nebo nějak podezřelé. Tímto způsobem lze odhalit i dosud neznámé viry. Z propagačních materiálů a článků v populárních počítačových
časopisech je snadno možné získat dojem, že heuristická analýza navždy vyřešila všechny
problémy se současnými i budoucími viry.
Není tomu tak. Stále se ještě objevuje mnoho virů, které heuristická analýza nepozná a snahy
o zvýšení její "citlivosti" jsou doprovázeny nárůstem počtu falešných poplachů. Právě
falešné poplachy patří k velmi nepříjemným průvodním jevům heuristické analýzy. Obtěžují
uživatele a ti pak provádějí totéž výrobcům antivirového systému.
Jestliže program dovoluje určení typů souborů, kterým se má analýza týkat, nebo jakékoliv
nastavení její citlivosti, je dobré mít na paměti, že tvůrce systému zřejmě věděl jaké
hodnoty (a proč) použít. Jejich změnu by měl provádět pouze někdo, kdo ví, co dělá. V opačném
případě se vaše heuristická analýza může stát zcela flegmatickou a ignorovat i zcela zjevné
viry, nebo propadne hysterii a začne za podezřelé označovat vše, co uvidí.
Kromě heuristické detekce virů existují i pokusy o jejich heuristické odstraňování. Vir se
totiž po svém spuštění dříve nebo později pokusí předat řízení původnímu programu. Pokud se
podaří odsimulovat jeho běh až k tomuto bodu, stačí napadený soubor správně zkrátit a všechno
je v nejlepším pořádku.
Heuristická analýza bývá většinou součástí skenerů (on-access i on-demand), samostatně ji provozovat nelze (většinou).
Monitorovací program (Behavior Blocker)
Monitorovací programy obecně hlídají změny v nastavení systému a chrání systém před replikací
viru (i před provedením oněch nežádoucích akcí trojských koní), a to na základě neustále
kontroly a posléze aktivního zastavení takové ilegální akce.
Monitorovací programy jsou tedy aktivními nástroji pro detekci virů na základě změn v chování
systému, a to v reálném čase. Tyto programy zabraňují nelegálním akcím a signalizují,
kdykoliv se cokoliv v systému pokouší o nějakou podezřelou akci, která má charakteristiky
chování viru, popř. jinak škodlivého, ilegálního chování, např. pokus o zápis do chráněných
souborů, změna tabulky vektorů přerušení… Protože však virus není ničím jiným než sekvencí
příkazů, je zde značná pravděpodobnost, že i legitimní programy mohou provádět stejné akce,
a povedou tedy ve svém důsledku k signalizaci stejně jako virus (např. sebemodifikující
programy). Při tvorbě takového systému se začíná s modelem "ilegálního" chování, pak se staví
moduly, které zachycují a zastavují pokus o provedení takových akcí. Tyto moduly pak pracují
jako součást operačního systému.
Monitorovací program předpokládá, že viry provádějí akce, které jsou svou povahou podezřelé,
a proto mohou být detekovány. To však nemusí být vždy platné tvrzení. Nové viry mohou
využívat nové metody, které moho být mimo působnost naprogramovaných modulů. Takový virus pak
nebude monitorovacím programem detekován.
Techniky, které se využívají u monitorovacích prostředků pro detekci chování podobného chování
viru, rovněž nejsou neselhávající. Osobní počítače mají většinou slabinu v nedostatečné
ochraně paměti, takže virový program může obvykle obejít většinu pokusů operačního systému
o kontrolu. Navíc jako součást operačního systému jsou monitorovací programy rovněž
napadnutelné. Existují totiž viry, které obejdou nebo zcela vypnou celý monitorovací systém,
např. virus Tremor a tunelující viry.
Na rozdíl od skenerů není tak snadné používat monitorovací programy. Dost totiž záleží na
jejich nastavení. Obecně řečeno, je-li nastavení příliš jemné, bude program neustále hlásit
poplach (a uživatele zákonitě otráví a sníží jeho důvěru v software). Je-li naopak nastavení
příliš hrubé, program nebude detekovat téměř nic (tedy ani některé viry).
V případě, že monitorovací program ohlásí pokus o nějakou z jeho pohledu podezřelou akci, je
na uživateli, aby byl schopen posoudit, zda se jedná o falešný poplach (zda daný program
provádí legitimní činnost), nebo o pokus viru. Tím je kladen na uživatele značný nárok. Také
instalace (a již zmíněné nastavení) monitorovacího programu není snadné.
Na druhé straně jsou tu však i výhody monitorovacích programů:
- Tyto programy mohou být při optimálním nastavení velmi citlivými detekčními prostředky a
mohou zachytit i některé dosud neznámé viry.
- Monitorovací software nemusí být tak často obnovován. Není závislý na konkretních virech,
a proto v podstatě nevyžaduje obnovu, pokud nedojde ke vzniku nějaké nové virové techniky.
- Balíky monitorovacích programů jsou často integrovány s operačním systémem tak, aby bylo
dosaženo dodatečné bezpečnosti. Z toho samozřejmě vyplývá jisté zatížení při spuštění každého
programu. Toto zatížení je však minimální. Přesto, jak už bylo uvedeno, je zde i možnost,
že virus dokáže celý takový balík monitorovacích programů prostě obejít a tím vyřadit z
činnosti.
|
|