VR3: Analisis de virus
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
Xuxa
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.
Anti-D
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.