Polymorfism av datavirus

Datorviruspolymorfism ( grekiska πολυ-  - många + grekiska μορφή  - form, utseende) är en speciell teknik som används av upphovsmän till skadlig programvara för att minska upptäckten av skadlig programvara av klassiska antivirusprodukter .

Beskrivning av metoden

Polymorfism består i att generera programkoden för ett skadligt program "on the fly" - redan under exekvering, medan själva proceduren som genererar koden inte heller behöver vara konstant och ändras vid varje ny infektion. Ofta uppnås ändring av koden genom att lägga till satser som inte ändrar programkodens algoritm (till exempel NOP- satsen ).

Konstant modifiering av skadlig kod tillåter inte att skapa en universell signatur för ett givet skadlig program. Hittills använder antivirusprogram tekniker som heuristisk analys och emulering för att motverka denna metod .

Historik

Det första kända polymorfa viruset skrevs av Mark Washburn. Viruset, som kallades 1260, skapades 1990. Ett mer välkänt polymorft virus introducerades 1992 av den bulgariska krackaren Dark Avenger (pseudonym), som skapade MtE (Mutation Engine) .

Hittills är ett stort antal skadliga program kända som använder polymorfism som ett sätt att komplicera analys och skapa en signatur.

Algoritmexempel

En algoritm som använder variablerna A och B, men som inte använder variabel C, kan fortfarande fungera även om du lägger till många olika kommandon som kommer att ändra innehållet i variabel C.

Källalgoritm:

Start: GOTO Decryption_Code Krypterad: ... massor av krypterad kod ... Dekrypteringskod: A = Krypterad slinga: B = *A B=B XOR Kryptonyckel *A=B A=A+1 GOTO Loop IF NOT A = Decryption_Code GÅ TILL Krypterad Kryptonyckel: något_slumpmässigt_nummer

Samma algoritm, men med tillägg av operationer som ändrar C-variabeln:

Start: GOTO Decryption_Code Krypterad: ... massor av krypterad kod ... Dekrypteringskod: C=C+1 A = Krypterad slinga: B = *A C=3214*A B=B XOR Kryptonyckel *A=B C=1 C=A+B A=A+1 GOTO Loop IF NOT A = Decryption_Code C=C^2 GÅ TILL Krypterad Kryptonyckel: något_slumpmässigt_nummer

Koden i avsnittet "Krypterad" kan sedan bearbeta koden mellan avsnitten "Decryption_Code" och "CryptoKey" och ta bort "onödiga" operationer som ändrar variabeln C. Innan den kryptografiska enheten återanvänds kan den lägga till nya "onödiga" operationer som ändrar variabel C, eller till och med helt ändrar algoritmen, men så att den kommer att utföra samma funktioner.

Exempel på monteringskod

Ett av de enklaste sätten att kryptera huvuddelen av ett virus är att kryptera det byte för byte med XOR-operationen.

mov cx, code_length mov si, offset start_code mov al, xor_key _slinga: xor [si+cx], al ;avkoda byte loop _loop ;ta nästa byte jmp si  ;...  ;... start_code: ;här är den krypterade delen av virusets kropp ;det är hon som är ansvarig för att infektera nya filer och bildandet av ett nytt dekrypteringsförfarande ;samtidigt måste samma del av viruskroppen i den nya filen skrivas om ;krypterad, men med en annan nyckel

En ny dekrypteringsprocedur kan skapas med följande enkla steg:

Låt oss säga

lägg till eax, 5

kan ersättas av

subeax, -5

och koden

mov yxa, bx

kan ersättas av

tryck bx pop yxa

Sätt att skydda

Effektivt skydd mot polymorf skadlig kod kräver användning av proaktiva antivirusskyddsmetoder , såsom heuristisk analys och emulering . Heuristisk analys och emulering kan dock inte garantera 100 % upptäckt av polymorf skadlig kod , och därför rekommenderas användning av HIPS .

Se även

Länkar