Polymorfi af computervirus

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 .

Beskrivelse af metoden

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 .

Historie

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.

Algoritmeeksempel

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_tal

Den 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_tal

Koden 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.

Eksempel på samlingskode

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øgle

En ny dekrypteringsprocedure kan dannes ved at bruge følgende enkle trin:

Lad os sige

tilføj eax, 5

kan erstattes af

subeax, -5

og koden

mov økse, bx

kan erstattes af

skub bx pop økse

Måder at beskytte

Effektiv 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 .

Se også

Links