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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
RogueAssemblyHunter — Rogue Assembly Hunterは、実行中のプロセスから'興味深い'.NET CLRモジュールを発見するためのユーティリティです。 | Kitploit
ツール/GitHubGitHub/bohops/rogueassemblyhunter
防御ツールメモリフォレンジックフォレンジックマルウェア分析インシデントレスポンス
GitHubbohops/rogueassemblyhunter

RogueAssemblyHunter

Rogue Assembly Hunterは、実行中のプロセスから'興味深い'.NET CLRモジュールを発見するためのユーティリティです。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

__________ _____ . .
_
____ \ ____ ____ __ __ ____ / _ \ ______ ______ ____ _ | | | .. | // _ \ / __| | _/ __ \ / /\ \ / // __// __ \ / | __ | |< | | | | ( <> ) // > | /\ / / | \ \ _ \ /| Y Y \ _\ \ |_ | || /_/_ /|/ _ > _| /____ >____ >___ >|| / /____/ | / // / / / / / / / /
___ ___ __
/ | \ __ __ / | ___________ / ~ \ | |/ \ __/ __ _ __
\ Y / | / | \ | \ /| | / _| /|
/|
| /
| _
>
|
/ / /

Rogue Assembly Hunter

Rogue Assembly Hunter は、実行中のプロセスから「興味深い」.NET CLR モジュールを発見するためのユーティリティです。

  • 著者: @bohops
  • ライセンス: MIT
  • プロジェクト: https://github.com/bohops/RogueAssemblyHunter

背景

.NET は、.NET マネージドアプリケーションを構築・実行するための非常に強力で高性能な開発プラットフォームおよびランタイムフレームワークです。ここ数年、.NET は攻撃作戦を支援するためのトレードクラフトを実装するために、Red Team(およびその関連組織)によって採用されてきました。特に、PowerShell から .NET への移行は、PowerShell v5 以降の可視性の向上と機会の増加により、多くの人にとって論理的な飛躍でした。その結果、.NET の攻撃ツールとトレードクラフトは、ホストベースの防御機能を回避し、アプリケーション制御をバイパスし、悪意のあるコードの構築/ステージング/配信/実行(PowerShell と同様)に成功裏に使用されてきました。

予防の観点から、Microsoft は .NET による脅威に対抗し、.NET 全体の攻撃対象領域を最小限に抑えるための取り組みを強化しています。例えば、Microsoft は .NET Framework 4.8 に AMSI 検査機能を追加し、WDAC/WLDP メカニズムも非常に効果的です。検出・対応の観点では、.NET エコシステムへのさらなる可視性と内部調査は、.NET に特化した脅威と戦うための新しい方法を発見する上で常に有利です。

2017 年、Joe Desimone (@dez_) は『Hunting For In-Memory .NET Attacks』(https://www.elastic.co/blog/hunting-memory-net-attacks) という素晴らしい記事を執筆しました。今日でも有効なこの記事では、最新の .NET 攻撃ベクトルと、オンデマンドおよびイベントベースの検出テクニックについて概説しています。この記事に合わせて、Joe は適切なディスク参照を持たないメモリ内の .NET CLR モジュールをプロアクティブに検出(および取得)するツール(Get-ClrReflection)を公開しました。Joe の研究に触発され、CLRMD ランタイム診断ライブラリ(およびそれに続く mscordacwks.dll のデータアクセス機能)の内部調査機能を活用して、Rogue Assembly Hunter は次の目的で作成されました。

  • 実行中の(すべての).NET(「マネージド」)プロセスを検査し、興味深い CLR モジュール(例:「アセンブリ」を形成するモジュール)を発見する
  • 単一の .NET(「マネージド」)プロセス(PID 指定)を検査し、興味深い CLR モジュールを発見する
  • 新たに生成されたプロセスを監視し、興味深い CLR モジュールの検査を試みる
  • メモリ内にロードされたモジュール、モジュールの署名状態(ディスクからロードされた場合)、興味深いディレクトリからロードされたモジュール、および偽装モジュール(例:偽のファイル参照)を発見するための複数の「ハント」機能をサポートする
  • CLR モジュールのエクスポート機能をサポートする(Get-ClrReflection からの迅速な移植)
  • より興味深いツールとトレードクラフトの開発を促進する

主な要件と依存関係

  • 特権ユーザー/プロセスコンテキストで実行する
  • .NET Framework 4.6.1+
  • .NET CLRMD - Microsoft.Diagnostics.Runtime イントロスペクションライブラリ(NuGet パッケージ)
  • ILMerge - スタティックリンカー(NuGet パッケージ)
  • ... および Visual Studio でのサポート用 NuGet パッケージ。

注意事項、ヒント、注意点

  • 高い/システム整合性を持つ特権ユーザーとして実行してください。
  • 「ハント」は実験的であり、完全/正確な結果を保証するものではありません。誤検出(例:署名済みモジュール)に注意し、適宜検証してください。
  • RogueAssemblyHunter は CLRMD を使用してライブプロセスに接続するため、興味深い結果が生じる可能性があります。
  • RogueAssemblyHunter のスキャン性質上、競合状態や結果の欠落が発生する可能性があります。特に「watch」モードでは --checks および --sleep スイッチで調整することを検討してください。場合によっては、実行速度(execute-assembly や使い捨てプロセスなど)のために特定のアセンブリのロードを「キャッチ」するのが難しい場合があります。
  • リモートプロセスと .NET CLRMD ライブラリで相互作用するには、アーキテクチャ(「ビットネス」)と .NET バージョン(4+ など)が重要です。
    • 最大限の検査/カバレッジを得るには、x86 および x64 のユースケース向けにこのプログラムをビルドして実行してください。
    • プロセススイープモードでは、「ビットネス」に関係なく実行中のすべてのプロセスへの接続を試みます。それ以外の場合は、アーキテクチャの不一致により適宜失敗します。
  • Windows 10 Pro 2H1H および Windows Server 2016 Standard 1607 でテスト済み。該当する .NET Framework があれば、他のバージョンでも動作する可能性があります。
  • このプロジェクトには、NuGet パッケージ、PowerShell スクリプト、およびリリースバイナリを含む Visual Studio プロジェクトソースが含まれています。
  • Notice.md には、プロジェクトの免責事項とライセンス情報が含まれています。
  • 自己責任で実行してください(そして、私のひどいコードを気にしないでください ;) )!

使用方法

root@kitploit:~
[*] パラメータ:
    
    --mode=<.>   : 必須 | 分析モードを選択します。オプション: sweep、process、watch。

    --hunt=<.>   : オプション | 興味深い CLR モジュールを見つけるためのハントスキャンタイプを選択します。all(デフォルト)、memory-only、unusual-dir、
                   sig-status、imposter-file、list を指定します。

    --export=<.> : オプション、実験的 | メモリハントスキャンおよび偽装ファイルハントスキャン用にロードされた CLR モジュールをエクスポートするファイルパスを指定します
                   (例:--hunt=memory-only/imposter-file/all)。

    --pid=<.>    : オプション | PID でターゲットプロセスを指定します。--mode=process パラメータ/値とともに使用する必要があります。

    --checks=<.> : オプション | スキャンサイクルの値を指定します。これによりスキャン中の競合状態の欠落を減らすことができますが、結果出力が繰り返される可能性があります。
                   デフォルト値は 1 です。

    --sleep=<.>  : オプション | スリープ秒数を指定します。これによりチェックサイクルを遅延させてスキャン中の競合状態の欠落を減らすことができます。
                   デフォルト値は 0 秒です。

    --debug      : オプション | 例外情報を表示します(例:プロセス接続エラー)。

    --nobanner   : オプション | 表示バナーを非表示にします。PowerShell スクリプトでの実行や自動化を利用するユースケースに便利です。

    --suppress   : オプション | --mode=sweep または --mode=watch 中に RogueAssemblyHunter プロセスをスキャンしません。

    --help       : オプション | このヘルプを表示します。これにより他のコマンドラインパラメータがオーバーライドされ、アプリケーションが終了します。*パラメータなしの場合はデフォルトです。


[*] モード(--mode=)

    - sweep   : すべてのプロセスをスキャン/反復処理します(注:同じアーキテクチャ/「ビットネス」のプロセスだけが正常にスキャンされます。x86/x64 など用にコンパイルしてください)。

    - process : 単一のプロセスをスキャンします。--pid=<PID> とともに使用します。
    
    - watch   : 新しいプロセスが作成されたときにスキャンします。--checks および --sleep でスキャン属性を調整します(注:実験的です。競合状態が発生する可能性があります)。


[*] ハント(--hunt=)

    - all           : デフォルト値。すべてのハントオプションで分析します('list' を除く)。

    - memory-only   : メモリハント。ディスクにバックアップされていない CLR モジュールを分析します。

    - unusual-dir   : 異常なディレクトリハント。「通常の」ディレクトリの外部からロードされた CLR モジュールを分析します。
                      カスタマイズするには '_huntUnusualDirectoryFilter' を編集してください。

    - sig-status    : ファイル署名ハント。異常な署名状態(例:未署名)の CLR モジュールを分析します。注:実験的です。誤検出の可能性があります。
                      カスタマイズするには '_huntSigExclusionsFilter' を編集してください。

    - imposter-file : 予期しない CLR モジュールハント。疑わしいディスクファイルバッキングを持つ CLR モジュールを分析します。実験的。
    
    - list          : すべての CLR モジュールを反復処理し、リスト表示します。


[*] 使用例
    
    - 例 1 : プロセスをスキャンし、アクセス可能な 64 ビットプロセスに対してすべてのハント('list' を除く)を実行 -
                  RogueAssemblyHunter_x64.exe --mode=sweep
    
    - 例 2 : プロセスをスキャンし、アクセス可能な 32 ビットマネージドプロセスのすべての CLR モジュールをリスト表示し、エラー情報を表示 -
                  RogueAssemblyHunter_x86.exe --mode=sweep --hunt=list --debug

    - 例 3 : 新しいプロセスを監視し、すべての CLR モジュール(マネージドかつ 64 ビットの場合)をスキャンし、RogueAssemblyHunter プロセスをスキャンせず、2 回のチェックと 3 秒の遅延を実行 -
                  RogueAssemblyHunter_x64.exe --mode=watch --suppress --checks=2 --sleep=3

    - 例 4 : PID で単一プロセスをスキャンし、メモリ内のみの CLR モジュール結果をリスト表示し、CLR モジュールを指定されたパスにエクスポート -
                  RogueAssemblyHunter_x86.exe --mode=process --pid=4650 --hunt=memory-only --export=c:\evilassemblies\
    
    - 例 5 : プロセスをスキャンし、アクセス可能な 64 ビットプロセスのメモリ内のみの CLR モジュール結果をリスト表示し、RogueAssemblyHunter プロセスをスキャンせず、タイトルバナーを表示しない -
                  RogueAssemblyHunter_x64.exe --mode=sweep --hunt=memory-only --suppress --nobanner

リリースファイル: Invoke-RogueAssemblyHunter & コンパイル済みバイナリ

便宜上、PowerShell スクリプトと 2 つのコンパイル済みバイナリ(RogueAssemblyHunter_x64.exe および RogueAssemblyHunter_x86.exe)が \Release フォルダに含まれています。ユースケース(例:展開、埋め込み、チェック、スリープなど)に合わせて自由に変更してください。

使用例:

スイープモードで Invoke-RogueAssemblyHunter を実行し、すべてのハントオプションをチェック

root@kitploit:~
cd c:\path\to\RogueAssemblyHunter
import-module .\Invoke-RogueAssemblyHunter.ps1
Invoke-RogueAssemblyHunter

ウォッチモードで Invoke-RogueAssemblyHunter を実行し、すべてのハントオプションをチェック

root@kitploit:~
cd c:\path\to\RogueAssemblyHunter
import-module .\Invoke-RogueAssemblyHunter.ps1
Invoke-RogueAssemblyHunter -ScanMode watch

SHA256 ハッシュ:

root@kitploit:~
e804711a8b6469f1b13b388de47dfa6dde1c85279d365db7b6e19e1644990fa6  Invoke-RogueAssemblyHunter.ps1
cc985d918e566671aa209142abc55bd798ca6c1a18730b785ac8c18d489736c3  RogueAssemblyHunter_x64.exe
ae3aead43871e263cd8465d5356c4daaae0635714321f872c931ec825008287a  RogueAssemblyHunter_x86.exe

ロードマップ

  • マネージドダンプ(.dmp)ファイル分析
  • sig-status チェックの改善
  • 出力の改善(例:json)
  • 安定性とバグ修正

クレジット、インスピレーション、リソース

  • Hunting For In-Memory .NET Attacks | Joe Desimone 著(@dez_)
  • Get-ClrReflection | Joe Desimone 著(@dez_)
  • Get-InjectedThread | Jared Atkinson 著(@jaredcatkinson)
  • pe-sieve | hasherezade 著(@hasherezade)
  • CLR MD — Analyzing Live Process | Harsha 著
  • How to enumerate Modules in each App Domain using ClrMD | Sukesh Ashok Kumar 著
  • WMIProcessWatcher | Tim MalcomVetter 著(@malcomvetter)
ツールをダウンロード