
Un asistente multiplataforma para la creación de documentos maliciosos de MS Office. Puede ocultar macros VBA, pisar código VBA (mediante P-Code) y confundir herramientas de análisis de macros. Funciona en Linux, OSX y Windows.
Esta herramienta fue lanzada durante nuestra charla en BlackHat Asia (28 de marzo de 2019). Hay una grabación en video de esta charla disponible en https://www.youtube.com/watch?v=9ULzZA70Dzg.
Un asistente multiplataforma para crear documentos maliciosos de MS Office. Puede ocultar macros de VBA, eliminar código VBA (a través de P-Code) y confundir herramientas de análisis de macros. Funciona en Linux, OSX y Windows.
Si eres nuevo en esta herramienta, quizás quieras empezar leyendo nuestra publicación de blog sobre Evil Clippy: https://outflank.nl/blog/2019/05/05/evil-clippy-ms-office-maldoc-assistant/
Este proyecto debe usarse solo para pruebas autorizadas o fines educativos.
Si no tienes idea de qué es todo esto, consulta primero los siguientes recursos:
Al momento de escribir esto, esta herramienta es capaz de hacer que una macro predeterminada de Cobalt Strike evite la mayoría de los principales productos antivirus y varias herramientas de análisis de maldoc (mediante el uso de eliminación de VBA en combinación con nombres de módulos aleatorios).
Evil Clippy usa la biblioteca OpenMCDF para manipular archivos en Formato de Archivo Binario Compuesto de MS Office (CFBF), y para ello abusa de las especificaciones MS-OVBA y sus características. Reutiliza código de Kavod.VBA.Compression para implementar el algoritmo de compresión que se utiliza en los flujos de directorio y módulo (consulte MS-OVBA para especificaciones relevantes).
Evil Clippy compila perfectamente con el compilador Mono C# y se ha probado en Linux, OSX y Windows.
No proporcionamos una versión binaria para EvilClippy. Compile los ejecutables usted mismo:
OSX y Linux
Asegúrese de tener Mono instalado. Luego ejecute el siguiente comando desde la línea de comandos:
mcs /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs
Ahora ejecute Evil Clippy desde la línea de comandos:
mono EvilClippy.exe -h
Windows
Asegúrese de tener Visual Studio instalado. Luego ejecute el siguiente comando desde un símbolo del sistema para desarrolladores de Visual Studio:
csc /reference:OpenMcdf.dll,System.IO.Compression.FileSystem.dll /out:EvilClippy.exe *.cs
Ahora ejecute Evil Clippy desde la línea de comandos:
EvilClippy.exe -h
Imprimir ayuda
EvilClippy.exe -h
Ocultar/Mostrar macros del GUI
Oculta todos los módulos de macro (excepto el módulo predeterminado "ThisDocument") del editor GUI de VBA. Esto se logra eliminando líneas de módulo del flujo del proyecto [MS-OVBA 2.3.1].
EvilClippy.exe -g macrofile.doc
Deshace los cambios realizados por la opción de ocultar (-g) para que podamos depurar la macro en el IDE de VBA.
EvilClippy.exe -gg macrofile.doc
Eliminar VBA (abuso de P-Code)
Coloca código VBA falso del archivo de texto fakecode.vba en todos los módulos, mientras deja intacto el P-Code. Esto abusa de una característica no documentada de los flujos de módulo [MS-OVBA 2.3.4.3]. Tenga en cuenta que la versión del proyecto VBA debe coincidir con el programa anfitrión para que se ejecute el P-Code (vea el siguiente ejemplo para la coincidencia de versiones).
EvilClippy.exe -s fakecode.vba macrofile.doc
Nota: La eliminación de VBA no funciona para archivos guardados en el formato Libro de Excel 97-2003 (.xls)
Establecer versión de Office destino para la eliminación de VBA
Igual que el anterior, pero ahora apuntando explícitamente a Word 2016 en x86. Esto significa que Word 2016 en x86 ejecutará el P-Code, mientras que otras versiones de Word ejecutarán el código de fakecode.vba en su lugar. Se logra estableciendo los bytes de versión apropiados en el flujo _VBA_PROJECT [MS-OVBA 2.3.4.1].
EvilClippy.exe -s fakecode.vba -t 2016x86 macrofile.doc
Establecer/restablecer nombres de módulos aleatorios (engañar a herramientas de análisis)
Establece nombres de módulo ASCII aleatorios en el flujo dir [MS-OVBA 2.3.4.2]. Esto abusa de la ambigüedad en los registros MODULESTREAMNAME [MS-OVBA 2.3.4.2.3.2.3] - la mayoría de las herramientas de análisis usan los nombres de módulo ASCII especificados aquí, mientras que MS Office usa la variante Unicode. Al establecer un nombre de módulo ASCII aleatorio, la mayoría de las herramientas de análisis de P-Code y VBA fallan, mientras que el P-Code y VBA reales aún funcionan bien en Word y Excel.
EvilClippy.exe -r macrofile.doc
Nota: se sabe que esto es efectivo para engañar a pcodedmp y VirusTotal
Establece nombres de módulo ASCII en el flujo dir para que coincidan con sus contrapartes Unicode. Esto revierte los cambios realizados con la opción (-r) de EvilClippy
EvilClippy.exe -rr macrofile.doc
Servir una plantilla con VBA eliminado a través de HTTP
Sirve macrofile.dot a través del puerto HTTP 8080 después de realizar la eliminación de VBA. Si se recupera este archivo, automáticamente coincide con la versión de Office del objetivo (usando sus cabeceras HTTP y luego estableciendo los bytes _VBA_PROJECT en consecuencia).
EvilClippy.exe -s fakecode.vba -w 8080 macrofile.dot
Nota: El archivo que está sirviendo debe ser una plantilla (.dot en lugar de .doc). Puede establecer una plantilla mediante una URL (¡no se requiere extensión .dot!) desde la barra de herramientas de desarrollador en Word. Además, fakecode.vba debe tener un atributo VB_Base establecido para una macro de una plantilla (esto significa que su fakecode.vba debe comenzar con una línea como Attribute VB_Base = "0{00020906-0000-0000-C000-000000000046}").
Establecer/Quitar protección de Proyecto VBA Bloqueado/No visible
Para establecer los atributos Bloqueado/No visible use la opción '-u':
EvilClippy.exe -u macrofile.doc
Para eliminar los atributos Bloqueado/No visible use la opción '-uu':
EvilClippy.exe -uu macrofile.doc
Nota: También puede eliminar los atributos Bloqueado/No visible en archivos que no fueron bloqueados con EvilClippy.
Desarrollado para la manipulación de documentos de Microsoft Word y Excel.
Como se señaló anteriormente, la eliminación de VBA no es efectiva contra el formato Libro de Excel 97-2003 (.xls).
Stan Hegt (@StanHacked) / Outflank
Con contribuciones significativas de Carrie Roberts (@OrOneEqualsOne / Walmart).
Un agradecimiento especial a Nick Landers (@monoxgas / Silent Break Security) por señalarme hacia OpenMCDF.