Ya vimos que se extraía del fichero Excel , aunque la manera en la que lo hace la programación de las macros es lo interesante.
Quise que vieseis que era posible detectar y extraer esas DLL directamente sin necesidad de abrir Microsoft Office.
Podemos utilizar esta sencilla regla yara para detectar ficheros ejecutables (exe o dll, por ejemplo) y extraerlos de la manera que habíamos visto en el post anterior.
rule Executable_Inside_Excel
{
meta:
Author = "by Rafa"
URL = "https://ciberseguridad.blog/documentos-xls-utilizados-por-ta505/"
Description = "Detect executable files inside Excel files"
strings:
$magic = { D0 CF 11 E0 A1 B1 1A E1 00 00 00 }
$MZ = { 4D 5A }
$This = "!This program cannot be run in DOS mode."
condition:
$magic and $MZ and $This
}
Vamos al lío… :D
Una vez abrimos el documento de Excel nos sale el mensaje de “Habilitar contenido”:
![Habilitar contenido Macro ciberseguridad](https://ciberseguridad.blog/content/images/2020/07/habilitar-macros-excel.png)
De momento estamos a salvo, pero como se pulse en el botón o tengas configurado la seguridad de las macros como confiables, es decir, se activan directamente sin la intervención del usuario, entonces poco puedes hacer ya, salvo llamar a los bomberos. Es la última opción que se ve en la siguiente captura.
![Deshabilitar Macros con notificaciones](https://ciberseguridad.blog/content/images/2020/07/deshabilitar-macros-con-notificaciones.png)
Generalmente esta opción no debería estar marcada y Microsoft lo deja claro: “no recomendado”, hay que hacerle caso.
Si abrimos el editor de Macros, vemos la composición del documento:
![Editor macros excel seguridad](https://ciberseguridad.blog/content/images/2020/07/editor-macro-excel.png)
Tiene una serie de módulos en donde se encuentra el grueso de la programación de las macros y un par de formularios de diálogo.
En el primer formulario que se ve “Dialog4”, se encuentran datos que utilizará las macros a la hora de extraer un objeto OLE, lo veremos después.
![Editor VBA](https://ciberseguridad.blog/content/images/2020/07/editor-VBA.png)
En el segundo (WelcomeDialog), vemos la ventana que nos muestra el documento mientras realiza las acciones que veremos a continuación, para que no se sospeche que algo malo está ocurriendo en el equipo. Te hacen pensar que están configurando un componente de Microsoft Office, la realidad es otra muy distinta.
![Falso instalador de Windows](https://ciberseguridad.blog/content/images/2020/07/falso-instalador.png)
Utilizamos las ventanas de Inmediato y Locales para ver qué está ocurriendo con la programación de las macros, veremos como las variables van cambiando y en caso de querer ver el contenido de una concreta nos ayudarán a ello.
![Breakpoints Ciberseguridad XLS](https://ciberseguridad.blog/content/images/2020/07/breakpoints.png)
Ponemos “breakpoints” en cada punto sospechoso, al final de las funciones y en las variable e iremos viendo su valor paso a paso.
![Breakpoints sospechosos en XLS - Excel](https://ciberseguridad.blog/content/images/2020/07/breakpoints-sospechosos.png)
Trataré de centrarme en los puntos relevantes, en los que se vean datos de variables como rutas o nombres de ficheros que aporten una visión de lo que hace la programación de las macros.
Con F8 iremos recorriendo “paso a paso” cada línea.
![Módulo sospechoso XLS](https://ciberseguridad.blog/content/images/2020/07/Modulo-sospechoso-XLS.png)
Vemos cómo va a cargar la función “WuzzyBud” dentro del módulo 0 y le pasa como argumento el valor 800.
![Modulo 0 Buzz](https://ciberseguridad.blog/content/images/2020/07/Modulo-0-Buzz.png)
Si entramos en ese módulo veremos cómo las variables cambian y le podemos poner valores:
![Cambio de variables y cambio de valores](https://ciberseguridad.blog/content/images/2020/07/Modificar-variables-modulo-xsl.png)
No voy a ir tan “paso a paso”, simplemente quiero que veais cómo se ve en las ventanas que os he mostrado antes.
Ese valor 800 es el que se le asigna a la variable “dImmer”. Lo vemos en la ventana de Locales. Lo interesante de esta ventana es que aparecen las variables contenidas en la función y sus valores actuales. A medida que pulsemos F8 irán cambiando.
Es posible saber lo que va a contener la variable de forma visual en algunos puntos, podemos utilizar la venta de Inmediato para ello: “Major health problems”.
![Major health problems](https://ciberseguridad.blog/content/images/2020/07/Major-health-problems.png)
Después de estas breves explicaciones sobre las ventanas que vamos a utilizar nos metemos de lleno con la programación de las macros.
Nos encontramos con valores dentro de los formularios que van a ser utilizados.
![Valores reutilizados varibles](https://ciberseguridad.blog/content/images/2020/07/Valores-reutilizados-varibles-.png)
El directorio temporal jugará un papel importante en todo esto.
![Directorio temporal Macro](https://ciberseguridad.blog/content/images/2020/07/Directorio-temporal-macro.png)
Justo después cambia a su valor en el equipo, la ruta completa, ya no de la variable temporal:
![Cambio de valor en equipo](https://ciberseguridad.blog/content/images/2020/07/Cambio-valor-en-equipo.png)
Y cambia al directorio, si vemos el contenido antes de pulsar F8, vemos otra ruta, por esto está bien utilizar la ventana de Inmediato:
![Ventana Inmediato](https://ciberseguridad.blog/content/images/2020/07/ventana-inmediato.png)
Hasta el momento tenemos el directorio temporal y este otro, que en breves momentos veremos lo que se guardará ahí.
Seguimos y vamos a la función “principal” de toda la programación: “DerTip”
![Función Dertip](https://ciberseguridad.blog/content/images/2020/07/Funci-n-DerTip.png)
Entramos dentro y nos detenemos aquí:
![Desglose Función Dertip](https://ciberseguridad.blog/content/images/2020/07/Desglose-funci-n-Dertip.png)
Las 3 últimas variables son las que van a realizar la magia del fichero Excel, tenemos un fichero “xlsx”, el mismo terminado en “zip” y un fichero “oleObject*.bin”. Arriba el directorio temporal y otro en que que aparece un directorio “Templates\libConfig”, posiblemente la cadena no haya sido completada (luego lo veremos).
Esta función se encarga de guardar el libro actual y guardarlo como un fichero.
![Función guardar libro](https://ciberseguridad.blog/content/images/2020/07/Funci-n-guardar-libro.png)
¿Donde?
![Función guarda en Temp](https://ciberseguridad.blog/content/images/2020/07/Funci-n-guardar.png)
En el directorio temporal como “mannual.xlsx”.
Acto seguido, lo copia como fichero “.zip”.
![Guarda como ZIP](https://ciberseguridad.blog/content/images/2020/07/Guarda-como-ZIP.png)
Y se prepara para extraer el siguiente fichero.
![Extración fichero comprimido](https://ciberseguridad.blog/content/images/2020/07/Extraci-n-fichero-comprimido.png)
Esto es debido a que como sabéis, los fichero xlsx, son zip con una estructura. De esta forma, es más fácil acceder al interior del fichero Excel y extraer ese “oleObject1.bin” en el directorio temporal.
![Extración oleObject1.bin en temp](https://ciberseguridad.blog/content/images/2020/07/Extraci-n-oleObject.png)
Una vez que ya tiene el fichero en su sitio, se dispone a extraer los ficheros o dll que habíamos visto en el artículo anterior.
![Archivos generados](https://ciberseguridad.blog/content/images/2020/07/Archivos-generados.png)
![Creación de dlls](https://ciberseguridad.blog/content/images/2020/07/Creaci-n-de-dlls.png)
Primero comienza con la DLL “libConfig2.dll” y después “libConfig1.dll”. Como os decía arriba, la cadena aún no estaba completa, ahora ya sí, con una de las dll.
![Dll en HurricanMoes](https://ciberseguridad.blog/content/images/2020/07/dll-en-Hurricane.png)
Aquí tenemos la dll guardada en el array “HurricanMoes()” que pisará disco finalmente como “libConfig2.dll”, llamándola una vez que la tiene preparada:
![Dll guardada en Array](https://ciberseguridad.blog/content/images/2020/07/Dll-tocando-disco.png)
Vemos como la función devuelve: “Error 2015”:
![](https://ciberseguridad.blog/content/images/2020/07/Error-2015.png)
Después repetirá lo mismo para la segunda dll incluída en el fichero “oleObject1.bin”.
![Repetición Oleobject1.bin](https://ciberseguridad.blog/content/images/2020/07/Oleobject1dll.png)
Guardará el contenido de la variable en el fichero “libConfig1.dll”.
![Guarda libConfig1.dll](https://ciberseguridad.blog/content/images/2020/07/libconfig1.png)
Y la llamará como la anterior:
![Llamada como la anterior](https://ciberseguridad.blog/content/images/2020/07/Llamada-identica-a-la-anterior.png)
Como resultado a la llamada tenemos que varRes1 es igual a 0 y saldrá de la función, por lo que esta ha tenido éxito.
![VarRes1 Igual](https://ciberseguridad.blog/content/images/2020/07/VarRes1.png)
Por lo tanto esta segunda dll es la que ha tenido éxito, que como veíamos en el post anterior correspondía con la versión de 32 bits.
$ file libConfig*.dll
libConfig1.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows
libConfig2.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows
`
![libConfigg.dll y libConfig2.dll](https://ciberseguridad.blog/content/images/2020/07/libconfig1-y-libconfig2.png)
¿Pero porqué se ha utilizado una y no la otra? Las 2 podrían haber funcionado en la máquina de análisis de 64 bits...
La culpa la tiene la versión de “Excel.exe” de Microsoft Office.
![Versión Excel](https://ciberseguridad.blog/content/images/2020/07/Versi-n-Excel.png)
Por lo tanto es la DLL la que comprueba su arquitectura y dependiendo de ella se inyecta o no. En caso de tener éxito, devolverá 0 como vimos en lugar de “Error 2015”.
Si te vas a inyectar en un proceso es mejor que sea de la misma arquitectura, para evitar sorpresas. Si el proceso es de 64 bits podrás inyectar binarios de 64 y 32 bits. Pero si el proceso es de 32 y tratas de inyectar un binario de 64, pues tendrás problemas :D
Y mientras tanto el usuario ve el siguiente mensaje:
![Enmascaramiento TA505](https://ciberseguridad.blog/content/images/2020/07/enmascaramiento-TA505.png)
¿Qué estará pasando con este fichero Excel que no funciona? Pues eso, que pasas a formar parte de un entramado en el que tu pc está comprometido y puede que como colofón te dejen algún ransomware como regalo. Esperemos que no.
Espero que os haya gustado!
Hasta otra!