Polymorfismus počítačových virů

Polymorfismus počítačových virů ( řecky πολυ-  - mnoho + řecky μορφή  - tvar, vzhled) je speciální technika používaná autory malwaru ke snížení míry detekce malwaru klasickými antivirovými produkty .

Popis metody

Polymorfismus spočívá v generování programového kódu škodlivého programu „za běhu“ – již během provádění, přičemž samotná procedura, která kód generuje, také nemusí být konstantní a mění se s každou novou infekcí. Změny kódu je často dosaženo přidáním příkazů, které nemění algoritmus programového kódu (například příkaz NOP ).

Neustálá úprava kódu malwaru neumožňuje vytvořit univerzální podpis pro daný vzorek malwaru. K dnešnímu dni antivirový software používá technologie, jako je heuristická analýza a emulace , aby čelil této metodě .

Historie

První známý polymorfní virus napsal Mark Washburn. Virus, který se jmenoval 1260, byl vytvořen v roce 1990. Známější polymorfní virus byl představen v roce 1992 bulharským crackerem Dark Avenger (pseudonym), který vytvořil MtE (Mutation Engine) .

K dnešnímu dni je známo velké množství škodlivých programů , které používají polymorfismus jako prostředek ke zkomplikování analýzy a vytvoření podpisu.

Příklad algoritmu

Algoritmus, který používá proměnné A a B, ale nepoužívá proměnnou C, může stále fungovat, i když přidáte mnoho různých příkazů, které změní obsah proměnné C.

Zdrojový algoritmus:

Start: GOTO Decryption_Code Zašifrováno: ... spousta šifrovaného kódu ... Dešifrovací_kód: A = Šifrováno smyčka: B = *A B=B XOR CryptoKey *A=B A=A+1 GOTO Loop IF NOT A = Decryption_Code GOTO Zašifrováno Kryptoklíč: nějaké_náhodné_číslo

Stejný algoritmus, ale s přidáním operací, které mění proměnnou C:

Start: GOTO Decryption_Code Zašifrováno: ... spousta šifrovaného kódu ... Dešifrovací_kód: C=C+1 A = Šifrováno smyčka: B = *A C=3214*A B=B XOR CryptoKey *A=B C=1 C=A+B A=A+1 GOTO Loop IF NOT A = Decryption_Code C=C^2 GOTO Zašifrováno Kryptoklíč: nějaké_náhodné_číslo

Kód uvnitř sekce „Encrypted“ pak dokáže zpracovat kód mezi sekcemi „Decryption_Code“ a „CryptoKey“ a odstranit „nepotřebné“ operace, které mění proměnnou C. Než bude kryptografické zařízení znovu použito, může přidat nové „nepotřebné“ operace které změní proměnnou C, nebo dokonce úplně změní algoritmus, ale tak, že bude vykonávat stejné funkce.

Příklad kódu sestavy

Jedním z nejjednodušších způsobů, jak zašifrovat hlavní část viru, je zašifrovat jej bajt po bajtu pomocí operace XOR.

mov cx, délka_kódu mov si, offset begin_code mov al, xor_key _smyčka: xor [si+cx], al ;dekódovací bajt loop _loop ;zabere další bajt jmp si  ;...  ;... počáteční_kód: ;zde je zašifrovaná část těla viru ;je to ona, kdo je zodpovědný za infikování nových souborů a vytvoření nové dešifrovací procedury ;zároveň musí být přepsána stejná část těla viru v novém souboru ;šifrované, ale s jiným klíčem

Nový postup dešifrování lze vytvořit pomocí následujících jednoduchých kroků:

Řekněme

přidat eax, 5

lze nahradit

subeax, -5

a kód

mov ax, bx

lze nahradit

stisknout bx pop sekera

Způsoby ochrany

Účinná ochrana proti polymorfnímu malwaru vyžaduje použití proaktivních metod antivirové ochrany , jako je heuristická analýza a emulace . Heuristická analýza a emulace však nemohou zaručit 100% detekci polymorfního malwaru , a proto se doporučuje použití HIPS .

Viz také

Odkazy