コンテンツへスキップ
PentAGI
Enterprise

Knowledge graphと分析

Knowledge graph がホスト、サービス、脆弱性、アクセスをどのように結びつけるか、その2つのバックエンド、およびそこから構築された attack-chain ダッシュボードについて説明します。

PostgreSQL のレコードは コマンドの出力内容 を示しますが、knowledge graph は 2つの findings がどのように関連しているか — どのホストがどのサービスを実行しているか、どの脆弱性がどのアクセスにつながったか — を明らかにします。

2つのバックエンド

graphstoregraphiti
実行形態バックエンド内、Neo4j のグラフNeo4j 上の独立したサービス
有効化方法GRAPHSTORE_INGEST_ENABLEDGRAPHITI_ENABLED + GRAPHITI_URL
Agent toolgraphstore_searchgraphiti_search
ステータスGraphiti の後継レガシー、比較用に維持

どちらも単一の flow に限定されます。すべての読み取りは flow ごとにフィルタリングされるため、ある flow が別の flow のグラフを参照することはありません。

両方のバックエンドはデフォルトで無効になっています。GRAPHSTORE_INGEST_ENABLED=true を使用する場合、グラフストアには GRAPHSTORE_NEO4J_URI と GRAPHSTORE_NEO4J_DATABASE が必要であり、これらがなければ PentAGI は起動しません。

Graphiti も有効にすると、2つのバックエンドはアセットを異なる方法で保存するため、両方が1台のサーバー上で同じ名前のデータベースに書き込む場合、または Graphiti の NEO4J_URI が未設定のまま任意のサーバーで実行される場合、PentAGI は起動を拒否します。ただし GRAPHSTORE_ALLOW_SHARED_NEO4J_DATABASE=true の場合は例外です。バンドルされている Neo4j は Community エディションであり、neo4j データベースのみを提供します。このデータベース上に両方のバックエンドを配置する場合は、neo4j を維持して共有を許可しますが、ポートとサービスが二重に保存され、一部の Graphiti による書き込みが拒否される可能性があるため、グラフの品質が低下します。グラフを分離したままにするには、graphstore 用に専用の Neo4j サーバーを用意するか、Neo4j Enterprise 上で独自のデータベースを使用してください。graphstore の Neo4j アカウントがデータベースを作成できる場合、PentAGI は存在しないときにそのデータベースを作成します。そうでない場合は、事前に作成しておいてください。

Attack chain ダッシュボード

Main attack chain: ホスト、ポート、サービス、脆弱性、確認済みのアクセスとアカウント

Knowledge graph を有効にすると、flow の Dashboard → Analytics タブで、グラフの成長に合わせて描画が行われます。

  • Main Attack Chain — ホスト、ポート、サービス、脆弱性、確認済みのアクセスとアカウント。
  • Action Chain、Infrastructure、Access Chain、Priv Esc Chain の各ビュー。
  • 状況の変化を再生できるタイムラインスクラバーに加え、オープンポート、検出されたCVE、認証情報の状態を示すテーブル。

Access chain ビュー

攻撃対象範囲と確認済みアクセスのサマリー

最終更新日