
LittleCorporal: C# 自動化マルドック生成ツール
LittleCorporal: C#製自動マルドック生成ツール
C:\LittleCorporal\bin\Release>LittleCorporal.exe C:\beacon.bin explorer.exe
.____ .__ __ __ .__ _________ .__
| | |__|/ |__/ |_| | ____ \_ ___ \ _________________ ________________ | |
| | | \ __\ __\ | _/ __ \/ \ \/ / _ \_ __ \____ \ / _ \_ __ \__ \ | |
| |___| || | | | | |_\ ___/\ \___( <_> ) | \/ |_> > <_> ) | \// __ \| |__
| _______ \__||__| |__| |____/\___ >\______ /\____/|__| | __/ \____/|__| (____ /____/
\/ \/ \/ |__| \/
________
/ \
__ / (o)\__
/ ______\ \ I am the strongest debater in the whole Conseil.
| ____/__ __\____| I let myself be attacked, because I know how to defend myself.
[ --~~-- ] - Napoleon Bonaparte
| ( L )|
___----\ __ /----___
/ | < \____/ > | \
/ | < \--/ > | \
|||||| \ \/ / ||||||
| \ / o |
| | \/ === | |
| | |o ||| | |
| \______| +#* | |
| |o | |
\ | / /
|\__________|o / /
| | / /
[+] Parsed Arguments:
[>] Shellcode Path: C:\beacon.bin
[>] Target Process: explorer.exe
[+] Embedded shellcode in Loader.cs!
[+] Generated C# Loader artifact!
[+] Ran the .NET assembly through Donut!
[+] Donut artifact is located at: C:\LittleCorporal\Artifacts\payload.bin
[+] Path to Word document: C:\LittleCorporal\Artifacts\Form.doc
使用前にREADME全体をお読みください!
LittleCorporalは、ユーザーからリモートマシン上のプロセス(悪意のあるWord文書を実行する予定のマシン)を指定する引数と、ローカルのシェルコードファイル(.bin形式、例えばBeacon Stagelessシェルコードブロブ)へのパスを受け取ります。つまり、このプロジェクトで生成されたマルドックを使用する場合、マルドックを実行するマシン(ローカルマシンでも別のマシンでも可)上で既に実行中のプロセスを指定する必要があります(explorer.exeは常に1つ存在するため、どのプロセスに注入するかを気にしない場合はこれを使用してください)。
LittleCorporalは、シェルコードとターゲットプロセス名をLoader.csに埋め込み、その場でLoader.csを.NETの.exeアーティファクトにコンパイルし、スレッドハイジャッキングを利用してリモートプロセスインジェクションを実行します。スレッドハイジャッキングローダーである.NETの.exeアーティファクトは、Donutを介して位置独立シェルコードに変換され、.exeを実行します。Donutで生成されたシェルコードはBase64エンコードされ、Word文書が生成され、最終的なDonutブロブはInlineShape.AlternativeText Wordプロパティに格納されます。これは、Word文書内の画像(現在は空白画像で、文書に「空白」の外観を与える)の代替テキストとしてペイロードを埋め込むことで行われます。LittleCorporalは、このプロジェクトにテキストファイルとして含まれているVBA「テンプレート」を利用し、新しく生成されたWord文書にこのマクロを注入します。マクロの名前はautoopenで、文書を開くと自動的に実行され、以前に生成された画像の代替テキストの値を抽出してペイロードを取得し、Base64デコードし、最後にVBA内のWindows API呼び出しを使用してWordにローカルインジェクションを実行します。つまり、このプロジェクトは、VBAでシンプルな「ローダー」を使用してWordにローカルインジェクションを実行し(これはリモートプロセスインジェクションよりも監視が少ない)、そのローカルインジェクションから実行されるDonutシェルコード(別のローダー)がスレッドハイジャッキングを実行し、最終的にユーザー指定のシェルコードをユーザー指定のプロセスにリモートプロセスインジェクションするという流れです。これらすべてが自動化されており、Word文書の生成も含まれます。
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\が存在すること)、および文書を実行するターゲットマシンにも.NET v2がインストールされていることを確認してください。LittleCorporal.exeを実行するマシンにはOfficeがインストールされている必要があります。これは、LittleCorporalがCOMを介してWordとやり取りする必要があるためです。また、生成されたWord文書はインターネットから空白画像をダウンロードするため、LittleCorporalを実行するマシンとWord文書を起動するリモートマシンの両方でインターネットアクセスが必要です。CONTEXT構造体など、64ビット固有のデータ型を持つもの)を識別できるのは64ビットシステムのみだからです。スレッドハイジャッキングは現在64ビットシステムでのみサポートされており、__fastcall呼び出し規約に準拠したカスタムシェルコードが必要です。32ビット版のスレッドハイジャッキング機能を実装する予定はありませんが、Microsoft Wordの多くのインストールが32ビットであるため、32ビットサポートのプルリクエストがあれば、可能性を完全に否定するわけではありません。論理的には大きな修正ではないはずですが、__fastcallから__stdcallへの移行に伴うスタックの追跡と新しいオフセットの計算が手間と負担になります。技術的に複雑ではありませんが、多少面倒です。LittleCorporal.exeを実行してWord文書を生成する前に、このコード行をbool FUNC1 = true;に編集してください。このプロジェクトをアクティブなレッドチーム運用で使用する場合は、シェルコードの「Exit」機能をスレッド終了による「クリーン」な終了に設定することを検討してください。これにより、シェルコードが存在するプロセスを完全に強制終了するのではなくなります。msfvenomではEXITFUNC=threadで、Cobalt StrikeではAggressorを介して設定できます。
bin\Releaseディレクトリに変更します(cd C:\Path\to\LittleCorporal\bin\Release)。このプロジェクトを再コンパイルする場合は、DebugビルドではなくReleaseビルドを使用することを推奨します。LittleCorporal.exeを実行するマシン上のシェルコードファイルのパスと、Word文書を実行するマシン上の既存の実行中プロセスを指定します(LittleCorporal.exe C:\Path\To\Shellcode.bin explorer.exe)。LittleCorporal.exe clean