
Lecteur/Écrivain de documents macro Excel pour les red teamers et analystes
Un lecteur/écrivain de documents macro Excel pour les équipes rouges et les analystes. Les articles de blog décrivant ce que fait réellement cet outil sont disponibles ici et ici.

Clonez ou téléchargez ce dépôt, l'outil peut ensuite être exécuté en utilisant dotnet – par exemple :
dotnet run -- build --decoy-document Docs\decoy_document.xls --payload Docs\popcalc.bin
ou
dotnet build
cd bin/Debug/netcoreapp2.0
dotnet Macrome.dll deobfuscate --path obfuscated_document.xls
Notez qu'une version 5.0+ de dotnet est nécessaire pour que cela fonctionne comme configuré – elle peut être obtenue sur https://dotnet.microsoft.com/download/dotnet/5.0.
Des versions binaires de l'outil qui ne nécessitent pas dotnet et contiennent un exécutable peuvent être trouvées dans la section Releases pour Windows, OSX et Linux.
Exécutez Macrome soit en utilisant dotnet run depuis le répertoire de la solution, soit dotnet sur le binaire Macrome compilé. Il existe trois modes de fonctionnement pour Macrome – le mode Build, le mode Dump et le mode Deobfuscation.
Exécutez Macrome avec la commande build pour générer un document Excel contenant une feuille de macro obfusquée en utilisant un document leurre fourni et une charge utile macro. dotnet Macrome.dll build -h affichera les instructions d'utilisation complètes.
Par exemple, pour construire un document en utilisant le document leurre path/to/decoy_document.xls et du shellcode binaire x86 stocké dans path/to/shellcode.bin, exécutez dotnet Macrome.dll build --decoy-document path/to/decoy_document.xls --payload /path/to/shellcode.bin. Cela générera un document XLS 2003 qui, après avoir été ouvert et après avoir cliqué sur le bouton "Activer le contenu", exécutera le shellcode de shellcode.bin.
Le reste de la documentation expliquera chaque drapeau/fonction en détail, mais pour l'instant, le "dernier cri" que Macrome propose peut être obtenu en exécutant :
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
Générez d'abord un document Excel "leurre" de base qui contiendra le contenu que les utilisateurs doivent voir. Cela devrait être une sorte d'appât qui convainc les utilisateurs de cliquer sur le bouton "Activer les macros" affiché dans Excel. Quelques exemples de création d'appât "dernier cri" sont disponibles sur https://inquest.net/blog/2020/05/06/ZLoader-4.0-Macrosheets-. Une fois cette feuille créée, enregistrez le document sous le type Classeur Excel 97-2003 (*.xls) plutôt que le format plus récent Classeur Excel (*.xlsx). Un exemple de document leurre est inclus dans /Docs/decoy_document.xls. Notez que si vous utilisez l'obfuscation XOR pour protéger votre document, vous NE POUVEZ PAS actuellement ajouter d'image à votre leurre.
Ensuite, générez une charge utile shellcode à fournir à l'outil. L'exemple de charge utile binaire (qui ouvre la calculatrice) a été généré avec msfvenom en utilisant les paramètres suivants :
msfvenom -a x86 -b '\x00' --platform windows -p windows/exec cmd=calc.exe -e x86/alpha_mixed -f raw EXITFUNC=thread > popcalc.bin
Les charges utiles 64 bits sont également prises en charge. L'exemple de charge utile 64 bits, popcalc64.bin, a été généré avec la commande :
msfvenom -a x64 -b '\x00' --platform windows -p windows/x64/exec cmd=calc.exe -e x64/xor -f raw EXITFUNC=thread > popcalc64.bin
Cette charge utile peut ensuite être intégrée en exécutant la commande :
dotnet Macrome.dll build --decoy-document decoy_document.xls --payload popcalc.bin --payload64-bit popcalc64.bin
Actuellement, les charges utiles 64 bits nécessitent qu'une charge utile x86 soit également fournie. Si cela ne pose pas de problème, vous pouvez simplement spécifier des données factices pour le drapeau de charge utile x86.
Il existe un support éventuel pour intégrer directement des assemblies .NET dans le document, mais si vous souhaitez le faire maintenant, je vous suggère d'utiliser EXCELntDonut.
À partir de Macrome 0.5.0 et plus, toutes les charges utiles seront encodées en base64, donc votre charge utile pourra contenir n'importe quelle séquence d'octets (y compris les octets nuls).
Si vous souhaitez intégrer un exécutable .NET avec Macrome, je suggère d'utiliser Donut avec la commande donut.exe -a 3 -b 1 -z 1 executableToEmbed.exe, puis d'intégrer la charge utile résultante comme vos charges utiles 32 bits et 64 bits.
Une autre alternative solide est Amber qui a très bien fonctionné pour intégrer des binaires Go assez volumineux.
Si pour une raison quelconque vous souhaitez utiliser le mode d'encodage de charge utile hérité d'avant Macrome 0.5.0, utilisez le drapeau --payload-method avec SheetPackingMethod. Notez qu'en mode hérité, l'utilisation d'une charge utile principalement alphanumérique réduira la taille du fichier macro généré car il est plus facile d'exprimer des lettres et des chiffres sous forme de macro que d'ajouter des appels de fonction CHAR de manière répétée comme =CHAR(123)&CHAR(124)&CHAR(125)... etc. Mais l'outil devrait également pouvoir gérer une charge utile binaire totalement non imprimable.
Similaire à l'utilisation d'une charge utile binaire, un document leurre doit d'abord être généré. Ensuite, un fichier texte contenant les macros à exécuter doit être créé. Les macros doivent avoir des colonnes séparées par des caractères ; et des lignes séparées par des sauts de ligne. Actuellement, le contenu des macros spécifiées sera écrit et exécuté à partir de A1 – un support futur sera ajouté pour permettre de spécifier l'emplacement de départ. Des exemples de macros se trouvent dans /Docs/macro_example.txt et /Docs/multi_column_macro_example.txt.
Enfin, exécutez la commande :
dotnet Macrome.dll build --decoy-document decoy_document.xls --payload macro-example.txt --payload-type Macro
Notez l'utilisation du drapeau payload-type défini sur Macro.
Vous pouvez générer vous-même une macro, ou utiliser l'excellent outil EXCELntDonut pour en créer une pour vous.