Polymorfný vírus

Polymorfný počítačový vírus je typ počítačového vírusu. Od ostatných sa odlišuje spôsobom replikácie. Rozdiel spočíva v tom, že pri každej novej kópii vírusu, prípadne pri infikovaní nového počítača, sa dynamicky zmení zdrojový kód vírusu (biol. jeho genotyp), samozrejme, bez ovplyvnenia jeho funkčnosti (biol. jeho fenotyp). Toto spôsobuje, že bežné antivírové algoritmy sa stávajú nepoužiteľnými. Polymorfný vírus je technicky zložitejší než šifrujúci vírus, ale je jednoduchší než metamorfný.
Technológia polymorfných vírusov je vývojom šifrujúcich vírusov.
Najjednoduchší typ detekcie vírusov je analýza nejakého vírusového zdrojového kódu a následné pridanie do databázy. Takto je potom možné detegovať konkrétny vírus. Pri polymorfných vírusoch je tento typ detekcie úplne zbytočný, sú zložitejšie.
Dnes však už aj detekcia takéhoto vírusu nepredstavuje problém pre antivírové spoločnosti.
Prvými vírusmi tohto typu boli Tequila a Maltese Amoeba, z roku 1991. O rok neskôr autor Dark Avenger rozšíril po internete zdrojový kód od Maltézskej améby, aby ho mohli používať viacerí. Ďalším významným vírusom tohto typu bol aj slovenský One Half.
Dnes už sa polymorfné vírusy vyskytujú len zriedka kvôli ich technickej "zastaranosti".

Polymorfizmus

Pojem pochádza zo slov poly (viac) a morf (tvar). Napríklad, kód pred úpravou vyzerá takto:
funkcia f:
a = 4;
return a;
Po úprave takto:
funkcia f2:
c = 6;
d = 2;
a = c - d;
skok na "dalej"
x = 2;
dalej:
return a;

Priebeh

Vo všeobecnosti priebeh infekcie prebieha nasledovne. Najprv sa spustí už infikovaný súbor. Ten niekedy počas svojej životnosti vykoná maligný kód. Vírus sa väčšinou najprv rozmnoží. Vytipuje si vhodných hostiteľov (kompatibilné súbory s jeho typom šírenia). Následne sa môže spustiť "polymorfný algoritmus". Funkcia, ktorá dočasne skopíruje kód vírusu do pamäte, pomení ho a následne infikuje niektoré zo zvolených súborov.

Detekcia

Detekcia polymorfného vírusu prebieha tak, že sa vo virtuálnom prostredí umožní vírusu, aby sa mnohokrát namnožil.
Týmto vznikne veľká vzorka vírusov, toho istého druhu. Následne sa použije algoritmus na detekciu vzorov v softvéri. Takými vzormi sú napr. frekvencia určitých inštrukcií (napr. "každá nop inštrukcia zvýši pravdepodobnosť, že je to vírus o 0,5%", alebo "ak program nevykonáva žiadnu pamäťovú operáciu v rámci 100 inštrukcií, pravdepodobnosť sa zníži o 15%", atď.). Antivírový softvér zanalyzuje tieto pravdepodobnosti a do databázy sa pridá približný obraz vírusu. Kvôli tejto technológii nikdy nie je možné určiť, že či je daný súbor vírus na 100%.
Tým, že autori polymorfných algoritmov ich často publikujú na verejnosť, mnoho vírusov používa rovnaký mutačný algoritmus. Toto zľahčuje ich odhalenie, pretože stačí hľadať iba konkrétne algoritmy, nie konkrétne vírusy.
Jednoduchším typom detekcie je kontrolované spustenie vírusu. V momente, keď dešifruje svoj zdrojový kód, aby ho mohol znova zašifrovať, je možné zistiť ktorá funkcia sa používa na šifrovanie/dešifrovanie a čo je pôvodným zámerom vírusu. Táto metóda je však veľmi časovo náročná, pretože aj keď je už daný vírus známy, pri detekcii na koncovom PC je nutné každý súbor spúšťať.
Ďalšie spôsoby detekcie fungujú na vylučovacom princípe. Pri skenovaní súboru treba najprv vylúčiť čo najviac možností. Potom je testovanie napr. na 3 konkrétne vírusy rýchlejšie.
Prípadne kombinácia viacerých detekčných metód.