Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
rhabdomancer — バイナリファイル内の潜在的に安全でないAPI関数への呼び出しを特定する脆弱性調査アシスタント。 | Kitploit
ツール/GitHubGitHub/0xdea/rhabdomancer
静的分析脆弱性分析リバースエンジニアリングバイナリ解析
GitHub0xdea/rhabdomancer

rhabdomancer

バイナリファイル内の潜在的に安全でないAPI関数への呼び出しを特定する脆弱性調査アシスタント。

リポジトリを見るウェブサイト
13115291日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

rhabdomancer

build doc

"The road to exploitable bugs is paved with unexploitable bugs."

-- Mark Dowd

Rhabdomancerは、バイナリファイル内の潜在的に安全でないAPI関数への呼び出しを特定する、超高速なIDAヘッドレスプラグインです。監査担当者はこれらの候補ポイントからバックトレースを行い、信頼できない入力へのアクセスを可能にする経路を見つけることができます。

機能

  • IDA 9.xとidalib-rs Rustバインディングによる、超高速のヘッドレスユーザーエクスペリエンス。
  • IDAが実装するあらゆるアーキテクチャ向けにコンパイルされたC/C++バイナリターゲットをサポート。
  • 問題のあるAPI関数の呼び出し箇所は標準出力に出力され、IDB内でマークされます。
    • IDAが認識したライブラリコード内の呼び出し箇所(例:FLIRTシグネチャでマッチした静的リンクされたランタイム)には(lib)というラベルが付きます。
    • スタブを経由した呼び出し(例:ELFバイナリの.pltエントリ、またはPEおよびMach-Oバイナリのインポートスタブで、サンクとしてリストされるもの)は、呼び出し元までトレースバックされます。
    • ELFバイナリでは、関数は同じ呼び出し箇所を持つものとして意図的に2回リストされます。1回は.pltスタブ(サンクとしてマーク)として、もう1回はそのインポートとしてです。各呼び出し箇所はIDB内で1回だけマークされます。
  • 既知の問題のあるAPI関数は、監査作業の優先順位付けに役立つよう、危険度の階層にグループ化されています。
    • [BAD 0] 高優先度 - 一般に安全でないと見なされる関数。
    • [BAD 1] 中優先度 - 安全でない使用例がないか確認すべき興味深い関数。
    • [BAD 2] 低優先度 - これらの関数を含むコードパスは慎重に確認すべきです。
  • 既知の問題のあるAPI関数のリストは組み込みであり、conf/rhabdomancer.tomlに基づく設定ファイルで簡単にカスタマイズできます。
  • 関数名は、以下の装飾を除いてマッチングされます:先頭のドットとアンダースコア(例:_strcpy)、ライブラリアリアスのプレフィックス(例:Universal CRTの__o_malloc、glibcの__libc_systemおよび__GI___snprintf)、そしてスタブおよびそのようなエイリアスに限り、既に使用されている名前にIDAが付加する数値サフィックス(例:memset_0)。

[!NOTE] 強化関数(例:_FORTIFY_SOURCEを指定してビルドした際にstrcpyの代わりに使用される__strcpy_chk)は、リストされた関数のチェック済みバリアントであるため、意図的にマッチングされません。それらの呼び出しもマークするには、カスタム設定に明示的に追加してください(例:strcpyと同じ優先度で"__strcpy_chk"を追加)。

記事

  • https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
  • https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust

関連情報

  • https://github.com/0xdea/ghidra-scripts/blob/main/Rhabdomancer.java
  • https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
  • https://github.com/idalib-rs/idalib
  • https://books.google.it/books/about/The_Art_of_Software_Security_Assessment.html

インストール

最新リリースを入手する最も簡単な方法は、crates.io経由です:

  1. IDA をダウンロード、インストール、設定します(https://hex-rays.com/ida-pro を参照)。
  2. LLVM/Clang をインストールします(https://rust-lang.github.io/rust-bindgen/requirements.html を参照)。
  3. Linux/macOS では、次のようにインストールします:
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo install rhabdomancer --locked
    
    Windows では、代わりに次のコマンドを使用してください:
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
    cargo install rhabdomancer --locked
    

コンパイル

あるいは、ソースからビルドすることもできます:

  1. IDAをダウンロード、インストール、設定します(https://hex-rays.com/ida-pro を参照)。
  2. LLVM/Clangをインストールします(https://rust-lang.github.io/rust-bindgen/requirements.html を参照)。
  3. Linux/macOSでは、次のようにコンパイルします:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo build --release --locked
    
    Windows では、代わりに次のコマンドを使用してください:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
    cargo build --release --locked
    

使用方法

  1. IDA が有効なライセンスで適切に設定されていることを確認してください。
  2. 必要に応じて、既知の不正 API 関数のリストをカスタマイズします。 conf/rhabdomancer.toml をコピーし(組み込みリストの正確な内容については、インストール済みのバージョンに一致するタグを選択してください)、コピーを編集して、RHABDOMANCER_CONFIG 環境変数にそのパスを設定します。ファイルには high、medium、low の配列のみを定義する必要があり、他のキーを含めてはなりません。 そうでない場合は、ビルド時に conf/rhabdomancer.toml からバイナリに埋め込まれた組み込みリストが使用されます(そのファイルを編集するには再ビルドが必要です)。
  3. IDA のインストール先が標準以外の場所にある場合は、IDADIR 環境変数が設定されていることを確認してください。
  4. 次のように実行します:
    rhabdomancer <binary_file>
    
    既存の .i64 IDB ファイルは更新されます。存在しない場合は、新しい IDB ファイルが作成されます。
  5. 生成された .i64 IDB ファイルを IDA で開きます。
  6. View > Open subviews > Bookmarks を選択します。
  7. 結果が IDA ウィンドウに便利にまとめられていることを確認してください。

[!NOTE] Rhabdomancer はマークされた呼び出し箇所にコメントも追加します。ブックマークとコメントはどちらも [BAD n] <function_name> としてタグ付けされます。ここで n は優先度ティア(0 = 高、1 = 中、2 = 低)であり、 スクリプトが IDB 内でそれらを検索できるようにするためです。この形式はリリース間で安定しています。

互換性

公式にサポートされているのは最新の IDA リリースのみですが、古いバージョンでも動作する場合があります。次の表は、 各 IDA バージョンに対応する最新の互換リリースをまとめたものです:

IDAバージョン最新の互換リリース
v9.0.240925v0.2.4
v9.0.241217v0.3.5
v9.1.250226v0.6.2
v9.2.250908v0.7.6
v9.3.260213v0.8.1
v9.3.260327v0.9.0
v9.3.260421v0.9.3
v9.4.260714現在のリリース
v9.4.260915現在のリリース

[!NOTE] 追加情報については idalib-rs のドキュメントを確認してください。

クレジット

このプロジェクトの開発は、以下の組織によって支援されています:

  • HN Security
  • Hex-Rays(Contributor Program 経由)

変更履歴

  • CHANGELOG.md

TODO

  • 既知の悪性 API 関数リストをさらに充実させる(https://github.com/0xdea/semgrep-rules を参照)。
  • .plt セグメント外のサンク(例:MSVC のインクリメンタルリンクによる j_ サンク)を介した呼び出しを追跡する。
  • IDA が認識したライブラリコード内の呼び出し箇所のマーキングをスキップすることを検討する(現在は (lib) とラベル付けされるのみ)。
  • 自動解析と分析を容易にするため、シリアライズされた出力を実装する。
  • VulFi および VulnFanatic のスタイルに倣った基本的なルールセットを実装する。
ツールをダウンロード