Computerviruspolymorfi ( græsk πολυ- - mange + græsk μορφή - form, udseende) er en speciel teknik, der bruges af malware -forfattere til at reducere detektionshastigheden af malware af klassiske antivirusprodukter .
Polymorfi består i at generere programkoden til et ondsindet program "on the fly" - allerede under udførelsen, mens selve proceduren, der genererer koden, heller ikke behøver at være konstant og ændres ved hver ny infektion. Ofte opnås ændring af koden ved at tilføje sætninger, der ikke ændrer programkodens algoritme (f.eks. NOP -sætningen ).
Konstant ændring af malware-koden tillader ikke oprettelse af en universel signatur for en given malware-eksempel. Til dato bruger antivirussoftware teknologier såsom heuristisk analyse og emulering til at modvirke denne metode .
Den første kendte polymorfe virus blev skrevet af Mark Washburn. Virussen, som blev kaldt 1260, blev skabt i 1990. En mere velkendt polymorf virus blev introduceret i 1992 af den bulgarske krakker Dark Avenger (pseudonym), som skabte MtE (Mutation Engine) .
Til dato er et stort antal ondsindede programmer kendt , der bruger polymorfi som et middel til at komplicere analyse og skabe en signatur.
En algoritme, der bruger variable A og B, men ikke bruger variabel C, kan stadig fungere, selvom du tilføjer mange forskellige kommandoer, der vil ændre indholdet af variabel C.
Kildealgoritme:
Start: GOTO Decryption_Code Krypteret: ... masser af krypteret kode ... Dekrypteringskode: A = Krypteret sløjfe: B = *A B=B XOR Kryptonøgle *A=B A=A+1 GOTO Loop IF NOT A = Decryption_Code GÅ TIL Krypteret Kryptonøgle: noget_tilfældigt_talDen samme algoritme, men med tilføjelse af operationer, der ændrer C-variablen:
Start: GOTO Decryption_Code Krypteret: ... masser af krypteret kode ... Dekrypteringskode: C=C+1 A = Krypteret sløjfe: B = *A C=3214*A B=B XOR Kryptonøgle *A=B C=1 C=A+B A=A+1 GOTO Loop IF NOT A = Decryption_Code C=C^2 GÅ TIL Krypteret Kryptonøgle: noget_tilfældigt_talKoden inde i "Krypteret" sektionen kan derefter behandle koden mellem "Decryption_Code" og "CryptoKey" sektionerne og fjerne "unødvendige" operationer, der ændrer variablen C. Før den kryptografiske enhed genbruges, kan den tilføje nye "unødvendige" operationer at ændre variabel C, eller endda helt ændre algoritmen, men så den vil udføre de samme funktioner.
En af de nemmeste måder at kryptere hoveddelen af en virus på er at kryptere den byte for byte ved hjælp af XOR-operationen.
mov cx, kode_længde mov si, offset start_code mov al, xor_key _loop: xor [si+cx], al ;afkode byte loop _loop ;tag den næste byte jmp si ;... ;... startkode: ;her er den krypterede del af virussens krop ;det er hende, der er ansvarlig for at inficere nye filer og dannelsen af en ny dekrypteringsprocedure ;samtidig skal den samme del af viruskroppen i den nye fil omskrives ;krypteret, men med en anden nøgleEn ny dekrypteringsprocedure kan dannes ved at bruge følgende enkle trin:
Lad os sige
tilføj eax, 5kan erstattes af
subeax, -5og koden
mov økse, bxkan erstattes af
skub bx pop økseEffektiv beskyttelse mod polymorf malware kræver brug af proaktive antivirusbeskyttelsesmetoder , såsom heuristisk analyse og emulering . Heuristisk analyse og emulering kan dog ikke garantere 100 % påvisning af polymorf malware , og derfor anbefales brugen af HIPS .