AttackGen:用大模型把 MITRE ATT&CK 变成可跑的桌面推演剧本
AttackGen is a cybersecurity incident response testing tool that leverages the power of large language models and the comprehensive MITRE ATT&CK framework. The tool generates tailored incident response scenarios based on user-selected threat actor groups and your organisation's details.
秒懂
- 它是什么?
- AttackGen 是一个基于 Streamlit 的 Python 工具,按选定的威胁组织或 ATLAS 案例生成事件响应演练剧本。它的价值在于把 ATT&CK 技术清单翻译成一份带注入点、成功标准和交战规则的演练文档,代价是你必须接受剧本由大模型生成这一事实。
- 适合谁用?
- AttackGen 适合已经在用 ATT&CK 做紫队或桌面推演、但写剧本耗时过长的安全团队,也适合需要快速产出 AI 相关演练素材的人,因为 ATLAS 和 AI 内部威胁模型是它区别于通用剧本生成器的地方。它不适合把生成内容直接当作真实攻击行为依据的团队,也不适合无法接受把组织规模和行业信息发送给外部模型 API 的环境。
- 能商用吗?
- 可以,但有条件。GPL-3.0 是 copyleft 许可证:如果你分发包含它的软件,就必须以同一许可证公开该软件的源代码。只在内部运行、不对外分发,则不会触发这项义务。
- 还在维护吗?
- 在维护。仓库最近一次提交在 1 天前。
- 用什么语言写的?
- 主要是 Python(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
演练剧本的写作瓶颈,而不是检测能力的瓶颈
事件响应演练卡住的地方通常不在技术侧。ATT&CK 里每个威胁组织对应几十条技术,把它们组织成一份能让业务方、法务和工程一起坐下来推演的文档,需要有人查资料、排顺序、写注入点、定成功标准。这件事重复度高,而且每次换一个威胁组织就要重做一遍。AttackGen 针对的正是这个环节。README 把它定义为事件响应测试工具,输入是用户选择的威胁组织或 AI 攻击案例,加上组织自身的规模和行业,输出是定制化的演练剧本。适用对象很明确:负责组织桌面推演的人,无论是内部紫队、安全运营负责人还是外部顾问。它不生成检测规则,不接入你的日志,也不模拟真实流量,这一点在读它的功能列表时容易被忽略。
从威胁组织到 Markdown 剧本的数据流
根据 README 的描述,AttackGen 的运行路径大致是:用户在 Streamlit 页面上选定框架(ATT&CK Enterprise、ICS 或 ATLAS)、威胁组织或案例,再填组织规模与行业;工具取出该组织使用的技术清单展示出来;随后把技术、组织画像和可选的模板或场景种子组装成提示词,交给大模型生成剧本。所有模型调用都经过 LiteLLM,README 说明这是在单一内部封装之后统一路由的,因此新增一个模型是改动一行代码的事。v0.16 的发布说明提到生成被拆成了两个阶段:基础剧本先生成并立刻提供下载按钮,可选的紫队叙事随后流式追加。同一份说明还提到每次运行会在按下 Generate 的瞬间对输入做快照,运行中修改侧边栏不会影响正在生成的剧本。这个设计取舍值得注意:它用输入冻结换取了结果一致性,代价是你想调整参数只能重新生成。
安装、配置与运行命令
README 给出的安装与运行方式依赖 .env 文件管理凭据,API 密钥和机密放在其中,不进入查询字符串。运行入口是 Streamlit 应用,仓库中提供了 Docker 容器镜像用于部署。数据准备是单独一步,README 的目录里列有 Data Setup 一节,说明 ATT&CK 与 ATLAS 数据需要先就位,生成才能工作。模型侧支持 OpenAI、Anthropic、Google AI、Mistral、Groq,以及任何兼容 OpenAI 的端点,例如 Ollama、LM Studio、Azure OpenAI 和 OpenRouter。可选集成 LangSmith,用于调试和观察模型表现。需要提醒的是,我没有安装或运行过这个项目,上面这些步骤来自 README 的结构和章节标题,具体命令请以仓库中的实际文件为准。v0.16 引入的引导式设置会在每个页面显示同一个 Setup 侧边栏,列出所有未满足的要求,并在工作流就绪前保持 Generate 按钮禁用,这减少了因参数缺失而浪费一次模型调用的概率。
AI 内部威胁场景是它最窄也最特别的一块
多数演练生成工具停在传统 ATT&CK 技术层面。AttackGen 额外提供了一类场景:前沿 AI 智能体作为内部威胁。README 说明这类场景基于一篇名为 Actions Speak Louder Than Tokens 的内部威胁模型论文,剧本形态由智能体的部署原型(自主程度)、威胁类别、STRIDE 威胁以及一段可选的自由文本场景种子共同决定。这是它相对同类工具最明确的差异点,因为把 AI 智能体当作内部人员来推演,需要一套不同于外部入侵的假设。同时这也是最需要谨慎对待的部分:这类场景的合理性完全依赖那套威胁模型的适用性,而 README 只给出了论文链接,没有给出验证方式。如果你的组织还没有部署自主性较高的 AI 智能体,这类场景的演练价值会明显下降。
生成内容不可验证,这是它的边界
AttackGen 的输出是大模型生成的文本。README 没有描述任何对生成内容的校验机制,也没有说明如何确认剧本里引用的技术确实属于所选威胁组织。工具会展示所选组织使用的技术清单,这部分来自 ATT&CK 数据,是可核对的;但把这些技术编织成的叙事、注入点和讨论问题,属于模型的自由发挥。对桌面推演来说这通常可以接受,因为推演的目的本来就是引发讨论而不是复现攻击。对红队行动规划或检测工程来说则不合适,那些场景需要的是可复现的技术细节,而不是一段读起来合理的文字。另一个现实约束是数据外发:组织规模和行业信息会随提示词发送给你选定的模型提供商,README 的安全实践一节存在,但摘要中没有展开具体内容。对数据出境或第三方处理有硬性要求的团队,需要先评估能否改用本地端点。
与 Atomic Red Team 这类工具的差别在哪
Atomic Red Team 走的是另一条路:它为 ATT&CK 技术提供可执行的原子测试,直接在主机上运行以验证检测能力。两者的差别不在功能多少,而在产物性质。Atomic Red Team 的产物是一次真实的执行和随之而来的日志,可以被 SIEM 规则命中或漏掉,结论是二值的。AttackGen 的产物是一份文档,结论是讨论性的,没有日志,也没有可观测的失败信号。因此它们解决的问题不重叠:验证检测覆盖率用前者,训练人的响应流程用后者。如果你的团队已经用 Atomic Red Team 跑过技术验证,AttackGen 补的是人这一侧;反过来,如果连检测规则都还没建立,先做剧本推演的意义有限。
许可证与升级节奏
AttackGen 采用 GPL-3.0。这是强 copyleft 许可证,如果你把修改后的版本分发给外部,通常需要以同样的许可证开放源代码。内部使用一般不触发分发条款,但具体边界取决于你的使用方式,这不是法律意见,涉及商业分发时应咨询法务。升级方面,从发布记录看,v0.14.0、v0.15.0、v0.16.0 分别在 2026 年 7 月、8 月发布,节奏大约每月一次,v0.16 的改动幅度不小,涉及生成流程拆分、状态管理和选择器行为。这意味着升级不是无痛的:v0.16 改变了结果持久化和输入冻结的行为,依赖旧交互方式的使用者需要重新适应。README 中提到数据需要单独准备,因此升级时还要确认 ATT&CK 与 ATLAS 数据是否同步更新。
谁该用,谁该等
已经在做桌面推演、并且能接受剧本由模型起草的团队,可以直接用,收益最明显的是把写剧本的时间从几天压到一次生成加一轮人工修订。需要 AI 相关演练素材的团队也值得试,ATLAS 框架支持和 AI 内部威胁场景在同类工具里不常见。反过来,需要可复现攻击细节的红队、需要把输出接入自动化流水线的检测工程团队,不应该把它当作数据源。数据不能外发的环境要么改用 Ollama 或 LM Studio 这类本地端点,要么放弃。上手前建议先确认三件事:LiteLLM 到目标端点的连通性、data 目录下的数据是否已按文档准备、以及所选模型在长文本生成上的稳定性,因为 v0.16 把紫队叙事拆成第二次调用,模型不稳定时这一段最容易出问题。
编辑结论
AttackGen 适合已经在用 ATT&CK 做紫队或桌面推演、但写剧本耗时过长的安全团队,也适合需要快速产出 AI 相关演练素材的人,因为 ATLAS 和 AI 内部威胁模型是它区别于通用剧本生成器的地方。它不适合把生成内容直接当作真实攻击行为依据的团队,也不适合无法接受把组织规模和行业信息发送给外部模型 API 的环境。上手前先确认三件事:LiteLLM 是否能连通你选定的模型端点,data 目录下的 ATT&CK 与 ATLAS 数据是否已按文档准备好,以及 GPL-3.0 对你内部分发方式意味着什么。
社区笔记