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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ModuleShifting — よりステルス性の高いModule StompingおよびModule Overloadingインジェクション技術のバリエーションで、メモリIoCsを低減します。Python ctypesで実装されています。 | Kitploit
ツール/GitHubGitHub/naksyn/moduleshifting
メモリフォレンジックレッドチーミングペイロード開発バイナリエクスプロイト
GitHubnaksyn/moduleshifting

ModuleShifting

よりステルス性の高いModule StompingおよびModule Overloadingインジェクション技術のバリエーションで、メモリIoCsを低減します。Python ctypesで実装されています。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Supported Python versions Twitter

ModuleShifting

このツールは、2023 x33fconトーク: 「メモリインジェクション技術のステルス性向上」 [ビデオ] [ブログ記事] で発表されました。

これは何ですか

ModuleShiftingは、Module StompingおよびModule overloading注入技法のステルス性を高めた亜種です。
Python ctypesで実装されているため、PythonインタプリタとPyramidを介して完全にメモリ内で実行でき、コンパイル済みローダーの使用を回避できます。

この技法はPEまたはシェルコードペイロードと一緒に使用できますが、よりステルス性の高い亜種は、シェルコードがロードする最終的なペイロードから機能的に独立している必要があるシェルコードペイロードで使用するためのものです。

シェルコードペイロードと一緒に使用する場合、ModuleShiftingは次の操作を実行します。

  1. LoadLibraryを介して正当なホストDLLをロードする
  2. 指定されたセクションのメモリ権限をRWに変更する
  3. 対象セクション上にシェルコードを上書きする
  4. 偽陽性の動作にうまく溶け込むためにオプションのパディングを追加する(詳細はこちら)
  5. 権限をRXに変更する
  6. 関数ポインタ経由でシェルコードを実行する - 追加の実行方法: 関数コールバックまたはCreateThread API
  7. 実行されたシェルコード上に元のDLLコンテンツを書き戻す - このステップにより、ホストDLLのイメージメモリ空間に悪意のあるメモリアーティファクトが残るのを防ぎます。シェルコードはさらなるステージから機能的に独立している必要があります。そうでないと実行が中断されます。

画像

PEペイロードを使用する場合、ModuleShiftingは次の操作を実行します。

  1. LoadLibraryを介して正当なホストDLLをロードする
  2. 指定されたセクションのメモリ権限をRWに変更する
  3. 指定されたターゲットポイントにPEをセクションごとにコピーする
  4. 偽陽性の動作にうまく溶け込むためにオプションのパディングを追加する
  5. ベースリロケーションを実行する
  6. インポートを解決する
  7. セクションの権限をネイティブ値に設定してファイナライズする(RWXメモリ領域の作成を回避)
  8. TLSコールバックの実行
  9. PEエントリポイントの実行

なぜ有用か

ModuleShiftingは、メモリを動的に割り当てずに(つまりVirtualAllocを使用せずに)ペイロードを注入するために使用できます。Module StompingやModule Overloadingと比較して、注入技法自体によって生成されるIoCの数を減らすため、よりステルス性が高くなります。

Module Shiftingと、Module Stompingの一般的な実装(Bobby CookeやWithSecureによるもの)との間には、主に3つの違いがあります。

  1. パディング: シェルコードやPEを書き込む際、パディングを使用して一般的な偽陽性動作(サードパーティアプリケーションや.NET DLLが.textセクションにxバイトを書き込むなど)にうまく溶け込むことができます。
  2. 関数ポインタを使用したシェルコードの実行: これにより、新しいスレッドの作成や通常とは異なる関数コールバックの呼び出しを回避できます。
  3. 実行されたシェルコード上に元のDLLコンテンツを復元する: これが重要な違いです。

Module ShiftingとModule Overloadingの違いは以下の通りです。

  1. PEは、ホストDLLの先頭からではなく、指定されたセクションから書き込みを開始できます。対象セクションを慎重に選択することで、生成されるIoCの数を減らすことができます(例:ホストDLLのPEヘッダーが上書きされない、.textセクションの上書きバイト数が少なくなるなど)。
  2. PEペイロード自体にパディングを追加して、偽陽性にうまく溶け込むことができます。

機能的に独立したシェルコードペイロード(例:AceLdr Beacon Stagelessシェルコードペイロード)を使用することで、ModuleShiftingはメモリを動的に割り当てずにローカル注入を実行でき、現時点ではMonetaおよびPE-SieveスキャンでゼロIoCを生成します。AceLdrのスリープペイロードはHunt-Sleeping-Beaconなどの優れたツールで検出される可能性があることを認識していますが、ここでの焦点はペイロードそのものではなく、注入技法にあります。この場合、ステルス性を高めているのはシェルコードの機能的独立性であり、書き込まれた悪意のあるバイトを元のコンテンツに復元することで、注入の痕跡を効果的に消去できます。

免責事項

すべての情報とコンテンツは教育目的のみで提供されています。指示はご自身の責任で実行してください。著者もその雇用主も、個人または組織が被った直接的または間接的な損害や損失について一切責任を負いません。

謝辞

この研究は、Aleksandra Doniec(@hasherezade)、Forest Orr、Kyle Averyといった素晴らしい人々が共有してくれた知識とツールのおかげで可能になりました。学習プロセス全体を通じてMoneta、PeSieve、PE-Bear、AceLdrを頻繁に使用し、このトピックの理解に不可欠でした。

使用方法

ModuleShiftingはPyramidとPythonインタプリタと一緒に使用することで、ローカルプロセス注入を完全にメモリ内で実行し、コンパイル済みローダーを回避できます。

  1. Pyramidリポジトリをクローンします:

    git clone https://github.com/naksyn/Pyramid

  2. 好みのC2でシェルコードペイロードを生成し、PyramidのDelivery_filesフォルダに配置します。ペイロードの要件については注意事項セクションを参照してください。

  3. Pyramid Modulesフォルダ内のmoduleshifting.pyスクリプトのパラメータを変更します。

  4. Pyramidサーバーを起動します: python3 pyramid.py -u testuser -pass testpass -p 443 -enc chacha20 -passenc superpass -generate -server 192.168.1.2 -setcradle moduleshifting.py

  5. 生成されたクレードルコードをPythonインタプリタで実行します。

デモ

https://github.com/naksyn/ModuleShifting/assets/59816245/67fcf888-3385-47da-b828-8a2dafeeb1e2

注意事項

この技法を正常に実行するには、自己持続可能な追加ペイロードをメモリの別の領域にロードできるシェルコードペイロードを使用する必要があります。ModuleShiftingはAceLdrペイロードでテストされています。これはBeaconの完全なコピーをヒープ上にロードできるため、初期シェルコードとの機能的依存関係を断ち切ります。この技法は、同様の機能を持つ任意のシェルコードペイロードで機能します。したがって、初期シェルコードは実行後は不要になり、IoCとしてメモリに保持する理由はありません。

また、対象セクションにシェルコードを格納するのに十分なスペースがあるホストDLLを選択する必要があります。そうしないと技法は失敗します。

検出の可能性

Module StompingとModule Shiftingは、正当なDLLのメモリ空間にシェルコードを書き込む必要があります。ModuleShiftingはクリーンアップフェーズ後にこのIoCを排除しますが、リアルタイム検査機能を備えたスキャナーによって指標が検出される可能性があります。

画像

ツールをダウンロード