
クラウドおよびアイデンティティインシデントレスポンスのためのフォレンジック再構築エンジン。
クラウドおよびアイデンティティインシデントレスポンスのためのフォレンジック再構築エンジン。
断片化されたクラウド、SaaS、アイデンティティのテレメトリ(コントロールプレーンログ、サインインイベント、トークンと同意アクティビティ)が与えられたとき、NVは侵入がアカウントとサービスを横断してどのように移動した可能性が最も高いかを再構築し、取り得た他の最も可能性の高い経路を列挙し、すべてのステップを校正された説明可能な信頼度で報告します。証拠が裏付けられないことを断言することは拒否します。
検知は何かが起こったことを教えます。Nimbus Vestigeはどのように — そして他に何が起こり得たかを教えます。
現代の侵入は「押し入る」のではありません。ログインするのです。アイデンティティは今や主要な攻撃手段であり、クラウドIR調査の大半に関与しており、ほとんどの侵入は複数のサーフェス(アイデンティティ+クラウド+SaaS+エンドポイント)にまたがっています。それらを記録するテレメトリは断片化され一貫性がないため、対応者はすでに不完全なデータから手作業でストーリーを再構築せざるを得ません。
その手動による再構築は遅く、予測可能な形で失敗します。対応者は最初に思いついたもっともらしいナラティブに固執し、本当の経路を見逃すのです。NVは再構築を自動化し、単一のストーリーではなく、可能性のある経路のランク付けされた空間を常に提示することで、その失敗モードに直接対処します。
重要なのは、NVは誠実さを製品としてこれを実現していることです。市場が公言する敵はブラックボックスの信頼度 — 根拠を示さずに結論を断言するツール — です。NVが生成するすべての数字は、それを獲得した特定の証拠に遡ることができ、裏付けられないものは推測ではなく差し控えられます。
NVは検出器、スキャナー、監査人、または攻撃実行ツールではありません。それらのツールは何かが起こったことを教え、それを測定します。NVは逆向きに機能します。断片化されたアイデンティティ環境全体にわたって、パターンからメカニズムをアブダクティブに再構築します。
ブルーチームは再生し、レッドチームはコモディティ化する。 攻撃用ツールは有限でパッチ可能な一連の穴を見つけるものであり、自動化されたCI/CD安全パイプラインへと統合されつつあります。侵入がどのように起こったかの再構築が解決することは決してありません。攻撃者は発明を続けるため、そのニーズは永続的かつ自己再生し続けます。
エンジンは基盤に依存しない。 中核ロジック — パターンからメカニズムを再構築し、校正された信頼度と停止レールを備える — は最初にクラウド/アイデンティティ向けに実装され、後でネットワーク、エンドポイント、OTに移植されます。テーゼを書き直すことなく、対象を変更できます。
再構築は堅牢化を可能にする。 彼らがどのように侵入したか、そして他にどのドアが開いていたかを知れば、防御を構築できます。取られなかったが可能性のあった経路は堅牢化のバックログであり、多くの場合、再構築自体よりも価値があります。なぜなら、ほとんどの侵害は新規の手口ではなく、予防可能な露出を悪用するからです。
未知の侵入に対してグレースフルに劣化する — まさに最も重要となるインシデントです。シグネチャ/ルールエンジンはゼロデイに対して盲目になりますが、NVのアブダクティブな中核は依然として最も可能性の高い経路を生成し、低信頼度であると正直にフラグ付けします。
誠実さは堀である。 校正されたケースベースの信頼度とランク付けされた代替案は、市場が求めると公言しているものであり、ブラックボックスの競合他社が再設計なしには構造的に提供できないものです。
生のプロバイダーログ → 正規化されたイベント/エンティティグラフ → 再構築エンジン → JSON → GUI。``` O365 / Entra audit logs nv_extract_identity_events.py AWS CloudTrail (IAM/STS/S3) nv_extract_cloudtrail_events.py (ingest + normalize) ▼ normalized identity events (JSONL) ← one event model, any substrate │ nv/graph.py (typed per-actor timelines) ▼ reconstruction engine ├─ nv/patterns.py known layer: ATT&CK identity pattern library ├─ nv/providers.py provider packs: per-substrate op→ATT&CK vocab (Entra + AWS) ├─ nv/validation.py Phase 3: provenance + integrity gate on every pattern ├─ nv/feeds.py live ATT&CK STIX / TAXII / Sigma clients + scheduler ├─ nv/confidence.py evidence-corroboration scorer (calibratable weights) ├─ nv/calibration.py fit + measure confidence against labeled ground truth ├─ nv/reconstruct.py most-likely chain + ranked competing paths + trust floor └─ nv/scope.py authorized-scope gate (refuses unauthorized tenants/accounts) │ run_nv.py ▼ reconstruction.json ──► nv_gui.html (embedding canvas + two-column view + trust slider)
GUI は**純粋なビュー層**です — エンジンの出力をレンダリングし、アナリストが信頼下限を移動できるようにします。
それ自体には再構築ロジックは含まれません。
---
## 信頼度モデル(製品全体の信頼性)
すべてのステップは [0, 1] の信頼度を持ち、**証拠の裏付け**によって構築されます:```
confidence = per-technique base rate
+ bonus for each independent corroborating signal
(source IP, device, successful outcome, temporal adjacency, broad-consent flags)
− penalty for missing signals (e.g. no source IP to corroborate origin)
パスのスコアはリンクを幾何平均で合成するため、1つの弱いリンクがあれば、平均化によって埋もれてしまうのではなく、正直にパス全体を引き下げる。
上記のすべての重み(手法ごとのベースレート、シグナルごとのボーナス、欠落ペナルティ)は、nv/confidence.py 内の単一の PARAMS テーブルに格納されている。これらは NV の v1 事前分布であり、較正可能 である。nv/calibration.py は、ラベル付きグラウンドトゥルースに基づいて再適合させることができ、エンジンはその結果を読み込む。較正が提供されない場合は v1 事前分布にフォールバックする(下記参照)。
保留ルールは、UI だけでなくエンジンの出力契約に組み込まれている。フロア未満のステップは保留される。フロアを動かすことは、正直さとカバレッジのトレードオフを具現化したものである。上に動かせば厳格(高信頼)、下に動かせば寛容(高カバレッジ)になる。デフォルトのフロアは、アナリストが触れる前の NV の立ち位置に関する編集上の判断である。
v1 の重みは妥当ではあるが、事前分布にすぎない。nv/calibration.py は、ラベル付きグラウンドトゥルース(どれが侵入の一部で、どれが良性だったかが分かっているイベント)に基づいてこれらを調整し、さらに重要なことに、調整が実際に効果があったかどうかを測定する。つまり、数値を動かすだけではなく、較正誤差を実際に低減した場合にのみ較正が採用される。
較正された信頼度が意味することは1つだけだ。あるステップに対する NV の信頼度は、そのステップが実際に攻撃経路上にあった確率と等しくなるべきである。そこで、各ラベル付きイベントの信頼度は予測確率として扱われ、ハーネスは以下を適合させる。
verified/withheld のしきい値はポリシーであり、較正ではないため、変更されない。
較正の前後で、ブライアスコア、対数損失、ECE、AUC、信頼性テーブル、信頼フロアスイープ(各フロアにおける真ステップの再現率と良性イベントの誤検出率)を報告する。これにより、正直さとカバレッジのトレードオフは、単一の数値ではなく判読可能な形で示される。```bash
python3 calibrate.py --labeled run_labeled.jsonl --origin live
--run-label "badzure-2026-07 tenant-x" --out calibration.json
python3 calibrate.py --out calibration.json
python3 run_nv.py events.jsonl out.json --authorize t.onmicrosoft.com
--calibration calibration.json
**グラウンドトゥルースソース。** 真の入力は、実際のテナントでの BadZure / MAAD-AF 実行からのテレメトリであり、統合監査ログを攻撃ツール自身のアクティビティ記録と突き合わせることでラベル付けされています(ツールが引き起こしたすべてのイベントは証跡チェーン上にあり、それ以外はすべて良性です — `nv/calibration.py` の `LABELED_SCHEMA` を参照)。実際の実行を指定するまでは、`eval/calibration_cases.py` が文書化された形式の **プロキシ** コーパスを提供し、そこからフィットしたすべてのアーティファクトは、その来歴で `source="proxy"` とスタンプされるため、プロキシフィットがライブのものと誤認されることは決してありません。`calibration.proxy.json` は、そのバンドルされたプロキシアーティファクトです。
バンドルされたプロキシコーパスでは、フィットは明らかな改善を示しています — Brier 0.398 → 0.045、ECE 0.576 → 0.081、AUC 0.81 → 0.91、そして 0.60 の下限における良性の誤検出率は 0.69 から 0.00 に激減します(v1 の事前分布は良性アクティビティに対して非常に過信していました)。プロキシは意図的に保守的です。実際にデプロイすべき重みを生成するのは、ライブテナントでの実行です。
## 信頼の整合性(フェーズ 3)
再構成を不正な入力から保護する 2 つの第一級の制御があります:
- **認可スコープゲート**(`nv/scope.py`)— NV は、認可リストにない環境では実行を拒否します。調査を許可された環境ごとに `--authorize <tenant-domain>` を付けて実行します。
- **パターンソース検証**(`nv/validation.py`)— 以下のすべてを通過しない限り、いかなるパターンもライブラリに入りません:(1) 信頼できるソースの許可リスト、(2) コンテンツチェックサム / 改ざんチェック、(3) スキーマの整形式性、(4) 有効な ATT&CK スタイルのテクニック ID。承認されたすべてのパターンは監査記録を保持し、拒否されたものは理由とともにログに記録されます。毒化された、または不正な形式のフィードは、偽の再構成を生成する前に上流で停止されます。これは、エンジンが証拠に適用するのと同じ懐疑主義を、パターン自体に移したものです。
---
## 知識を最新に保つ(攻撃者の進化に先んじる)
再構成エンジンの最新度は、パターンライブラリの最新度と、ライブラリがこれまで見たことのないものを処理する能力に依存します。NV は、設計上、**2 つの独立した側面**で陳腐化に対処します:
### 1. 既知のレイヤーは、検証された更新パイプラインを通じて最新を維持
ライブラリはハードコードされていません — `nv/patterns.py` は、組み込みセットを含むすべてのパターンを `nv/validation.py` を通じて読み込むため、外部フィードも同じ信頼された経路で入ります。これらのフィードをスケジュールで取得するライブネットワーククライアントは、`nv/feeds.py` に実装され、`update_feeds.py` によって駆動されます。ソースは信頼ティアごとに次のとおりです:
- **MITRE ATT&CK(STIX)** — 権威あるテクニック分類法です。コネクタは ATT&CK STIX インデックスを読み取り、最新の Enterprise リリースを取得し、NV が推論するすべての操作について、権威あるテクニック名と戦術を更新します — その後 ATT&CK が失効または非推奨にしたテクニックはすべて破棄します。NV は操作→テクニックの関連付けとベースレートの事前分布の所有権を保持し、ATT&CK は分類法を所有します。
- **TAXII 2.1 経由の精査済み CTI** — 完全な discovery → api-root → collection → objects クライアントです。精査済みの CTI コレクションから STIX attack-pattern オブジェクトを取得し、NV が追跡するテクニックを更新します。ATT&CK よりも低い重み付けです。
- **Sigma コミュニティルールセット** — git アーカイブとして取得されます。O365/Entra の操作を指定し、`attack.tXXXX` タグを持つ各クラウド/ID ルールは、操作→テクニックの候補となり、ルール自身の重大度 `level` から導出されたベースレートを持ち、その後コミュニティソースの重みでスケールダウンされます。マップされないルールは理由付きでスキップされ、推測されることはありません。
操作が衝突した場合、コミット前にその和集合が信頼度の昇順で並べられるため、権威ある ATT&CK の関連付けが常にコミュニティのものに優先します。下位ティアのコンテンツも依然として受け入れられ、裏付けとして監査に記録されます。`update_library(candidates)` は、検証を通じてセット全体を再取り込みし、ライブラリを原子的に再構築するため、毒化されたフィードがライブラリを中途半端に更新したままにすることは決してありません。