IntermediohistoriamacrovirusemailVBAphishing

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.

MalwareIntel Research··18 min lectura·3 técnicas ATT&CK
Serie: Historia del Malware — Parte 6

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:

  1. Copiaba sus macros al archivo de plantilla global NORMAL.DOT
  2. Redefinia la macro FileSaveAs para 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:

FaseEvento WordAcción del virus
1. InfecciónUsuario abre .doc infectadoAutoOpen se ejecuta
2. PersistenciaAutoOpenCopia macros a NORMAL.DOT
3. PropagaciónUsuario guarda cualquier .docFileSaveAs inserta macros en el nuevo documento
4. PayloadCondición (fecha, contador)Acción destructiva o mensaje
5. ReinfecciónDocumento compartido por email/redVuelta 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:

  1. La macro Document_Open se ejecutaba automáticamente
  2. Comprobaba si Outlook estaba instalado
  3. Accedía a la libreta de direcciones de Outlook via COM automation
  4. Enviaba un email a los primeros 50 contactos de cada libreta
  5. El email incluía el documento infectado como adjunto
  6. Modificaba NORMAL.DOT para 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écnicaIDDescripción en Melissa
User ExecutionT1204.002Usuario abre documento Word malicioso
Visual BasicT1059.005Macro VBA ejecuta el payload
Phishing AttachmentT1566.001Documento infectado enviado por email
Email CollectionT1114Acceso a libreta de direcciones de Outlook
Automated CollectionT1119Recolecció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ñoMedidaEfecto
1995NingunaConcept se propaga sin obstáculo
1997Office 97: alerta al detectar macrosLos usuarios hacían click en "Habilitar" sin leer
1999Office 2000: tres niveles de seguridad (High/Medium/Low)Mejora parcial. Medium era el default y aún permitía macros con confirmación
2001Outlook bloquea adjuntos .vbs, .exe, .scrCierra el vector de ILOVEYOU
2003Office 2003: modelo de confianza mejoradoSolo macros firmadas digitalmente en nivel High
2007Office 2007: Trust Center, formato .docm separadoArchivos .docx no pueden contener macros. Solo .docm
2022Macros bloqueadas por defecto en archivos de internetMark 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ñoHitoSignificado
1993Word 6.0 introduce WordBasicMacros programables en documentos
1995WM/Concept (agosto)Primer macro virus. Proof of concept
1996XM/LarouxPrimer macro virus para Excel
1996WM/CapPrimer macro virus polimórfico
1997Office 97 introduce VBALenguaje más potente, más superficie de ataque
1998W97M/ClassMacros en formato Office 97
199880%+ de virus reportados son macro virusEpidemia global
1999Melissa (26 marzo)Primer macro virus con propagación masiva por email
2000ILOVEYOU (4 mayo)45M infecciones, $10B+ daños, VBScript
2000Electronic Commerce Act (Filipinas)Legislación impulsada por ILOVEYOU
2007Office 2007: .docx vs .docmSeparación de formatos con y sin macros
2014Emotet usa macros como vector principalResurrección del vector 20 años después
2022Microsoft bloquea macros de internetCierre 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

Técnicas MITRE ATT&CK referenciadas

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.