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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
NoiseHound — 検知を考慮したBloodHound攻撃パスのスコアリング - 目的達成への最も静かな経路を、5つの検知ティア(audit/EDR/Elastic/MDI/WDAC)とAzureにわたって調整。 | Kitploit
ツール/GitHubGitHub/warpedatom/noisehound
防御ツール特権昇格横移動ポストエクスプロイトペネトレーションテストレッドチーミング敵対的攻撃
GitHubwarpedatom/noisehound

NoiseHound

検知を考慮したBloodHound攻撃パスのスコアリング - 目的達成への最も静かな経路を、5つの検知ティア(audit/EDR/Elastic/MDI/WDAC)とAzureにわたって調整。

リポジトリを見る
6710572ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
ウェブサイト

NoiseHound

NoiseHound

PyPI Release License Python 3.10+ CI Security policy X (Twitter): @warped_atom

検知を考慮した Active Directory 攻撃パスのスコアリング。 DreadHost Research | OffsetInspect (PowerShell) および OffsetScan (Rust) のコンパニオン

BloodHound(およびその上に構築された PlumHound)は、目的に到達するためのあるパスを見つけ出します。 NoiseHound は同じグラフデータを取り込み、ホップ数ではなく予想検知コストによってパスを再ランク付けします。これにより、オペレーターは単に「どうやって到達するか」ではなく、「Domain Admin へ最も静かに到達する方法は何か」を問うことができます。

初めての方へ? Operator Walkthrough が、このツールの動作を最も手早く確認できる方法です - インストールから実際の BloodHound CE による概念実証(スコアを UI に書き戻す)、DeadAir エンジン、ブルーチーム向けの検知ギャップレポートまでを、スクリーンショットを交えて実践的に案内するツアーです。

プロジェクトステータス (v1.2.0): 安定版であり、複数のドメインにわたる実際の BloodHound データでテスト済みです。77 個のコーパスエッジのうち 37 個がラボで実測済みであり、5 つのオンプレミス検知層(Windows 監査、Defender for Endpoint、Elastic SIEM、Defender for Identity ランタイムアラート、WDAC 監査)に加え、実測済みの Azure/Entra 層をカバーしています - これらは profiles/ 内の 6 つのドロップインプロファイルとして提供され、パスのランキングを実際に変化させることをクローズドループで証明しています(docs/VALIDATION.md)。 コーパスには 13 個の Azure/Entra エッジが含まれており(docs/AZURE.md)、AzureHound の出力からそのまま取り込むことができます。 未実測のオンプレミスエッジおよびすべての Azure エッジには専門家による推定値が付与されています。キャリブレーションハーネス(noisehound-calibrate)は、これらの値やお客様自身の環境を実測するための手段です。未キャリブレーションのランキングは、根拠のあるガイダンスとして扱い、絶対的な真実とはみなさないでください。

許可されたエンゲージメント専用です。このツールは、テストの書面による許可を得たシステムに対して、OPSEC 計画のための攻撃パスをスコアリングします。

NoiseHound は独立したコミュニティプロジェクトです。SpecterOps や BloodHound プロジェクトとは提携、承認、または関連していません。BloodHound のオープンデータ形式を利用しています。


仕組み

  1. 取り込む: BloodHound CE エクスポート(.zip)、生の JSON ファイル、またはエクスポートのディレクトリを内部グラフに取り込みます。オフライン分析やテスト用に、正規化された {nodes, edges} JSON 形式も受け付けます。AD CS の ESC1-8 昇格エッジは、BloodHound が収集した証明書テンプレートと CA のファクトからロード時に合成されます(下記参照)。
  2. 注釈を付ける: エッジテレメトリコーパスからすべてのエッジに注釈を付け、effective_noise_score(0-100)を付与します。複数の権限が同じノードペアを接続している場合は、最も静かなものが選択されます。コーパスに存在しないエッジタイプは、保守的なスコア(60)にデフォルト設定されるため、ギャップは過小報告ではなく安全側に倒れます。オプションの環境プロファイルは、ターゲットの宣言された検出態勢に合わせてスコアを調整します(下記参照)。
  3. 解く: 最も静かなパスを求めます。パススコアはボトルネックと平均の組み合わせ(単純な合計ではない)であるため、Dijkstra で直接最適化することはできません。ソルバーはしきい値スイープ(各異なるノイズレベルについて、その下に収まる最も静かな経路)と、重みによる有界 k-shortest パスを組み合わせ、その後、実際のパススコアで和集合を再ランク付けします。しきい値スイープは正確性のバックストップです。純粋な合計重み探索では短くて騒がしいパスの下にランク付けされてしまう、長いが一様に静かなパスを浮かび上がらせます。
  4. 報告する: テキスト、JSON(OffsetInspect の結果スキーマと相互運用可能)、またはツールセットに合わせたスタイルの自己完結型 HTML レポートとして出力します。

パススコアリング

パスのノイズは意図的に単純な合計ではありません。同じ検出に二度引っかかることは二倍の騒がしさではありません(SOC のトリアージであり、生のイベント数ではありません)。NoiseHound は次を使用します:

path_score = max(edge_scores) * 0.6 + mean(edge_scores) * 0.4

これは、累積的な露出を考慮しつつ、最も騒がしい単一ステップ(1つの悪いステップが作戦全体を台無しにすることが多い)に重みを置いています。重みは設定可能(--max-weight / --mean-weight)であり、APT29/Calderaラボから実際の検出データが得られれば、経験的に調整できます。

各パスは検出確率も報告します。これは相関アラートをトリガーする可能性であり、最も騒がしいエッジと全エッジの累積ノイズOR(--correlationで調整)をブレンドしたものです。これはノイズスコアとは異なる問いに答えます。短くても騒がしいパスは、長くても静かなパスよりも検出される全体的な確率が低いことがあります。--rank-by probabilityでこれによるランク付けができます。

2層エンジン(DeadAir)

大規模グラフでは、求解はコンパニオンのRustエンジンであるDeadAir(OffsetScan-to-OffsetInspect層)にディスパッチされます。NoiseHoundは機能豊富なフロントエンド(取り込み、コーパス、環境/Sigma、制約、レポート)として留まり、準備されたグラフを求解するエンジンに渡すため、どちらの場合も結果は同一です。

  • --engine auto(デフォルト):DeadAirのバイナリが見つかりかつグラフが大規模(>= 5000ノード)な場合にDeadAirを使用し、それ以外は組み込みのPythonソルバーを使用します。
  • --engine python:組み込みソルバーを強制します(バイナリ不要)。
  • --engine rust:DeadAirを強制します(バイナリがない場合はエラー)。

DeadAirは$NOISEHOUND_DEADAIR、次にPATH、次に兄弟ディレクトリの../deadair/target/{release,debug}/ビルドの順で検索されます。大規模グラフでは10〜100倍高速(250kノードのグラフはPythonで約30秒に対し約2秒で求解)でありながら、バイト単位で同一のランキングを生成します。出力にはどのエンジンが実行されたかが記録されます。

多目的および制約付きパス探索

ノイズ、ホップ数、検出確率は異なる方向に引っ張り合うため、--paretoは単一の勝者を強制する代わりにパレートフロンティア(3つすべてにおいて他のどのパスにも同時に劣らないすべてのパス)を返します。また、実際の作戦には制約があります。--avoid NODEは特定のホスト(EDR監視下のジャンプボックス、ハニーポット)をパスから除外し、--avoid-edge TYPEは特定のテクニックを拒否します(例:--avoid-edge DCSync)。どちらも繰り返し指定可能で、その場で再求解されます。

python -m noisehound -i export.zip -s jdoe -o "Domain Admins" --pareto
python -m noisehound -i export.zip -s jdoe -o "Domain Admins" --avoid FILESERVER01 --avoid-edge HasSession

NoiseHound の比較

重み付き BloodHound パスファインディングは目新しいものではないため、ここでは正直な位置づけを示します:

  • BloodHound / BloodHound CE は、重みなしのホップ数によってあるパスを見つけます。ノイズモデルはありません。
  • GoodHound はエッジにコストを割り当てて最安パスを見つけますが、そのコストモデルは検出ノイズではなく、悪用の難易度とビジネスリスクに基づいています。
  • PlumHound / ImproHound はレポーティングとティア違反分析を行いますが、どちらも目的対象への最も静かなパスを再求解するものではありません。
  • 検出マッピング (Sigma、DeTT&CT、イベントIDからATT&CKへの参照) は豊富ですが、人間向けであり、BloodHound のエッジ種別に紐づけられていません。

NoiseHound の貢献はその組み合わせにあります: 機械可読な BloodHound エッジから検出テレメトリへのコーパス、オペレーターの OPSEC (「DA への最も静かな道」) として枠付けられたノイズ重み付き再求解、対象の宣言された態勢に適応する環境モデル、そしてラボでの検出を実測スコアに変換するキャリブレーションループです。グラフの数学はありふれたものですが、コーパスとその枠付けこそが要点です。その価値はコーパスの質にのみ依存するため、キャリブレーションとコミュニティからの貢献が第一級の扱いとなっています - 以下を参照してください。

インストール

cd NoiseHound
python -m pip install -r requirements.txt   # networkx>=3.0
# optional editable install to get the `noisehound` command on PATH:
python -m pip install -e .

Python 3.10+ が必要です。

使用方法

# Text summary (default)
python -m noisehound --input export.zip --objective "Domain Admins" --source jdoe

# JSON, for downstream tooling / correlation across the DreadHost suite
python -m noisehound -i export.zip -o "Domain Admins" -s jdoe -f json --out paths.json

# Self-contained HTML report
python -m noisehound -i export.zip -o "Domain Admins" -s jdoe -f html --out report.html

まず、エクスポートに対してパーサーのサニティチェックを行います(ヒストグラム + コーパスカバレッジ、パス処理なし)。これはNoiseHoundを実世界のデータで検証する最速の方法です:

noisehound-inspect -i export.zip

稼働中の BloodHound CE / Neo4j

zip の代わりに、--input を BloodHound CE がデータを格納する Neo4j データベースに向けると、NoiseHound は(すでに分析済みの)グラフを Bolt 経由で直接読み取ります:

pip install 'noisehound[neo4j]'
export NEO4J_PASSWORD=bloodhoundcommunityedition   # match your BHCE compose
noisehound-inspect -i bolt://localhost:7687
python -m noisehound -i bolt://localhost:7687 -s jdoe -o "Domain Admins"

BloodHound CE(7687 番ポートで Neo4j をバンドル)を公式の compose で起動します: curl -L https://ghst.ly/getbhce | docker compose -f - up。

バンドルされているサンプルに対して試してみてください:

python -m noisehound -i samples/sample_graph.json -s jdoe -o "Domain Admins" -d CONTOSO.LOCAL
python -m noisehound -i samples/sample_bloodhound_ce.zip -s jdoe -o "Domain Admins"
python -m noisehound -i samples/sample_adcs_ce.zip -s jdoe -o "Domain Admins"   # ADCS ESC1
# Full-spectrum export exercising every edge family (sessions, delegation, DCSync, ADCS, trusts):
python -m noisehound -i samples/sample_fullspectrum_ce.zip -s ALICE -o "Domain Admins" -d CONTOSO.LOCAL -k 3
ツールをダウンロード