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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/trailofbits/rpcinvestigator
脆弱性分析リバースエンジニアリングペネトレーションテストバイナリ解析
GitHubtrailofbits/rpcinvestigator

RpcInvestigator

Windows RPCインターフェース発見・解析ツール。ビジュアルエンドポイント列挙、PE解析、シンボル解決、リアルタイムETWスニッフィング、セキュリティ監査のためのオンザフライクライアントコード生成を備える。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

RPC Investigator

私たちのブログ記事のアナウンスをお読みください。

RPC Investigator (RPCI) は、Windows RPC エンドポイントに対する高度な発見および分析インターフェースを提供する .NET/C# Windows Forms UI アプリケーションです。このツールは、NtApiDotNet プラットフォームの既存のコア RPC 機能を視覚的に操作できるインターフェースを提供します。以下を含みます:

  • アクティブなすべての ALPC RPC サーバーの列挙
  • 任意の PE ファイルからの RPC サーバーの解析
  • プロセスとそのロードされたモジュール(サービスを含む)からの RPC サーバーの解析
  • シンボルサーバーからのシンボル情報の取得
  • RPC サーバー定義のシリアル化された .NET オブジェクトとしてのエクスポート(独自のスクリプティング用)

これらのコア機能に加えて、RPCI は追加機能を提供します:

  • Client Workbench を使用すると、任意の RPC サーバーを右クリックすることで、RPC クライアントバイナリをその場で作成して実行できます。ワークベンチには C# コードエディターペインがあり、クライアントをリアルタイムで編集し、コード内で実行された RPC プロシージャの結果を確認できます。
  • 検出された RPC サーバーは検索可能なライブラリに整理され、RPC サーバーデータを便利にピボットできます。例えば、カスタマイズ可能な検索インターフェースを使用して、すべてのサーバーのすべての RPC プロシージャから興味深いルーチンを検索できます。
  • RPC Sniffer ツールは、RPC 関連の ETW データへの可視性を追加し、アクティブな RPC 呼び出しのほぼリアルタイムのビューを提供します。ETW データと NtApiDotNet からの RPC サーバーデータを組み合わせることで、進行中の RPC アクティビティのより完全な状況を構築できます。

一般的なワークフロー

RPC Investigator がサポートするいくつかのワークフローがあります:

  • 監査
    • ALPC エンドポイントと通信しているすべてのプロセスにわたるアクティブな ALPC RPC サーバーの列挙
    • Windows サービスで実行されているすべての RPC サーバーの列挙
    • PE ファイル(EXE や DLL など)で定義されたオフラインの RPC サーバーの読み込み
  • 対話的操作
    • Client Workbench: RPC クライアントコードを自動生成し、カスタマイズして任意の RPC サービスを呼び出すことができます。
    • RPC Sniffer: Windows のイベントトレーシング(ETW)の RPC 関連データのリアルタイムモニタリング。

ワークフローの例: タスクスケジューラ RPC の分析

この例では、スケジュールされたタスクを管理および実行するために使用される Windows タスクスケジューラ RPC サービスを検査します。サービスを見つけ、クライアントコードを生成し、公開されたプロシージャの1つと対話するようにクライアントをカスタマイズします。

まず、File -> Load From Service をクリックして Windows サービスのリストを読み込みます。新しいサービスリストウィンドウが開きます:

Schedule サービス(Windows タスクスケジューラ)を見つけ、サービスを選択して Go をクリックします。

RPCI が関連するすべての RPC DLL を読み込む前に、確認が求められます。Yes をクリックして続行します。読み込みが完了すると、サービスプロセスに読み込まれたすべてのモジュールにわたって検出されたすべての RPC サーバーのリストが表示されます。Windows タスクスケジューラ RPC サーバーのインターフェース ID は 86D35949-83C9-4044-B424-DB363231FD0C です。リスト内でこのインターフェース ID を持つ行を見つけます。その行には Task Scheduler という実行中のサービスがあるはずです。行を右クリックし、New Client を選択します。

クライアントウィンドウの左側には、RPC サーバーのメタデータとクライアントコードからのコマンドライン出力が表示されます。右側には2つのタブがあります:

  • Client Code - 1つ以上のプロシージャと対話するためにカスタマイズ可能な自動生成された C# クライアントコード。
  • Procedures - 公開された RPC プロシージャのリスト。

この例では、SchRpcHighestVersion プロシージャを呼び出します。このメソッドは単一の引数 out int version を受け取り、プロシージャの呼び出し後、RPC インターフェースがサポートする最も高いタスクスケジューラプロトコルバージョンが含まれます。上位16ビットがメジャーバージョン、下位16ビットがマイナーバージョンです。

このプロシージャを呼び出すには:

  1. Client Code ウィンドウで、RPC クライアントのメインエントリポイントである Run メソッドを見つけます。

  2. Run メソッドの本体を編集してプロシージャを呼び出します:

    root@kitploit:~
    public async Task<bool> Run()
    {
        int version;
        int status = SchRpcHighestVersion(out version);
        if (status == 0) {
            long major = (version & 0xffff0000) >> 16;
            long minor = version & 0x0000ffff;
            Console.WriteLine("highest supported RPC version: {0}.{1}", major, minor);
        } else {
            Console.WriteLine("call to SchRpcHighestVersion failed with error: {0:X}", status);
        }
        return true;
    }
    
  3. このコードを追加した後、Run ボタンをクリックしてクライアントを実行します。これにより C# コードがコンパイルされ、Run メソッドが実行されます。

    • クライアントコードがコンパイルできなかった場合は、コンパイルエラーが表示されたポップアップボックスが表示されます。

コンパイルが成功すると、Output ボックスに次のような出力が表示されます:

root@kitploit:~
> Run() output:
highest supported RPC version: 1.6

構成

Rpc Investigator にはいくつかの構成設定があります。

設定説明デフォルト
dbghelp.dlldbghelp.dll モジュールのファイルの場所インストールされている Windows キット内の最新バージョンを検索します。
Symbol PathWindows シンボルへのパス。シンボルサーバーまたはローカルディレクトリを指定できます。デフォルトの公開 Windows サーバー: srv*c:\symbols*https://msdl.microsoft.com/download/symbols
Trace Levelログのトレースレベルinfo

構成設定は、アプリケーション内の Edit -> Settings メニューから変更できます。

トラブルシューティング

初期リリース後、RPC Investigator は .NET Framework アプリケーションから .NET 7 アプリケーションに変換されました。ビルドの問題が発生した場合は、Visual Studio が最新であることを確認してください。.NET Framework バージョンからビルドする前に、すべてのビルド出力フォルダを消去することをお勧めします。

また、安全でない BinaryFormatter クラスから protobuf-net への移行により、.NET Framework バージョンで生成された RPC ライブラリは .NET バージョンと互換性がありません。

RPC Investigator でランダムなクラッシュが発生する場合は、管理者に EDR を調整してもらうと解決するかもしれません。一部の EDR は JIT コンパイルされる言語と正常に動作しないことがわかりました。

場合によっては、RPC Investigator が EDR によって悪意のあるものとして検出されることがあり、Virus Total での誤検出も含まれます。これは既知の問題です。これは、RPC Investigator が James Forshaw によって作成された NtObjectManager パッケージを含んでおり、Windows Defender を含む多くの EDR によって(誤って)検出されることが知られているためです。

開発環境

  1. Visual Studio Community 2022 をインストールし、.NET Desktop Development ワークフローを選択してください。
  2. 最新の Windows 10 SDK をダウンロードしてインストールします。.NET 4.8.1 とデバッグツールがインストールされるように完全インストールを実行してください。
  3. ソリューションを開き、プロジェクトが正しく読み込まれたことを確認します。.NET 4.8.1 Targeting Pack が見つからないというエラーがある場合は、.NET Framework 4.8.1 Developer Pack をダウンロードしてインストールし、Visual Studio を再起動してください。

参考資料

Windows RPC は10年以上にわたって人気のある研究トピックであるため、ここで挙げきれないほど多くの関連リソースや研究があります。このツールを構築する際に遭遇したものを以下にいくつか挙げます:

  • https://clearbluejar.github.io/posts/surveying-windows-rpc-discovery-tools/
  • https://www.powerofcommunity.net/poc2019/James.pdf
  • https://www.tiraniddo.dev/2022/06/finding-running-rpc-server-information.html
  • https://clearbluejar.github.io/posts/from-ntobjectmanager-to-petitpotam/
  • https://itm4n.github.io/from-rpcview-to-petitpotam/
  • https://learn.microsoft.com/en-us/windows/win32/rpc/rpc-security-essentials
  • https://www.cyberark.com/resources/threat-research-blog/understanding-windows-containers-communication
  • https://github.com/silverf0x/RpcView
  • https://github.com/xpn/RpcEnum
  • https://github.com/cyberark/RPCMon
  • https://github.com/tyranid/WindowsRpcClients

RPC の内部に詳しくない場合や、技術的な復習が必要な場合は、このトピックに関する権威ある情報源の1つである、Alex Ionescu による2014年のシンガポールでの SyScan 講演「All about the RPC, LRPC, ALPC, and LPC in your PC」をお勧めします。

ツールをダウンロード