用attack-scripts秒查任意ATT&CK数据源:techniques_from_data_source完整教程
【免费下载链接】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是 MITRE 官方维护的一套 ATT&CK 内容处理脚本集合,其中的techniques_from_data_source.py脚本可以从 ATT&CK TAXII 服务器实时拉取 STIX 2.0 数据,一键打印 Enterprise ATT&CK 中的全部数据源,并秒查任意指定数据源对应的所有攻击技术(Techniques)。本教程面向新手,手把手带你完成安装、运行和结果解读。
一、为什么需要"数据源反查技术"?
在使用 ATT&CK 做检测建设时,安全分析师最常问的一个问题是:
"我的日志里已经采集了User Account(用户账户)这类数据源,那么这些日志能覆盖哪些攻击技术?"
传统做法是打开 ATT&CK 官网一个个技术页面翻找,效率极低。techniques_from_data_source正是为了解决这个问题而生的——输入一个数据源,立刻返回所有依赖它的技术清单,帮助你在几分钟内评估日志覆盖度。
二、项目结构速览 🔍
attack-scripts 仓库结构非常清晰,所有查询脚本都放在scripts目录下:
| 脚本 | 作用 |
|---|---|
scripts/techniques_from_data_source.py | 本主角:按数据源反查技术 |
scripts/techniques_data_sources_vis.py | 生成"技术-数据源"可视化所需的 CSV |
scripts/diff_stix.py | 对比两个 ATT&CK 版本的 STIX2 差异 |
scripts/technique_mappings_to_csv.py | 导出技术与缓解措施/组织/软件的映射表 |
更详细的脚本说明可参考 scripts 目录说明。
三、安装步骤:3 步搞定环境
脚本仅依赖 Python 3 和少量第三方库,安装过程不到 2 分钟:
第 1 步:克隆仓库
git clone https://gitcode.com/gh_mirrors/at/attack-scripts cd 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核心依赖是stix2==2.1.0和taxii2-client==2.3.0(见 requirements.txt),它们分别负责 STIX 2.0 对象解析和 TAXII 2.0 服务器通信。
四、快速上手:一条命令秒查数据源
激活环境后,直接在仓库根目录运行:
python3 scripts/techniques_from_data_source.py如果你不确定参数用法,加上-h查看帮助:
python3 scripts/techniques_from_data_source.py -h运行后终端会分两部分输出:
- All data sources in Enterprise ATT&CK:列出 Enterprise ATT&CK 收录的全部数据源(如 Application Log、Network Traffic、Process、User Account 等),相当于给你一份"可查询清单";
- The following N techniques use '...' as a data source:列出所有使用默认数据源的技术名称。
💡 脚本默认查询的数据源是
User Account: User Account Creation,不传参数也能直接出结果。
五、自定义查询:-data_source 参数详解
想查别的数据源?用-data_source参数传入完整名称即可:
python3 scripts/techniques_from_data_source.py -data_source "Process: Process Creation"再比如查询与命令行数据源相关的技术:
python3 scripts/techniques_from_data_source.py -data_source "Command: Command Line"小技巧:如果不确定数据源的准确写法,先不带参数跑一次,从输出的全量数据源清单里复制粘贴即可,避免因拼写错误导致查询结果为空。
六、原理解析:为什么它能"秒查"?
翻一下 scripts/techniques_from_data_source.py 源码,逻辑其实只有三步:
- 连接:通过
taxii2client的Collection建立与 ATT&CK TAXII 2.0 服务器(Enterprise ATT&CK 集合)的连接; - 拉取:用
stix2的TAXIICollectionSource查询所有attack-pattern类型对象(即技术); - 过滤:每个技术的
x_mitre_data_sources字段记录了它可被哪些数据源检测,脚本用Filter("x_mitre_data_sources", "in", data_source)在服务端完成过滤,返回命中该数据源的全部技术。
整个过程无需本地维护任何 ATT&CK 数据库,数据永远来自官方服务器的最新版本——这也是它"快"的原因:查询条件在 TAXII 服务端执行,只回传结果。
同样的思路也用在 scripts/techniques_data_sources_vis.py 中,后者会进一步生成 CSV 用于绘制"技术-数据源"矩阵图。
七、常见问题 FAQ 🙋
Q1:运行报错taxii2client相关异常?脚本按最新版taxii2client编写。如果你的环境里装的是 2.0.0 之前的旧版本,可能需要打补丁或升级(pip install -U taxii2-client)。
Q2:查询结果为空怎么办?99% 的情况是数据源名称不匹配(大小写、冒号、空格)。先运行无参数模式,从全量清单中复制准确的字符串。
Q3:这个项目还在维护吗?该仓库已不再积极维护,MITRE 已将更多工具迁移到官方的mitreattack-pythonpip 模块中。本脚本仍可正常运行,但如需更完整的编程接口,建议了解mitreattack-python。相关演进记录可查阅 CHANGELOG.md。
Q4:能查 Mobile ATT&CK 吗?脚本中硬编码的是 Enterprise ATT&CK 的 TAXII 集合 ID,默认只覆盖 Enterprise 域。如需其他域,修改脚本顶部的Collection(...)参数即可。
八、总结
用一句话回顾本教程的核心链路:
克隆仓库 → 安装依赖 → 运行
techniques_from_data_source.py→ 输入数据源 → 得到技术清单
通过 attack-scripts 的这套 ATT&CK 查询工具,你可以快速回答"我的日志能检测哪些攻击技术"这一检测建设中的关键问题。推荐你顺手体验一下同目录下的technique_mappings_to_csv.py和diff_stix.py,它们分别解决了"技术映射导出"和"ATT&CK 版本差异比对"的需求,配合使用能大幅提升安全运营效率。
【免费下载链接】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),仅供参考