Análisis de virus: virus benignos
Por Fernando Bonsembiante


En este numero analizamos dos casos de virus que pretenden ser benignos.
¿Es posible que en el futuro haya virus que queramos tener en nuestra
máquina? Tambien veremos un virus que usa una técnica novedosa para no
ser detectado.

Normalmente, la persona que hace un virus no piensa en hacerle un bien a
nadie. La imagen que tenemos de un autor de virus es la de una persona
que quiere hacer un mal, o por lo menos quiere tener una 'fama anónima'
con su virus. En los últimos meses surgieron autores de virus que, si
bien todavía no dan su dirección y nombre reales, están tratando de
cambiar la imagen de los virus. Estos dos virus que analizamos podrían
considerarse como 'utilitarios que utilizan técnicas y conceptos de
virus informáticos'. Esto es un concepto totalmente nuevo en los virus
conocidos hasta ahora, ninguno pretendió ser más benigno que no hacer
nada. En la teoría, sin embargo, Fred Cohen, una de las primeras
personas que hizo invesigación seria sobre virus en el mundo, ya venía
hablando de usos benéficos de los virus. El ejemplo que daba era el de
un programa de compresión auto-instalable y auto-propagante. En
principio, la ventaja que tiene esto es que el usuario no tiene que
preocuparse en instalar el programa, simplemente se instala en memoria
cada vez que ejecutamos un programa 'infectado' en nuestro disco. El
problema es obvio, no tenemos opción de no instalarlo, y fácilmente lo
podemos llegar a encontrar en máquinas donde no pretendíamos usarlo,
donde llegó solo, por su afan de auto-propagación.

Cruncher

Según parece, una persona que se llama (o se hace llamar) Masud Khafir,
perteneciente al 'Trident Group', según consta en la documentación, leyó
a Cohen y decidió poner sus ideas en práctica. Su virus, el Cruncher, es
precisamente un compresor de ejecutables al mejor estilo Pklite o Lzexe.
Si bien estos programas modifican los ejecutables, como hace un virus,
requieren que el usuario se preocupe de instalarlos en cada programa que
quiera comprimir, por lo tanto la diferencia fundamental es que no se
auto propagan. Esto es lo que los diferencia de un virus, ya que tanto
el Pklite como el Lzexe como otros programas de su tipo agregan su
código al principio del programa, al igual que un virus. Este código es
el que se ejecuta en primer lugar, y luego el programa 'huesped'. Como
necesitan que el usuario los instale, no pueden considerarse virus de
ninguna manera.

Cruncher funciona como éstos, pero con la diferencia fundamental de que
no necesita que el usuario lo instale. Cuando se ejecuta el primer
programa comprimido con Cruncher, éste queda en memoria e 'infecta' cada
programa que no haya sido previamente comprimido con él. De esta forma,
sin que el usuario ni siquiera lo note, va a tener cada vez más lugar
libre en el disco rígido, pero sin perder datos. En principio, parece
ser el primer virus que reduce la longitud de sus huéspedes en lugar de
aumentarla.

De todas formas, si bien funciona por lo general sin problemas, si se
comprime un ejecutable que contenga overlays o chequee su propia
integridad, va a causar problemas. Como no tenemos un control directo
sobre los programas que va a comprimir o no, no hay forma de prevenir
fácilmente estas incompatibilidades. Cruncher hace un pequeño esfuerzo
para no causar problemas evitando tocar archivos que comiencen con
determinados pares de letras, por ejemplo CO (command.com) SC (scan.exe)
CL (clean.exe) etcétera. En definitiva, si no fuera que un virus es algo
intrínsecamente incontrolable, sería un caso de 'virus benigno'.

King of Hearts

El virus King of Hearts, descubierto a mediados de agosto de 1993, es
otro caso de un virus con supuestas buenas intenciones. En este caso, la
utilidad es la de encriptar discos. Se trata de un virus de boot sector
o tabla de particiones. Cuando infecta un nuevo disco, tanto un rígido
como un diskette, le pide al usuario un password con el cual encriptará
el disco. Los siguientes accesos al disco se podrán hacer sólamente con
el virus cargado en memoria y con el password correcto. Existen
programas comerciales y shareware que proveen este tipo de servicio,
pero éste es el primero en funcionar como un virus, ya que cuando está
en memoria va a infectar todo diskette al que se acceda con él activo, o
todo disco rígido si booteamos desde diskette.

En principio, es un virus que respeta al usuario, ya que antes de
infectar un disco rígido va a pedir permiso para hacerlo. Así mismo,
permite que, si pulsamos las teclas control-alt-H, se desinstale del
disco rígido. En el caso de los diskettes, no permite la desinstalación,
pero con control-alt-O podemos conectar o desconectar la rutina de
infección de diskettes, y con control-alt-K podemos cambiar el password
del diskette.

Funcionamiento

El virus viene en un programa de 32000 bytes que lo instala por primera
vez en nuestro disco. Una vez que se ejecuta este instalador, el virus
estará activo en memoria e infectará nuestro disco. Una vez que se
instale y encripte el disco, la única forma de leerlo será con el virus
activo en memoria. Este actúa como un filtro de toda la información que
se lea o escriba al disco, la cual parecerá normal para nuestros
programas de aplicación, pero será totalmente ilegible si se accede
directamente sin pasar por el virus.

En el caso de los diskettes de 1.2 megas, el virus ocupa el sector de
booteo, y marca ocho sectores en la FAT como malos. Luego copia el
sector de booteo original en uno de esos sectores marcados como malos, y
pone su propio código en los siete restantes. En los discos rígidos
copia la tabla de particiones al cilindro 0, cabeza 0, sector 9, una
parte que generalmente no se usa. El resto del código del virus va a
parar a los sectores 2 al 8. Cuando se bootea un disco infectado con
King of Hearts, éste reserva 9K de la memoria principal de la máquina
para su propio uso, bajando la cantidad de memoria libre que reporta el
BIOS. En ese lugar se copia luego. El virus funciona tomando la
interrupción 13h, que maneja todo el acceso a disco tanto del DOS como
del BIOS. Todo acceso que se haga al disco pasando por ahí será
encriptado o desencriptado según sea necesario. En el caso de que usemos
algun utilitario que acceda directamente al disco sin usar el BIOS o el
DOS, vamos a ver basura en lugar de la información. Si se intenta
escribir en el disco sin el virus en memoria o con este tipo de
utilitarios, se corre serio peligro de destruir la información contenida
en él, ya que se encripta todo, hasta los directorios. Otros programas
que usen el BIOS pero que usen técnicas como la llamada 'tunneling' para
evitar que sean interceptados por otras rutinas, y que por lo tanto usan
el BIOS en forma directa, tambien van a ocasionar serios problemas.

El virus también toma la interrupción 09h, la de manejo del teclado,
para detectar sus teclas de activación o desactivación. Cuando se le
ordena desinstalarse, va a restaurar el manejo de la interrupción 13h y
09h al BIOS, y pone nuevamente en su lugar la tabla de particiones del
disco. Los otros sectores del virus en el disco no son modificados.

En el caso de los diskettes, no hay forma de desinstalarlo, y si se
quiere desinfectar, el antivirus deberá poder pedirle la clave al
usuario.

Este virus parece estar basado en uno escrito por Mark Ludwig, y
publicado en su libro 'The little black book of computer viruses' donde
describe un virus de sector de booteo que funciona en forma similar,
pero que no incluye ni las rutinas de desinstalación ni las de
encripción.

Exebug II

El virus Exebug II es un virus de boot sector que en cualquier día de
marzo se activa e intenta destruir el disco rígido. Es un virus stealth,
por lo tanto es imposible de detectar en el disco cuando éste está
activo en memoria. Ocupa sólo 512 bytes, o sea que cabe en un sector de
booteo más otro sector en el disco. Es un virus pequeño pero no por eso
menos destructivo. Contiene dos rutinas muy inteligentes de destrucción,
una de ellas es similar a la del Michelángelo, pero con el agregado de
que en vez de destruir 256 cilindros, destruye 1024. Esta es la rutina
que se activa cada día de marzo. La otra rutina de destrución se basa en
un truco no documentado del DOS, muy poco conocido. Este truco en
realidad consta de dos partes. En DOS existe un modo de compatibilidad
con CP/M, que utiliza los vectores de interrupción 30h y 31h como un
modo de entrada a algunas funciones del DOS. Entre las funciones que
podemos acceder con este método existe una, tambien heredada del CP/M,
que permite borrar de un solo golpe la totalidad de las entradas de
directorio del drive actual. Esta frase, 'totalidad de entradas de
directorio', significa que no importa que sean archivos de sistema, read
only, o a su vez subdirectorios, simplemente borra todo lo que
encuentra. Si se ejecuta esta función desde el directorio raíz del disco
rígido, se borrará absolutamente todo el contenido del mismo. Lo
interesante es cuándo se activa esta rutina. Pero para ver esto, debemos
ver dos modos más de funcionamiento del virus.

Cada vez que se escribe un sector que empieze con M (algunas variantes
buscan MZ), el virus asume que se trata de un archivo .EXE. En ese caso,
verifica si el sector está en el disco B: o en algun cilindro entre 512
y 1023. Si es así, sobreescribe el sector con un trozo de código del
virus. Este código es justamente el mismo que destruye los 1024
cilindros del disco, el primero que vimos. Esto convierte al programa en
un troyano que destruirá el disco apenas sea ejecutado. En el caso de el
supuesto .EXE que se escriba esté en el disco A:, y en el sector 3, en
lugar de escribir el código destructivo solamente, escribe todo el
código del virus en ese sector, pero con una instrucción JMP distinta en
el comienzo. Esto transforma al programa en un 'instalador' o dropper
del virus. Cuando se ejecute el programa, éste va a instalar el virus en
la tabla de particiones del disco rígido. Luego de hacerlo, va a
ejecutar la rutina que ya describimos que utiliza las funciones
heredadas de CP/M. O sea que no solo obtenemos un disco infectado, sino
que también lo borra por completo.

Lo más interesante de este virus es el método que utiliza para evitar
ser detectado. Como es un virus stealth, lo normal para desinfectarlo
sería primero bootear desde un diskette limpio, y luego utilizar un
antivirus para restaurar la tabla de particiones original. Pero aquí es
donde este virus se muestra como realmente novedoso. Apenas se ejecuta
el virus, cambia la CMOS para que parezca que no tenemos una diskettera
A: instalada. De esta manera, cada vez que se bootee, el BIOS va a
pensar que no hay diskettera, y va a intentar cargar el sistema
operativo del disco rígido. Como lo primero que se carga es el virus,
éste va a verificar si hay un diskette en el drive A:, luego de
activarlo nuevamente, y si es así va a continuar booteando de diskette,
pero con el virus ya instalado en memoria. Para cualquier persona que
esté viendo el proceso de booteo, le va a parecer que no hubo nada raro,
y va a pensar que cargó un sistema operativo libre de virus, cuando en
realidad el virus está activo en memoria. Para evitar ser detectado,
cada vez que se intente acceder a la diskettera A: va a restaurar la
CMOS para que el BIOS piense que ésta existe, y cuando se deje de
acceder va a volver a desactivarla. Entonces, aunque apagemos la máquina
y la volvamos a prender, el virus sigue teniendo control de la
situación. La única forma de sacarnos de encima a este virus es
modificando la CMOS con la utilidad de setup del BIOS, y luego cargando
un sistema operativo limpio. En el caso de que no se pueda acceder al
setup del BIOS sin usar un programa externo, debemos desconectar la
batería de la CMOS para borrar el setup y evitar que se cargue el virus.
En algunas máquinas, como ser algunas PS/2, aún esto es imposible, por
lo que se deberán tomar medidas más drásticas como desconectar el disco
rígido. Este virus es realmente novedoso, y utiliza una técnica que
nadie, ni los autores de virus, ni los de anti-virus habían pensado
hasta ahora para evitar ser detectado y mantener el control de la
máquina aún despues de ser apagada.