W95.Zperm.A

DESCRIPCIÓN

    El virus W95.Zperm.A es uno de los primeros virus metamórficos para las plataformas Windows de 32 bits, que pertenece a la categoría de los gursanos. El virus no usa una encriptación polimórfica tradicional. En su lugar, muta su código mediante la inserción de instrucciones de salto. El cuerpo completo del virus permuta, incluido el propio motor de permutación.

    La secuencia de instrucciones del código del virus podría resumirse en los siguientes ejemplos de primera generación:

instrucción 1 < Punto de entrada del código del virus >
instrucción 2
instrucción 3
.
.
.
instrucción n
 

    El virus se cambia a sí mismo mediante la inserción de un número aleatorio de instrucciones de salto en el núcleo de la secuencia de código. De esta forma, el orden del código puede cambiar a:

instrucción 2
JMP instrucción 3
instrucción 1 < Punto de entrada del código del virus >
JMP instrucción 2
instrucción 3
JMP instrucción n

    En ocasiones, el virus reemplaza las instrucciones con otras instrucciones equivalentes. Por ejemplo, la instrucción XOR EAX, EAX, que almacena el valor cero en el registro EAX, se reemplaza con SUB EAX, EAX, que pone a cero el registro EAX.

    El núcleo del conjunto de instrucciones tiene exactamente el mismo orden de ejecución. Sin embargo, los saltos se insertan en lugares aleatorios. La variante B del virus también utiliza inserciones de instrucciones basura, como NOP (la instrucción "no hagas nada") y por tanto el código del virus tiene el aspecto siguiente:

instrucción 3
NOP
NOP
JMP instrucción n
.
.
instrucción 1 < Punto de entrada del código del virus >
NOP
NOP
NOP
NOP
JMP instrucción 2
.
.
instrucción 2
NOP
NOP
NOP
JMP instrucción 3

    El virus se ejecuta en su propio hilo dentro del proceso infectado. Crea réplicas de sí mismo en todos los archivos disponibles, si la aplicación infectada se mantiene en funcionamiento el tiempo suficiente. Sólo infecta los archivos que tienen la extensión .EXE. El virus desactiva las reubicaciones de la cabecera y sobrescribe el área de reubicación.

    Para marcar la aplicación infectada, utiliza la ID 0x5A ("Z") como valor del número secundario de versión del linker en las cabeceras. El punto de entrada cambia para apuntar a la primera instrucción del código del virus en la última sección de la aplicación anfitriona. La última sección aumenta de tamaño en unos 20 KB de código, mientras que el cuerpo del virus en sí sólo tiene una longitud de unos kilobytes.

    El virus utiliza las APIs Win32 para crear las réplicas. Sin embargo, el virus sólo funciona en los sistemas con Windows 95 y Windows 98. Ninguna de sus variantes se replica en Windows NT ni en Windows 2000. El motor de permutación presenta similitudes con algunos de los virus más antiguos para DOS.