Acceso fácil  |  Mapa del Sitio  |  RSS  

Imagen de esquina superior
 Índice 
Información general
Preguntas frecuentes
Cronología
Prólogo - Así empezó todo (1949-1984)
Capítulo I - Los primeros virus (1985-1987)
Capítulo II - 1988: Aparecen los anti-virus comerciales
Capítulo III - El año de la expansión (1989)
Capítulo IV - 1990: Se crea el primer virus polimórfico
Capítulo V - 1991: Lanzamiento de Anti Virus y virus polimórficos.
Capítulo VI - 1992: Un año lleno de incidencias
Capítulo VII - Hasta el año 2001
Capítulo VIII: El año 2002
Artículos sobre virus
Documentos externos
Ayuda para eliminación de virus
 
 Prólogo - Así empezó todo (1949-1984) 
Virus.Todo el mundo ha oído hablar de ellos y muchos los han sufrido, pero su forma de infectar, reproducirse o atacar sigue siendo un gran misterio para la mayoría. Una antigua máxima reza: "Si quieres vencer a tu enemigo, conócelo primero". Eso es lo que se intentará en esta entrega: si se ejecutan en un ordenador, es que son programas. Y si son programas, se pueden comprender. Es cierto que no contamos con el código fuente, pero ¿acaso es imprescindible? ¿Es que no tenemos el código objeto...?

Desde que en 1987 se diera el primer caso documentado de ataque de un virus informático en la Universidad de Delaware, mucho se ha dicho y escrito sobre el tema dentro de los foros más insospechados. A pesar de ello los virus siguen siendo grandes desconocidos para la gran mayoría, razón que sin duda contribuye no poco a que cada vez sea mayor el número de ellos en expansión. Conocer y entender la forma en que actúan, se reproducen y se comportan es la mejor forma de estar prevenido y saber cómo reaccionar; la solución de formatear el disco duro nada más enterarse de que dentro hay un virus es bastante extrema y, por lo demás, suele eliminar toda la información del disco duro... a excepción del propio virus.

Por otra parte, ya no en el caso de un particular, sino en el de las empresas, es muy posible que no puedan permitirse esperar a que se saque la siguiente versión de un antivirus que elimine el que les afecta, y necesiten que alguien realice un estudio inmediato de su virus, identifique su forma de actuar, sus efectos, y se pueda poner a corregirlos cuanto antes.

Esta serie de artículos tratará de dar cumplida visión del funcionamiento y técnicas de estos programas, pensando que el conocimiento y el entendimiento son dos armas básicas en la lucha contra cualquier amenaza.

Hay quien opina que este tipo de información no debe hacerse pública para evitar que más gente se dedique a fabricar virus. Pero, ya que según los estudiosos la media de aparición de virus nuevos viene a ser de unos 5 o 6 cada día -por no contar las modificaciones y mutaciones sobre otros ya existentes-, es fácil llegar a la conclusión de que "los malos" ya tienen toda la información que necesitan. Normalmente las políticas de ocultación de información de este tipo con ánimo de evitar que se utilice con "malos fines" fracasan estrepitosamente al acabar siempre desinformados los que sufren los ataques y nunca quienes los perpetran, cosa que ayuda a que los ataques sean mucho más efectivos.

Por eso aquí se tratará con virus reales, estudiando su comportamiento a través de su propio código. La naturaleza de estos programas obliga, eso sí, a suponer en el lector conocimientos mínimos de lenguaje ensamblador. Se explicarán construcciones crípticas u operaciones poco evidentes por estar fuertemente ligadas a la arquitectura de la máquina, pero no el repertorio de instrucciones o los modos de direccionamiento. Para información sobre estos aspectos, referirse a la bibliografía.

Los comienzos

La paternidad de la idea de un programa capaz de reproducirse se le atribuye a John von Neumann por su artículo "Theory and Organization of Complicated Automata" del año 1949. Von Neumann estaba interesado en la creación de vidas artificiales electrónicamente, a las que daba el nombre de autómatas que, según él, podían reproducirse sin excesiva dificultad.

También por aquel entonces, cuando empezaban a desarrollarse los primeros ordenadores, se vio la necesidad de llevar a la computadora a un estado inicial conocido, eliminando rastros de otros programas previamente cargados. Una solución muy ingeniosa consistía en implementar una instrucción que simplemente se copiaba a la siguiente posición de memoria y saltaba a ella para seguir ejecutándose. De esta forma todo el mapa de memoria se llenaba con un único valor conocido: el código correspondiente a la instrucción. Este fue otro ejemplo claro de código capaz de reproducirse. Seguramente basado en él, más adelante, en los años 60, cobró gran popularidad el juego "Core Wars", diseñado en los laboratorios Bell de AT&T;: dos jugadores lanzaban simultáneamente sus programas que se reproducían en memoria hasta que ésta se agotaba. Ganaba aquel que fuera capaz de "conquistar" más memoria, para lo cual era perfectamente legal "matar" a las copias del adversario y "robarle" esa memoria.

Aparte del méramente lúdico, también se trató de darle un uso algo más práctico a este tipo de programas, y así, a finales de los años 70, dos investigadores del Centro de Investigación Xerox de Palo Alto, California, idearon un programa que debía encargarse de las labores de mantenimiento y administración del complejo, al que dieron el nombre de "gusano". El programa "dormía" por el día y por la noche se propagaba por todos los ordenadores del Centro haciendo copias de seguridad y otras tareas de gestión. Todo esto en la teoría, porque en la práctica el gusano escapó de los ordenadores de prueba del laboratorio, se extendió por toda la red y paralizó todas las máquinas. Al intentar eliminarlo, seguía reapareciendo, así que no hubo más remedio que crear otro programa vermicida que fuera por todas las máquinas matando copias del gusano.

Los años 80

La palabra virus no se empezó a usar hasta que Fred Cohen, un estudiante graduado de la Universidad del Sur de California, lo utilizó en 1984 para su tesis sobre programas autoduplicadores. En ella daba la primera definición formal del término y hacía un estudio matemático de la expansión de este tipo de engendros, mediante el cual demostró que crear un programa detector de virus perfecto era lógicamente imposible (ver recuadro).

Ningún detector de virus puede ser perfecto. En su tesis doctoral para la Universidad de California, Los Angeles, Fred Cohen demostraba, en 1983, que no hay ningún algoritmo general que pueda concluir con total fiabilidad -100%- si un programa es o no un virus. Para ello se valía de la siguiente demostración por reducción al absurdo: Supóngase que existe un algoritmo general A que, analizando cualquier programa P, devuelve "true" si y sólo si P es un virus. Entonces sería posible crear un programa, P, que hiciera lo siguiente: if ( A(P) = false ) then infecta el sistema if ( A(P) = true ) then no infectes nada Es decir: P es un virus si A dice que no lo es, y no lo es si A dice que lo es. Por contradicción, ese algoritmo general A no existe.

Como se dijo antes, en 1987, el 22 de octubre, se da el primer ataque de virus del que se tiene noticia. En realidad era inofensivo y contenía la dirección y teléfono de los autores: dos hermanos de Pakistán, estudiantes de la Universidad de Lahore, aunque, al parecer, hubo un estudiante que perdió su tesis debido a efectos secundarios del virus. También ese año se produce la primera infección masiva sobre ordenadores Macintosh: un consultor de Aldus Corporation se infectó con un disco de juegos y al realizar luego pruebas al programa Aldus Freehand contaminó el disco que luego distribuyó su empresa. El virus se limitaba a presentar en pantalla un "mensaje universal de paz" a todos los usuarios del Mac, firmado por Richard Brandow, editor de la revista MacMag, al llegar al 2 de Marzo de 1988 (fecha del aniversario de la aparicíon del Macintosh II) y se autodestruía inmediatamente. Pero los buenos deseos de paz pronto se transformaron en sentimientos menos encomiables. Así, tiempo después, un banco de la isla de Malta se vio afectado por un virus que sacaba el siguiente mensaje por pantalla: "DISK DESTROYER - A SOUVENIR OF MALTA / I have just DESTROYED the FAT on your Disk!! / However, I have kept a copy in RAM, / and I'm giving you / a last chance to restore your precious data./ WARNING: IF YOU RESET NOW ALL YOUR / DATA / WILL BE LOST FOREVER!! / Your data depends on a game of JACKPOT / CASINO DE MALTE JACKPOT/ +L+ +?+ +C+ / CREDITS: 5 / < >" El virus borraba la FAT, una estructura básica de cualquier disco DOS que permite encontrar los datos, pero guardaba una copia en memoria. Después invitaba a jugar a las tragaperras: si salían tres "L", restauraba la FAT y no se perdían datos, pero si salían tres "?" o tres "C", destruía también la copia de RAM y se perdían todos los datos. Como era de esperar, el banco perdió la información en dos terceras partes de sus máquinas.