Documento en Microsoft Office Excel malicioso

 

Resumen:

 

El documento en Excel "3-L2.xls", propagado por correo electrónico, explota la vulnerabilidad "CVE-2012-0158" también conocida como MSCOMCTL.OCX Remote Code Execution que afecta a algunas versiones de Microsoft Office 2003, 2007 y 2010. El archivo contiene instrucciones cifradas con XOR, además de dos archivos embebidos que también están cifrados (set.xls y ews.exe) y que genera en el sistema de archivos en tiempo de ejecución. Además captura las pulsaciones del teclado y las almacena en el archivo "user.bin".

 

 

 

 

Análisis dinámico básico:

 

 

Al abrir el archivo "3-L2.xls" con la versión de Microsoft Office 2003, se inician los siguientes procesos:

·         EXCEL.EXE (1980): proceso generado al abrir el documento "3-L2.xls".

·         ews.exe (460): archivo generado en tiempo de ejecución por "3-L2.xls".

·         winlogon.exe (992): proceso modificado por el binario "ews.exe".

·         EXCEL.EXE (908): proceso generado al abrir el archivo "set.xls" (creado en tiempo de ejecución).

 

A continuación se muestra el árbol de procesos:

 

 

 

Una vez iniciado el proceso "winlogon.exe" se observa la siguiente actividad de red:

·         Proceso: winlogon.exe.

·         Protocolo: TCP.

·         Dirección IP o dominio remoto: 58.XX.158.248.

·         Puerto remoto: 8080.

·         Estado de la conexión: Peticiones de sincronización.

 

 

 

Al proporcionar la dirección IP y el puerto en nuestro ambiente controlado de análisis de software malicioso, se observó el envío de información del equipo infectado al host remoto como:

·         Dirección IP

·         Sistema operativo

·         Nombre del equipo

·         Usuario

 

 

 

Los cambios importantes en el Sistema de Archivos son la creación del documento "set.xls" y el binario "ews.exe" en la carpeta "Temp", los ejecutables "Live360.exe" y "temp1.exe" en las carpetas "360" y "temp" respectivamente, además del archivo "user.bin" donde se registran las pulsaciones del teclado.

 

 

 

Los archivos con extensión "tmp" se crean de manera temporal al abrir el documento "3-L2.xls".

 

 

 

El archivo "set.xls" no es malicioso y se genera a partir del archivo "3-L2.xls". A continuación se muestra el contenido:

 

 

 

El archivo "ews.exe" es malicioso y se genera a partir del archivo "3-L2.xls", además está empaquetado con "upx".

 

 

 

A continuación se muestran las firmas de los ejecutables maliciosos:

·         Md5 de la muestra empaquetada: d2f995337744c1e3e7316bb6f4bee743

·         Md5 de la muestra desempaquetada: f09de88d525c15a36f984d999d271e0b

 

 

 

En las cadenas del binario se aprecian algunos valores del Registro de Windows asociadas a motores antivirus:

·         KasperskyLab

·         ESET Security

 

 

 

Los archivos "Live360.exe" y "temp1.exe" son réplicas del archivo "ews.exe". A continuación se muestran las firmas de los archivos:

·         set.xls: ecedd068bd8eb68123d594bcf97d6723

·         ews.exe: d2f995337744c1e3e7316bb6f4bee743

·         Live360.exe: d2f995337744c1e3e7316bb6f4bee743

·         temp1.exe: d2f995337744c1e3e7316bb6f4bee743

 

 

 

En el Registro de Windows se agrega el valor "UKey" en formato hexadecimal que hace persistente al software malicioso "Live360.exe".

 

 

 

A continuación se muestra su equivalente en ASCII:

 

 

 

Finalmente, las acciones legítimas que realiza el archivo "ews.exe" son las siguientes:

·         Iniciar el proceso “winlogon.exe”.

·         Borrarse a sí mismo de la carpeta “temp”.

·         Utilizar una instancia del proceso winlogon.exe para enviar peticiones de sincronización a la dirección IP

          58.XX.158.248 hacia el puerto 8080.

·         Crear el valor “Ukey” en el Registro de Windows.

·         Crear los archivos “Live360.exe”, “temp1.exe” y “users.bin”.

 

 

 

El archivo "user.bin" registra las pulsaciones del teclado y las almacena de manera codificada.

 

 

 

 

Análisis dinámico avanzado:

 

 

El identificador de archivo en hexadecimal para formato XLS es:

·         D0 CF 11 E0 A1 B1 1A E1

 

 

 

Se utilizó la herramienta de línea de comandos "OfficeMalScanner" con la opción "info" que localiza código para “macros” en Visual Basic.

Las "macros" son una serie de instrucciones en lenguaje de programación Visual Basic que se utilizan para automatizar tareas que se realizan con frecuencia.

 

 

 

La herramienta forense encontró código VB-Macro que extrajo automáticamente en la carpeta "3-L2.XLS-Macros" en los archivos "Sheet1" y "ThisWorkbook".

 

 

 

A continuación se muestra el contenido del archivo "Sheet1":

 

 

 

A continuación se muestra el contenido del archivo "ThisWorkbook":

 

 

 

En los códigos parece que no hay algo malicioso a simple vista, pero resulta sospechoso la presencia de las cadenas "ListView" y "ListView2" que son controles ActiveX en MSCOMCTL.OCX.

Realizando la inspección de cadenas al archivo en Excel se pueden encontrar los siguientes elementos:

·         Controles ListView y ListView2

·         Cadenas "Sheet1" y "ThisWorkbook"

·         Referencia a la ruta de la carpeta System32

 

 

 

 

Ahora se usará la opción "scan" junto con los switch "brute" y "debug" para desensamblar cualquier shellcode detectado e implementar técnicas de fuerza bruta para descubrir código o archivos cifrados.

 

 

 

OfficeMalScanner detectó shellcode embebido en el archivo que inicia en el desplazamiento 0x1DE0B.

También, se muestran instrucciones de manipulación de bits: XOR (OR exclusiva) y ROR (rotación a la derecha).

Finalmente, la última instrucción (de 7 bytes) parece un poco extraña:

·         mov [esp+ecx*8-288569B3h], gs.

 

Hasta el momento y con base en la información anterior suponemos que el shellcode embebido se descifra en tiempo de ejecución.

Lo siguiente es desensamblar el código para conocer más sobre sus acciones, se puede realizar con herramientas como:

·         DisView

·         ICY Hexplorer

 

 

 

Para analizar paso a paso las acciones del archivo "3-L2.xls" se cargó el proceso "EXCEL.EXE" en OllyDbg. A continuación se muestra la sección identificada previamente:

 

 

 

Se presionó la tecla F7 para ejecutar línea a línea hasta llegar a la instrucción "CMP EBX,ECX" en la dirección de memoria 0352DE1F.

Cada byte cifrado se coloca en el registro AL (8 bits – parte baja del registro AX) y se le aplica una rotación a la derecha (ROR) de 5 bits y posteriormente la función XOR con llave 3F en hexadecimal (62 en decimal).

La instrucción "mov" (de 7 bytes) sospechosa se descompone en otras instrucciones conforme se van descifrando cada uno de los bytes subsecuentes.

El descifrado de los bytes se llevará a cabo hasta que la comparación entre los registros EBX y ECX sea igual, es decir, desde 0x1 hasta 0x4A4.

 

A continuación se muestra el proceso de descifrado del primer byte correspondiente a la instrucción "mov" sospechosa:

 

 

 

Los 7 bytes descifrados son: 5B 5A 59 55 8B EC 81

 

 

 

A continuación se muestra la actividad relacionada con el proceso "winlogon.exe" modificado:

 

 

 

A continuación se muestra la actividad relacionada con el archivo "set.xls" en la carpeta "temp":

 

 

 

En esta parte del código hay instrucciones muy parecidas a las identificadas en un inicio.

Se trata de un corrimiento a la izquierda (ROL) de 5 bits y después el uso de la función XOR con llave 0x31 (49 en decimal):

·         ROL AL,5

·         XOR AL,31

 

 

 

Las instrucciones anteriores son utilizadas para descifrar el archivo "ews.exe" que se encuentra embebido en el documento "3-L2.xls".

Nota: El binario malicioso generado por el archivo "3-L2.xls" en tiempo de ejecución, es el mismo que se descifra a partir de código embebido en dicho archivo.

 

A continuación se muestra otra rutina similar, se trata de un corrimiento a la izquierda (ROL) de 6 bits y después el uso de la función XOR con llave 0x37 (55 en decimal):

·         ROL AL,6

·         XOR AL,37

 

 

 

Dicha rutina se encarga de descifrar el archivo "set.xls" que pretende engañar al usuario haciéndose pasar por un documento legítimo. También se encuentra embebido en el documento "3-L2.xls".

 

Nota: El documento en EXCEL generado por el archivo "3-L2.xls" en tiempo de ejecución, no siempre es el mismo que se descifra a partir de código embebido en dicho archivo porque cambia una o dos secciones pequeñas cada vez que se abre el documento.

 

 

 

               Descifrar archivo: "set.xls"

 

Abrir el archivo "3-L2.xls" con un editor hexadecimal.

·         Buscar el patrón de inicio de archivo:

          9F E3 98 5F 5A 1A B4 5B DC DC DC DC DC DC DC DC

·         Y el patrón de fin de archivo:

          DC DC DC DC 6D DC DC DC DC 9C DC DC DC DC DC DC

 

Quitar todos los bytes que le anteceden.

 

 

 

Quitar todos los bytes que le preceden y guardar el archivo con el nombre "set.raw".

 

 

 

A continuación se muestra el código del scripts que descifrará el archivo "set.raw" y las operaciones que se aplicarán al primer byte (9F) del archivo cifrado para obtenerlo descifrado (D0):

 

 

 

Ejecutar el script "decryptSetXls.pl":

> decryptSetXls.pl set.raw

 

 

 

La firma md5 difiere del obtenida en el análisis dinámico básico:

·         set.xls: ecedd068bd8eb68123d594bcf97d6723

 

Cambian una o dos pequeñas secciones en los archivos cada vez que se abre el documento "3-L2.xls".

Sin embargo, las modificaciones no corrompen el archivo.

 

 

 

               Descifrar archivo: "ews.exe"

 

Abrir el archivo "3-L2.xls" con un editor hexadecimal.

·         Buscar el patrón de inicio de archivo:

          E3 5B 0D 89 91 89 89 89 A9 89 89 89 76 76 89 89

·         Y el patrón de fin de archivo:

          2E 2E 65 4A FC 02 B4 20 93 89 89 89 89 89 89 89

 

Quitar todos los bytes que le anteceden.

 

 

 

En este caso, no hay bytes que precedan al patrón.

 

 

 

A continuación se muestra el código del scripts que descifrará el archivo "ews.raw" y las operaciones que se aplicarán al primer byte (E3) del archivo cifrado para obtenerlo descifrado (4D):

 

 

 

Ejecutar el script "decryptEwsExe.pl":

> decryptEwsExe.pl ews.raw

 

 

 

La firma md5 es igual a la obtenida en el análisis dinámico básico:

·         ews.exe: d2f995337744c1e3e7316bb6f4bee743

 

Para el momento del análisis, VirusTotal indica que 35 de 54 motores antivirus detectan a "3-L2.xls" como malicioso. A continuación el reporte: