Endurecer Microsoft Office: macros, OLE y complementos
Blinda Microsoft 365 Apps: bloquea macros de Internet, desactiva XLM, analiza VBA con AMSI, mantén la Vista protegida, exige complementos firmados y frena OLE y DDE.
Los documentos de Office siguen siendo una de las primeras fases más habituales de una intrusión. Las macros se llevan casi toda la atención, pero los atacantes también usan macros de Excel 4.0 (XLM), paquetes OLE incrustados, campos DDE, complementos maliciosos y cualquier cosa que tiente al usuario a salir de la Vista protegida. Microsoft ha endurecido mucho los valores predeterminados desde 2022. El trabajo ahora consiste en convertir esos valores predeterminados en directiva impuesta y cerrar las puertas laterales.
Esta guía trata la parte de Office. La guía de reglas ASR cubre las reglas de Defender que contienen a Office cuando algo llega a ejecutarse, y el tema Reducción de la superficie de ataque articula el área en su conjunto.
Requisitos previos
- Microsoft 365 Apps (u Office 2019/2021/2024) en un canal compatible. La configuración que sigue usa la ruta del registro
16.0, común a todas las versiones actuales. - Las plantillas administrativas de Office (ADMX/ADML) del Centro de descargas de Microsoft, copiadas al almacén central. La mayoría de las configuraciones están en User Configuration, porque la directiva de Office es por usuario.
- Como alternativa, el servicio Cloud Policy (config.office.com) o el catálogo de configuración de Intune, que exponen la misma configuración y siguen al usuario en los dispositivos no administrados.
La línea base de seguridad de Microsoft 365 Apps del Security Compliance Toolkit contiene la mayor parte de lo que sigue; compárala con tu estado actual antes de importarla.
Paso 1: bloquear explícitamente las macros de Internet
Para Word, Excel, PowerPoint, Access y Visio, establece:
User Configuration > Policies > Administrative Templates > Microsoft Word 2016 > Word Options > Security > Trust Center > Block macros from running in Office files from the Internet = Enabled
Las rutas son iguales para las demás aplicaciones (Microsoft Excel 2016 > Excel Options > Security > Trust Center, etc.). El valor del registro es:
HKCU\Software\Policies\Microsoft\Office\16.0\<app>\Security
blockcontentexecutionfrominternet REG_DWORD 1El bloqueo depende de la marca de la Web (Mark of the Web), el flujo de datos alternativo Zone.Identifier que establecen los navegadores y clientes de correo. Dos consecuencias:
- No añadas dominios amplios, tu inquilino de SharePoint ni los servidores de archivos a la zona Sitios de confianza solo para que una aplicación funcione. Los archivos de las zonas de confianza quedan exentos.
- Los archivos a los que se accede por una ruta UNC con IP o FQDN pueden tratarse como zona de Internet. Corrige la lista de sitios de la zona Intranet local en lugar de debilitar la directiva.
Paso 2: establecer un valor VBA estricto
Trust Center > VBA Macro Notification Settings = Enabled, Disable all except digitally signed macros (o Disable all without notification donde nadie necesite macros). Valor del registro VBAWarnings:
| Valor | Significado |
|---|---|
| 1 | Habilitar todas las macros (nunca) |
| 2 | Deshabilitar todas con notificación (el usuario puede pulsar Habilitar) |
| 3 | Deshabilitar todas excepto las macros firmadas digitalmente |
| 4 | Deshabilitar todas sin notificación |
Para que las macros firmadas se ejecuten, fírmalas con un certificado de firma de código y despliégalo en el almacén Trusted Publishers mediante Computer Configuration > Policies > Windows Settings > Security Settings > Public Key Policies > Trusted Publishers. Establece también Trust Center > Turn off trusted documents = Enabled, para que un usuario que un día pulsó Habilitar contenido no confíe para siempre en ese archivo.
Paso 3: eliminar las macros XLM y analizar VBA con AMSI
Las macros de Excel 4.0 son anteriores a VBA, residen en hojas ocultas y durante años esquivaron muchos controles. Establece:
Microsoft Excel 2016 > Excel Options > Security > Trust Center > Prevent Excel from running XLM macros = Enabled (valor del registro XL4MacroOff = 1 en ...\16.0\Excel\Security).
Después, permite que Defender (o cualquier antivirus compatible con AMSI) vea el comportamiento de las macros en tiempo de ejecución:
Microsoft Office 2016 > Security Settings > Macro Runtime Scan Scope = Enable for all documents (valor del registro MacroRuntimeScanScope = 2 en HKCU\Software\Policies\Microsoft\Office\16.0\Common\Security).
Sin esto, el análisis AMSI de VBA solo se aplica a los documentos de menor confianza. Consulta AMSI para ver cómo funciona la interfaz.
Paso 4: mantener activada la Vista protegida
La Vista protegida abre los archivos de riesgo en solo lectura dentro de un sandbox. Todas las configuraciones de Trust Center > Protected View están redactadas como "Do not..." o "Turn off...", así que el valor seguro es Disabled:
| Configuración | Valor seguro |
|---|---|
| Do not open files from the Internet zone in Protected View | Disabled |
| Do not open files in unsafe locations in Protected View | Disabled |
| Turn off Protected View for attachments opened from Outlook | Disabled |
| Set document behavior if file validation fails | Enabled, Open in Protected View, sin permitir la edición |
En Trust Center > File Block Settings, bloquea la apertura de los formatos binarios heredados que nadie usa (documentos de Word 2 y anteriores, libros y hojas de macros de Excel 4 y formatos similares anteriores a 97). Hoy existen sobre todo para los atacantes.
Paso 5: complementos, ubicaciones de confianza y ActiveX
- Require that application add-ins are signed by Trusted Publisher = Enabled, junto con Disable Trust Bar Notification for unsigned application add-ins and block them = Enabled. Inventaría antes los complementos COM y VSTO (Archivo > Opciones > Complementos en una muestra de máquinas, o tu inventario de software); los complementos internos sin firmar deben firmarse antes de imponerlo.
- Ubicaciones de confianza: establece Allow Trusted Locations on the network = Disabled y elimina las ubicaciones en las que los usuarios pueden escribir. Una macro en una ubicación de confianza se ejecuta sin aviso y sin comprobación de la marca de la Web, así que una ubicación de confianza en la que los usuarios pueden escribir es una vía de omisión.
- Disable All ActiveX en Microsoft Office 2016 > Security Settings = Enabled donde no se usen controles ActiveX en los documentos.
Paso 6: paquetes OLE y DDE
Los objetos OLE Package incrustados permiten que un documento lleve un script o un ejecutable que se lanza con un doble clic. Bloquea su activación en cada aplicación:
HKCU\Software\Microsoft\Office\16.0\Word\Security
PackagerPrompt REG_DWORD 2 (0 = run without prompt, 1 = prompt, 2 = do not run)Establece el mismo valor para Excel y PowerPoint. Despliégalo con Group Policy Preferences o Intune si tu versión de las plantillas no tiene una configuración ADMX para ello.
Para DDE, establece Don't allow Dynamic Data Exchange (DDE) server launch in Excel y Don't allow Dynamic Data Exchange (DDE) server lookup in Excel en Enabled. En Word, establece AllowDDE = 0 (REG_DWORD en HKCU\Software\Microsoft\Office\16.0\Word\Security), que desactiva DDE y es el valor predeterminado desde la actualización de diciembre de 2017; 1 permite DDE solo hacia programas que ya se estén ejecutando y 2 lo permite por completo. Impón 0 para que nadie vuelva a activarlo.
Outlook tiene su propia configuración de macros (Microsoft Outlook 2016 > Security > Trust Center > Security setting for macros). Configúrala para avisar en las firmadas y deshabilitar las no firmadas, o para no avisar nunca y deshabilitarlas todas.
Paso 7: detectar la dependencia de macros antes de imponer
La mayor parte de las molestias de este proyecto vienen de no saber quién usa macros. Antes de imponer VBA solo firmado, busca archivos con macros en los recursos compartidos y en las bibliotecas de OneDrive o SharePoint que realmente usan los equipos de negocio:
Get-ChildItem -Path \\fs01\Departments -Recurse -Include *.xlsm, *.xlam, *.xls, *.docm, *.dotm, *.pptm -ErrorAction SilentlyContinue |
Group-Object { $_.Directory.FullName } |
Sort-Object Count -Descending |
Select-Object Count, Name -First 50Ordena los resultados por carpeta y por fecha de última escritura. Los archivos que nadie toca desde hace años son material de archivo, no un obstáculo. Las carpetas activas te dan los nombres de los equipos con los que hablar: o firman sus macros, o las trasladan a una ubicación de confianza controlada, o las sustituyen por una herramienta compatible. Ten en cuenta que los archivos .xls también pueden contener VBA, así que la extensión por sí sola no demuestra nada; la lista es un punto de partida para conversar, no un inventario.
Mientras tanto, impón de inmediato el bloqueo de macros de Internet y la desactivación de XLM. Casi nunca rompen trabajo legítimo y cierran la vía de entrega más habitual.
Qué se rompe
- Los libros de socios externos que dependen de macros se abren ahora sin ellas. Pide al propietario que los firme o ábrelos desde una ubicación de confianza controlada.
- Los modelos de Excel heredados con funciones XLM dejan de calcular. Busca en los recursos compartidos archivos
.xlmy libros con hojas de macros antes de imponerlo. - Los complementos COM sin firmar (conectores de CRM, herramientas PDF) quedan bloqueados en cuanto se exige la firma. Consigue antes versiones firmadas.
- Las plantillas de documentos en un recurso compartido de red usadas como ubicaciones de confianza dejan de funcionar al deshabilitar las ubicaciones de confianza de red. Trasládalas a SharePoint o a una ruta local reservada a los administradores.
- Los controles ActiveX de los formularios dejan de cargarse.
Haz un piloto con TI y un equipo de negocio durante dos semanas, recoge las quejas, corrígelas en origen y después amplía.
Verificarlo
En un dispositivo piloto, como el usuario:
$base = "HKCU:\Software\Policies\Microsoft\Office\16.0"
foreach ($app in "Word","Excel","PowerPoint") {
Get-ItemProperty "$base\$app\Security" -ErrorAction SilentlyContinue |
Select-Object @{n='App';e={$app}}, blockcontentexecutionfrominternet, VBAWarnings, RequireAddinSig
}
Get-ItemProperty "$base\Excel\Security" -Name XL4MacroOff -ErrorAction SilentlyContinue
Get-ItemProperty "$base\Common\Security" -Name MacroRuntimeScanScope -ErrorAction SilentlyContinueSi usas Cloud Policy, los valores se guardan en HKCU\Software\Policies\Microsoft\Cloud\Office\16.0. Después prueba el funcionamiento: descarga de Internet un documento inofensivo con macros y confirma que aparece la barra roja de Riesgo de seguridad sin el botón Habilitar contenido. En el lado de Defender, las detecciones AMSI de contenido de macros aparecen como detecciones normales (evento 1116) en el registro Operational de Defender.
Lista de comprobación
- Plantillas ADMX de Office actualizadas, o Cloud Policy / catálogo de configuración de Intune en uso
- Block macros from the Internet habilitado para Word, Excel, PowerPoint, Access y Visio
- VBA configurado solo para macros firmadas o deshabilitado; documentos de confianza desactivados
- Macros XLM deshabilitadas; Macro Runtime Scan Scope = todos los documentos
- Toda la configuración de la Vista protegida en sus valores seguros; formatos heredados bloqueados
- Complementos con firma obligatoria; sin ubicaciones de confianza de red ni escribibles por los usuarios
- Activación de paquetes OLE y DDE bloqueada
- Reglas ASR de Office impuestas en paralelo
Preguntas frecuentes
¿No bloquea ya Microsoft las macros de Internet de forma predeterminada?
Sí: las versiones actuales de Microsoft 365 Apps bloquean las macros VBA de los archivos que llevan la marca de la Web (Mark of the Web) en Word, Excel, PowerPoint, Access y Visio. Pero ese valor predeterminado es un comportamiento, no una directiva, así que los usuarios y las compilaciones antiguas pueden acabar permitiéndolas. Establecer la directiva explícitamente hace que el bloqueo sea imponible, auditable y coherente entre canales.
Nuestro equipo de finanzas necesita macros. ¿Cuál es la forma más segura de permitirlas?
Firma las macros con un certificado de firma de código, despliega ese certificado como editor de confianza y configura la notificación de macros VBA para deshabilitar todas excepto las firmadas digitalmente. Si no es posible firmarlas, usa una única ubicación de confianza muy controlada en un recurso compartido en el que los usuarios normales no puedan escribir, en lugar de permitir macros en todas partes.
¿Sustituye esta configuración a las reglas ASR para Office?
No, las complementa. La directiva de Office impide que una macro se ejecute; las reglas ASR limitan lo que puede hacer una macro que sí se ejecuta, como lanzar procesos hijos o llamar a API Win32. Configura ambas, porque usuarios y atacantes encuentran con regularidad formas de sortear una de las capas.
Endurecer Microsoft Office: macros, OLE y complementos