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.