Analisis de Virus

Por Fernando Bonsembiante

 

En este número analizamos un virus argentino nuevo, que
nos acercó un lector de Bahía Blanca.

 

Recibimos en nuestra redacción la siguiente carta de un
lector de Bahía Blanca:

A fin de colaborar con su publicación les facilito
un disco conteniendo un virus, segun entiendo bastante
nuevo. Lo detecté en el colegio al cual concurro la noche
del 20/4. A toda prisa desarrollé una vacuna beta para
detectarlo (y en la medida de lo posible erradicarlo) y
realicé un rápido análisis del mismo, donde saqué las
siguientes conclusiones:

-Se trata de un virus de boot sector.
-Al igual que otros virus (Michelangelo, Anti Tel, etc.)
disminuye la cantidad de memoria instalada reportada por
el BIOS en 2Kb, por lo cual su presencia se delata al
ejecutar un simple CHKDSK o MEM.
-Alamcena la copia del Boot Sector siempre en el sector
físico ubicado en el cilindro 0, lado 1, sector 3. Esto
sin considerar el tipo de medio en el cual se encuentre
(es decir, no considera si se trata de un disco de 360k,
1.2M, etcétera) Esto causa que en discos de poca
capacidad sobreescriba el cluster 2 o 3, o en discos de
alta capacidad escriba sobre uno de los primeros sectores
del directorio raíz.
-Seleccioné un string de identificación con cierto
criterio, pero no tuve todavía tiempo de desensamblarlo y
buscar un string mejor, (aún así intuyo que seleccioné
una parte de la rutina de control de la interrupción 10h
o 21h, pues viene luego de una secuencia de PUSH AX, PUSH
BX, PUSH CX, etc., lo cual implica una rutina que no
modifique registros) El string es el siguiente:

1E 06 16 56 80 FC 02 72 62 80 FC 03 77 5D 80 FA 00
75

El mismo es utilizado en mi vacuna para detectar el
virus.
-Me llama la atención el tiempo que tarda en cargar el
sistema desde un disco infectado y la presencia de
sectores defectuosos falsos (creados por el virus).
Todavía no pude determinar la causa de esos factores.
-Hasta donde pude determinar, el virus no afecta los
discos de 3.5, al menos no como drive B.

Me tomé la libertad de asignarle un nombre al virus
en cuestión, el cual tiene un elevado nivel de
integración (estimo que su longitud no supera los 512
bytes). De no haber sido bautizado previamente, sería mi
intención denominarlo CAMOUFLAGE II. Al día de la fecha,
aquí en Bahía Blanca circula la versión 100 del
Scan/Clean, quien no pudo detectar el presente virus, ni
sus versiones 91 o 97.
De no poder distribuirse la vacuna que realicé, creo
que sería conveniente publicar el string y las
instrucciones para añadirlo al SCAN a fin de que no se
propague. Aquí en la ciudad se transformó en epidemia.

Alejandro G. Stankevicius

Inmediatamente procedimos a desensamblar el virus y a
analizarlo. El resultado de nuestro análisis fue
ligeramente distinto al de Alejandro, pero básicamente
igual en los puntos fundamentales.

Este virus infecta el boot sector de los diskettes
ubicados en el drive A, independientemente de su formato,
y del disco rígido infecta la tabla de particiones. En
los discos rígidos pone la tabla de particiones original
en el sector 7, cilindro 0, cabeza 0. Este lugar es muy
usado por los virus ya que normalmente no se guardan
datos en ese lugar. En los diskettes pone el boot
original en el sector 3, cilindro 0, cabeza 1. En los
diskettes causa el problema de sobreescribir una parte de
la información del disco, o el directorio raíz.
Cuando el virus se carga en memoria reduce en dos la
cantidad de memoria instalada que reporta el BIOS, como
hacen la mayoría de los virus de boot, pero éste tiene
una particularidad. En vez de restarle dos al valor ya
existente en ese lugar, pone el valor 638 decimal, con lo
cual indica que hay 638k de memoria instalada. El
problema surge si hay menos de 640k de memoria real, en
ese caso indicaría que hay más memoria de la que
realmente hay, causando problemas. Eso no suele suceder
con las máquinas de ahora, que todas tienen por lo menos
640k de memoria, pero en máquinas más antiguas
seguramente cause algun problema. Como al copiarse a
memoria alta tampoco verifica si hay o no 640k de
memoria, seguramente el virus se cuelgue al intentar
ejecutarse.
La causa de que el virus tarde tanto en cargar el sistema
se debe a que cada vez que bootea incrementa en uno un
contador de veces que se booteó. Para hacerlo debe
escribir el virus en el boot sector o en la tabla de
particiones cada vez que bootea, por eso se hace más
lento el proceso. Cuando dicho contador llega a 65535, o
sea a 0FFFFh, o sea que booteo esa cantidad de veces con
el virus, cada vez que se llame a la interrupción 13h se
escribirá en la pantalla el mensaje 'LAVOT NO ENSEÑA'.
Esto nos hace sospechar que el virus fue creado como
venganza o protesta contra un profesor. El mensaje está
encriptado de una forma muy básica en el código del virus
y no se ve a simple vista.
Para infectar, en el caso de que haya booteado de
diskette, simplemente se copia en la tabla de particiones
en el momento de bootear, si ésta no está previamente
infectada. Cuando el virus está en memoria, cada vez que
se acceda a la disketera A para lectura o escritura va a
infectar el diskette que contenga a menos que ya esté
previamente infectado. Cada vez que infecta un nuevo
disco, rígido o floppy, pone en cero el contador de veces
que el mismo fue booteado. Sólamente lo incrementa cuando
se bootea de un diskette infectado.

El string elegido por Alejandro está justamente en la
rutina que reemplaza la interrupción 13h, de servicios de
disco del Bios (la única tomada por el virus, por otra
parte). Un string mejor y mas dificil de que cause falsas
alarmas o identificaciones incorrectas es

2E C7 06 04 00 00 00 33 DB B8 01 03 B9 01 00 33 D2 9C 2E

que es justamente parte de la rutina que infecta los
diskettes. Por lo general es adecuado elegir como string
de identificación parte de las rutinas de infección, que
son segmentos mucho más críticos del código y difíciles
de cambiar.

Para agregar este string en el Scan debemos usar un
archivo de definición de virus externo. Este archivo se
crea con un editor de texto cualquiera que permita
guardar el archivo en ASCII puro, y tiene la siguiente
forma:

#Camouflage II
"2E C7 06 04 00 00 00 33 DB B8 01 03 B9 01 00 33 D2 9C
2E" Camouflage_II

Este archivo se guarda con el nombre, por ejemplo,
ext.vir y se llama al Scan con los parámetros, por
ejemplo

Scan C: /EXT c:\ext.vir

Con esto se le indica al Scan que busque tambien los
virus definidos en ext.vir. Pueden usarse conjuntamente
con esta opción cualquier otra que se use normalmente.


Logo de Ubik World Domination