mcpField
T
threatkb

threatkb

本地服务
github.com/CloudCorpRecords安全01 周前更新

关于 threatkb

threatkb 是本地命令行工具和 stdio MCP 服务,可查询用户提供的 STIX 文件中的 MITRE ATT&CK 数据。它提供技术详情、相关缓解措施和检测信息,也可列出战术;不依赖网络服务。

主要功能

  1. 01按 ID 或名称搜索技术
  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 或近似名称查找技术,获取技术的完整记录(平台、杀伤链阶段、参考资料、子技术、缓解措施、检测方法),列出与某项技术关联的缓解措施或检测方法,并列出数据集中包含的所有战术。一个二进制文件同时提供命令行界面和 stdio MCP 服务。

此工具不附带数据集,也不依赖网络服务。你需要通过 THREATKB_DATA_FILE 环境变量,将其指向一个符合 enterprise-attack.json 格式的 STIX 包(MITRE 发布的企业矩阵布局)。如果未设置该变量或无法读取文件,查询命令会报错并指出缺少的数据集,而不是猜测;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};缓解措施和检测方法查询会针对所查询的一项技术返回 {technique_id, results: [...], count: N};未知的技术 ID 会报错。退出码:成功时为 0,查询失败(包括缺少数据集)时为 1,用法错误时为 2。

查找规则:ID 查找会进行精确且不区分大小写的匹配(t1059 会匹配 T1059)。名称查找采用模糊匹配,依次匹配完全相同的名称、以查询内容开头的名称、包含查询内容的名称,最后匹配包含查询内容中所有词语的名称。

MCP 服务

一个二进制文件同时提供这两种接口。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 来自 external_references 中 source_name 为 mitre-attack 的条目。战术来自技术的 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。