MITRE ATT&CK Lookup 是一个用于查询 MITRE ATT&CK 知识库的安全技能,底层依赖 mitrize 数据集。mitrize 是一个基于 Git 的静态数据集,将 STIX 2.1 JSON 转换为独立的 Markdown 文件,每个文件带有 YAML frontmatter。该数据集覆盖 Enterprise、Mobile 和 ICS 三个域,对应 ATT&CK v18.1+,包含 898 项技术、203 个威胁组和 929 条软件记录。
主要用途与使用场景
该技能适用于以下场景:按 ID 或名称查询特定 ATT&CK 技术,例如 T1059 或 "Command and Scripting Interpreter";对威胁行为者的 TTP 进行画像,例如梳理 APT28 或 Kimsuky 使用的全部技术;在事件响应中将检测到的 IOC 或行为映射到 ATT&CK 技术;在构建检测规则时了解技术细节与缓解措施;对比两个威胁组,找出重叠和独有的技术;以及通过关键词(如 "ransomware"、"PowerShell")全文搜索 ATT&CK 知识库。
使用前准备
需要 Git(用于克隆 mitrize 仓库)、Python 3.6+(仅使用标准库,无 pip 依赖),以及约 100 MB 磁盘空间用于存放完整仓库。
输入参数
该技能接受三个参数:QUERY_TYPE 为必填,表示查询类型,可选值包括 technique、group、software、mitigation、tactic、search、group-techniques、overlap、stats;QUERY_VALUE 为必填,表示 ID、名称或搜索关键词,例如 T1059、Kimsuky、ransomware;DOMAIN 为可选,表示用于直接文件访问的 ATT&CK 域,默认是 enterprise,可选 enterprise、mobile、ics。
工作流程
第一步,首次使用时克隆 mitrize 仓库:将 MITRIZE_DIR 设为 ${HOME}/mitrize,若目录不存在则运行 git clone --depth 1 https://github.com/woohyun212/mitrize.git "$MITRIZE_DIR",否则进入目录并执行 git pull --ff-only。
第二步,按 ID 查询技术。进入 mitrize 目录后,可使用查询脚本 python3 scripts/query_attack_md.py technique T1059,或直接读取文件 cat enterprise/techniques/T1059/technique.md。子技术可通过 ls enterprise/techniques/T1059/ 列出,例如 technique.md、T1059.001.md、T1059.002.md 等,读取特定子技术使用 cat enterprise/techniques/T1059/T1059.001.md。
第三步,对威胁组进行画像。可按 ID 或名称查询,例如 python3 scripts/query_attack_md.py group G0094 或 group Kimsuky;列出该组使用的全部技术(按战术组织)使用 python3 scripts/query_attack_md.py group-techniques G0094;也可直接读取 cat enterprise/groups/G0094.md,或用 grep -oP 'T\d{4}(.\d{3})?' enterprise/groups/G0094.md | sort -u 提取技术 ID。
第四步,查询软件或恶意软件。按 ID 或名称查询,例如 python3 scripts/query_attack_md.py software S0154 或 software "Cobalt Strike";列出全部软件使用 ls enterprise/software/。
第五步,查找某项技术的缓解措施。可按 ID 查询缓解措施,例如 python3 scripts/query_attack_md.py mitigation M1049;缓解措施也会列在每个技术文件的 Mitigations 章节下,可用 cat enterprise/techniques/T1059/technique.md | grep -A 20 "## Mitigations" 查看。
第六步,按关键词搜索。使用 python3 scripts/query_attack_md.py search ransomware 进行跨对象全文搜索;也可用 grep 直接搜索文件系统,例如 grep -rl "PowerShell" enterprise/techniques/ | head -20,或 grep -rl '"Linux"' enterprise/techniques/ | head -20 查找面向特定平台的技术;列出某战术下全部技术使用 python3 scripts/query_attack_md.py tactic execution。
第七步,对比两个威胁组。使用 python3 scripts/query_attack_md.py overlap G0094 G0032 展示两个组之间共享和独有的技术。这适用于归因分析(共享 TTP 提示关联关系)、检测优先级排序(共享技术价值更高)和威胁狩猎(若针对 A 组狩猎,也应检查 B 组的独有技术)。
第八步,查看数据集统计与版本。使用 python3 scripts/query_attack_md.py stats 查看 ATT&CK 版本和对象数量;用 git log --oneline | head -10 查看版本历史;也可用 git diff HEAD~1..HEAD enterprise/techniques/T1059/technique.md 对比版本差异。
完成判定
当请求的 ATT&CK 对象(技术、组、软件、缓解措施)被检索并显示时;对组画像而言,全部关联技术已按战术映射列出时;对搜索而言,相关匹配已按对象类型分组返回时;对重叠对比而言,两个组之间的共享和独有技术已被识别时,视为完成。
失败模式
若出现 FileNotFoundError 或 "repo not found",说明 mitrize 未克隆,需运行 git clone https://github.com/woohyun212/mitrize.git ~/mitrize。若有效 ID 返回空结果,可能是域不匹配(例如在 enterprise 中搜索 ICS 技术),需使用直接路径 cat ics/techniques/T0800/technique.md。若 query_attack_md.py 找不到 techniques 目录,说明脚本未在仓库根目录运行,需先 cd ~/mitrize。若数据过期,需执行 cd ~/mitrize && git pull。若技术 ID 未找到,可能是该技术已弃用或撤销,需查看 ATT&CK 变更日志或改为按名称搜索。
注意事项
mitrize 使用 Git 历史进行 ATT&CK 版本管理,每次 ATT&CK 发布对应一个 commit,可用 git diff 查看版本间变化。query_attack_md.py 脚本仅使用 Python 标准库,无 pip 依赖。对于 Mobile 和 ICS 域,由于查询脚本默认使用 Enterprise,需使用直接文件路径(mobile/techniques/、ics/techniques/)。对象间的交叉引用是相对 Markdown 链接,可沿链接遍历关系(例如从组到其技术再到缓解措施)。该技能可与 siem-rule(将 ATT&CK 技术映射到检测规则)、threat-model(按系统识别相关技术)和 ioc-extract(将 IOC 映射到 TTP)配合使用。数据来源于 MITRE ATT&CK STIX 数据,采用 CC BY 4.0 许可。