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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
GadgetToJScript — JS/VBS/VBAベースのスクリプトからBinaryFormatterを使用してデシリアライズされた際に、.NETアセンブリの読み込み/実行をトリガーできる.NETシリアライズガジェットを生成するツール。 | Kitploit
ツール/GitHubGitHub/med0x2e/gadgettojscript
ペイロード生成永続化メカニズムエクスプロイト横移動ポストエクスプロイトレッドチーミングペイロード開発敵対的攻撃
GitHubmed0x2e/gadgettojscript

GadgetToJScript

JS/VBS/VBAベースのスクリプトからBinaryFormatterを使用してデシリアライズされた際に、.NETアセンブリの読み込み/実行をトリガーできる.NETシリアライズガジェットを生成するツール。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

説明

BinaryFormatter を使用して JS/VBS/VBA スクリプトから逆シリアル化した際に、.NET アセンブリの読み込み/実行をトリガーできる .NET シリアル化ガジェットを生成するツールです。
現在のガジェットは、jscript/vbscript/vba から BinaryFormatter で逆シリアル化された際に Activator.CreateInstance() への呼び出しをトリガーします。つまり、既定/パブリックコンストラクターを介して、選択した .NET アセンブリの実行をトリガーするために使用できます。

このツールは主に、RT エンゲージメント(初期アクセス、横展開、永続化)向けの WSH スクリプトの武器化を自動化するために作成されました。PoC に使用されていたシェルコードローダーは削除され、TestAssembly プロジェクトに実装されたサンプルアセンブリに置き換えられています。

詳細:

  • AmsiEnable レジストリキーを更新したり、loadlibrary(AMSI.dll)をハイジャックしたりせずに AMSI をバイパスします。
  • .NET 4.8+ で新たに導入された "Assembly.Load" のブロックと ActivitySurrogateSelector 型チェックの制御をバイパスします。
  • このガジェットは、.NET Framework 3.5 から 4.8+ 環境を対象としたペイロードの適切な逆シリアル化をサポートします。
  • ActivitySurrogateSelector に依存して、 "Activator.CreateInstance(Assembly.Load(your_assembly_bytes).GetType())" への呼び出しをトリガーするように構築されたガジェットを逆シリアル化するラッパーとして機能する Surrogate クラスを作成します。
  • TextFormattingRunProperties ベースのガジェットを最初の逆シリアル化ステージとして活用し、ActivitySurrogateSelector の型チェックを無効化することで、(.NET Framework 4.8+ で)最近導入された修正をバイパスします。
  • 主に .NET ベースの COM オブジェクトの公開に依存しないため、d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class) を呼び出す必要はありません。
  • デリゲートは、逆シリアル化中にペイロードの実行をトリガーするためにのみ使用されます(Func<Assembly, IEnumerable>)。これは、ガジェット要素を適切にチェーンするための要件です。
  • シリアル化されたガジェットまたはストリームの長さは実行時に計算され、生成された WSH スクリプトに自動的に入力されます(VBA には不要)。
  • .NET ベースの COM コンポーネントの登録不要のアクティブ化に依存する VBS/VBA および JS/HTA スクリプトを生成します。

使用方法と注意事項:

Release フォルダにあるバイナリを使用するか、VS2017 を使用してプロジェクトを .NET バージョン 3.5 または 4.x に再ターゲットして、G2JS をソースからビルドできます。

  • .NET 3.5 バージョンの G2JS を使用する場合:

    • .NET Framework 4.x が利用できない、または 4.8 未満の環境で実行することを対象とした WSH スクリプトを生成します(3.5 が最小必要 .NET Framework バージョンです)。これには、.NET Framework <= 3.5 で C# ペイロードまたは .NET アセンブリをビルドする必要があります。
  • .NET 4.x バージョンの G2JS を使用する場合:

    • .NET Framework 4.x が利用可能な環境で実行することを対象とした WSH スクリプトを生成します(4.8+ を含む)。
    • "--bypass" オプションを使用して型チェックをバイパスし、.NET 4.8+ 環境向けの WSH スクリプトを生成します。
  • C# ソースコードのペイロードは、クラスの既定のパブリックコンストラクター内に配置する必要があります(jscript から Mimikatz を実行する例: https://gist.github.com/med0x2e/cc10d42b1f581507013e801da2651c74)。

  • テストは、最新の Windows 10 Enterprise 1909 リリースと Windows 7 で、さまざまな .NET Framework バージョンをインストールして実施されました。

  • WSH スクリプトを生成するために GadgetToJScript.exe を使用する場合は、Windows Defender がオフになっていることを確認してください。スクリプトが生成されたら、再度オンにできます。

OPSEC のヒント:

.NET 3.5 バージョンの G2JS を使用して、最初の TextFormattingRunProperties ステージガジェットを使用してそのような緩和策を無効化しなくても、.NET Framework 4.8+ の型チェックをバイパスできる WSH 登録不要 JScript/HTA スクリプトを生成します。これは、.NET 4.8+ 環境を対象とした登録不要 JScript/HTA ペイロードを実行するための より優れた/よりクリーンな バイパスと見なしてください。以下は不要になるためです:

  • 最初のステージガジェット
  • Shell オブジェクトの作成
  • レジストリから現在の .NET Framework バージョンを読み取る
  • COMPLUS_Version 環境変数の設定

-> IOC が少なくなり、3.5 < .NET < 4.x の環境を対象とします。

クレジットと参考情報

このツールは、以下の素晴らしい研究/作業に基づいています:

  • @tyranid https://googleprojectzero.blogspot.com/2017/04/ => シリアル化不可能なクラスのシリアル化/逆シリアル化を可能にしました)
  • @pwntester の yoserial.net プロジェクト https://github.com/pwntester/ysoserial.net
  • @olekmirosh https://community.microfocus.com/t5/Security-Research-Blog/New-NET-deserialization-gadget-for-compact-payload-When-size/ba-p/1763282
  • @monoxgas https://silentbreaksecurity.com/re-animating-activitysurrogateselector/
  • @zcgonvh http://www.zcgonvh.com/post/weaponizing_CVE-2020-0688_and_about_dotnet_deserialize_vulnerability.html

免責事項

GadgetToJScript は、許可されたレッドチーム活動および/または非営利の教育目的のみに使用する必要があります。 このソフトウェアの誤用について、作者は一切の責任を負いません。 自己のネットワーク、および/またはネットワーク所有者の許可を得て使用してください。

ツールをダウンロード
-w, --scriptType=jsjs、vbs、vba、hta のいずれかに設定
-a, --assembly=TestAssembly.dll.NET アセンブリ、例: -a C:\Users\userX\Desktop\shellcode_loader.dll/exe、あるいは -c コマンドラインスイッチを使用して C# ソースファイルを指定することもできます。
-c, --csfile=TestAssembly.csC# ソースコードファイル、例: -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=b64VBA ガジェットのエンコード: b64 または hex(デフォルトは b64)
-o, --output=output生成されたペイロード出力ファイル、例: -o C:\Users\userX\Desktop\output(拡張子なし)
-r, --regfree.NET ベースの COM コンポーネントの登録不要のアクティブ化。JS/HTA スクリプトのみに適用されます。
-h, --helpヘルプを表示