BinaryFormatter を使用して JS/VBS/VBA スクリプトから逆シリアル化した際に、.NET アセンブリの読み込み/実行をトリガーできる .NET シリアル化ガジェットを生成するツールです。
現在のガジェットは、jscript/vbscript/vba から BinaryFormatter で逆シリアル化された際に Activator.CreateInstance() への呼び出しをトリガーします。つまり、既定/パブリックコンストラクターを介して、選択した .NET アセンブリの実行をトリガーするために使用できます。
このツールは主に、RT エンゲージメント(初期アクセス、横展開、永続化)向けの WSH スクリプトの武器化を自動化するために作成されました。PoC に使用されていたシェルコードローダーは削除され、TestAssembly プロジェクトに実装されたサンプルアセンブリに置き換えられています。
Release フォルダにあるバイナリを使用するか、VS2017 を使用してプロジェクトを .NET バージョン 3.5 または 4.x に再ターゲットして、G2JS をソースからビルドできます。
.NET 3.5 バージョンの G2JS を使用する場合:
.NET 4.x バージョンの G2JS を使用する場合:
C# ソースコードのペイロードは、クラスの既定のパブリックコンストラクター内に配置する必要があります(jscript から Mimikatz を実行する例: https://gist.github.com/med0x2e/cc10d42b1f581507013e801da2651c74)。
テストは、最新の Windows 10 Enterprise 1909 リリースと Windows 7 で、さまざまな .NET Framework バージョンをインストールして実施されました。
WSH スクリプトを生成するために GadgetToJScript.exe を使用する場合は、Windows Defender がオフになっていることを確認してください。スクリプトが生成されたら、再度オンにできます。
.NET 3.5 バージョンの G2JS を使用して、最初の TextFormattingRunProperties ステージガジェットを使用してそのような緩和策を無効化しなくても、.NET Framework 4.8+ の型チェックをバイパスできる WSH 登録不要 JScript/HTA スクリプトを生成します。これは、.NET 4.8+ 環境を対象とした登録不要 JScript/HTA ペイロードを実行するための より優れた/よりクリーンな バイパスと見なしてください。以下は不要になるためです:
Shell オブジェクトの作成COMPLUS_Version 環境変数の設定-> IOC が少なくなり、3.5 < .NET < 4.x の環境を対象とします。
このツールは、以下の素晴らしい研究/作業に基づいています:
GadgetToJScript は、許可されたレッドチーム活動および/または非営利の教育目的のみに使用する必要があります。 このソフトウェアの誤用について、作者は一切の責任を負いません。 自己のネットワーク、および/またはネットワーク所有者の許可を得て使用してください。
-w, --scriptType=js | js、vbs、vba、hta のいずれかに設定 |
-a, --assembly=TestAssembly.dll | .NET アセンブリ、例: -a C:\Users\userX\Desktop\shellcode_loader.dll/exe、あるいは -c コマンドラインスイッチを使用して C# ソースファイルを指定することもできます。 |
-c, --csfile=TestAssembly.cs | C# ソースコードファイル、例: -c C:\Users\userX\Desktop\shellcode_loader.cs、コードをクラスの既定のコンストラクター内に配置し、必要な依存関係を -d コマンドラインスイッチで指定してください。 |
-d, --references=Example.dll | 参照アセンブリ、例: -d System.Window- s.Forms.dll, System.dll |
-b, --bypass | .NET バージョン 4.8+ で導入された型チェック制御をバイパスします。デフォルトでは false に設定されており、WSH スクリプトが .NET バージョン > 4.8+ の環境で実行されるように生成されている場合は true(--bypass/-b)に設定します。このオプションは .NET 4.x の G2JS 実行可能ファイルでのみ使用してください。 |
-e, --encodeType=b64 | VBA ガジェットのエンコード: b64 または hex(デフォルトは b64) |
-o, --output=output | 生成されたペイロード出力ファイル、例: -o C:\Users\userX\Desktop\output(拡張子なし) |
-r, --regfree | .NET ベースの COM コンポーネントの登録不要のアクティブ化。JS/HTA スクリプトのみに適用されます。 |
-h, --help | ヘルプを表示 |