# Metamorfismo (malware)

El metamorfismo es una técnica empleada por malware para evitar su detección, dando lugar al llamado malware metamórfico. Consiste en usar un motor metamórfico, embebido dentro del mismo malware, que muta su código. Este motor cambia por completo el cuerpo del malware, incluido el propio motor de mutación. El malware metamórfico no tiene parte cifrada y, por lo tanto, no necesita descifrador. Se trata de malware polimórfico aquel que consiste en usar un motor polimórfico embebido para cambiar su propio código mientras mantiene su algoritmo original intacto. Cambia solo parte del código, en contraste con el metamorfismo que cambia todo el código.
De esta forma cada vez que se propaga un malware metamórfico bien construido, se crea una nueva versión que mantendrá el mismo efecto y comportamiento general. Se supone que un buen motor metamórfico crea un número infinito de versiones sin patrones de cadena identificables comunes, lo que hace que su detección mediante firmas sea prácticamente imposible. Para detectar este tipo de malware se han de emplear técnicas basadas en el análisis de comportamiento y heurísticas.

## Motor metamórfico

Algunos malware metamórficos llevan su propio motor metamórfico. Por ejemplo, Zperm lleva su propio motor metamórfico al que llama Real Permuting Engine (RPME). Otros usan generadores metamórficos que son independientes del malware sobre el que se usa. Por ejemplo, los toolkits polimórficos, como CLET o ADMmutate, permiten realizar metamorfismo. Algunas herramientas de construcción de malware como NGVCK, VCL32, MPCGEN o G2 incluyen motores metamórficos.

### Funcionamiento

El motor metamórfico realiza las siguientes actividades:
* Localización. En esta etapa se localiza así mismo y al código que transformará.
* Desensamblado. El motor descompila para obtener el código fuente.
* Análisis de código. El analizador de código recaba información sobre la estructura y flujo de programa, subrutinas, variables y registros, entre otros. El analizador lógico adquiere una compresión lógica del código.
* Transformación de código. La información recabada por el analizador de código es utilizada por el transformador y se encarga de ofuscar el código además de cambiar la secuencia de dicho malware.
* Ensamblado. El compilador transforma de nuevo el código mutado a código máquina para que pueda ser interpretado por la misma. Generalmente este paso lo hace un compilador legítimo instalado en el sistema víctima.
* Embebe el código dentro del malware. Consiste en incrustarlo el código máquina en un archivo host.
De esta forma cada nueva copia puede tener diferente estructura, secuencia de código, tamaño y propiedades sintácticas, pero el comportamiento del malware no cambia.

## Ejemplos

Como ejemplos reseñables de malware metamórfico podemos destacar:
* Win95/Regswap. Fue el primer malware metamórfico y apareció en 1998
* Win95/Zmist. Detectado en 2001. Introdujo la técnica de integración de código que consiste en descompilar archivos ejecutables portátiles (PE) en elementos lógicos, insertar partes de su código en el archivo y vincularlos mediante instrucciones JMP. Después de hacerlo, regenera el código y reconstruye el PE.
* W32/Simile. Detectado en 2002. Este virus utiliza varias técnicas avanzadas, como el oscurecimiento del punto de entrada, el metamorfismo y el descifrado polimórfico.
Podemos clasificar el malware metamórfico en dos subcategorías:
* Los que se comunican con otros sitios en Internet y pueda descargar actualizaciones. Un ejemplo es el gusano Conficker.
* Lo que no realizan comunicación alguna con el exterior durante la mutación. El primer virus que uso esta técnica fue Win32/Apparition.