Destripando documentos ofimáticos con OfficeMalScanner

Una de las principales vías de infección de malware es a través de documentos ofimáticos. Son un vector de infección muy contundente, sobre todo en ataques dirigidos y campañas de phising.

Estos documentos son manipulados con el fin de esconder en su interior macros, objetos OLE, ejecutables, etc., los cuales, una vez abierto el documento por el usuario, realizan una serie de acciones maliciosas con el objetivo de obtener información con la que poder lucrarse o simplemente provocar daños en el sistema. Generalmente, las acciones llevadas a cabo por este tipo de malware genérico son descargar otro malware desde internet (droppers), explotar vulnerabilidades del sistema, replicarse para asegurarse la persistencia en el equipo, exfiltrar información del usuario, etc.

Una herramienta muy útil para analizar y detectar patrones anómalos en los documentos ofimáticos es la suite “OfficeMalScanner”, la cual podéis descargar desde la web de su autor, http://www.reconstructer.org/.

La suite se compone de las siguientes herramientas:

  • OfficeMalScanner: Analiza los documentos de “Microsoft Office” (doc, xls, ppt) en busca de ficheros incrustados, objetos OLE, shellcodes, macros VBA. Además cuenta con una función capaz de descifrar métodos simples de ofuscación como ROR y XOR.
  • RTFScan: Escanea los ficheros RTF y extrae los objetos incrustados que posteriormente pueden ser analizados por “OfficeMalScanner”.
  • MalHost-Setup: Es una herramienta capaz de extraer el shellcode de un documento y empaquetarlo en un PE para facilitar su análisis con un debugger.
  • DisView: Es un visor de código ensamblador que muestra el objeto desensamblado y en el offset indicado. Útil para localizar el shellcode detectado por las herramientas anteriores.

Vamos a analizar varios documentos maliciosos con estas herramientas para mostrar su funcionamiento y los resultados que podemos obtener.

El primero de ellos es un documento de “Microsoft Office Word” con macros maliciosas. Vamos a extraer las macros y objetos OLE incrustados utilizando “OfficeMalScanner” y el parámetro info:

Se puede observar cómo lanza una alerta indicando que existen macros en el documento. Las macros extraídas las ha almacenado en el directorio indicado. De esta forma podemos verlas con cualquier editor de textos, evitando tener que abrir el documento malicioso y posteriormente el editor de “Visual Basic” para analizar la macro. Si abrimos la macro extraída vemos que contiene el código fuente:

El siguiente fichero es un documento de “Microsoft Office PowerPoint”. Este documento no contiene macros, pero si objetos incrustados. Esto podemos verlo utilizando de nuevo “OfficeMalScanner” y los parámetros scan, debug y brute. Con estos parámetros, la herramienta escaneara el documento en busca de objetos OLE y PE incrustados y, si están cifrados con técnicas simples como XOR, ROR, ROL, ADD o SUB, intentará encontrar la clave de descifrado y los extraerá para que puedan ser analizados.

Un resumen de la salida de la ejecución del análisis es la descrita a continuación. “MalOfficeScanner” ha encontrado patrones sospechosos en base a sus reglas de búsqueda heurística:

FS:[30h] signature found at offset: 0x506e 
API-Hashing signature found at offset: 0x52fb 
PUSH DWORD[]/CALL[] signature found at offset: 0x50ab 
PUSH DWORD[]/CALL[] signature found at offset: 0x5137 
PUSH DWORD[]/CALL[] signature found at offset: 0x518a 
PUSH DWORD[]/CALL[] signature found at offset: 0x51c5 
PUSH DWORD[]/CALL[] signature found at offset: 0x51d6 
PUSH DWORD[]/CALL[] signature found at offset: 0x5250 
PUSH DWORD[]/CALL[] signature found at offset: 0x528b 
PUSH DWORD[]/CALL[] signature found at offset: 0x52bb 
PUSH DWORD[]/CALL[] signature found at offset: 0x52c1 
PUSH DWORD[]/CALL[] signature found at offset: 0x52cd 

Posteriormente, se intentan descifrar con fuerza bruta los bloques cifrados identificados en el escaneo. En la siguiente salida puede verse como han sido localizados 1 objeto OLE y 3 PE incrustados. Una vez que ha sido capaz de encontrar la clave de descifrado los exporta. Ahora pueden realizarse los correspondientes análisis a los objetos descifrados.

+++++ decryption loop detected at offset: 0x00005190 +++++
+++++ decryption loop detected at offset: 0x00005192 +++++
+++++ decryption loop detected at offset: 0x00005256 +++++
+++++ decryption loop detected at offset: 0x00005258 +++++ 
Brute-forcing for encrypted PE- and embedded OLE-files now... 

XOR encrypted embedded OLE signature found at offset: 0x10b00 - encryption KEY: 0x85
 Dumping Memory to disk as filename: embebidos__EMBEDDED_OLE__OFFSET=0x10b00__XOR-KEY=0x85.bin
 [ OLE File (after decryption) - 256 bytes ]
 d0 cf 11 e0 a1 b1 1a e1  00 00 00 00 00 00 00 00  | ................ 
XOR encrypted MZ/PE signature found at offset: 0x5b00 - encryption KEY: 0x85
 Dumping Memory to disk as filename: embebidos__PEFILE__OFFSET=0x5b00__XOR-KEY=0x85.bin
 [ PE-File (after decryption) - 256 bytes ]
 4d 5a 90 00 03 00 00 00  04 00 00 00 ff ff 00 00  | MZ.............. 
XOR encrypted MZ/PE signature found at offset: 0x26700 - encryption KEY: 0x85 
Dumping Memory to disk as filename: embebidos__PEFILE__OFFSET=0x26700__XOR-KEY=0x85.bin 
[ PE-File (after decryption) - 256 bytes ] 
4d 5a 90 00 03 00 00 00  04 00 00 00 ff ff 00 00  | MZ.............. 
XOR encrypted MZ/PE signature found at offset: 0x2e8fc - encryption KEY: 0x85 
Dumping Memory to disk as filename: embebidos__PEFILE__OFFSET=0x2e8fc__XOR-KEY=0x85.bin 
[ PE-File (after decryption) - 256 bytes ] 
4d 5a 90 00 03 00 00 00  04 00 00 00 ff ff 00 00  | MZ.............. 

El proceso para ficheros RTF es similar, pero habrá que utilizar “RTFScan” en lugar de “OfficeMalScanner”.

En el caso de que se detecte algún shellcode en alguno de estos objetos podemos extraerlo con “MalHost-Setup”. Basta con indicarle el offset donde comienza el código del shellcode y él se encargará de empaquetarlo en un PE nuevo. De esta forma, podemos analizarlo en un debugger de forma más fácil, ya que analizar conjuntamente el proceso del software ofimático y el documento malicioso puede convertirse en una tarea tediosa. Este sistema tiene un problema, y es que no siempre es posible realizar la explotación fuera del entorno del software ofimático. Para ello, sera necesario utilizar otro tipo de técnicas.

Esta suite es de gran ayuda y arroja mucha información a la hora de enfrentarse a documentos sospechosos. Recientemente, el analista forense Didier Stevens ha extraído las cadenas de búsqueda de anomalías que utiliza esta suite y ha generado un conjunto de reglas de Yara para identificar documentos maliciosos rápidamente (yara rules).

En siguientes entradas del blog profundizaremos más en el análisis de documentos.