Copy Link
Add to Bookmark
Report

VR2: Analisis de virus

eZine's profile picture
Published in 
virus report
 · 5 Feb 2022

En este número presentamos un virus stealth, el 512, el virus Argentina, uno de los primeros creados en el país, y analizamos en detalle un virus de boot muy común: el Stoned


512
El virus 512 fue originado en Bulgaria en 1989. Infecta archivos .com inclusive al command.com. Ocupa exactamente 12 bytes, de ahí su nombre. Su descubridor fue Vesselin Bontchev, un importante investigador búlgaro de virus. Este virus es importante porque es el primer virus stealth de archivos que se conoce. Un virus stealth es aquel que se hace casi indetectable para el sistema que infecta. Esto se logra engañando al sistema operativo para que cada vez que quiera leer una parte de un archivo donde se oculta el virus le devuelve la información que habría allí si el archivo no estuviese infectado. De esta forma, aunque comparemos byte por byte un programa infectado con una copia del mismo sin infectar no notaríamos ninguna diferencia, mientras el virus esté activo en memoria controlando las operaciones de lectura del DOS.

Este virus utilizaba una técnica muy particular, porque accede en forma directa al File System Table, una tabla de uso interno del DOS. Esta estructura es distinta en diferentes versiones del DOS, por lo que no funciona en un DOS que no sea el 3.3. En memoria se oculta en el primer buffer de acceso a disco del DOS, obtiene su direccion en memoria con una estructura de datos única al DOS 3.1 y 3.3. Por estas causas, el 512 funciona solamente en DOS 3.3 o compatibles muy cercanos (como el DOS 3.31 de Compaq).

Por esta causa está prácticamente extinguido en este momento, ya que dado el precio promocional del MS DOS 5.0 y su capacidad para cargarse en memoria alta y soportar discos de más de treinta megas, casi nadie usa otro DOS. Hace unos años, en 1990, era muy común en nuestro país. En Estados Unidos nunca estuvo muy extendido, era casi desconocido. Esto nos hace pensar que aunque muchas veces creamos que los virus que aparecen en nuestro país vienen de Estados Unidos, esto no es siempre así. Probablemente haya llegado desde Europa o desde Asia.
El 512 no hace nada exepto reproducirse. Es un virus muy bien hecho desde el punto de vista del conocimiento del DOS. Utiliza estructuras y funciones que no están documentadas oficialmente y son difíciles de conseguir. Es obvio que el autor tiene acceso a mucha información, probablemente a la lista de interrupciones de Ralf Brown, donde encontramos toda la información necesaria como para desensamblarlo. No es común ver virus tan complejos y tan pequeños, por lo general usan funciones más documentadas. Desde el punto de vista de compatibilidad no es tan bueno, ya que a penas se cambia de versión de DOS éste deja de funcionar colgando los programas húespedes. Quizá el éxito de virus como el Jerusalem, Stoned, u otros se deba más a la compatibilidad con todos los sistemas operativos o programas que a grandes esfuerzos para no ser detectados. Es más fácil detectar un virus cuando vemos que no anda algo que cuando anda todo, a pesar de que cambie o no la longitud de los programas infectados.
Se cree que su autor no es otro que el famoso Dark Avenger. Este es un prolífico escritor búlgaro de virus, creador de algunos muy destructivos y con ideas innovadoras.


Argentina
En octubre de 1991 en el BBS argentino PC-HOST, el usuario Alberto Wurzel le dejó a Ricardo Pesce, el SysOp, un programa para que viera por qué le daba mensajes extraños cada vez que lo trataba de usar. Ese programa, luego de ser analizado por mi, resultó ser un virus. Probablemente sea el primer virus argentino en ser algo más que una pequeña variante de un virus anterior. Antes que este se crearon en el país los virus Jerusalem Mendoza y Ping-Pong C, pero eran variantes menores de otros virus. De todas formas, Argentina es una variante del virus Suriv, aunque está lo bastante modificado como para merecer un nombre propio. Este virus infecta sólo archivos .COM, excepto el command.com. No es un virus destructivo. Los días 25 de mayo, 20 de junio, 9 de julio y 17 de agosto se activa, mostrando uno de los siguientes mensajes de acuerdo a la fecha:

  • 25 de Mayo Declaración de la independencia Argentina
  • 20 de Junio Dia de la bandera Argentina
  • 9 de Julio Dia de la independencia Argentina
  • 17 de Agosto Aniversario de la defunción del Gral. San Martin

Despues del mensaje de acuerdo al día, muestra lo siguiente:

Argentina Virus escrito por AfA - Virus benigno - ENET 35 Pulse una tecla para continuar...

De esto podemos sacar varias conclusiones. Por un lado, hay un error en la primera fecha, ya que el 25 de mayo se festeja la creación del primer gobierno patrio y no la independencia argentina. Por otro lado, vemos que dice ENET 35, lo que nos permite pensar que fue escrito por un alumno secundario de una escuela técnica. Esto apoya a la creencia que circula por el ambiente informático de que la mayoría de los autores de virus son adolescentes. AfA seguramente son las iniciales del autor del virus. El 'Virus benigno' que aparece entre los mensajes y el hecho de que efectivamente el virus no pretenda hacer ningun daño subrayan la idea de que el autor sólo quiso hacer un experimento, y no pretendió causar daños. Corre un rumor que dice que el autor de este virus no pretendió que se escapara y llegara a infectar programas de gente inocente. Esto es muy posible, ya que es muy común que un autor cree un virus sin más intenciones que las de divertirse o hacer un experimento y luego se le escape sin notarlo.

Your PC is now stoned
Pin it
Your PC is now stoned

Stoned es un virus de boot sector. Se instala en el sector 0 (boot) en diskettes y en la tabla de particiones de los discos rígidos. En los diskettes de 360k copia el sector de booteo original en el sector 11, donde se encuentra el final del directorio raíz, por lo cual se perdería información del disco si habían archivos en esa parte del directorio. En los discos rígidos copia la tabla de particiones al lado 0, cilindro 0, sector 7, donde normalmente no hay datos. En la memoria se instala en la parte más alta de la memoria libre, cambiando el valor de la cantidad de memoria disponible a 2 k menos para no ser sobreescrito por algún programa. En discos rígidos con controladora RLL se cuelga al intentar funcionar.

El síntoma más visible, además de la falta de 2 k en la memoria principal, es un mensaje que aparece en forma aparentemente aleatoria al bootear, que dice "Your computer is now stoned" o "Your PC is now Stoned!" dependiendo de la versión del virus. Luego de esto la computadora se cuelga. Algunas versiones agregan el texto "LEGALISE MARIJUANA", que está presente en prácticamente todas las versiones pero algunas lo muestran y otras no. Estar "stoned" significa, en el uso popular de Estados Unidos y otros países, estar bajo los efectos de la marihuana. Por lo tanto, el mensaje diría que la computadora está drogada y pide la legalización de la marihuana. Es común encontrar virus con mensajes de tipo propagandístico a favor o en contra de alguna cosa, este caso no es nuevo, pensemos por ejemplo en el virus Brain y su lucha en contra de la piratería de software. Además de estos mensajes y los problemas de compatibilidad ya nombrados, este virus no causa ningun daño intencional. Se cree que el virus fue originado en Nueva Zelandia, ya que de allí vinieron los primeros reportes de este virus, en el año 1988. Ahora está muy difundido por todo el mundo, incluso en Argentina es muy común verlo.


Funcionamiento
Al bootear la máquina el BIOS carga el boot de los diskettes o la tabla de particiones en la dirección 07C0:0000 y le pasa el control. Luego, el código del boot sector se encarga de cargar el resto del sistema operativo. Cuando el disco está infectado por el Stoned, el BIOS carga el virus, y le pasa el control. Lo primero que hace es definir un stack propio para sus rutinas. Luego guarda el viejo valor de la interrupción 13h (acceso a disco) e instala su propia rutina. Modifica el contenido de la posición de memoria 0000:0413, restándole 2, con lo cual el BIOS va a informar que hay 2 k menos de memoria RAM. Despues de esto se copia al tope de la memoria, donde restó esos 2 k, y salta a ese código. Obviamente, la rutina que reemplaza la interrupción 13h está en esta parte alta de la memoria y no donde se cargó el virus originalmente.

A continuación carga el boot original, que guardó en el sector 11 de los diskettes o en el sector 7 de los discos rígidos. Luego de hacerlo verifica que el byte ubicado en 0000:046C sea 7. Ese byte es la parte baja del timer de la máquina, en realidad funcionaría como una rutina burda de azar. Si es 7, escribe el mensaje "Your PC is now Stoned!". Si no es así, y se cargó de diskette, procede a verificar si el disco rígido está infectado. En el caso de que se haya cargado de disco rígido salta al boot original para que siga cargándose normalmente el sistema operativo.

Para verificar el disco rígido, lee la tabla de particiones y compara parte de su código con si mismo para comprobar si está infectada. Si lo está sigue cargando el sistema operativo, si no lo está procede a infectar el disco. Para infectar, escribe la tabla de particiones que leyó en el sector 7, track 0, cabeza 0, y se copia a si mismo desde la memoria en la tabla de particiones. Luego de esto, ya infectado el disco rígido, continua ejecutando el boot sector original para que termine de cargar el sistema operativo. Con esto comprenderán por qué a pesar de que no esté el sistema operativo en un diskette el virus puede contagiarse si booteamos con un disco infectado. Con solo tener el virus ya se contagia, porque lo hace antes de cargar el DOS y con interrupciones del BIOS exclusivamente.

Una vez instalado el virus, quedan dos rutinas activas en la memoria. Una es la que reemplaza la interrupción 13h y la otra es la que se encarga de infectar los diskettes. Es interesante notar que el disco rígido es infectado sólo en el caso de que el virus se cargue de diskette y en el momento de la carga, no después. Esto es lógico, porque el disco rígido no es removible y si se infectó al principio de la carga del DOS o ya estaba infectado, luego no va a cambiarse el disco y va a seguir en el mismo estado. Esto es interesante a la hora de desinfectar un disco rígido, no es necesario sacar el virus de memoria para hacerlo, ya que no va a intentar la reinfección.

La rutina que reemplaza la interrupción 13h del BIOS verifica si se pidió un servicio 2 o 3, o sea, si ah es 2 o 3, y que dl sea cero. Esto significa, si se pidió leer o escribir sectores de disco (ah=2 o ah=3), y el drive es el A (dl=0). Si las condiciones se dan, llama a la rutina de infección y luego retoma la interrupción 13h original. Si no se dan las condiciones, saltea la infección y sigue con la interrupción.

La rutina de infección lee el boot sector del diskette, haciendo un call al código de la interrupción 13h en el BIOS, y verifica si está infectado previamente, comparando su código con el que allí encuentre. Si no lo está, escribe el boot sector recien leído en el sector 3, track 0, cabeza 1, y luego escribe su propio código sobre el boot original. Después de esto, vuelve a la interrupción 13h original.

Vemos que este virus es de funcionamiento muy sencillo, y con pocas instrucciones logra funcionar en forma eficaz.

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT