La Edad de Oro de los Virus DOS: Cuando el PC No Tenía Defensas (1989-1995)
Entre 1989 y 1995, miles de virus para DOS surgieron en una era sin protección de memoria ni antivirus efectivos. Cascade, Jerusalem, Dark Avenger, polimorfismo y el nacimiento de la industria antivirus.
El escenario perfecto: por qué DOS no podía defenderse
Para entender la explosión de virus entre 1989 y 1995, hay que entender qué era DOS. No qué hacía, sino qué no hacía.
MS-DOS (Microsoft Disk Operating System) era un sistema operativo de un solo usuario, una sola tarea, sin protección de memoria, sin separación de privilegios y sin sistema de permisos de archivos. Todo programa que se ejecutaba tenía acceso completo y sin restricciones a todo el hardware de la máquina: memoria, disco, puertos de E/S, tabla de interrupciones.
El procesador Intel 8086/8088 (y sus sucesores en modo real) no distinguía entre código privilegiado y código de usuario. No existía el concepto de kernel mode versus user mode que hoy damos por sentado. Un virus tenía exactamente los mismos privilegios que el sistema operativo.
| Característica | DOS | Sistemas modernos |
|---|---|---|
| Protección de memoria | Ninguna | DEP, ASLR, segmentación |
| Privilegios | Todo en Ring 0 | Kernel mode vs. user mode |
| Permisos de archivo | Atributo read-only (ignorable) | ACLs, propietarios, grupos |
| Usuarios | Uno, sin autenticación | Multi-usuario con login |
| Residencia en memoria | TSR, sin control | Procesos aislados con MMU |
| Acceso a disco | INT 13h directo | Capas de abstracción, drivers firmados |
En este entorno, escribir un virus era trivial. Cualquier programa podía abrir un ejecutable, inyectar código al final, modificar el punto de entrada y cerrarlo. Sin alertas, sin permisos denegados, sin logs. El sistema no tenía mecanismo alguno para detectar o impedir esa modificación.
TSR: el arma secreta de los virus residentes
DOS tenía una funcionalidad llamada TSR (Terminate and Stay Resident). Un programa TSR finalizaba su ejecución visible pero dejaba una porción de su código cargada en memoria, enganchada a una o más interrupciones del sistema. Esta técnica, diseñada para utilidades como controladores de ratón o relojes en pantalla, resultó ideal para los virus.
Un virus TSR interceptaba la interrupción INT 21h (servicios DOS) o INT 13h (acceso a disco). Cada vez que un programa legítimo abría un archivo o accedía al disco, el virus interceptaba la llamada, infectaba el archivo objetivo y luego pasaba el control a la rutina original. El usuario no percibía nada: la operación se completaba normalmente, pero el archivo quedaba infectado.
Flujo de un virus TSR:
1. Usuario ejecuta programa infectado
2. Virus se instala en memoria (TSR via INT 27h o INT 21h/AH=31h)
3. Virus engancha INT 21h (servicios de archivo)
4. Usuario abre cualquier .COM o .EXE
5. INT 21h interceptada -> virus infecta el archivo
6. Control pasa al handler original de INT 21h
7. Archivo se abre normalmente (usuario no nota nada)
Los pioneros: virus que definieron una era
Cascade (1987-1988): el primer virus cifrado
Cascade, también conocido como Falling Letters o 1701/1704 (por su tamaño en bytes), fue el primer virus que utilizaba cifrado para ocultar su código. Originario de Alemania, se propagó extensamente por Europa y luego a Estados Unidos.
Su mecanismo de cifrado era simple: aplicaba una operación XOR con una clave fija a su cuerpo principal, dejando sin cifrar solo una pequeña rutina de descifrado al inicio. Cuando un antivirus escaneaba el archivo infectado, no encontraba el código del virus en texto plano, sino una secuencia aparentemente aleatoria de bytes.
El payload de Cascade era visual y memorable: las letras de la pantalla comenzaban a "caer" una por una hasta acumularse en la parte inferior, como una cascada de caracteres. Era más espectáculo que destrucción, pero marcó un precedente técnico fundamental. Si un virus podía cifrarse, la detección por firmas simples (buscar una secuencia fija de bytes) ya no era suficiente.
Jerusalem / Friday the 13th (1987): destrucción programada
Descubierto en la Hebrew University de Jerusalén en 1987, Jerusalem fue uno de los primeros virus con un payload destructivo deliberado. Se activaba cada viernes 13 y borraba todos los programas que el usuario ejecutaba ese día.
Jerusalem era un virus residente en memoria que infectaba tanto archivos .COM como .EXE. Se enganchaba a INT 21h y a INT 08h (timer tick). Cada vez que se ejecutaba un programa, Jerusalem lo infectaba. Pero tenía un defecto notable: infectaba los archivos .EXE repetidamente, añadiendo su código una y otra vez sin verificar si ya estaban infectados. Los archivos crecían hasta volverse inmanejables, lo que a menudo delataba la infección antes de la fecha del payload.
Jerusalem generó decenas de variantes. Su código circuló ampliamente y sirvió como base de aprendizaje para una generación de programadores de virus.
Vienna: el virus que se hizo open source
Vienna fue un virus simple de apenas 648 bytes que infectaba archivos .COM. Su importancia no fue técnica sino cultural: su código fuente completo fue publicado en el libro "Computer Viruses: A High-Tech Disease" (1988) de Ralf Burger, y posteriormente en innumerables BBS.
Esta publicación fue enormemente controvertida. Los investigadores argumentaban que entender el código era necesario para crear defensas. Los críticos señalaban que el código funcional de un virus, disponible para cualquiera, era una receta para el desastre. Ambos tenían razón. La publicación del código de Vienna alimentó directamente la creación de cientos de variantes y enseñó a una generación de adolescentes cómo funcionaba la infección de archivos.
Infección de archivos: COM versus EXE
Los virus de DOS necesitaban entender los dos formatos de ejecutable del sistema para infectarlos correctamente.
Archivos .COM
El formato .COM era extremadamente simple: un bloque de código puro que se cargaba en el offset 100h del segmento de memoria. Sin cabecera, sin metadatos. La ejecución comenzaba siempre en el primer byte del archivo.
Para infectar un .COM, un virus podía:
- Prepending: insertar su código al principio, desplazando el código original. Simple pero cambiaba el tamaño del archivo de forma obvia.
- Appending: añadir su código al final y sustituir los primeros bytes por un JMP (salto) a su código. Al terminar, restauraba los bytes originales y saltaba al inicio real. Era la técnica más común.
- Cavity: buscar zonas de bytes nulos o de relleno dentro del archivo original e inyectar su código allí, sin cambiar el tamaño del archivo. Mucho más difícil de detectar.
Archivos .EXE (formato MZ)
Los archivos .EXE tenían una cabecera estructurada (firma "MZ", tabla de reubicación, punto de entrada CS:IP, tamaño). Infectar un .EXE requería más sofisticación:
- Leer la cabecera MZ
- Guardar el punto de entrada original (CS:IP)
- Añadir el código viral al final del archivo
- Modificar CS:IP en la cabecera para que apunte al virus
- Actualizar los campos de tamaño en la cabecera
- Al ejecutarse, el virus hace su trabajo y salta al CS:IP original
| Aspecto | Infección .COM | Infección .EXE |
|---|---|---|
| Complejidad | Baja | Media-Alta |
| Tamaño típico del virus | 200-800 bytes | 1-4 KB |
| Detección por tamaño | Fácil (archivo crece) | Menos obvia (cabecera actualizada) |
| Técnica habitual | JMP + append | Modificar cabecera MZ |
| Riesgo de corrupción | Bajo | Alto (tabla de reubicación) |
Dark Avenger: el genio que aterrorizó a los investigadores
El capítulo de los virus DOS no se puede contar sin hablar de Dark Avenger, seudónimo de un programador búlgaro que entre 1988 y 1993 redefinió lo que un virus podía hacer.
Bulgaria en los años 80 y 90 era un caso particular. El país tenía una sólida tradición de educación técnica, hardware de bajo coste (clones de PC fabricados localmente), acceso limitado a software legal y una legislación que no contemplaba los delitos informáticos. Sofía fue bautizada como la "fábrica de virus" por la comunidad antivirus internacional.
Fast infector: la innovación que cambió las reglas
El primer virus notable de Dark Avenger, simplemente llamado "Dark Avenger" o "Eddie" (1989), introdujo la técnica de infección rápida (fast infector). Los virus anteriores infectaban archivos cuando se ejecutaban. Dark Avenger infectaba archivos simplemente cuando eran abiertos para lectura, incluyendo operaciones de copia, backup o escaneo antivirus.
La implicación era devastadora: ejecutar un antivirus que escaneara archivos podía infectar toda la máquina en lugar de limpiarla. Cada archivo que el scanner abría para verificar quedaba infectado. Los investigadores tardaron en comprender por qué las infecciones parecían multiplicarse al intentar eliminarlas.
Mutation Engine (MtE, 1991): polimorfismo como servicio
La contribución más influyente de Dark Avenger fue el Mutation Engine (MtE), distribuido en 1991. No era un virus, sino un módulo enlazable: un OBJ que cualquier programador de virus podía incorporar a su creación para hacerla polimórfica automáticamente.
El MtE generaba una rutina de descifrado diferente en cada replicación. No solo cambiaba la clave de cifrado (que sería trivial de manejar), sino que reestructuraba el código del descifrador: usaba registros diferentes, insertaba instrucciones basura (NOPs, operaciones redundantes), cambiaba el orden de las operaciones y variaba la longitud de la rutina.
El resultado: cada copia de un virus que usaba MtE era diferente a nivel de bytes. No había una firma estática que detectara todas las variantes. Los antivirus tuvieron que evolucionar de la detección por firmas a la emulación de código y el análisis heurístico.
La era del polimorfismo
1260/V2P (Mark Washburn, 1990): el primer polimórfico intencional
Mark Washburn, un investigador de seguridad estadounidense, creó 1260 (también llamado V2P, Variable Encryption) como una demostración de concepto. Quería probar que los antivirus basados en firmas estáticas tenían una debilidad fundamental.
1260 cifraba su cuerpo con una clave diferente en cada infección y generaba un descifrador variable, intercalando instrucciones basura entre las instrucciones reales. Fue el primer virus diseñado deliberadamente para ser polimórfico, anticipando lo que Dark Avenger convertiría en un kit reutilizable con MtE.
Tequila (1991): polimorfismo con estilo
Tequila, originario de Suiza, fue el primer virus polimórfico que se propagó ampliamente in the wild. Era un virus multipartito (infectaba tanto el sector de arranque como archivos .EXE) y utilizaba cifrado con claves variables.
Su payload era llamativo: después de un número determinado de infecciones, mostraba un fractal de Mandelbrot en pantalla. Era una demostración técnica: calcular y renderizar un fractal en un virus de pocos kilobytes demostraba la habilidad del autor.
Whale (1990): exceso de ingeniería
Whale merece mención por ser la antítesis de la elegancia. Con 9 KB (enorme para la época), implementaba más de 30 capas de cifrado y múltiples técnicas anti-debugging. Era un monstruo técnico, pero tan grande y complejo que contenía numerosos bugs, corrompía frecuentemente los archivos que infectaba y era lento en propagarse.
Whale demostró que más cifrado no equivale a mejor virus. Los antivirus lo detectaban precisamente por su tamaño anómalo y sus patrones de comportamiento torpe. La comunidad de virus lo consideró un fracaso técnico, pero los investigadores lo estudiaron extensamente por la variedad de técnicas que implementaba.
Cronología de la Edad de Oro (1987-1995)
| Año | Virus / Evento | Innovación |
|---|---|---|
| 1987 | Cascade | Primer virus con cifrado (XOR) |
| 1987 | Jerusalem / Friday the 13th | Primer virus destructivo con fecha de activación |
| 1988 | "Computer Viruses: A High-Tech Disease" (Burger) | Publicación del código fuente de Vienna |
| 1988 | Dark Avenger "Eddie" | Fast infector (infección al leer archivos) |
| 1989 | Datacrime / Columbus Day | Pánico mediático internacional |
| 1990 | 1260 / V2P (Mark Washburn) | Primer virus polimórfico intencional |
| 1990 | Whale | 9 KB, 30+ capas de cifrado, exceso de ingeniería |
| 1991 | Tequila | Primer polimórfico multipartito in the wild |
| 1991 | Mutation Engine (MtE, Dark Avenger) | Motor polimórfico como kit reutilizable |
| 1991 | Norton AntiVirus 1.0 | Symantec entra en el mercado antivirus |
| 1991 | Dir-II / Byway | Infección por cluster (manipulación de FAT) |
| 1992 | Michelangelo | Pánico mediático masivo (tema del próximo artículo) |
| 1992 | Phalcon/Skism, NuKE | Grupos organizados de escritura de virus con e-zines |
| 1993 | DAME, TPE | Más motores polimórficos disponibles públicamente |
| 1994 | OneHalf | Cifrado progresivo del disco duro |
| 1995 | Concept (Word macro) | Primer virus de macro, fin de la era DOS pura |
Grupos de escritura de virus: la escena underground
Los virus de DOS no surgieron en el vacío. A principios de los 90, una escena underground organizada producía virus, motores polimórficos, tutoriales y publicaciones electrónicas (e-zines).
Phalcon/Skism (Estados Unidos)
Activo entre 1991 y 1993, Phalcon/Skism publicó "40Hex", una e-zine técnica que incluía código fuente de virus, tutoriales de infección y análisis de técnicas antivirus. 40Hex fue posiblemente la publicación más influyente de la escena, documentando técnicas que antes solo circulaban de forma privada.
NuKE (Canadá)
El grupo NuKE, liderado por "Rock Steady", publicó virus, herramientas de hacking y su propia e-zine. Fueron más agresivos que Phalcon/Skism en la distribución de código y herramientas directamente utilizables.
La fábrica búlgara
Sofía, Bulgaria, produjo una concentración desproporcionada de virus entre 1988 y 1993. Además de Dark Avenger, autores como "TP" y otros operaban en un entorno donde la escritura de virus no estaba penalizada legalmente y la comunidad técnica local la veía como un desafío intelectual. Vesselin Bontchev, investigador búlgaro de antivirus, documentó extensamente este fenómeno desde dentro, proporcionando análisis invaluables desde la perspectiva del defensor.
29A (España, fundado 1995)
El grupo 29A, fundado en España, llegaría a ser el grupo de virus más técnicamente avanzado del mundo en los años siguientes. Su e-zine se publicó entre 1996 y 2008 e incluyó pruebas de concepto de virus para plataformas que iban más allá de DOS: Windows 95/NT, Linux, y eventualmente los primeros virus para móviles. Aunque su período de mayor influencia queda fuera de este artículo, sus raíces están en la escena DOS de mediados de los 90.
BBS y disquetes: la propagación antes de Internet
En la era pre-Internet, los virus tenían dos vectores principales de propagación:
Disquetes. El vector número uno. Software comercial pirateado, juegos shareware, utilidades del sistema, todo circulaba en disquetes de 3.5 pulgadas (1.44 MB) y antes en disquetes de 5.25 pulgadas (360 KB / 1.2 MB). Un disquete infectado en una oficina podía contaminar decenas de máquinas. Las universidades eran focos especiales: laboratorios con decenas de PCs y cientos de estudiantes intercambiando disquetes.
Los virus de sector de arranque (boot sector) eran particularmente efectivos en este contexto. Bastaba con dejar un disquete infectado en la unidad A: y reiniciar el PC. La BIOS intentaba arrancar desde el disquete antes que del disco duro, el virus se cargaba en memoria y luego infectaba el disco duro. El usuario podía no darse cuenta durante semanas.
BBS (Bulletin Board Systems). Las BBS eran servidores accesibles por módem (1200-14400 baudios) donde los usuarios subían y descargaban archivos, participaban en foros y enviaban mensajes. Eran el Internet antes de Internet. Un archivo infectado subido a una BBS popular podía propagarse a cientos de usuarios en cuestión de días.
Los sysops (administradores de BBS) fueron los primeros en adoptar antivirus de forma sistemática. Muchos implementaban escaneo automático de los archivos subidos, pero los virus polimórficos complicaron esta defensa.
El nacimiento de la industria antivirus
La explosión de virus para DOS creó un mercado que no existía antes. En pocos años, la detección de virus pasó de ser un hobby de investigadores a una industria multimillonaria.
Los pioneros
John McAfee (1987). McAfee Associates, fundada en 1987, fue una de las primeras empresas dedicadas exclusivamente a la detección de virus. McAfee comenzó distribuyendo su software como shareware a través de BBS, un modelo de distribución que encajaba perfectamente con el problema que intentaba resolver. VirusScan, su producto principal, se convirtió en el estándar de facto en entornos corporativos DOS.
Peter Norton / Symantec (1991). Norton AntiVirus 1.0 (NAV) se lanzó en 1991 bajo el sello de Peter Norton Computing, ya adquirida por Symantec. NAV combinaba detección por firmas con una interfaz más accesible para el usuario doméstico, algo que McAfee no priorizaba.
Dr. Solomon's (1988). Alan Solomon, investigador británico, creó Dr. Solomon's Anti-Virus Toolkit, conocido por su precisión técnica y bajas tasas de falsos positivos. Su "Virus Encyclopedia" fue la referencia más completa de la época. Network Associates (McAfee) adquirió Dr. Solomon's en 1998.
F-Prot (1989). Frisk Software, de Islandia, desarrolló F-Prot, uno de los pocos antivirus que ofrecía una versión gratuita para uso personal. Su motor de detección era respetado por la comunidad técnica.
Evolución de las técnicas de detección
| Generación | Técnica | Funcionamiento | Limitación |
|---|---|---|---|
| 1a (1987-1989) | Firmas estáticas | Buscar secuencia fija de bytes | Inútil contra cifrado y polimorfismo |
| 2a (1990-1992) | Firmas con wildcards | Patrones con bytes comodín | Insuficiente contra MtE y motores avanzados |
| 3a (1992-1994) | Emulación de código | Ejecutar el virus en sandbox virtual para obtener el cuerpo descifrado | Lenta, consumía recursos |
| 4a (1993-1995) | Heurística | Detectar comportamientos sospechosos (hooking de INT, escritura en ejecutables) | Falsos positivos frecuentes |
La carrera armamentista entre virus polimórficos y antivirus durante esta era forzó avances en emulación, análisis de comportamiento y heurística que sentaron las bases de los motores antimalware modernos. El Mutation Engine de Dark Avenger fue un punto de inflexión: obligó a la industria a abandonar la detección por firmas como técnica única y adoptar enfoques multicapa.
Técnicas avanzadas: stealth e INT hooking
Virus stealth
Los virus stealth iban un paso más allá de la simple infección. No solo infectaban archivos sino que ocultaban activamente los signos de infección. La técnica más común era interceptar INT 21h y filtrar las llamadas del sistema:
- Si un programa (o antivirus) pedía el tamaño del archivo infectado, el virus restaba su propio tamaño del valor devuelto.
- Si un programa intentaba leer el contenido del archivo, el virus descifraba y devolvía el contenido original, limpio.
- Si un programa leía el sector de arranque, el virus devolvía una copia del sector original, no el infectado.
El resultado: un archivo infectado parecía limpio cuando se examinaba con herramientas estándar de DOS. Solo un antivirus que evitara las interrupciones del sistema (leyendo el disco directamente a través de puertos de E/S o INT 13h) podía detectar la infección real.
El juego del gato y el ratón con INT 21h
Estado normal:
INT 21h → handler original DOS
Virus instalado:
INT 21h → handler del virus → handler original DOS
Antivirus intenta evitar:
Lee vector INT 21h original de la tabla de interrupciones
Pero el virus ya modificó la tabla al instalarse
Virus más avanzado:
Hookea también INT 13h (acceso a disco bajo nivel)
Hookea INT 01h/INT 03h (anti-debugging)
Monitoriza cambios en la tabla de interrupciones
Esta escalada de engaño y contra-engaño entre virus y antivirus en la tabla de interrupciones de DOS fue un precursor conceptual de las técnicas de rootkit que dominarían la siguiente década.
El fin de una era
La Edad de Oro de los virus DOS terminó no porque los virus fueran derrotados, sino porque la plataforma cambió debajo de ellos.
Windows 3.1 (1992) seguía ejecutándose sobre DOS, así que los virus DOS continuaron funcionando. Pero Windows 95 (agosto de 1995) introdujo un cambio fundamental: aunque mantenía compatibilidad con aplicaciones DOS, el sistema operativo implementaba modo protegido, memoria virtual y (parcialmente) separación de procesos. Las técnicas de hooking de interrupciones que funcionaban en DOS real eran difíciles o imposibles de replicar en el entorno Win32.
Al mismo tiempo, el virus Concept (agosto de 1995) inauguró una nueva era: los virus de macro para Microsoft Word. Ya no hacía falta entender ensamblador ni formatos de ejecutables. WordBasic (y luego VBA) ofrecía un lenguaje de alto nivel con acceso al sistema de archivos. El vector cambió de ejecutables a documentos. La plataforma cambió de DOS a Windows. Y la superficie de ataque se multiplicó.
Pero las lecciones de la era DOS permanecieron. El cifrado, el polimorfismo, la evasión de detección, los virus residentes en memoria, la infección rápida: todas estas técnicas evolucionaron y se adaptaron a Windows, luego a Internet, luego a los dispositivos móviles. Los conceptos que Dark Avenger, los autores de Jerusalem y Cascade, y los grupos como Phalcon/Skism desarrollaron en máquinas 8086 con 640 KB de RAM siguen siendo relevantes (en forma evolucionada) en el malware de 2026.
Lo que viene después
El siguiente artículo de esta serie cubre Michelangelo y el pánico mediático de 1992: cómo un virus relativamente simple de sector de arranque generó la primera histeria colectiva sobre virus informáticos, con predicciones de millones de ordenadores destruidos que resultaron enormemente exageradas, y cómo ese episodio definió la relación entre la industria antivirus y los medios de comunicación durante décadas.
Fuentes y referencias
- Solomon, A. "Dr. Solomon's Virus Encyclopedia." S&S International, 1995.
- Bontchev, V. "The Bulgarian and Soviet Virus Factories." Proceedings of the 1st International Virus Bulletin Conference, 1991.
- Ludwig, M. "The Little Black Book of Computer Viruses." American Eagle Publications, 1991.
- Szor, P. "The Art of Computer Virus Research and Defense." Addison-Wesley, 2005.
- Cohen, F. "Computer Viruses: Theory and Experiments." DOD/NBS 7th Conference on Computer Security, 1984.
- VX Heaven Archive (Historical archive via Wayback Machine)
- Virus Bulletin Conference Papers Archive
- MITRE ATT&CK: Software
Preguntas frecuentes
Artículos relacionados
Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.