Por Aldo B. Castelar
En este número vamos a analizar los virus hechos por Hugo
Peña, nuestro entrevistado. Estos son el Xuxa y el Anti-D
El Xuxa es un virus que infecta todos los archivos .com
excepto el command.com. La rutina de infección realiza el
contagio cada vez que se ejecuta un programa infectable,
si éste no está previamente infectado. El autor del virus
me lo entregó personalmente a mi, por lo tanto no se sabe
si está o no diseminado en el ambiente informático.
Todavía no se vió ningun Xuxa fuera de las copias de
estudio que existen.
Fue hecho a principios de 1992, y existen dos versiones.
Estas tienen muy poca diferencia entre si,
fundamentalmente en porciones no críticas del código y
datos. Se instala residente en memoria y ocupa 1,712
bytes.
Su efecto es muy interesante: entre las 17 y las 18 horas
toca por el parlante de la máquina la canción 'Illarie'
del Show de Xuxa. Justamente, el show era emitido en ese
horario por telvisión en el año en que el virus fue
creado. La canción suena en background, no interrumpe los
programas que estén funcionando en la máquina en el
momento de su activación. Solo se notará que la máquina
se hace un poco más lenta mientras suena la música.
Toma las interrupciones 1Ch y 21h. La interrupción 1Ch es
llamada 18.2 veces por segundo por la interrupción 08h.
Se usa normalmente para ejecutar pequeñas rutinas en
background o cuando se necesita controlar algo que debe
ocurrir en algun momento determinado, desde un residente.
En esta interrupción instala la rutina que verifica si es
la hora correcta de activación, y en ese caso, toca la
musica. La interrupción 21h la usa para infectar a los
nuevos programas que se ejecuten. Cada vez que se pide al
DOS la ejecución de un programa, el virus verifica si es
un .com y si no está previamente infectado. Si lo debe
infectar copia el código residente del virus a un archivo
llamado TMP$$TMP.COM y el código del programa a infectar
después de éste. Cuando ya creó el programa infectado,
borra el primero y renombra el temporario como el
programa original.
La idea de virus musicales es vieja, ya hace tiempo
existen virus como el Oropax o Yankee Doodle que a
determinada hora, en el caso del segundo, o poco despues
de infectar un archivo, en el caso del primero, tocaban
distintas melodías. Es interesante que en el caso del
Yankee Doodle incluso coincide la hora de activación con
el Xuxa, a las 17 horas. La diferencia es que el el
Yankee Doodle la melodía suena sólo una vez, y en el Xuxa
se repite hasta las 18 horas. Ambos virus son
completamente independientes entre si, ninguno de los dos
está basado en el otro, a pesar de sus coincidencias.
El anti-D infecta los archivos .COM, exepto el
command.com. Su funcionamiento es muy similar al Xuxa, en
cuanto a su contagio e infección. La diferencia es que en
lugar de tomar la interrupción 1Ch toma la 09h. Con ella
cuenta la cantidad de veces que el usuario presiona la
tecla D en el teclado. Cuando esa cuenta llega a 33,
deshabilita dicha tecla.
Veamos como lo hace:
int_09:
int_09h_handler proc far
pushf
push ax
push cx
push dx
push ds
push es
push si
push di
push cs
pop ds ; guarda el estado del procesador
in al,60h ; lee la tecla directamente
del port
cmp al,32 ; verifica si es la D
jnz no_d ; si no es, sigue con la interrupcion
; original
cmp byte ptr activo, 33
jne es_d ; si es la D controla la cantidad
; de veces que fue pulsada
; Si es menos de 33
; sigue
; Si se pulsó 33 veces la tecla la borra del teclado
in al,61h
or al,80h
out 61h,al ; manda al 61 lo recibido OR 80h
; simula liberacion de tecla
and al,7Fh
out 61h,al ; manda al 61 lo recibido AND 7Fh
mov al,20h
out 20h,al ; y manda al 20 un 20h
pop di
pop si
pop es
pop ds
pop dx
pop cx
pop ax
popf
iret ; retorna de la interrupción sin la tecla
es_d:
inc activo ; incrementa el contador de
; teclas D pulsadas
no_d:
pop di
pop si
pop es
pop ds
pop dx
pop cx
pop ax
popf
jmp cs:adrkb ; sigue con la interrupcion
; del teclado del BIOS
int_09h_handler endp
Como vemos, maneja la interrupción en forma normal, como
cualquier programa residente. La interrupción 09h es
generada cada vez que el usuario toca una tecla en el
teclado. El handler normal del BIOS lee dicha tecla y
pone el código correspondiente en una zona de memoria
llamada buffer de teclado. El virus verifica si debe
anular la tecla, y si es así lee el estado del teclado,
le indica que la tecla ya fue procesada, y vuelve de la
interrupción sin permitir que el BIOS procese la tecla.
Esta rutina no interfiere para nada con el resto del
teclado, sólo con la tecla D. En la forma como está
hecha, no tiene en cuenta si el shift está o no
presionado, por lo tanto no importa si la D es mayúscula
o minúscula. El efecto buscado por el programador del
virus fue el de simular un error físico en el teclado,
como si éste estuviese roto y no fuera un problema de
software.
Existen otros virus que interfieren con el teclado, como
el Keyboard Bug, que agrega en forma intermitente
caracteres aleatorios al buffer de teclado. Tambien el
virus 10 Past 3 interfiere con el teclado, activando el
estado de las teclas control o shift, con lo cual lo que
el usuario tipea se ve modificado. Uno muy interesante es
el Fu Manchu, que se ativa cuando el usuario tipea
determinados nombres de políticos. El virus agrega al
buffer del teclado frases insultantes contra estos
políticos, con lo cual si estamos tipeando en un
procesador de texto esas frases terminan en el documento
a menos que las borremos.