Macro Virus: Cuando Word Se Convirtió en Arma (1995-2000)
En 1995, el virus Concept demostró que un documento de Word podía ser un arma. En 1999, Melissa colapsó servidores de email en todo el mundo. En 2000, ILOVEYOU infectó 45 millones de máquinas. La era de los macro virus cambió todo.
El contexto: 1995, cuando los documentos eran "seguros"
Hasta agosto de 1995, existía una verdad universalmente aceptada en seguridad informática: los virus solo podían vivir en archivos ejecutables. Programas .exe, .com, sectores de arranque de disquetes. Los documentos (archivos de texto, hojas de cálculo, presentaciones) eran datos inertes. Abrirlos era seguro. Siempre.
Esta creencia tenía una base lógica. Un documento de texto no contiene instrucciones ejecutables. Un archivo .doc de Word almacena texto formateado, imágenes, tablas. No hay código que el procesador ejecute directamente. O eso parecía.
Lo que la mayoría de usuarios y muchos profesionales de seguridad no entendían era que Microsoft había convertido Word en algo mucho más que un procesador de textos. Desde Word 6.0 (1993), cada documento de Word era también un contenedor de programas. Microsoft había integrado un lenguaje de programación completo dentro de sus aplicaciones de oficina: WordBasic primero, y desde Office 97, Visual Basic for Applications (VBA).
Las macros no eran un bug. Eran una feature. Automatizar tareas repetitivas, generar informes, formatear documentos masivamente. Empresas enteras dependian de macros complejas para sus flujos de trabajo diarios.
Pero un lenguaje de programación completo dentro de un documento significaba que un documento ya no era un archivo de datos pasivo. Era un programa potencial. Y en agosto de 1995, alguien lo demostró.
WM/Concept: el primer macro virus (agosto 1995)
WM/Concept (también catalogado como Word.Concept.A o WM.Concept) fue descubierto en agosto de 1995. No se sabe con certeza quién lo creó, aunque la evidencia sugiere que fue un proof of concept deliberado, posiblemente creado por alguien dentro de Microsoft o con acceso al CD-ROM de compatibilidad de Word que se distribuyó contaminado.
Cómo funcionaba Concept
El mecanismo era elegante en su simplicidad. Word ejecuta automáticamente ciertas macros cuando ocurren eventos específicos. La más importante: AutoOpen, que se ejecuta cada vez que se abre un documento.
Concept contenía cinco macros: AAAZAO, AAAZFS, AutoOpen, FileSaveAs y PayLoad. Al abrir un documento infectado, la macro AutoOpen se ejecutaba automáticamente y realizaba dos acciones críticas:
- Copiaba sus macros al archivo de plantilla global
NORMAL.DOT - Redefinia la macro
FileSaveAspara infectar cada documento que el usuario guardara
Una vez que NORMAL.DOT estaba infectado, cada nuevo documento creado o guardado desde esa máquina contenía el virus. Y cada persona que recibiera uno de esos documentos (por email, por disquete, por red compartida) se infectaba al abrirlo.
' Representación simplificada del mecanismo de Concept
' (código educativo, no es el payload original)
Sub AutoOpen()
' Al abrir un documento infectado,
' copia macros a la plantilla global
If Not MacroExistsIn("Normal.dot", "AutoOpen") Then
CopyMacrosTo "Normal.dot"
End If
End Sub
Sub FileSaveAs()
' Cada vez que el usuario guarda un documento,
' el virus se inserta en el nuevo archivo
CopyMacrosTo ActiveDocument.Name
' Luego ejecuta el FileSaveAs original
Dialogs(wdDialogFileSaveAs).Show
End Sub
El papel de NORMAL.DOT
NORMAL.DOT era la plantilla global de Word. Cada documento nuevo se basaba en ella. Cada sesión de Word la cargaba al inicio. Infectar NORMAL.DOT equivalía a infectar Word mismo: todo lo que tocara Word a partir de ese momento estaba contaminado.
Este archivo era el talón de Aquiles de la arquitectura de Word. Un único punto de fallo que los macro virus explotarían durante los siguientes cinco años.
Impacto de Concept
Concept no tenía payload destructivo. Al activarse, mostraba un cuadro de diálogo con el número "1". Eso era todo. Pero su impacto fue enorme:
- Demostró que los documentos podían ser vectores de infección
- Se propagó a velocidad sin precedentes gracias al email corporativo
- Obligó a la industria antivirus a replantearse por completo su modelo de detección
- Infectaba tanto Word para Windows como Word para Macintosh (cross-platform)
Este último punto era especialmente significativo. Los virus de la era del disquete eran específicos de plataforma (DOS, Windows, Mac). Concept funcionaba en cualquier sistema que ejecutara Word, porque el código VBA era interpretado por Word, no por el sistema operativo.
La explosion: 1996-1998
Concept abrió las compuertas. En los tres años siguientes, los macro virus se multiplicaron exponencialmente.
Laroux: Excel tampoco era seguro (1996)
En 1996 apareció Laroux (XM/Laroux), el primer macro virus para Microsoft Excel. Demostraba que el problema no era exclusivo de Word: cualquier aplicación de Office con soporte de macros era vulnerable.
Laroux infectaba hojas de cálculo Excel copiando un módulo VBA llamado laroux a la carpeta de inicio de Excel (XLSTART). Cada hoja de cálculo abierta desde esa máquina quedaba infectada. No tenía payload destructivo, pero su existencia confirmó que la superficie de ataque era toda la suite Office.
Cap, Class y la escalada
- Cap (WM/Cap, 1996): uno de los primeros macro virus polimórficos. Cambiaba los nombres de sus macros para dificultar la detección.
- Class (W97M/Class, 1998): infectaba documentos de Word 97 y se activaba el 14 de cada mes, mostrando el mensaje "This is Class". Fue de los primeros en usar el nuevo formato VBA de Office 97.
Para 1998, los macro virus representaban más del 80% de todos los virus reportados. La industria antivirus, construida durante una década para detectar virus en ejecutables y sectores de arranque, tuvo que reinventarse para escanear documentos de oficina.
Anatomía técnica de un macro virus de Word
El ciclo de vida de un macro virus de Word típico seguía este patrón:
| Fase | Evento Word | Acción del virus |
|---|---|---|
| 1. Infección | Usuario abre .doc infectado | AutoOpen se ejecuta |
| 2. Persistencia | AutoOpen | Copia macros a NORMAL.DOT |
| 3. Propagación | Usuario guarda cualquier .doc | FileSaveAs inserta macros en el nuevo documento |
| 4. Payload | Condición (fecha, contador) | Acción destructiva o mensaje |
| 5. Reinfección | Documento compartido por email/red | Vuelta al paso 1 en nueva máquina |
' Estructura típica de un macro virus de Word (educativo)
' Muestra el patrón de infección, NO es código malicioso funcional
Sub AutoOpen()
' Verificar si NORMAL.DOT ya está infectado
On Error Resume Next
Dim normalTemplate As String
normalTemplate = Options.DefaultFilePath(wdUserTemplatesPath) _
& "\Normal.dot"
' Si la macro "marker" no existe en Normal.dot,
' el template aún no está infectado
If Not MacroExists(normalTemplate, "VirusMarker") Then
' Exportar módulos VBA del documento activo
' e importarlos en Normal.dot
InfectTemplate normalTemplate
End If
End Sub
Sub Document_Close()
' Variante: algunos virus usaban Document_Close
' para infectar al cerrar en vez de al abrir
InfectActiveDocument
End Sub
Private Function MacroExists(tmpl As String, name As String) As Boolean
' Comprueba si una macro específica existe
' Usado como "marcador" para evitar reinfección
MacroExists = False
' [lógica de verificación]
End Function
Melissa: el macro virus que colapsó Internet (marzo 1999)
El 26 de marzo de 1999, un programador de New Jersey llamado David L. Smith publicó un documento de Word infectado en el grupo de Usenet alt.sex. El documento prometía contener contraseñas de sitios para adultos. Contenía algo mucho más peligroso.
El mecanismo de Melissa
Melissa (W97M/Melissa) combinaba dos técnicas que nunca se habían juntado antes: macro virus de Word + propagación masiva por email via Outlook.
Al abrir el documento infectado:
- La macro
Document_Opense ejecutaba automáticamente - Comprobaba si Outlook estaba instalado
- Accedía a la libreta de direcciones de Outlook via COM automation
- Enviaba un email a los primeros 50 contactos de cada libreta
- El email incluía el documento infectado como adjunto
- Modificaba
NORMAL.DOTpara infectar futuros documentos
El email llegaba con el asunto "Important Message From [nombre del remitente]" y el cuerpo: "Here is that document you asked for ... don't show anyone else ;-)". Venía de alguien conocido (un contacto real), con un mensaje que parecía personal.
' Representación simplificada del mecanismo de propagación de Melissa
' (código educativo, no funcional)
Sub Document_Open()
' Verificar si ya se ejecutó (registry key como marcador)
If RegistryKeyExists("Melissa.A") Then Exit Sub
' Acceder a Outlook via COM automation
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
' Iterar por las libretas de direcciones
Dim addressBook As Object
Set addressBook = olApp.GetNamespace("MAPI").AddressLists
Dim i As Integer
For Each addrList In addressBook
For i = 1 To Min(addrList.AddressEntries.Count, 50)
' Crear email con el documento activo como adjunto
Dim mail As Object
Set mail = olApp.CreateItem(0)
mail.To = addrList.AddressEntries(i).Address
mail.Subject = "Important Message From " & _
Application.UserName
mail.Body = "Here is that document you asked for" & _
" ... don't show anyone else ;-)"
mail.Attachments.Add ActiveDocument.FullName
mail.Send
Next i
Next
' Marcar como ejecutado
SetRegistryKey "Melissa.A"
' Infectar NORMAL.DOT
InfectNormalTemplate
End Sub
Propagación exponencial
La matemática era devastadora. Un usuario infectado enviaba 50 emails. Si el 20% de los receptores abría el adjunto (una tasa conservadora dado que venía de un contacto conocido), 10 nuevas máquinas se infectaban. Cada una enviaba otros 50 emails. En tres iteraciones: 50.000 emails. En cinco: 25 millones.
Melissa se propagó más rápido que cualquier malware anterior. En cuestión de horas:
- Microsoft, Intel y otras empresas tuvieron que desconectar sus servidores de email
- Se estima que el 15-20% del correo corporativo mundial estuvo afectado
- Los daños se estimaron en más de 80 millones de dólares
- El tráfico de email global se ralentizó visiblemente
Captura y condena
El FBI localizó a David L. Smith en menos de una semana, rastreando el GUID (Global Unique Identifier) que Word insertaba en los documentos y el registro de la cuenta de America Online que usó para publicar el documento original.
Smith fue arrestado el 1 de abril de 1999. Se declaró culpable y fue condenado a 20 meses de prisión federal y una multa de 5.000 dólares. Cooperó con el FBI en la investigación de otros casos de virus, lo que redujo significativamente su condena.
Mapeo MITRE ATT&CK de Melissa
| Técnica | ID | Descripción en Melissa |
|---|---|---|
| User Execution | T1204.002 | Usuario abre documento Word malicioso |
| Visual Basic | T1059.005 | Macro VBA ejecuta el payload |
| Phishing Attachment | T1566.001 | Documento infectado enviado por email |
| Email Collection | T1114 | Acceso a libreta de direcciones de Outlook |
| Automated Collection | T1119 | Recolección automática de contactos |
ILOVEYOU: la carta de amor que destruyó todo (mayo 2000)
El 4 de mayo de 2000, un email con el asunto "ILOVEYOU" empezó a circular desde Filipinas. El cuerpo del mensaje decía: "kindly check the attached LOVELETTER coming from me". El adjunto se llamaba LOVE-LETTER-FOR-YOU.TXT.vbs.
No era un macro virus, pero era la misma idea
Técnicamente, ILOVEYOU no era un macro virus de Word. Era un gusano escrito en VBScript, un lenguaje hermano de VBA. Pero conceptualmente pertenece a la misma familia: código Visual Basic que se propaga por email explotando la confianza del usuario.
Windows ocultaba las extensiones de archivo conocidas por defecto. Los usuarios veían LOVE-LETTER-FOR-YOU.TXT y pensaban que era un archivo de texto inofensivo. La extensión real .vbs estaba oculta. Un script ejecutable disfrazado de documento de texto.
El creador: Onel de Guzman
Onel de Guzman era un estudiante de informática de 24 años en Manila, Filipinas. Había escrito el gusano como parte de su tesis de grado, que proponía un programa que robara contraseñas de acceso a internet (en una época donde las conexiones dial-up eran caras en Filipinas). Su universidad rechazó la tesis por razones éticas.
De Guzman soltó el gusano de todas formas, posiblemente sin anticipar la escala de la destrucción.
Impacto sin precedentes
ILOVEYOU fue el malware más destructivo que el mundo había visto hasta ese momento:
- 45 millones de máquinas infectadas en las primeras 24 horas
- Daños estimados en 10.000 millones de dólares (algunos analistas cifran hasta 15.000 millones)
- Infectaba archivos .jpg, .mp3, .css, .js, .vbs y los reemplazaba con copias de sí mismo
- Se reenviaba a todos los contactos de Outlook (no solo 50 como Melissa)
- El Pentágono, la CIA, el Parlamento Británico y grandes corporaciones desconectaron sus sistemas de email
Sin consecuencias legales
Filipinas no tenía legislación sobre delitos informáticos en mayo de 2000. A pesar de que el NBI (National Bureau of Investigation de Filipinas) identificó a De Guzman rápidamente, los cargos fueron retirados porque no existía ley aplicable. De Guzman nunca fue procesado.
Este caso fue el catalizador directo de la Electronic Commerce Act de Filipinas (Republic Act 8792), aprobada en junio de 2000, apenas un mes después del brote.
Por qué las macros eran el vector perfecto
La convergencia de factores que hizo posible la era de los macro virus es un caso de estudio en seguridad:
1. Lenguaje completo, no sandboxed. VBA no era un lenguaje limitado. Podía acceder al sistema de archivos, al registro de Windows, a COM objects (incluyendo Outlook), a la red. Un macro de Word tenía prácticamente los mismos privilegios que un ejecutable.
2. Ejecución automática. Las macros AutoOpen, AutoClose, AutoExec, Document_Open y Document_Close se ejecutaban sin intervención del usuario. Abrir un documento era suficiente.
3. NORMAL.DOT como vector de persistencia. Infectar la plantilla global significaba que cada sesión de Word cargaba el virus. No había que modificar el registro ni crear servicios. La persistencia era "gratis".
4. Confianza en los documentos. Décadas de experiencia habían enseñado a los usuarios que abrir un documento era seguro. Los macro virus explotaron esa confianza.
5. Email como amplificador. El email corporativo estaba en plena expansión (1995-2000). Los adjuntos de Word eran el formato estándar para compartir información de negocio. Nadie sospechaba de un .doc que venía de un colega.
6. Sin verificación de integridad. No existía el concepto de "Mark of the Web" ni verificación de origen en los documentos. Un .doc descargado de internet tenía exactamente los mismos privilegios que uno creado localmente.
La respuesta de Microsoft: lenta pero definitiva
Microsoft tardó años en resolver el problema de raíz, pero cada paso fue significativo:
| Año | Medida | Efecto |
|---|---|---|
| 1995 | Ninguna | Concept se propaga sin obstáculo |
| 1997 | Office 97: alerta al detectar macros | Los usuarios hacían click en "Habilitar" sin leer |
| 1999 | Office 2000: tres niveles de seguridad (High/Medium/Low) | Mejora parcial. Medium era el default y aún permitía macros con confirmación |
| 2001 | Outlook bloquea adjuntos .vbs, .exe, .scr | Cierra el vector de ILOVEYOU |
| 2003 | Office 2003: modelo de confianza mejorado | Solo macros firmadas digitalmente en nivel High |
| 2007 | Office 2007: Trust Center, formato .docm separado | Archivos .docx no pueden contener macros. Solo .docm |
| 2022 | Macros bloqueadas por defecto en archivos de internet | Mark of the Web: archivos descargados no ejecutan macros sin desbloqueo manual |
La decisión de 2022 fue la más importante: Microsoft finalmente bloqueó por defecto la ejecución de macros en archivos que tuvieran el atributo "Mark of the Web" (descargados de internet o recibidos por email). 27 años después de Concept.
Herramientas modernas para analizar macros maliciosas
Hoy, el análisis de macros maliciosas es una habilidad fundamental para analistas de malware. Las herramientas principales:
olevba (oletools): herramienta de línea de comandos en Python para extraer y analizar macros VBA de documentos Office. Detecta patrones sospechosos automáticamente.
# Extraer macros de un documento sospechoso
olevba documento_sospechoso.doc
# Análisis con detección de patrones peligrosos
olevba --decode documento_sospechoso.doc
# Output típico para un documento con macro maliciosa:
# AutoOpen Runs when the Word document is opened
# Shell May run an executable file or a system command
# CreateObject May create an OLE object (Outlook, WScript...)
# Environ May read system environment variables
ViperMonkey: emulador de VBA que ejecuta macros en un sandbox sin necesidad de Word.
ANY.RUN y Joe Sandbox: sandboxes online que detonan documentos con macros y registran el comportamiento completo.
Conexión con el malware moderno: de Concept a Emotet
La línea evolutiva es directa. Los macro virus de los 90 son los ancestros de las campañas de malware más sofisticadas del siglo XXI.
Emotet (activo 2014-2023) fue el heredero directo de Melissa. Su vector principal durante años fueron documentos de Word y Excel con macros maliciosas enviados por email. La diferencia: las macros de Emotet no contenían el payload final. Ejecutaban un PowerShell que descargaba el verdadero malware desde un servidor C&C. El documento era solo la puerta de entrada.
QakBot/Qbot siguió el mismo patrón. Documentos Excel con macros que ejecutaban scripts, que descargaban el loader, que finalmente desplegaba ransomware (frecuentemente LockBit o BlackBasta).
La cadena de infección moderna (2020-2022) se parecía a esto:
Email phishing con .doc/.xls adjunto
→ Usuario abre documento, habilita macros
→ Macro VBA ejecuta PowerShell ofuscado
→ PowerShell descarga DLL desde C&C
→ DLL es el loader (Emotet/QakBot)
→ Loader descarga payload final (ransomware/infostealer)
Cuando Microsoft bloqueó macros por defecto en 2022, los atacantes migraron a otros vectores: archivos .iso, .lnk, OneNote con objetos embebidos, archivos .zip protegidos con contraseña. La técnica MITRE T1566.001 (Phishing Attachment) sigue vigente; solo cambió el formato del adjunto.
La línea temporal completa
| Año | Hito | Significado |
|---|---|---|
| 1993 | Word 6.0 introduce WordBasic | Macros programables en documentos |
| 1995 | WM/Concept (agosto) | Primer macro virus. Proof of concept |
| 1996 | XM/Laroux | Primer macro virus para Excel |
| 1996 | WM/Cap | Primer macro virus polimórfico |
| 1997 | Office 97 introduce VBA | Lenguaje más potente, más superficie de ataque |
| 1998 | W97M/Class | Macros en formato Office 97 |
| 1998 | 80%+ de virus reportados son macro virus | Epidemia global |
| 1999 | Melissa (26 marzo) | Primer macro virus con propagación masiva por email |
| 2000 | ILOVEYOU (4 mayo) | 45M infecciones, $10B+ daños, VBScript |
| 2000 | Electronic Commerce Act (Filipinas) | Legislación impulsada por ILOVEYOU |
| 2007 | Office 2007: .docx vs .docm | Separación de formatos con y sin macros |
| 2014 | Emotet usa macros como vector principal | Resurrección del vector 20 años después |
| 2022 | Microsoft bloquea macros de internet | Cierre definitivo del vector (27 años después de Concept) |
Legado: lecciones que siguen vigentes
La era de los macro virus dejó lecciones que la industria de ciberseguridad sigue aplicando:
Los documentos nunca fueron seguros. Concept destruyó para siempre la ilusión de que los datos son inertes. Hoy, cualquier formato de archivo que soporte scripting o contenido activo (PDF con JavaScript, SVG con scripts, HTML con macros) se trata como potencialmente peligroso.
La ingeniería social escala con la automatización. Melissa demostró que un email de un contacto conocido, con un mensaje creíble, tiene tasas de apertura devastadoras. El phishing moderno (T1566) sigue explotando exactamente el mismo principio.
Comodidad vs seguridad es un dilema real. Microsoft tardó 27 años en bloquear macros por defecto porque millones de usuarios corporativos dependían de ellas. La deuda técnica de seguridad no se paga con un parche: requiere decisiones de producto que afectan a la experiencia de usuario.
La legislación va detrás de la tecnología. De Guzman nunca fue procesado porque Filipinas no tenía ley aplicable. En 2026, muchos países aún tienen marcos legales inadecuados para ciberdelitos sofisticados.
Los vectores mutan, la técnica persiste. De macros de Word a archivos .iso, de VBA a PowerShell, de ILOVEYOU a Emotet. El patrón fundamental (documento aparentemente inofensivo que ejecuta código malicioso al abrirlo) no ha cambiado en tres décadas.
Lo que viene después
Melissa y ILOVEYOU marcaron el final de una era y el inicio de otra. El siguiente capítulo de esta serie cubre el periodo 2001-2003: Code Red, Nimda y SQL Slammer, los gusanos de red que no necesitaban que el usuario abriera nada. El malware aprendería a propagarse sin interacción humana, explotando vulnerabilidades en servicios de red expuestos directamente a internet.
La era del "no hagas click" estaba a punto de volverse irrelevante.
Fuentes y referencias
- Nachenberg, C. "Computer Virus-Antivirus Coevolution." Communications of the ACM, 1997.
- Gordon, S. "Virus Highlights 1995." Proceedings of the 5th Virus Bulletin Conference, 1995.
- CERT Advisory CA-1999-04. "Melissa Macro Virus." Carnegie Mellon SEI, 1999.
- CERT Advisory CA-2000-04. "Love Letter Worm." Carnegie Mellon SEI, 2000.
- FBI. "Melissa Virus Creator David L. Smith Sentenced." Press Release, 2002.
- Microsoft Security Response Center. "Default Behavior Change for Office Macros." Microsoft, 2022.
- MITRE ATT&CK T1204 - User Execution
- MITRE ATT&CK T1059.005 - Visual Basic
- MITRE ATT&CK T1566.001 - Phishing: Spearphishing Attachment
Preguntas frecuentes
Libros recomendados
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.