Laboratorio de análisis forense de malware de Office — Análisis estático en REMnux
Análisis estático de dos archivos de Office maliciosos, realizado íntegramente dentro de una VM REMnux aislada. Nunca se ejecutó nada — solo se inspeccionó.
Configuración
- VM REMnux, sin carpetas compartidas con el host
- Herramientas: sha256sum, file, unzip y la suite oletools (oleid, olevba, oledump, mraptor)
- Ambas muestras obtenidas de MalwareBazaar (abuse.ch)
Muestra 1: Documento de Word malicioso (.docx)
SHA-256: 68e82279bff55cf3b9f1f22ec4a165b1b1245a359f7e8d86664b2541d8f8d3fe
Lo que encontré:
- Un archivo dentro del docx (
nste.xml) era en realidad datos en formato Rich Text Format haciéndose pasar por XML — una discrepancia que por sí sola ya es una señal de alarma
- Un objeto incrustado era un ejecutable VBS de 196 KB (
419876.vbs)
- Otro objeto incrustado coincidía con CVE-2017-11882 — un exploit conocido del Editor de ecuaciones que se ejecuta con solo abrir el archivo, sin necesidad de macros
Veredicto: Malicioso. Se trata de un documento real weaponizado que utiliza un RCE conocido para dejar caer un ejecutable.
Muestra 2: Archivo de Excel malicioso (.xlsx)
SHA-256: dc65419ba5d83b980d7018198a14209fa2f5ebf6f99d47bfe9f586852087befe
Lo que encontré:
- El archivo estaba cifrado (protegido con contraseña), lo que normalmente oculta el contenido de macros a los escáneres antivirus
- Tenía 4 módulos VBA, pero los 4 resultaron estar vacíos —
mraptor devolvió "Macro OK" sin indicadores AutoExec/Write/Execute
- Una hoja de cálculo estaba oculta
- Había cadenas codificadas en hexadecimal en un flujo de macros XLM de estilo antiguo, separado de la capa VBA
- Al decodificar esas cadenas no apareció shellcode ni una URL de descarga — solo algunos identificadores de bibliotecas de tipos
Veredicto: Sospechoso, pero no concluyente. El cifrado, la hoja oculta y las cadenas ofuscadas parecen tácticas de evasión, pero no pude confirmar una carga útil activa real en la capa VBA. La carga útil real podría residir en la capa de macros XLM heredada (que no revertí por completo), o podría tratarse de una muestra incompleta o de preparación.
Pasos que seguí
- Calcular el hash de cada archivo (SHA-256) para la cadena de custodia
- Comprobar el tipo real de archivo con
file y compararlo con la extensión
- Ejecutar
oleid para una lectura rápida de cifrado/macros/enlaces externos
- Ejecutar
oledump para listar cada objeto incrustado
- Ejecutar
olevba para extraer y decodificar cualquier código fuente VBA
- Ejecutar
mraptor para comprobar el comportamiento de macros de ejecución automática
Qué demuestra esto
- Cómo detectar una discrepancia de tipo de archivo usada para evadir la detección
- Cómo funciona CVE-2017-11882 sin necesidad de macros
- Cómo verificar realmente el comportamiento de las macros en lugar de suponerlo a partir de indicadores superficiales
- Por qué el cifrado + hojas ocultas + cadenas ofuscadas no significan automáticamente "malicioso confirmado" — a veces la evidencia es no concluyente, y vale la pena decirlo con claridad
Fuentes
Autor
Mofolorunsho Adeleke
GitHub: https://github.com/Mo200909