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.