Código polimórfico

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Código de programa automodificador diseñado para derrotar programas antivirus o ingeniería inversa

En informática, el código polimórfico es un código que usa un motor polimórfico para mutar mientras mantiene intacto el algoritmo original; es decir, el código cambia cada vez que se ejecuta, pero la función del código (su semántica) no cambiará en absoluto. Por ejemplo, las expresiones matemáticas simples 3+1 y 6-2 logran el mismo resultado, pero se ejecutan con un código de máquina diferente en una CPU. Esta técnica a veces es utilizada por virus informáticos, shellcodes y gusanos informáticos para ocultar su presencia.

El cifrado es el método más común para ocultar código. Con el cifrado, el cuerpo principal del código (también llamado su carga útil) se cifra y parecerá sin sentido. Para que el código funcione como antes, se agrega una función de descifrado al código. Cuando el código se ejecuta, esta función lee la carga útil y la descifra antes de ejecutarla a su vez.

El cifrado por sí solo no es polimorfismo. Para obtener un comportamiento polimórfico, el par de encriptador/desencriptador se muta con cada copia del código. Esto permite diferentes versiones de algún código que funcionan todas de la misma manera.

Código malicioso

La mayoría de los software antivirus y los sistemas de detección de intrusos (IDS) intentan localizar el código malicioso buscando en archivos informáticos y paquetes de datos enviados a través de una red informática. Si el software de seguridad encuentra patrones que corresponden a virus o gusanos informáticos conocidos, toma las medidas adecuadas para neutralizar la amenaza. Los algoritmos polimórficos dificultan que dicho software reconozca el código infractor porque muta constantemente.

Los programadores malintencionados han intentado proteger su código cifrado de esta estrategia de detección de virus reescribiendo el motor de descifrado no cifrado (y la carga útil cifrada resultante) cada vez que se propaga el virus o el gusano. El software antivirus utiliza un análisis de patrones sofisticado para encontrar patrones subyacentes dentro de las diferentes mutaciones del motor de descifrado, con la esperanza de detectar dicho malware de manera confiable.

La emulación se puede usar para derrotar la ofuscación polimórfica al permitir que el malware se deshaga por sí mismo en un entorno virtual antes de utilizar otros métodos, como el escaneo tradicional de firmas. Este entorno virtual a veces se denomina sandbox. El polimorfismo no protege al virus contra dicha emulación si la carga útil descifrada sigue siendo la misma independientemente de la variación en el algoritmo de descifrado. Las técnicas de código metamórfico pueden usarse para complicar aún más la detección, ya que el virus puede ejecutarse sin tener bloques de código identificables en la memoria que permanezcan constantes de una infección a otra.

El primer virus polimórfico conocido fue escrito por Mark Washburn. El virus, llamado 1260, fue escrito en 1990. Un virus polimórfico mejor conocido fue creado en 1992 por el hacker Dark Avenger como un medio para evitar el reconocimiento de patrones del software antivirus. Un virus polimórfico común y muy virulento es el infectador de archivos Virut.

Ejemplo

Este ejemplo no es realmente un código polimórfico, pero servirá como introducción al mundo del cifrado a través del operador XOR. Por ejemplo, en un algoritmo que usa las variables A y B pero no la variable C, podría haber una gran cantidad de código que cambia C, y no tendría ningún efecto en el algoritmo en sí, lo que permitiría cambiarlo sin cesar y sin prestar atención. en cuanto a cuál será el producto final.

Comienzo:
GOTO Decryption_Code

Cifrado:
...muchos de código encriptado...

Decryption_ Código:
C = C + 1
A = cifrado
Loop:
B = *A
C = 3214 * A
B = B XOR Crypto Clave
*A = B
C = 1
C = A + B
A = A + 1
GOTO Loop IF NOT A = Decryption_Code
C = C^2
Encriptado
CryptoKey:
algunos_random_number

El código cifrado es la carga útil. Para hacer diferentes versiones del código, en cada copia cambiarán las líneas basura que manipulan C. El código dentro de "Cifrado" ("mucho código cifrado") puede buscar el código entre Decryption_Code y CryptoKey y cada algoritmo en busca de código nuevo que haga lo mismo. Normalmente, el codificador utiliza una clave cero (por ejemplo, A x o 0 = A) para la primera generación del virus, lo que facilita las cosas al codificador porque con esta clave no se cifra el código. Luego, el codificador implementa un algoritmo de clave incremental o uno aleatorio.

Contenido relacionado

Chatarra (barco)

Un basura es un tipo de velero chino con velas totalmente batidas. Hay dos tipos de chatarra en China: la chatarra del norte, que se desarrolló a partir de...

Macworld

Macworld es una revista digital y un sitio web dedicado a productos y software de Apple Inc., publicado por Foundry, una subsidiaria de...

C++

C++ es un lenguaje de programación de propósito general de alto nivel creado por el científico informático danés Bjarne Stroustrup como una extensión...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save