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 !