attack-scripts预备知识:ATT&CK、STIX 2.0与TAXII 2.0三大基石通俗指南
【免费下载链接】attack-scriptsScripts and a (future) library to improve users' interactions with the ATT&CK content项目地址: https://gitcode.com/gh_mirrors/at/attack-scripts
attack-scripts 是一个用于处理 ATT&CK 威胁情报内容的开源脚本合集。要用好它,绕不开三大基石:ATT&CK、STIX 2.0和TAXII 2.0。这篇通俗指南会用"图书馆 + 快递"的类比帮你快速建立整体认知,并附上动手上手的步骤。
🧭 先看懂全景:三大基石各管一件事
如果把威胁情报体系比作一家图书馆:
| 基石 | 一句话定位 | 类比 | 解决的问题 |
|---|---|---|---|
| ATT&CK | 对抗者行为的知识库 | 图书馆里的"书" | 攻击者都会干什么 |
| STIX 2.0 | 威胁情报的标准化语言 | 统一的"书籍装帧格式" | 数据怎么统一表达 |
| TAXII 2.0 | 威胁情报的传输协议 | "快递配送服务" | 数据怎么及时拿到 |
attack-scripts 里的每个脚本,本质上都是在"从快递站取书(TAXII)→ 按标准格式拆包(STIX)→ 整理书中的攻击技法目录(ATT&CK)"。
📚 ATT&CK:攻击者的"行为百科全书"
ATT&CK 是一个精心整理(curated)的网络对抗者行为知识库和模型,它记录了攻击者生命周期的各个阶段,以及他们已知针对的各类平台(如 Enterprise、Mobile 等)。
它的核心价值有三个用途:
- 🎯理解风险:对照已知攻击者行为,评估自身安全暴露面
- 🧱规划改进:找出防御短板,制定安全改进计划
- ✅验证防御:确认现有检测手段是否真的有效
理解 ATT&CK 时,记住这套"层级结构"即可:
Tactic(战术):攻击的大阶段,如"初始访问""持久化"Technique(技术):具体手法,如"钓鱼""脚本执行"Group / Software / Mitigation:攻击组织、攻击工具软件、对应的缓解措施
📄 STIX 2.0:让机器也能读懂的"统一格式"
STIX(Structured Threat Information Expression,结构化威胁情报表达式)是一种用于交换网络威胁情报(CTI)的语言和序列化格式。
它要解决的问题很现实:各家安全厂商的数据格式五花八门,机器无法直接互通。STIX 2.0 让各组织用一致、机器可读的方式共享情报,从而支持协作分析、自动化威胁交换、自动化检测响应等能力。
在 attack-scripts 的世界观里,整个 ATT&CK 目录就是用 STIX 2.0 JSON 表达的:每一条技术、每一款恶意软件、每个 APT 组织、每项缓解措施,都是 JSON 数据包(bundle)里的一个对象,通过type字段区分身份:
| ATT&CK 概念 | STIX 2.0 对象类型 |
|---|---|
| Technique 技术 | attack-pattern |
| Malware 恶意软件 | malware |
| Tool 攻击工具 | tool |
| Group 攻击组织 | intrusion-set |
| Mitigation 缓解措施 | course-of-action |
📡 TAXII 2.0:一键取走最新数据的"快递通道"
TAXII 2.0(Threat Attribute Exchange 的演进版本)是威胁情报的传输协议。有了它,你不用手动到处找文件,直接向服务器"下单"就能取回最新的 STIX 数据。
attack-scripts 的多个脚本正是这么干的:通过taxii2-client连接 MITRE 官方的 TAXII 服务器,锁定 Enterprise 或 Mobile 对应的集合(Collection),再用过滤器精准查询。例如在 scripts/techniques_from_data_source.py 中,核心套路就是三步:
- 建立 TAXII 2.0 Collection 实例(指向 Enterprise 集合)
- 交给
TAXIICollectionSource作为数据源 - 用
Filter("type", "=", "attack-pattern")这样的条件过滤出所有技术
🔗 三大基石如何联动:一条完整的数据流
ATT&CK 知识库(内容) │ 序列化 ▼ STIX 2.0 JSON bundle(统一格式) │ 发布 ▼ TAXII 2.0 服务器(在线传输) │ 脚本拉取 + stix2 解析 ▼ attack-scripts 处理输出(CSV 报表 / 差异报告 / Navigator 图层)看懂这条链路,你就理解了为什么项目依赖清单 requirements.txt 里同时出现了stix2和taxii2-client两个核心库。
🚀 快速上手:三步跑起 attack-scripts
环境要求:Python 3,其余依赖由requirements.txt统一管理(核心是stix2==2.1.0与taxii2-client==2.3.0)。
第 1 步:获取项目
git clone https://gitcode.com/gh_mirrors/at/attack-scripts第 2 步:创建并激活虚拟环境
- macOS / Linux:
python3 -m venv env,然后source env/bin/activate - Windows:
py -m venv env,然后env\Scripts\activate.bat
第 3 步:安装依赖
pip3 install -r requirements.txt🛠️ 四大核心脚本一览:学完基石立刻能用
脚本说明详见 scripts/README.md:
| 脚本 | 作用 |
|---|---|
scripts/techniques_from_data_source.py | 从 TAXII 服务器拉取 ATT&CK 的 STIX 2.0 对象,列出所有数据源,并查指定数据源被哪些技术使用 |
scripts/techniques_data_sources_vis.py | 生成"技术映射到数据源"可视化所需的 CSV 数据 |
scripts/diff_stix.py | 对比两个版本的 STIX2 bundle,输出 Markdown 或 Navigator 图层的新增/变更/弃用/移除差异报告 |
scripts/technique_mappings_to_csv.py | 导出技术 ↔ 缓解措施 / 攻击组织 / 软件 的映射电子表格 |
另外,scripts/layers/samples/下还有四个示例图层生成脚本,是理解"STIX 数据 → 可视化图层"的绝佳教材(说明见 scripts/layers/samples/README.md):
heatmap.py:给所有技术打随机分数,生成热图图层bear_APT.py:解析 STIX 数据,展示别名含 "bear" 的 APT 组织所用技术apt3_apt29_software.py:展示 APT3 与 APT29 使用的技术及软件software_execution.py:展示各类软件可执行的技术
💡 小技巧:任何脚本都支持python3 <脚本名> -h查看完整用法。
⚠️ 新手避坑:taxii2client 版本兼容性
taxii2client库的一次 API 更新改变了 TAXII 2.0 请求的接口。attack-scripts 已适配最新版本;如果你本地安装的taxii2client低于 2.0.0,脚本可能无法正常运行,建议统一升级到 2.x 版本(依赖清单锁定的就是taxii2-client==2.3.0)。
📝 总结:三句话记住三大基石
- 📚ATT&CK回答"攻击者都干了什么"——内容是知识库
- 📄STIX 2.0回答"情报如何统一表达"——格式是 JSON
- 📡TAXII 2.0回答"如何随时取到最新数据"——传输是协议
把这三块拼图放进脑子里,再回头看 attack-scripts 的每一个脚本,你会发现它们不过是这条数据链上一个个顺理成章的"处理站"。
【免费下载链接】attack-scriptsScripts and a (future) library to improve users' interactions with the ATT&CK content项目地址: https://gitcode.com/gh_mirrors/at/attack-scripts
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考