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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/redsiege/excelntdonut
フィッシングツールペイロード生成エクスプロイトシェルコードフィッシングレッドチーミングシェルコード生成
GitHubredsiege/excelntdonut

EXCELntDonut

Excel 4.0 (XLM) マクロジェネレーター - DLLやEXEをメモリにインジェクトするためのもの。

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
root@kitploit:~
_______  ______ _____ _           _   ____                    _   
| ____\ \/ / ___| ____| |    _ __ | |_|  _ \  ___  _ __  _   _| |_ 
|  _|  \  / |   |  _| | |   | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ /  \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_ 
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
                    by @JoeLeonJr (@FortyNorthSec)                

EXCELntDonut は XLM(Excel 4.0)マクロジェネレータです。C# ソースコード(EXE)を入力として、メモリ上でコードを実行する XLM(Excel 4.0)マクロを出力します。XLM(Excel 4.0)マクロは .XLS ファイルに保存できます。

インストール

root@kitploit:~
chmod +x install.sh
./install.sh

何がインストールされるのか?

  • pip3
  • mono-complete(mcs と、ソースファイルで参照する可能性のあるすべてのライブラリ)
  • EXCELntDonut が CLI として使用可能

EXCELntDonut を単なる Python スクリプトとして実行したい場合は、pandas と donut-shellcode というパッケージを含む仮想環境をセットアップする必要があります。さらに、apt-get で mono-complete をインストールし、python3 を使用して drive.py スクリプトを呼び出す必要があります。./install.sh バッシュスクリプトを使用することをお勧めしますが、選択はあなた次第です。

使用方法

root@kitploit:~
使用法:
	$ EXCELntDonut -f exe_source.cs -r System.Windows.Forms.dll --sandbox --obfuscate

フラグ:
	(必須)
	-f C# ソースコードファイルへのパス(EXE のみ)

	-r C# コードのコンパイルに必要な参照(Linux 上で mcs を使用してコンパイルする場合と同じもの)
	(例: -r 'System.Management')

	(オプション)
	-o 出力ファイル名
	--sandbox 
		基本的なサンドボックスチェックを実行します。新しい手法が発見されるたびに更新されます。
	--obfuscate 
		基本的なマクロ難読化を実行します。

仕組み

ペイロードを含む C# ファイル(たとえば、コバルトストライクビーコンペイロードを実行する Main メソッドを持つ EXE)を指定します。その C# ファイルは MCS を使用して、x86 と x64 の 2 つの .NET アセンブリにコンパイルされます。コンパイル後、Donut(x86 用)と CLRvoyance(x64 用)という優れたツールが各アセンブリを位置独立シェルコードに変換します。次に、すべてのヌルバイトが削除されます。XLM(Excel 4.0)マクロはヌルバイトと相性が悪いためです。ペイロードは、x86 の場合は 255 文字以下、x64 の場合は 10 文字以下の行に分割されます。

シェルコードが準備できたら、基本的なプロセスインジェクション関数(VirtualAlloc、WriteProcessMemory、CreateThread)と、ターゲットシステム上で実行するペイロード(x86 または x64)を決定するアーキテクチャチェック関数と組み合わされます。サンドボックスチェックや基本的な難読化を選択した場合、それらの関数がマクロを更新します。最後に、出力は CSV ファイル(.txt として保存)に配置されます。

XLM(Excel 4.0)マクロの作成方法

EXCELntDonut から出力ファイルを取得したら、テキストエディタで出力ファイルを開き、その内容全体をコピーします(Ctrl-A、Ctrl-C)。Windows VM で Excel を開き、「Sheet 1」を右クリックして「挿入」を選択します。「MS Excel 4.0 マクロ」を選択します。セル A1 に移動し、EXCELntDonut の出力を貼り付けます。すべてのデータが 1 列に貼り付けられる可能性があります。データはセミコロン「;」で区切られています。「データ」タブに移動し、「区切り位置」をクリックします。「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」を選択し、次の画面で「セミコロン」を選択して「完了」をクリックします。マクロは適切な列と行に広がります。

(注意:--obfuscate フラグを選択した場合、難読化ロジックの一部としてマクロがワークシートのランダムなセクションに移動されるため、実際のコードを見つけるにはかなり横にスクロールする必要があります)。

この時点で次の 2 つのことをお勧めします。

  1. 開始セル(マクロコードの左上のセル、おそらく A1)を見つけます。右クリックして「実行」を選択します。マクロが動作するかテストします。
  2. マクロが動作することを確認したら、もう一度同じ左上のセルを選択します。画面左側に、現在のセル(おそらく「A1」)を示すドロップダウンがあるはずです。ドロップダウンをクリックし、テキスト値を「Auto_open」に変更します。これにより、VBA マクロで慣れているのと同じ自動実行機能が提供されます。

ファイルを保存し(.xls)、開いてみてください。ペイロードが自動的に実行されるはずです。

サンドボックスチェック

これらのチェックは、実際の脅威アクターがマルウェアで使用しているものに基づいています。

  1. マウスはアクティブですか?
  2. 画面サイズは幅 770 ピクセル、高さ 381 ピクセルより大きいですか?
  3. ホストはサウンドを再生できますか?
  4. これは Windows マシンですか?

難読化

  1. プロセスインジェクション命令(VirtuaAlloc、WriteProcessMemory、CreateThread)とサンドボックスチェックの場合、すべてのマクロ関数は次の構造になります。
root@kitploit:~
=FORMULA(D3&D23&D54&D23&D44,E45)

FORMULA 関数を使用すると、数式を別のセルに配置し、後で実行することができます。この場合、プロセスインジェクション命令を配置し、FORMULA 関数を使用して実際の関数を別のセルに配置して実行します。これにより、防御側が「VirtualAlloc」などの静的解析を行うのを防ぎます。

  1. マクロ全体が右方向にシフトされるため、マクロを含むシートを最初に開いたとき、空白のように見えます。

知っておくべきこと

  • より洗練されていないペイロードは、=EXEC() コマンドを使用してコマンドを実行するだけです。URLMON を使用してファイルをダウンロードするものもあります。他のファイルには「SHELL」という単語さえ含まれています。これらはすべて悪いアイデアのように思えました。このツールにはそのようなものは一切含まれていません。代わりに、C# ソースコードを Excel プロセス(32 ビットまたは 64 ビットのいずれか)にインジェクトして実行します。そこから先は、ペイロードが次に何を行うかに委ねられます。

ヒント

  • C# ソースコードは、あなたが望むことを何でも実行できます。ソースコードが、Excel とそこから起動するプロセスとの間の親子関係を断ち切ることをお勧めします。
  • 「非常にかくれた」Excel シートに関する優れたブログ記事が多数あります。それを使用することを検討してください。
  • Excel ファイルを本物のように見せることを忘れないでください。

トラブルシューティング

「型または名前空間名 ... が存在しません ...」
root@kitploit:~
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs
 _______  ______ _____ _           _   ____                    _   
| ____\ \/ / ___| ____| |    _ __ | |_|  _ \  ___  _ __  _   _| |_ 
|  _|  \  / |   |  _| | |   | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ /  \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_ 
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
                    by @JoeLeonJr (@FortyNorthSec)                
[i] x86 .NET アセンブリを生成中。
warning CS8001: SDK パスを解決できませんでした
test.cs(2,14): error CS0234: 名前空間 `System' に型または名前空間名 `Management' が存在しません。アセンブリ参照が不足していませんか?

このエラーは、mono を使用したコンパイル中に参照アセンブリが不足していることを示している可能性が高いです。これを修正するには、-r フラグに該当の名前空間を渡してください。この場合、コマンドラインに -r 'System.Management' を追加します。新しいコマンドは次のようになります。

root@kitploit:~
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs -r 'System.Management'
「メタデータファイル ... が見つかりませんでした」
root@kitploit:~
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs -r System.Management
 _______  ______ _____ _           _   ____                    _   
| ____\ \/ / ___| ____| |    _ __ | |_|  _ \  ___  _ __  _   _| |_ 
|  _|  \  / |   |  _| | |   | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ /  \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_ 
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
                    by @JoeLeonJr (@FortyNorthSec)                
[i] x86 .NET アセンブリを生成中。
warning CS8001: SDK パスを解決できませんでした
error CS0006: メタデータファイル `System.Management' が見つかりませんでした

[x] MCS を使用した x86 .NET アセンブリの生成中にエラーが発生しました。上記のエラーメッセージを確認してください。

このエラーは、install.sh バッシュスクリプトを使用せずに EXCELntDonut を実行した場合にのみ発生します。その場合は、mono-complete を手動でインストールする必要があります。これにより、関連する依存関係がダウンロードされます。次のように apt を使用してインストールできます。

root@kitploit:~
apt-get install mono-complete
「プログラム ... に静的 'Main' メソッドが含まれていません ...」
root@kitploit:~
root@kali:~/Desktop# EXCELntDonut -f test.cs
 _______  ______ _____ _           _   ____                    _   
| ____\ \/ / ___| ____| |    _ __ | |_|  _ \  ___  _ __  _   _| |_ 
|  _|  \  / |   |  _| | |   | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ /  \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_ 
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
                    by @JoeLeonJr (@FortyNorthSec)                
[i] x86 .NET アセンブリを生成中。
error CS5001: プログラム `_excelntdonut_GJAoNuVPMcX.exe' に、エントリポイントとして適切な静的 `Main' メソッドが含まれていません

[x] MCS を使用した x86 .NET アセンブリの生成中にエラーが発生しました。上記のエラーメッセージを確認してください。

現時点では、EXCELntDonut は Main 関数内にペイロードがある C# ファイルのみをサポートしています。

一般的なトラブルシューティングのアドバイス
  1. まず、Windows 上で csc を使用して C# ソースコードをコンパイルし、実行してペイロードが動作することを確認してください。x86 と x64 の両方のペイロードでテストしてください。対象環境が 32 ビット版 Excel か 64 ビット版かわからない可能性が高いためです。
  2. 同じプロセス内でペイロードを複数回実行できるはずですが、奇妙なエラーが発生する場合は、Excel を終了して再起動し、再試行してください。
  3. 迷ったときは、Excel を閉じて新しいファイルを作成し、テストしてください。

検出

  • @InQuest による Yara ルールの例:

    非常にかくれたシートを探す

    https://github.com/InQuest/yara-rules/blob/master/Excel_Hidden_Macro_Sheet.rule

    Auto_Open 文字列を探す

    https://github.com/Neo23x0/signature-base/blob/master/yara/general_officemacros.yar

OLEDUMP.py を使用して XLM ファイルをレビューする投稿が多数あります。次の記事を検討してください。

https://clickallthethings.wordpress.com/2020/04/06/covid-19-excel-4-0-macros-and-sandbox-detection/

防御

  1. インターネットからダウンロードされたファイルのマクロ実行をブロックする GPO を有効にします。参照 - https://www.microsoft.com/security/blog/2016/03/22/new-feature-in-office-2016-can-block-macros-and-help-prevent-infection/
  2. 残念ながら AMSI はここでは役に立ちません。
  3. ASR ルール…確かではありません。
  4. 最近のユーザーのほとんどは .xlsx ファイルを送信します。従業員の受信箱に .xls ファイルが送信されないようにブロックすることを検討してください。.xlsx として保存されたファイルの再送信を依頼するのは不合理ではありません。
  5. 最新バージョンの Defender ATP は、難読化されていないバージョンのこのファイルをディスクにドロップしたときに検出しました。

謝辞

Outflank(@outflanknl)の方々による素晴らしい研究がなければ、このツールは私たちの視野にすら入ってこなかったでしょう。このプロジェクトにおける洞察に対して @StanHacked に特に感謝します。また、このプロジェクトは Donut(@TheWover と @odzhan 作成)および関連する Python ライブラリ(@byt3bl33d3r 作成)なしでは実現できませんでした。同様に、Accenture のチームは CLRvoyance を作成し、Donut + XLM 4.0 マクロで解決できなかった x64 の問題を解決しました。最後に、XLM マクロを 64 ビット版の Excel と互換性を持たせるための優れた研究をしてくれた Cybereason の Philip Tsukerman に感謝します。

免責事項

このツールの誤用について、私たちは責任を負いません。このツールは、C# ソースコードを XLM(Excel 4.0)マクロを使用してメモリにインジェクトする方法を示す、教育目的および許可されたテスト目的のために作成されました。このプロジェクトの最終的な目標は、(1) レッドチームに、実際の敵対者が現在使用しているものをエミュレートするための別のフィッシングペイロードオプションを提供すること、および (2) 防御側に分析と緩和策を構築するための参照枠を提供することです。この種のペイロードを迅速に生成するツールがなければ、防御側は実際に迫りくる脅威に適切に備えられないと考えています。責任を持って行動してください。

ライセンス

このフォルダにあるライセンスファイルを参照してください。このツールは、Donut と CLRvoyance という 2 つのオープンソースツールを組み込んでいることに注意してください。

ツールをダウンロード