Se conoce como malware de macro al código que aprovecha la funcionalidades de macro de documentos ofimáticos (especialmente Excel y Word del paquete Office de Microsoft) para realizar acciones maliciosas sobre los sistemas de las víctimas que abren el fichero.
Originalmente las macros añaden funcionalidades extra a los documentos, dotándolos de propiedades dinámicas que permiten, por ejemplo, realizar acciones sobre un conjunto de celdas en un documento Excel o bien incrustar objetos multimedia en ficheros Word.
Las razones que permiten que este tipo de malware haya sido y siga siendo efectivo son varias:
Desde 2104 y durante 2015, se han utilizado los virus de macro (en combinación con Powershell, para eludir la escritura en disco y por tanto pasar desapercibido para los antivirus) para difundir malware de tipo ransomware o troyanos bancarios, con bastante éxito para los atacantes a pesar de las contramedidas y mejoras en seguridad que se han materializado desde entonces. Por tanto, puesto que más de 15 años después de su aparición el malware de macro sigue constituyendo un problema, todavía se hacen necesarios mecanismos que permitan detectar estos ataques.
Visual Basic for Applications
Es el lenguaje sobre el que se crean las macros en Office. Apareció en 1993, y su última versión data de 2013. Está relacionado con Visual Basic, en el sentido de que necesita de su motor para ejecutarse, pero no es independiente: debe correr dentro de otra aplicación que contenga el código, e interactuar con otras a través de objetos OLE Automation (un IPC interno de Microsoft). VBA se compila en P-Code (también usado en Visual Basic). Se trata de un sistema propietario de Microsoft que permite su decompilación al formato original en el que fue escrito el código. Una vez compilado, se almacena en el documento de Office correspondiente como un flujo separado en un objeto OLE o COM.
Desde 2007 existen dos formatos muy diferentes de documentos Office y dependiendo de la versión del formato Office usado, este objeto puede encontrarse incrustado en el documento o como fichero separado. Los diferentes formatos son:
- Basados en formatos propios de Microsoft anteriores a 2007 con extensiones del tipo .doc o .xls (formato “clásico”). Los formatos anteriores a 2007 son en realidad un objeto OLE en sí mismos y en cierta manera su estructura se asemeja a un sistema de ficheros simplificado. En estos formatos, las macros se almacenan en un directorio “Macro” que contienen a su vez el objeto COM.
- Basadas en formatos Open XML posteriores a 2007 cuyas extensiones son .docx o .xlsx, por ejemplo. Estos formatos son en realidad archivos en formato ZIP, que contienen el mimo objeto COM a modo de macro, además de una configuración estructurada fundamentalmente en XML. En este sentido, cabe destacar un cambio relevante realizado en Office a partir de la introducción de este tipo de documentos. Hasta el momento, los ficheros con extensión .doc creados con Office previos a 2007 (y por tanto habitualmente objetos OLE en sí mismos), podían contener o no macros, sin que el usuario pudiese percibir diferencia alguna en su nombre u extensión. Desde Office 2007, existe en concreto el concepto de fichero con extensión .DOCM que implica que un documento contiene macros, y cuyo icono incluye un signo de advertencia. Solo si se renombra este tipo de ficheros a .doc, Office ejecutará las macros. Se entiende este sistema como un método de seguridad adicional que incluye Office para proporcionar al usuario la información necesaria antes de abrir un fichero. Sin embargo, las suites Office actuales son perfectamente compatibles con el formato .doc, por lo que sigue siendo utilizado por atacantes. Estos también utilizan (en menor medida) los formatos .docm, confiando en que el usuario no perciba el peligro que acarrea la extensión.
Se puede abrir un docx o docm con cualquier fichero que permite descomprimir zip y comprobarlo. Los objetos COM u OLE utilizados por Microsoft para almacenar las macros, son en concreto objetos OLE con la estructura “Office VBA File Format”, un formato que se aplica a las macros de igual forma en ambas fórmulas (“clásico” y actual, los formatos antiguos y Open XML posteriores a 2007).
Herramientas para estudiar el malware de macro
A la hora del análisis estático del malware de macro, es necesario destacar varias herramientas que, si bien no suponen algoritmos o técnicas de detección o clasificación en sí mismas, sí que se han convertido en el estándar de facto a la hora de analizar malware de macro por su capacidad para estudiar el formato y extraer la información valiosa de cada muestra. Algunas de las herramientas y sus características más interesantes son:
- VBATools: VBATools es una colección de scripts creados en Python que se ha convertido en el estándar de facto a la hora de analizar macros en general y malware de macro en particular. Se trata de una colección de herramientas específicas para el tratamiento de objetos OLE, entre las que destaca OleVBA. Esta es la herramienta específica dentro del paquete que permite extraer las macros dentro de los documentos Office, además de decompilarlas y realizar una serie de detecciones heurísticas específicas contra ciertos patrones de malware. OleVBA Alerta sobre el uso de palabras reservadas que pueden suponer un potencial problema de seguridad utilizadas en el contexto de una macro codificada en VBA, como llamadas a APIs peligrosas de sistema que conlleven ejecución (Exec, Shell, etc), además de acceso a URLs, direcciones IP, o nombres de ficheros con típicas extensiones ejecutables (exe, pif, etc). Por si fuera poco, alerta sobre el uso de funcionalidades sospechosas de las macros, o que podrían suponer un comportamiento peligroso, como por ejemplo la autoejecución.
- Oledump: Herramienta creada en Python que permite extraer información de objetos OLE. Esto significa que no permite la manipulación de documentos Office en formato 2007 en adelante, puesto que estos no son objetos OLE en sí mismos, sino que contienen las macros en este formato. Oledump permite también caracterizar cierto malware de macro, pero no está específicamente pensado para el tratamiento de documentos Office, por tanto, carece de la potencia de la herramienta OleVBA de las OleTools.
- DIARIO: https://diario.elevenpaths.com. Esta web permite arrastrar ficheros ofimáticos y mostrar online las macros sin riesgo. Incluso compartirlas y un diagnóstico sobre si pueden ser malware o no.
Estas herramientas Python mencionadas requieren de la instalación de una librería Python llamada OleFile, que es en realidad la que, a bajo nivel, permite interpretar, leer e incluso crear ficheros en formato OLE2.
Con estas referencias, se tendrá un buen arsenal para analizar los docs en los sistemas y ver si esconden algo. Para los administradores, solo recordar que Microsoft habilitó la posibilidad de bloquear por completo todas las macros desde el Directorio Activo . En las plantillas administrativas, Microsoft Word 2016, Opciones de Word, Seguridad, Centro de Confianza, “Bloquear macros en ficheros Office que vengan de Internet.
Fuentes:
https://www.campusciberseguridad.com/blog/item/159-malware-de-macro-como-funciona-y-como-analizarlo
Fuente obtenida de: https://blog.elhacker.net/2022/06/malware-de-macro-mala-hierba-nunca-muere.html