关于 threatkb
threatkb 是本地命令行工具和 stdio MCP 服务,可查询用户提供的 STIX 文件中的 MITRE ATT&CK 数据。它提供技术详情、相关缓解措施和检测信息,也可列出战术;不依赖网络服务。
主要功能
- 01按 ID 或名称搜索技术
- 02获取完整技术记录
- 03列出关联的缓解措施与检测
- 04列出数据集中的战术
- 05读取本地 STIX 文件
适用场景
- 01分析时查找 ATT&CK 技术
- 02查看某项技术的缓解措施
- 03检查本地数据集中的检测记录
MCP 相关
提供技术搜索、完整记录、缓解措施、检测、战术及服务信息等工具。它读取 THREATKB_DATA_FILE 指定的本地 STIX 数据集。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tech_name | string | 否 | 用于模糊名称匹配的技术名称。 |
| technique_id | string | 否 | 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_technique | technique_id 或 tech_name(实际上必须提供其中一个) | 匹配的技术摘要,格式为 {results, count}。 |
search_technique_full | technique_id 或 tech_name | 返回相同的匹配结果,并附带完整详情:平台、杀伤链阶段、参考资料、子技术、缓解措施、检测方法。 |
query_mitigations | technique_id(必填) | 与该技术关联的缓解措施。 |
query_detections | technique_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。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。