VR2: Uno de los primeros virus
Presentamos la historia de un primitivo virus contada por su autor. En 1981 recien empezaban a aparecer las PC, y ya existían los virus informáticos, basados en una máquina popular en ese momento, la Apple II. Joe Dellinger, estudiante de la universidad A&M de Texas, probablemente jamás se imaginó que lo que hizo casi como un juego iba a convertirse, pocos años después, en un problema a nivel mundial.
Cuando era estudiante universitario en la universidad A&M de Texas (eso fue en 1981) había una activa comunidad de usuarios de Apple II en mi residencia universitaria (Shuhmacher) con una increíble cantidad de copias piratas de juegos. Observé que la mayoría estaban dañados de diferentes formas, pero casi siempre se podía jugar con ellos a pesar de eso. (Por ejemplo, había un conocido juego llamado "Star Trek" en BASIC que ocasionalmente tenía basura en sentencias que no eran críticas, como REM y PRINT, los juegos de guerra espacial muy frecuentemente tenían basura aleatoria que reemplazaba algunos dibujos de naves, etc.) Decidí que podía explicar esto como una especie de "evolución".
Para que la evolución se produzca hacen falta mutación y selección natural. En realidad, había "mutación" causada por gente que intentaba modificar los juegos; lo que es más importante aún, había computadoras y disquettes enfermos que deformaban en forma accidental muchas copias de estos juegos.
La gente seguía utilizando los disquettes de los juegos hasta que literalmente se desintegraran. Mi Apple II, de un modelo antiguo, era muy poco confiable y solía colgarse cada 30 minutos de todo tipo de interesantes formas. Por lo común unos pocos golpecitos bien dados la ponían nuevamente en funcionamiento. La "Selección Natural" entraba en escena con las acciones de los usuarios de "reproducir" o bien "matar" copias de los juegos. Por ejemplo, si no se podía jugar con la copia del juego que uno tenía se intentaba conseguir otra copia de ese mismo juego reproduciendo esta copia y matando la otra. Como había espacio limitado para juegos en los discos, también había una gran competencia entre las diferentes especies de programas.
Esta idea de programas que habitan una especie de biosfera de la computadora llevó naturalmente al concepto de un "Virus de Computadora", como un resultado accidental probable de dicha evolución. Mis experimentos comenzaron cuando intenté averiguar cual era el cambio mínimo que haría al DOS virósico. Pensaba en algo así como un prion, una especie de proto-virus.
Recuerdo que la respuesta para el DOS 3.3 era de aproximadamente 16 bytes, que estaba dentro de los límites de lo que sucedería naturalmente si las Computadoras Apple II, en manos de gente que copiara programas de juegos aleatoriamente, existieran durante algunos millones de años.
El próximo paso lógico era intentar determinar como sería un programa evolucionariamente óptimo. Obviamente el programa sería más exitoso si no confiara en la buena voluntad de los humanos para reproducirse, pero asimismo no es una buena idea dañar al huésped (o darle a los humanos una razón para gastar energías intentando matarlo a uno). Por ello que el virus ideal se extendería por sí mismo sin causar ningún tipo de daño o "síntoma", si pudiese evitarlo.
Traté estas ideas con amigos, muchos de ellos también usuarios de Computadoras Apple. Hasta ese momento ninguno de ellos había escuchado lo que era un "virus de computadora". (Muchos usuarios de Apple que conocía se burlaban de la idea de que algo así pudiera existir). Bien, en ese momento crear un virus sonaba como un proyecto realmente interesante y era un buena excusa para aprender el lenguaje de máquina del procesador 6502. Por lo tanto, en nuestro (poco frecuente) tiempo libre, un grupo de nosotros comenzó a trabajar sobre mi "programa evolucionariamente óptimo".
Finalizamos nuestro primer intento, la "Versión 1 del Virus" a comienzos de 1982. El Virus 1 era infeccioso pero aún causaba síntomas en mi computadora a pesar de nuestros mejores esfuerzos, por ello que lo dejamos en estricta cuarentena y continuamos experimentando con él.
Unos meses más tarde terminamos el diseño del Virus 2. Parecía no causar serios daños, por ello procedí con el próximo paso en mis experimentos y lo solté en mis propios discos. El objetivo era determinar con qué velocidad dicho programa se diseminaría por mis propios discos si seguía utilizando mi computadora en forma normal. Tenía otra buena razón para querer asegurarme de que el virus era totalmente inocuo. De hecho casi todo el código del Virus 2 era para verificar diferentes tipos de situaciones peligrosas: un DOS no convencional, discos no convencionales, programas que alteran el DOS, etc. En estos casos los virus o no infectarían o bien se desconectarían inmediatamente del DOS, y se "suicidarían".
Los usuarios de Apple II de la Universidad A&M de Texas estaban muy interesados en mi "investigación", por eso les di también copias del Virus 2 a varios amigos que querían jugar con él. La idea del virus de computadoras se extendió rápidamente; muchos otros comenzaron a trabajar en los suyos propios propios, "menos aburridos" (léase dañinos).
Afortunadamente, (por lo que yo supe) se pasaban la mayor parte del tiempo intentando idear bomas interesantes para que los virus produjesen síntomas "divertidos", en lugar de intentar decididamente crear un virus maligno activo.
Al comienzo mantuvimos el Virus 2 cuidadosamente en cuarentena, pero despues de unos pocos meses de no haber presentado síntomas dañinos, nos descuidamos y sucedió lo inevitable. Supe por primera vez que el Virus 2 se había escapado por uno de mis amigos de la universidad que se había graduado y mudado a la universidad UIUC para continuar sus estudios. Me informó que en ese lugar todas las copias de un juego llamado "Congo" habían dejado de funcionar misteriosamente. Cuando la gente quería obtener una nueva copia que funcionara, se encontraba con que las copias anteriores, que andaban, ahora dejaban de hacerlo. Mi amigo se dio cuenta de lo que había sucedido y me informó acerca de ello. Inmediatamente diseñamos un programa "inmunizador" y lo distribuimos en UIUC; el utilitario standard de Apple II "master create" fue suficiente como desinfectante. Sin embargo, nunca estuvimos seguros de haber matado todas las copias que se habían escapado del Virus 2 en UIUC.
Estaba desilusionado porque el Virus 2 era un fracaso, y comencé a diseñar el Virus 3. Resultó ser que el Virus 2 causaba problemas porque agrandaba el sector 1 del DOS en 256 bytes, ¡una significativa cantidad de memoria!, para albergar el código extra. Unos pocos programas se destruirían en forma extraña por esta razón. (La solución era simplemente bootear desde un disco no infectado y luego correr los programas).
Entonces, el objetivo para el Virus 3 era que no ocupara lugar ni en la memoria ni en el disco. Después de pensar un poco se nos ocurrió una solución: la mayor parte del núcleo del Virus 3 se alojaba en la memoria no protegida sobre la que se podía escribir libremente. Una pequeña rutina oculta y a salvo dentro de agujeros en la tabla de conversión de lectura-escritura del DOS hacía un triple control del código sin protección antes de ejecutarlo. Este código era una verdadera pesadilla; algunos bytes en la tabla cumplían doble función: como valores de información críticos para el DOS y como códigos de operación ejecutables para el virus. El Virus 3 fue un éxito; nunca nos encontramos con ningún programa cuyo comportamiento se viera afectado por su presencia. La peor parte de diseñar un virus de DOS fue que cada vez que cometía un error, el DOS dejaba de funcionar, y entonces debía re-ubicar manualmente los bytes que tenía escritos en folletos de propaganda. Utilizar un ensamblador no era en absoluto la solución, ya que todo el proceso constaba de sólo 300 bytes y se desintegraba en pequeños pedacitos en varios sectores del DOS. Tenía gran cantidad de JMPs por todos lados, un código de modificación propia y otras pesadillas similares, todo esto para hacerlo lo más pequeño posible. Cuanto más grande era y más expuesto estaba a la memoria, más trabajo tenía para reproducirse y más posibilidades existían de que algo inesperado sucediera.
Finalmente, no sé lo que sucedió. Debido a que el Virus 3 de hecho era completamente invisible, luego de un tiempo perdimos el interés y lo dejamos en el olvido. Nuevamente intentamos poner el virus en cuarentena pero en el invierno de 1983, poco después de graduarme y mudarme a Stanford, un chequeo reveló su existencia en varios discos de mis amigos, que ellos suponían no estaban infectados. Sin embargo, en ese momento no creían que valiese la pena sacarlo, y por eso se expandió sin control. A esa altura, también en A&M, el interés por los virus había desaparecido. Sólo tuve noticias de mi virus una vez más: durante 1984 mi amigo en UIUC me informó que un virus maligno estaba atacando computadoras Apple y que estaba causando mucho daño, inicializando discos aleatoriamente. Algunos discos tenían una especie de inmunidad contra el Virus Maligno; sin embargo, cuando dichos discos estaban infectados por el virus se colgaban en el momento de bootear (que era mejor que aparentar un booteo normal y luego causar mayores daños). ¡Resultó ser que los discos inmunes eran aquellos que previamente habían sido infectados por el Virus 3!