Polimorfismo de virus informáticos

El polimorfismo de virus informáticos ( griego πολυ-  - muchos + griego μορφή  - forma, apariencia) es una técnica especial utilizada por los autores de malware para reducir la tasa de detección de malware por parte de los productos antivirus clásicos .

Descripción del método

El polimorfismo consiste en generar el código de programa de un programa malicioso "sobre la marcha", ya durante la ejecución, mientras que el propio procedimiento que genera el código tampoco tiene que ser constante y cambia con cada nueva infección. A menudo, cambiar el código se logra agregando sentencias que no cambian el algoritmo del código del programa (por ejemplo, la sentencia NOP ).

La modificación constante del código de malware no permite crear una firma universal para una muestra de malware dada. Hasta la fecha, el software antivirus utiliza tecnologías como el análisis heurístico y la emulación para contrarrestar este método .

Historia

El primer virus polimórfico conocido fue escrito por Mark Washburn. El virus, que se llamó 1260, fue creado en 1990. Un virus polimórfico más conocido fue introducido en 1992 por el cracker búlgaro Dark Avenger (seudónimo), quien creó el MtE (Motor de mutación) .

Hasta la fecha, se conocen una gran cantidad de programas maliciosos que utilizan el polimorfismo como medio para complicar el análisis y crear una firma.

Ejemplo de algoritmo

Un algoritmo que usa las variables A y B, pero no usa la variable C, aún puede funcionar incluso si agrega muchos comandos diferentes que cambiarán el contenido de la variable C.

Algoritmo de origen:

comienzo: GOTO Código de descifrado Encriptado: ... mucho código encriptado ... Código_descifrado: A = Cifrado círculo: B = *A Clave criptográfica B=B XOR *A=B A=A+1 Bucle GOTO SI NO A = Código_descifrado GOTO cifrado Clave criptográfica: algún_número_aleatorio

El mismo algoritmo, pero con la adición de operaciones que cambian la variable C:

comienzo: GOTO Código de descifrado Encriptado: ... mucho código encriptado ... Código_descifrado: C=C+1 A = Cifrado círculo: B = *A C=3214*A Clave criptográfica B=B XOR *A=B C=1 C=A+B A=A+1 Bucle GOTO SI NO A = Código_descifrado C=C^2 GOTO cifrado Clave criptográfica: algún_número_aleatorio

El código dentro de la sección "Cifrado" puede procesar el código entre las secciones "Decryption_Code" y "CryptoKey" y eliminar las operaciones "innecesarias" que cambian la variable C. Antes de reutilizar el dispositivo criptográfico, puede agregar nuevas operaciones "innecesarias". que cambian la variable C, o incluso cambian completamente el algoritmo, pero para que realice las mismas funciones.

Ejemplo de código ensamblador

Una de las formas más sencillas de cifrar el cuerpo principal de un virus es cifrarlo byte a byte mediante la operación XOR.

mov cx, código_longitud mov si, compensar código_comienzo mov al, xor_key _círculo: xor [si+cx], al ;byte decodificado loop _loop ;tomar el siguiente byte jmp si  ;...  ;... código_comienzo: ;aquí está la parte encriptada del cuerpo del virus ;es ella quien se encarga de infectar nuevos archivos ; y la formación de un nuevo procedimiento de descifrado ;al mismo tiempo, se debe reescribir la misma parte del cuerpo del virus en el nuevo archivo ;cifrado, pero con una clave diferente

Se puede formar un nuevo procedimiento de descifrado siguiendo los siguientes pasos simples:

Digamos

añadir eax, 5

puede ser reemplazado por

subeje, -5

y el codigo

hacha de movimiento, bx

puede ser reemplazado por

empujar bx hacha pop

Maneras de proteger

La protección eficaz contra el malware polimórfico requiere el uso de métodos de protección antivirus proactivos , como el análisis heurístico y la emulación . Sin embargo, el análisis heurístico y la emulación no pueden garantizar la detección al 100 % de malware polimórfico y, por lo tanto, se recomienda el uso de HIPS .

Véase también

Enlaces