El malware polimórfico es software malicioso que cambia su código o su cifrado con cada copia o infección, de modo que cada muestra parece distinta mientras su comportamiento sigue siendo el mismo.
Cómo funciona el malware polimórfico
Un programa polimórfico suele constar de un cuerpo malicioso cifrado y un pequeño descifrador. Cada vez que se propaga, un motor de mutación vuelve a cifrar el cuerpo con una clave nueva y reescribe el descifrador con instrucciones, registros y código basura distintos. El resultado es un hash y un patrón de bytes nuevos en cada copia. Enfoques relacionados:
- Malware metamórfico: reescribe todo su código, no solo el descifrador, por lo que no existe un cuerpo cifrado constante.
- Polimorfismo del lado del servidor: el servidor de distribución genera un archivo recién empaquetado para cada descarga, como hizo Storm Worm en 2007 y muchas campañas actuales.
El polimorfismo es una forma avanzada de ofuscación. La idea es antigua: el virus 1260 (1990) se considera el primer virus polimórfico, y el Dark Avenger Mutation Engine de principios de los noventa permitió a otros autores añadir polimorfismo a sus creaciones.
Por qué importa el malware polimórfico
La detección basada en firmas clásica busca secuencias de bytes o hashes conocidos. Si cada muestra es única, la firma escrita para un archivo no sirve para el siguiente y las listas de bloqueo por hash se vuelven casi inútiles. Hoy la mayor parte del malware extendido, desde loaders distribuidos por correo hasta ransomware, emplea alguna forma de polimorfismo o reempaquetado automático.
Cómo detectar el malware polimórfico
- Apoyarse en el análisis de comportamiento: las acciones del malware no cambian aunque cambie su código.
- Usar emulación y análisis heurístico para dejar actuar al descifrador e inspeccionar el código desempaquetado en memoria.
- Escribir reglas YARA para rasgos estables de la carga desempaquetada y no para el archivo exterior.
- Combinar la telemetría de EDR con clasificadores de aprendizaje automático entrenados en la estructura de los archivos.