Anti-* techniky apod.
Účelem antivirových programů je odhalit virus buď ještě dříve než stačí
infikovat nějaký program na disku, nebo jej nalézt a uspěšně infikovaný
program vyléčit. Odjakživa viry používaly několik způsobů, jak zabránit
antivirovým programům je odhalit, proto se Vám tady pokusím nějaké metody
nastínit.
1. Polymorphismus
Každý určitě ví, o co se jedná (pokud ne, tak koukněte sem), takže je zbytečné se o tomhle zmiňovat.
Stále ještě většina virů používají této metody k zamaskování svého těla.
2. Metamorphismus
Velice nová metoda, ukazující se pro viry jako nový cíl do budoucnosti,
neboť se jeví nádherná zbraň proti všem antivorovým programům. Jedná se
o to, že narozdíl od polymorphismu, který vytváří pouze dekódovací
algoritmus, tak metamorphismus obměňuje veškeré instrukce viru. Takže
po tomto procesu vzniká nová varianta těla viru, avšak konající totéž.
Využívá se tak skutečnosti, že veškeré instrukce (přiřazování, sčítání,
porovnávání, ...) lze nahradit jinými registry, dvěma třemi instrukcemi
navíc - uplně je tedy zredukovat, rozšířit. Existuje pouze několik málo
napsaných virů, které mají náznaky metamorphismu. Napsání algoritmu
na jednoduchý metamorphismus je hodně náročné na přemýšlení.
3. Anti-* techniky
Takhle se hromadně nazývají způsoby, jak vyřadit z činnosti kontroly
antivirových scannerů.
3.1. Anti-debugging
Pokud během činnosti virus získá dojem, že jej sleduje nějaký debugger,
může například ukončit aktuální process apod. Způsobů jak jej zjistit je
několik přes legální API funkci Windows, přes SEH až po tajné způsoby
vedoucí ke zjištění nejlepšíhoho debuggeru - SoftICE.
3.2. Anti-heuristics
Každý antivirový emulátor simuluje provádění instrukcí a na základě jich
odchytává příznaky. Existuje několik způsobů jak "oblbnout" emulátor.
Jednou metodou jsou například použití nedokumentovaných instrukcí,
instrukcí pro koprocesor nebo pro mmx. V dnešní době má již většina
antivirů zvládnutý emulátor pro DOS platformu, ale skoro žádný
ne pro Win32.
3.3. Anti-Antivirus
Pokud během své činnosti virus v systému narazí na soubor, který slouží
antivirům k uchování informací (datum, velikost, ...) tak jej jednoduše
smaže. Nestane-li se tak a antivir použije tento soubor k porovnání změn,
může být virus odhalen.
3.4. Anti-Monitor
Slouží k deaktivaci rezidentního hlídače. I rezidentní scanner je jenom
program a lze jej také ukončit. V prostředí Win32 to vůbec není žádný
problém a v DOSu již rovněž ne.
3.5. Anti-Bait
Aby mohly antivirové programy úspěšně nalézt virus, musí jej porovnávat
podle některých instrukcí. Proto uvnitř firmy rozšiřují viry, aby z nich
mohli získat stejné sekvence kódu. Cílem infekce se stávají programy s
názvy například 1.EXE, 2.EXE, AAAB.EXE apod. Virus může
analyzovat název programu, a pokud v něm nalezne podezřelé znaky tak jej
odmítne infikovat.
4. Threads, Fibers, multi-process techniky
Pokud virus používá tyto metody, tak může velice znepříjemnit provádění
antivirových analýz v jeho kódu. O co tedy jde: veškeré tyto věci byly
vyvynuty v rámci umožnění multitaskingu kdy windows rozděluje čas procesoru
mezi ostatní aplikace. Chvíli provádí něco jedna aplikace, pak se předá
řízení druhé a tak dále. Virus ve svém kódu může vytvořit jiný thread
(něco jako jiný process) a schválně počká, až jej windows obslouží. Z
tohoto jiného threadu může změnit některé instrukce v paměti, kde je
uložen virus a až se windows opět vráti k provádění viru, může díky zásahu
z venčí provést jiné instrurkce. Co to znamená: antivirovému skeneru (emulátoru)
se mu nepodaří "odsimulovat" kód odděleného threadu a tím pádem
"skončí" s jeho analýzou.
Bližší informace o posledním odstavci lze najít zde.
Autorem tohoto článku je Prizzy/29A (prizzy@coderz.net). Tímto mu velice děkuji !