mcpField
T
threatkb

threatkb

ローカル
github.com/CloudCorpRecordsセキュリティ02 週間前に更新

threatkb について

threatkbは、指定したSTIXファイルのMITRE ATT&CKデータを検索するローカルCLI兼stdio MCPサーバーです。技術の詳細、関連する緩和策や検出情報、戦術を参照でき、ネットワークサービスを使いません。

主な機能

  1. 01IDまたは名前で技術を検索
  2. 02技術の完全なレコードを取得
  3. 03関連する緩和策と検出を一覧表示
  4. 04データセットの戦術を一覧表示
  5. 05ローカルSTIXファイルを読み込み

活用シーン

  1. 01分析中にATT&CK技術を検索
  2. 02技術に関連する緩和策を確認
  3. 03ローカルデータセットの検出記録を確認

MCP 対応

技術検索、詳細レコード、緩和策、検出、戦術、サーバー情報のツールを公開します。THREATKB_DATA_FILEで指定されたローカルSTIXデータセットを読み込みます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-threatkb": {
"command": "npx",
"args": [
"-y",
"@reneturcios/threatkb"
]
}
}
}
起動コマンドnpx -y @reneturcios/threatkb

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@reneturcios/threatkb0.1.0
ocighcr.io/cloudcorprecords/threatkb:0.1.0

ツール

6

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
tech_namestringいいえ名前のあいまい一致に使用する技術名。
technique_idstringいいえMITRE ATT&CK の技術 ID(例:T1059)。

詳細

threatkb

threatkb は、お使いのマシンに保存したデータセットファイルから、MITRE ATT&CK ナレッジベースに関する質問に回答します。ATT&CK ID またはおおよその名前でテクニックを検索したり、テクニックの完全なレコード(プラットフォーム、キルチェーンフェーズ、リファレンス、サブテクニック、緩和策、検出)を取得したり、テクニックに関連付けられた緩和策や検出を一覧表示したり、データセットに登録されている戦術を一覧表示したりできます。1つのバイナリで、コマンドラインインターフェイスと stdio MCP サーバーを提供します。

このツールにはデータセットが同梱されておらず、ネットワークサービスもありません。THREATKB_DATA_FILE 環境変数を使って、enterprise-attack.json 形式(MITRE がエンタープライズマトリックス向けに公開しているレイアウト)の STIX バンドルを指定します。環境変数が設定されていない場合やファイルを読み込めない場合、クエリコマンドは推測で回答せず、不足しているデータセットを示すエラーを返します。threatkb が ATT&CK データを捏造することはありません。この状態でも threatkb info は実行でき、理由とともに dataset_loaded: false を報告します。

インストール

THREATKB_DATA_FILE=/path/to/enterprise-attack.json npx @reneturcios/threatkb tactics

または、コンテナイメージを実行します。

docker run -i -e THREATKB_DATA_FILE=/data/enterprise-attack.json \
  -v /path/to/data:/data ghcr.io/cloudcorprecords/threatkb

コンテナはデフォルトで MCP サーバーを起動します(下記を参照)。CLI として使うには、CLI の引数を渡してください。

CLI

export THREATKB_DATA_FILE=/path/to/enterprise-attack.json

threatkb query --id T1059
threatkb query --name "command and scripting"
threatkb full --id T1059
threatkb full --name PowerShell
threatkb mitigations T1059
threatkb detections T1059
threatkb tactics
threatkb info

threatkb --version

結果は JSON として出力されます。テクニック検索では {results: [...], count: N} が返されます。緩和策および検出のクエリでは、指定した1つのテクニックについて {technique_id, results: [...], count: N} が返されます。不明なテクニック ID はエラーになります。終了コード:成功時は 0、クエリ失敗時(データセット不足を含む)は 1、使用方法のエラー時は 2 です。

検索ルール:ID 検索では完全一致し、大文字と小文字は区別されません(t1059 で T1059 が見つかります)。名前検索ではあいまい検索が行われます。まず名前が完全一致するもの、次にクエリで始まる名前、次にクエリを含む名前、最後にクエリ内のすべての単語を含む名前が対象になります。

MCP サーバー

1つのバイナリで両方のインターフェイスを提供します。mcp サブコマンドで stdio MCP サーバーを起動します。

npx -y @reneturcios/threatkb mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "threatkb": {
      "command": "npx",
      "args": ["-y", "@reneturcios/threatkb", "mcp"],
      "env": {
        "THREATKB_DATA_FILE": "/path/to/enterprise-attack.json"
      }
    }
  }
}
ツール
ツール入力返される内容
query_techniquetechnique_id または tech_name(実際にはどちらか一方が必須)一致したテクニックの概要を {results, count} として返します。
search_technique_fulltechnique_id または tech_name同じ検索結果を、プラットフォーム、キルチェーンフェーズ、リファレンス、サブテクニック、緩和策、検出を含む詳細情報とともに返します。
query_mitigationstechnique_id(必須)そのテクニックに関連付けられた緩和策を返します。
query_detectionstechnique_id(必須)そのテクニックに関連付けられた検出を返します。
list_tactics(なし)データセット内のすべての戦術を {results, count} として返します。
server_info(なし)サーバー名、バージョン、データセットのパス、データセットが読み込まれたかどうか、読み込まれている場合はオブジェクト数を返します。
STIX データセットの読み取り方法

threatkb は、意図的に簡略化した STIX モデルの一部をインデックス化します。制限を明確にするため、その内容を以下に記載します。

  • テクニックは attack-pattern オブジェクトです。ATT&CK ID は、mitre-attack をソース名とする external_references エントリーから取得します。戦術は、テクニックの kill_chain_phases のフェーズ名から取得します。
  • 戦術は x-mitre-tactic オブジェクトです(x_mitre_shortname を持ちます)。
  • 緩和策は course-of-action オブジェクトで、mitigates リレーションシップによってテクニックに関連付けられます。
  • 検出は、テクニックを指す detects リレーションシップです。リレーションシップのソース(通常は x-mitre-data-component)を解決し、リンクされている場合はデータソース名も含めます。テクニックの x_mitre_detection ガイダンステキストも、検出エントリーとして返します。
  • サブテクニックは、x_mitre_is_subtechnique またはドット区切りの ID によって認識されます。親は、存在する場合は subtechnique-of リレーションシップから取得し、そうでない場合は ID のプレフィックスから取得します。

失効・非推奨フラグ、アナリティクス、データソースのカバレッジ評価、グループやソフトウェアへの帰属は対象外です。

開発

npm install
npm run build   # tsc -> dist/
npm test        # node test runner over test/*.test.ts, on a hand-written STIX fixture, no real dataset needed
npm run dev     # run the CLI from source via tsx

ライセンス

MIT — LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。