mrwadams/attackgen

GitHub: mrwadams/attackgen

AttackGen 利用大语言模型和 MITRE ATT&CK/ATLAS 框架,为安全团队自动生成定制化的网络安全事件响应演练场景。

Stars: 1226 | Forks: 165

# AttackGen AttackGen 是一款网络安全事件响应测试工具,它利用了大型语言模型的强大能力以及全面的 MITRE ATT&CK 和 ATLAS 框架。该工具根据用户选择的威胁行为者组织、AI 攻击案例研究以及您组织的详细信息,生成定制化的事件响应场景。 ## 目录 ## 功能 - 根据所选的威胁行为者组织或 ATLAS 案例研究,生成独特的事件响应场景。 - 允许您指定组织的规模和行业,以生成定制化的场景。 - 支持 MITRE ATT&CK Enterprise、ICS(工业控制系统)和 ATLAS(AI 系统对抗性威胁环境)框架。 - 显示所选威胁行为者组织或案例研究使用的详细技术列表。 - 基于所选的 ATT&CK 或 ATLAS 技术创建自定义场景。 - 使用场景模板快速生成基于常见网络安全事件类型(包括 AI/ML 特定攻击模式)的自定义场景。 - 生成 **AI 内部威胁场景** —— 在这些事件响应演练中,部署在您组织内部的前沿 AI agent 会表现出内部威胁的行为,该功能基于 [*Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents*](https://ai-insider-threat.matt-adams.co.uk) 中的威胁模型。场景由 agent 的部署原型(自治级别)、威胁类别和 STRIDE 威胁共同决定。 - AttackGen Assistant —— 一个聊天界面,用于更新和/或询问有关生成场景的问题。 - 收集用户对生成场景质量的反馈。 - 支持以 Markdown 格式下载场景。 - 使用 OpenAI API、Anthropic API(Claude 模型)、Google AI API、Mistral API、Groq API 或任何自定义的 OpenAI 兼容 endpoint(Ollama、LM Studio、Azure OpenAI、OpenRouter 等)来生成事件响应场景。所有提供商都通过单一的内部封装由 [LiteLLM](https://github.com/BerriAI/litellm) 进行路由,因此添加新模型只需修改一行代码。 - 提供 Docker 容器镜像,便于部署。 - 可选集成 [LangSmith](https://docs.smith.langchain.com/),实现对模型性能的强大调试、测试和监控。 - 使用 .env 文件进行安全的凭证管理,存放 API 密钥和机密信息。 ![AttackGen 截图](https://static.pigsec.cn/wp-content/uploads/repos/cas/58/58525fd72c40f62c39a5defdd2565e26c374c60d481898a3abcd8d2b65f92b52.png) ## 版本发布 ### v0.12 | 有哪些新功能? | 为什么有用? | | ----------- | ----------------- | | AI 内部威胁场景 | - 新的场景类型:一个专门的页面用于生成事件响应桌面推演,在其中部署在您组织内部的前沿 AI agent 会表现出内部威胁行为——通过目标偏离、奖励黑客行为、涌现目标或 prompt 注入攻陷。基于 [*Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents*](https://ai-insider-threat.matt-adams.co.uk) 中的威胁模型。

- 部署原型驱动:场景由 agent 的自治级别(L1 监督助理 → L4 完全自治集群)决定,这是其威胁面和检测姿态的主要决定因素。

- 五大内部威胁类别:凭证攻陷、供应链破坏、数据泄露、基础设施破坏以及欺骗与规避——每一项都映射到具体的 AI agent 表现形式,而非人类动机。

- 针对 AI Agent 的 23 项 STRIDE 威胁:完整的 STRIDE 分类法(欺骗、篡改、否认、信息泄露、拒绝服务、权限提升),专为前沿 AI agent 适配,可选用于缩小场景范围。

- 对齐 NIST CSF 的控制措施:生成的场景包含映射到 NIST 网络安全框架(识别、保护、检测、响应、恢复)的优先缓解措施。

- 提供商一致性:支持与其余 AttackGen 相同的提供商集合,并带有可选的 LangSmith 追踪功能。 | | LiteLLM 迁移与提供商整合 | - 统一的 LLM 封装:所有提供商集成现在都通过使用 [LiteLLM](https://github.com/BerriAI/litellm) 的单一 `core/llm.py` 封装进行处理。添加新模型只需在 `core/models.py` 中的 `MODELS` 列表中编辑一行;添加提供商只需添加一个 `ProviderInfo` 条目。借鉴了 [stride-gpt](https://github.com/mrwadams/stride-gpt) 中使用的模式。

- 大幅减少代码:删除了四个页面中约 3,800 行重复的特定提供商分支代码(约 1,000 行 `if model_provider == ...` 代码块,加上每个页面八个几乎完全相同的封装函数)。现在每个页面都构建纯消息字典并调用 `call_llm(config, messages)`。

- 注册表驱动的侧边栏:欢迎侧边栏现在由提供商注册表生成,用一个循环取代了八个手动编写的提供商代码块。

- 刷新的模型列表:更新至最新模型——OpenAI GPT-5.5 / 5.4 系列、Anthropic Claude 4.6 / 4.7 / 4.8、Google Gemini 3.x 预览版、Mistral Large 3 / Magistral、Groq GPT-OSS 和 Qwen3。

- 提供商整合:将独立的 Azure OpenAI Service 和 Ollama 条目替换为单一的**自定义(OpenAI 兼容)**选项。Azure 部署、Ollama (`http://localhost:11434/v1`)、LM Studio (`http://localhost:1234/v1`)、OpenRouter 和自托管 endpoint 都通过这一路径工作。

- 更小的依赖占用:移除了 `langchain`、`langchain-anthropic`、`langchain-core`、`langchain-community`、`langchain-google-genai`、`langchain-mistralai`、`langchain-openai` 和 `anthropic` 包——取而代之的是单一的 `litellm>=1.40` 依赖。保留了 `langsmith` 用于可选的追踪。

- 保留了 LangSmith 追踪:`@traceable` 装饰器和反馈小部件继续透明地工作;当 LangSmith 客户端可用时,`core/llm.py` 会将 `call_llm` 包装在 `@traceable` 中。 | | Docker 镜像安全刷新 | - 刷新基础镜像:更新了 `python:3.12-slim` 摘要,以清除 Trivy 代码扫描标记出的过时操作系统层 CVE,减少了针对已发布容器镜像的未决警报数量。

- 修复 pip CVE-2025-8869:现在会在安装依赖要求之前升级 `pip`,获取在包提取期间缺失符号链接检查的修复。 | | 流式 LLM 输出 | - 逐 token 生成:场景和 AttackGen Assistant 聊天现在会在 token 到达时进行流式传输,而不是等待完整响应,因此长时间的生成过程感觉很灵敏,您可以一边阅读一边等待模型输出。

- 可选的流式 API:在统一的 LiteLLM 封装中添加了与 `call_llm` 并列的 `call_llm_stream`,因此调用者可以在不改变其余契约的情况下选择是否流式传输。

- 干净的推理处理:有状态的 `stream_filter_thinking` 助手会在实时视图中抑制 `...` 区域,而流式传输后的 `clean_model_response` 则继续根据完整的原始文本填充推理展开器。 | | AI 增强对手开关 | - 新的页面级开关:在威胁组织和自定义场景页面上添加了“AI 增强对手”开关,该开关会重新构建生成的场景,使对手利用 AI 来加速和增强*相同的*杀伤链——降低技能门槛、压缩时间线、自治编排和并行扩展——而不是引入新技术。

- 基于Anthropic 的研究:基于 Anthropic 的 [LLM ATT&CK Navigator](https://red.anthropic.com/2026/attack-navigator/) 研究,该研究发现现实世界网络威胁中最显著的变化是现有技术的加速和编排,而不是新技术的出现。

- 追踪可见性:在 LangSmith 中为场景添加了 `ai_enhanced` 标签,以便可以过滤 AI 提升的生成结果并与基线运行进行比较。

- 在 AI 内部威胁页面上特意跳过:该页面的威胁行为者已经是前沿 AI agent,因此“AI 增强”的表述将是多余的。 | | 错误修复和改进 | - 此版本包含多项针对场景页面和侧边栏的 UI 细节优化和渲染修复。 | ### v0.11 | 有哪些新功能? | 为什么有用? | | ----------- | ----------------- | | MITRE ATLAS 框架支持 | - AI/ML 威胁覆盖:AttackGen 现在支持 MITRE ATLAS(AI 系统对抗性威胁环境)框架,能够生成针对 AI 和机器学习系统威胁的事件响应场景。

- 基于案例研究的场景:基于 45 个记录在案的真实世界 AI 攻击案例研究生成场景,包括 14 起实际事件和 31 项研究演练,涵盖 prompt 注入、模型提取和数据投毒等攻击。

- 147 项 ATLAS 技术:访问涵盖 16 项 AI 特定战术的完整 ATLAS 技术库,包括 AI 模型访问、AI 攻击暂存以及为 AI 系统适配的传统攻击阶段。

- AI 特定模板:针对常见 AI/ML 攻击的六个全新自定义场景模板:模型规避、数据投毒、模型提取、Prompt 注入、LLB 越狱和 AI 供应链攻击。 | | 将 MITRE ATT&CK 数据更新至 v18.1 | - 最新威胁情报:AttackGen 现在使用 MITRE ATT&CK v18.1 数据,确保生成的场景反映威胁行为者使用的最新战术、技术和程序。

- 扩展的 Enterprise 覆盖范围:Enterprise 威胁组织列表从 150 多个增长到 187 个,包括新跟踪的行为者。

- 扩展的 ICS 覆盖范围:ICS 威胁组织列表从 7 个增加到 16 个,为工业控制系统场景提供了更好的覆盖。 | | 更新了 LLM 模型支持 | - OpenAI:增加了 GPT-5.2 和 GPT-5.2 Pro 模型;通过移除已弃用的 o 系列推理模型精简了模型列表。

- Anthropic:更新至 Claude 4.5 系列,包括 Sonnet 4.5、Haiku 4.5 和 Opus 4.5。

- Google AI:增加了 Gemini 3 Pro 和 Flash 预览模型;更新了 Gemini 2.5 选项。

- Groq:增加了 GPT-OSS 120B 和 20B 模型,以实现高性能推理。

- Mistral:更新为带日期的模型版本(Large 2512、Medium 2508、Small 2506);增加了 Ministral 14B。 | | 错误修复 | - 修复了 Google AI 响应处理:更新了响应解析以处理较新 Gemini 模型返回的结构化内容格式,确保正确提取和显示场景文本。

- 修复了 ICS 矩阵错误消息:使用 ICS 矩阵时,错误消息现在会正确显示“ICS ATT&CK”而不是“Enterprise ATT&CK”。

- 改进了空技术处理:当威胁组织没有关联技术时添加了优雅处理,防止出现次生错误。 | ### v0.10.1 | 有哪些新功能? | 为什么有用? | | ----------- | ----------------- | | LangChain v1.0 兼容性 | - 修复了破坏性的导入更改:将所有从已弃用的 `langchain.prompts.chat` 的导入更新为 `langchain_core.prompts`,确保与 LangChain v1.0 的兼容性并防止出现 `ModuleNotFoundError` 问题。这在 LangChain 生态系统演进时保持了稳定性。 | | 全面的安全基础设施 | - 自动化安全扫描:引入了 GitHub Actions 工作流,用于使用 Bandit(Python 代码分析)、CodeQL(漏洞检测)、pip-audit(依赖扫描)、Safety(已知漏洞)、Gitleaks(机密检测)和 Trivy(Docker 镜像扫描)进行持续的安全监控。

- 安全最佳实践文档:添加了全面的 SECURITY.md,涵盖了支持的版本、漏洞报告、API 密钥管理、数据隐私考虑和部署安全指导。

- 增强的 README 安全部分:扩展了安全指南,为 API 密钥保护、数据隐私考虑和负责任的部署实践明确了注意事项和操作禁忌。 | | Docker 改进 | - 增强安全性:更新了 Dockerfile 以非 root 用户身份运行,改善了容器安全姿态。

- 支持 Docker Compose:添加了 docker-compose.yml,简化了多服务部署和本地开发环境设置。

- 更好的构建优化:增强了 .dockerignore 以减小镜像大小并防止将敏感文件包含在容器镜像中。

- 全面的配置模板:使用所有支持的 API 密钥(OpenAI、Anthropic、Azure、Google、Mistral、Groq)更新了 ..example,简化了初始设置。 | | 错误修复 | - Ollama API 超时:向 Ollama API 请求添加了超时配置,以防止连接挂起。

- Safety CLI 更新:从已弃用的 `safety check` 命令更新为新的 `safety scan` 命令,确保安全扫描功能持续可用。

- Bandit 配置:更正了 Bandit 安全扫描配置,以实现更准确的 Python 代码分析。 | ### v0.10 | 有哪些新功能? | 为什么有用? | | ----------- | ----------------- | | OpenAI Responses API 集成 | - 下一代 API:AttackGen 现在对所有支持的模型使用 OpenAI 最新的 Responses API,提供了统一且增强的接口。 | | 最新前沿模型支持 | - GPT-5 集成:增加了对 OpenAI 最新 GPT-5 系列模型的支持,包括 gpt-5、gpt-5-mini 和 gpt-5-nano,为场景生成提供了最先进的 AI 能力。

- Claude Sonnet 4.5:增加了对 Anthropic 最新 Claude Sonnet 4.5 (claude-sonnet-4-5-20250929) 模型的支持,同时更新了 Claude 模型版本,包括 Claude Opus 4.1 (claude-opus-4-1-20250805)。 | | 错误修复和改进 | - 修复了 Streamlit 弃用警告:将已弃用的 `use_container_width` 参数替换为新的 `width` 参数,以确保与未来 Streamlit 版本的兼容性。

- 增强的文档:使用针对未来开发工作的全面指导更新了 CLAUDE.md,并添加了详细的架构信息。 | ### v0.9 | 有哪些新功能? | 为什么有用? | | ----------- | ----------------- | | 扩展的模型支持 | - 最新 OpenAI 推理模型:AttackGen 现在支持 OpenAI 的最新推理模型,包括 o4-mini(最新推理模型)、o3/o3-mini 和 o1-pro(增强的推理能力)。这些模型擅长生成需要深度逻辑思考的复杂场景。

- GPT-4.1 系列:增加了对 GPT-4.1 系列模型(gpt-4.1、gpt-4.1-mini 和 gpt-4.1-nano)的支持,提供了通用 AI 能力的最新改进,并为对成本敏感的用例提供了更轻量的选择。

- Anthropic Claude 模型:增加了对 Anthropic 的 Claude 模型的全面支持,包括 claude-opus-4-20250514、claude-sonnet-4-20250514、claude-3-7-sonnet-latest 和 claude-3-5-haiku-latest。这些模型在生成详细且具备上下文感知能力的事件响应场景方面表现出色,具有强大的推理能力。

- 更新的 Google AI 模型:刷新了 Google AI 模型选择,包括最新的 Gemini 2.5 预览模型(gemini-2.5-flash-preview-05-20 和 gemini-2.5-pro-preview-05-06)以及 Gemini 2.0 模型,可使用 Google AI 技术的最新改进。

- 改进的模型组织:重新组织了模型选择下拉菜单,优先显示较新的模型,并更新了描述以清晰区分不同的模型类型和能力。 | | 增强的技术选择逻辑 | - 更稳健的组织处理:修复了空的威胁行为者组织在技术选择期间可能导致错误的问题。现在该工具通过返回一个空的 DataFrame 来正确处理空的组织,即使在威胁行为者数据有限的情况下也能确保稳定运行。

- 阶段名称保留:改进了技术选择过程,以在输出中正确包含“阶段名称”,在整个场景生成过程中维护杀伤链阶段信息。这确保了生成的场景能够保持关于每种技术属于攻击的哪个阶段的正确上下文。 | | 开发环境改进 | - 增强的 .gitignore:除了 `venv` 之外,还增加了对 `.venv` 虚拟环境目录的支持,适应了不同开发者的偏好和 Python 环境管理工具。

- 代码清理:移除了场景生成脚本中未使用的导入,提高了代码可维护性并减少了潜在的混淆。 | ### v0.8 | 有哪些新功能? | 为什么有用? | | ----------- | ----------------- | | 自定义 OpenAI 兼容的 API Endpoint | - 提高了灵活性:AttackGen 现在支持自定义的 OpenAI 兼容 API endpoint,例如 Anyscale、Together AI 或任何自托管的兼容 API。此功能允许用户利用官方支持的提供商之外更广泛的模型和服务。

- 自托管支持:拥有自己的 OpenAI 兼容模型部署的组织现在可以将 AttackGen 直接连接到这些 endpoint。

- 控制模型选择:用户可以为任何兼容的服务指定 base URL、模型名称和 API 密钥,从而更好地控制用于场景生成的模型和 endpoint。 | | 更新的模型选择 | - 访问最新模型:OpenAI 模型选择现在包括新的 GPT-4.1 系列模型(gpt-4.1、gpt-4.1-mini、gpt-4.1-nano),在编码、指令遵循和长上下文任务中提供了更好的性能。

- 扩展的 Gemini 支持:增加了对最新 Gemini 2.5 Pro Preview、2.0 Flash 和 2.0 Flash Lite 模型的支持。 | ### v0.7 | 有哪些新功能? | 为什么有用? | | ----------- | ----------------- | | Groq API 集成 | - 增强的性能:AttackGen 现在支持 Groq 的高性能 API,可以访问 llama-3.3-70b-versatile 和 deepseek-r1-distill-llama-70b 等模型。此集成提供了快速的推理时间,同时保持了高质量的生成场景。

- 改进的模型输出显示:对于像 DeepSeek 这样在其输出旁边提供推理过程的模型,AttackGen 现在会在可折叠的展开器小部件中显示此推理过程。这允许用户在需要时查看模型的思考过程,同时保持主场景输出的整洁和专注。 | | 更新的 OpenAI 模型支持 | - 最新模型:AttackGen 现在支持 OpenAI 最新的 o3 推理模型和 o1 模型的 GA(正式发布)版本,取代了以前的预览版本。这些更新提供了对更稳定和改进的场景生成模型的访问。 |
点击查看早期版本的发布说明。 ### v0.6 | 有哪些新功能? | 为什么有用? | | ----------- | ----------------- | | 支持 OpenAI 全新的“推理”模型 | - 增强的场景生成:AttackGen 现在支持 OpenAI 全新的“推理”模型(o1-preview 和 o1-mini),能够生成高度详细且细致入微的事件响应场景。这些模型在场景创建中提供了更好的连贯性和深度。 | | MITRE ATT&CK ICS 矩阵支持 | - 扩大的范围:除了 Enterprise 矩阵外,AttackGen 现在还支持使用 MITRE ATT&CK ICS(工业控制系统)矩阵生成事件响应测试场景。这允许用户创建针对工业和关键基础设施环境量身定制的场景。 | | 将 ATT&CK 源数据更新至 v15.1 | - 最新威胁情报:该工具现在使用最新的 MITRE ATT&CK 数据 (v15.1),确保生成的场景反映威胁行为者使用的最新已知战术、技术和程序。 | | 更新的威胁行为者组织数据 | - 全面的覆盖范围:组织数据已更新,包含 MITRE ATT&CK 中跟踪的最新组织,例如 Scattered Spider。这确保用户能够基于可用的最新威胁行为者信息生成场景。 | | 从 .env 文件加载 API 密钥/机密 | - 增强的安全性:用户现在可以将 API 密钥和其他敏感信息存储在 .env 文件中,提高了安全性并使在不同环境中管理凭证变得更加容易。 | ### v0.5.2 | 有哪些新功能? | 为什么有用? | | ----------- | ---------------- | | GPT-4o mini 模型支持 | - 扩展的模型选项:AttackGen 现在支持使用 OpenAI 的 GPT-4o mini 模型。GPT4-o mini 是一款极具成本效益的小型模型。 | | 更新了 Google AI API 的模型选择 | - 扩展的模型选项:AttackGen 现在支持 Gemini 1.5 Pro 的稳定版和预览版。 | ### v0.5.1 | 有哪些新功能? | 为什么有用? | | ----------- | ---------------- | | GPT-4o 模型支持 | - 增强的模型选项:AttackGen 现在支持使用 OpenAI 的 GPT-4o 模型。GPT4-o 是 OpenAI 的旗舰模型,生成场景的速度是 GPT-4 的两倍,但成本仅为后者的一半。 | ### v0.5 | 有哪些新功能? | 为什么有用? | | ----------- | ---------------- | | AttackGen Assistant | - 迭代的场景优化:全新的聊天界面允许用户与他们生成的事件响应场景进行交互,从而无需从头重新生成场景即可轻松对其进行更新和询问。此功能实现了场景开发的迭代方法,用户可以根据 AI 助手的回复来优化和改进他们的场景。

- 上下文辅助:AI 助手会根据生成场景的上下文和对话历史来回复用户的查询。这确保了助手的回复在优化场景时是相关且有用的。 | | 自定义场景的快速启动模板 | - 快速生成场景:用户现在可以基于常见网络安全事件(例如网络钓鱼攻击、勒索软件攻击、恶意软件感染和内部威胁)的预定义模板快速生成自定义事件响应场景。此功能使得无需选择特定的 ATT&CK 技术即可创建真实的场景变得更加容易。

- 简化的工作流:模板选择无缝集成到自定义场景生成过程中。用户可以选择一个模板,这会自动填充相关的 ATT&CK 技术,然后根据需要进一步自定义场景。 | | Google AI API 集成 | - 扩展的模型选项:AttackGen 现在支持使用 Google 的 Gemini 模型来生成事件响应场景。此集成扩大了用户可用的高质量模型范围,使他们能够利用 Google 的 AI 能力来创建真实且多样化的场景。 | ### v0.4 | 有哪些新功能? | 为什么有用? | | ----------- | ---------------- | | Mistral API 集成 | - 替代的模型提供商:用户现在可以利用 Mistral AI 模型来生成事件响应场景。此集成提供了 OpenAI 和 Azure OpenAI Service 模型之外的替代方案,允许用户针对其特定用例探索和比较不同语言模型的性能。 | | 使用 Ollama 支持本地模型 | - 本地模型托管:AttackGen 现在通过与 Ollama 集成来支持使用本地托管的 LLM。此功能对于有严格数据隐私要求或希望将数据保留在本地(on-premises)的组织特别有用。请注意,此功能不适用于在 Streamlit Community Cloud 上托管的 AttackGen 版本用户:https://attackgen.streamlit.app | | 可选的 LangSmith 集成 | - 提高的灵活性:与 LangSmith 的集成现在是可选的。如果未提供 LangChain API 密钥,用户将看到一条提示信息,指出运行将不会被 LangSmith 记录,而不是抛出错误。此更改改善了整体用户体验,并允许用户在没有 LangSmith 的情况下继续使用 AttackGen。 | | 各种错误修复和改进 | - 增强的用户体验:此版本包含多项错误修复和用户界面改进,使 AttackGen 更加用户友好且稳健。 | ### v0.3 | 有哪些新功能? | 为什么有用? | | ----------- | ---------------- | | Azure OpenAI Service 集成 | - 增强的集成:除了标准的 OpenAI API 外,用户现在还可以选择使用部署在 Azure OpenAI Service 上的 OpenAI 模型。此集成提供了无缝且安全的解决方案,利用已建立的商业和保密协议,将 AttackGen 纳入现有的 Azure 生态系统。

- 提高的数据安全性:从 Azure 运行 AttackGen 可确保应用程序描述和其他数据保留在 Azure 环境中,这使其成为在其威胁模型中处理敏感数据的组织的理想选择。 | | 面向 Azure OpenAI Service 的 LangSmith | - 增强的调试:现在可用于使用 Azure OpenAI Service 生成的场景的 LangSmith 追踪。此功能提供了一个强大的工具,用于调试、测试和监控模型性能,允许用户深入了解模型的决策过程并识别生成场景的潜在问题。

- 用户反馈:LangSmith 还会收集用户对使用 Azure OpenAI Service 生成的场景质量的反馈,为模型性能和用户满意度提供有价值的洞察。 | | OpenAI API 的模型选择 | - 灵活的模型选项:用户现在可以从 OpenAI API endpoint 提供的多个模型中进行选择,例如 `gpt-4-turbo-preview`。这允许对不同的语言模型进行更大的自定义和试验,使用户能够找到最适合其特定用例的模型。 | | Docker 容器镜像 | - 易于部署:AttackGen现在以 Docker 容器镜像的形式提供,使得在一致且可重现的环境中部署和运行应用程序变得更加容易。此功能对于希望在容器化环境中运行 AttackGen 的用户,或者希望将应用程序部署在云平台上的用户特别有用。 | ### v0.2 | 有哪些新功能? | 为什么有用? | | ----------- | ---------------- | | 基于 ATT&CK 技术的自定义场景 | - 面向成熟的组织:如果您的组织拥有高级威胁情报能力,此功能尤其有用。例如,如果您正在监控一个新发现或鲜为人知的威胁行为者组织,您可以针对该组织使用的技术量身定制事件响应测试场景。

- 集中的测试:或者,使用此功能将您的事件响应测试集中在网络杀伤链的特定部分或某些 MITRE ATT&CK 战术上,如“横向移动”或“数据泄露”。这对于希望评估和改善其防御姿态特定领域的组织非常有用。 | | 关于生成场景的用户反馈 | - 收集反馈对于长期跟踪模型性能至关重要,有助于突出场景生成任务中的优势和劣势。 | | 改进了对丢失 API 密钥的错误处理 | - 改善的用户体验。 | | 用新的 `st.status` 小部件替换了 Streamlit 的 `st.spinner` 小部件 | - 为长时间运行的进程(即场景生成)提供了更好的可见性。 | ### v0.1 初次发布。
## 要求 - 较新版本的 Python。 - Python 包:`streamlit`、`litellm`、`mitreattack-python`、`pandas`(完整列表请参见 `requirements.txt`)。 - OpenAI API 密钥(或您选择的模型提供商的 API 密钥)。 - LangChain API 密钥(可选)——有关更多详细信息,请参阅下方的 [LangSmith 设置](#langsmith-setup)部分。 - MITRE ATT&CK 和 ATLAS 数据文件。这些文件随代码库附带(位于 `./data/` 中),因此无需手动下载(请参阅[数据设置](#data-setup))。 - 用于存储 API 密钥和机密的 `.env` 文件(有关详细信息,请参阅[安装](#installation)部分)。 ## 安装 ### 选项 1:克隆代码库 1. 克隆此代码库: ``` git clone https://github.com/mrwadams/attackgen.git ``` 2. 进入克隆的代码库目录: ``` cd attackgen ``` 3. 安装所需的 Python 包: ``` pip install -r requirements.txt ``` ### 选项 2:使用 Docker 1. 从 Docker Hub 拉取 Docker 容器镜像: ``` docker pull mrwadams/attackgen ``` ## LangSmith 设置 如果您不想使用 LangSmith,您仍然必须保留一个 `.streamlit/secrets.toml` 文件,但您可以将 `LANGCHAIN_API_KEY` 字段留空。 ## 数据设置 AttackGen 所需的 MITRE ATT&CK(Enterprise + ICS)和 ATLAS 数据集已提交至代码库的 `./data/` 目录下,因此新克隆的代码无需额外的下载步骤即可直接运行。这些文件包括 `enterprise-attack.json`、`ics-attack.json`、`stix-atlas.json`、`groups.json`、`groups_ics.json` 和 `atlas-case-studies.json`。 如果您想将它们刷新到最新的上游版本,可以从 [MITRE ATT&CK STIX 数据库](https://github.com/mitre-attack/attack-stix-data)(以及 [ATLAS 数据库](https://github.com/mitre-atlas/atlas-data))重新下载 STIX 包,并替换 `./data/` 中的文件。 ## 运行 AttackGen 完成数据设置后,您可以使用以下命令运行 AttackGen: ``` streamlit run 00_👋_Welcome.py ``` ## 用法 ### 运行 AttackGen #### 选项 1:在本地运行 Streamlit 应用 1. 运行 Streamlit 应用: ``` streamlit run 00_👋_Welcome.py ``` 2. 打开您的 Web 浏览器并访问 Streamlit 提供的 URL。 3. 使用该应用生成标准或自定义的事件响应场景(详见下文)。 #### 选项 2:使用 Docker 容器镜像 1. 运行 Docker 容器: ``` docker run -p 8501:8501 mrwadams/attackgen ``` 此命令将启动容器,并将容器内的 8501 端口(Streamlit 应用的默认端口)映射到您的主机。 2. 打开您的 Web 浏览器并访问 `http://localhost:8501`。 3. 使用该应用生成标准或自定义的事件响应场景(详见下文)。 ### 生成场景 #### 标准场景生成 1. 选择是使用 OpenAI API、Anthropic API、Google AI API、Mistral API、Groq API 还是自定义的 OpenAI 兼容 endpoint(用于 Ollama、LM Studio、Azure OpenAI 部署、OpenRouter 等)。 2. 输入所选提供商的 API 密钥。对于自定义提供商,还需输入 base URL 和模型名称。 3. 从下拉菜单中选择您首选的模型。 4. 从下拉菜单中选择您组织的行业和规模。 5. 导航到 `Threat Group Scenarios` 页面。 6. 选择您要模拟的威胁行为者组织。 7. 点击 'Generate Scenario' 以创建事件响应场景。 8. 使用 👍 或 👎 按钮对生成场景的质量提供反馈。注意:只有在 `.streamlit/secrets.toml` 文件中设置了 `LANGCHAIN_API_KEY` 的值时,反馈按钮才会出现。 #### 自定义场景生成 1. 选择是使用 OpenAI API、Anthropic API、Google AI API、Mistral API、Groq API 还是自定义的 OpenAI 兼容 endpoint。 2. 输入所选提供商的 API 密钥。对于自定义提供商,还需输入 base URL 和模型名称。 3. 从下拉菜单中选择您首选的模型。 4. 从下拉菜单中选择您组织的行业和规模。 5. 导航到 `Custom Scenario` 页面。 6. 使用多选框搜索并选择与您场景相关的 ATT&CK 技术。 7. 点击 'Generate Scenario',基于所选技术创建自定义的事件响应测试场景。 8. 使用 👍 或 👎 按钮对生成场景的质量提供反馈。注意:只有在 `.streamlit/secrets.toml` 文件中设置了 `LANGCHAIN_API_KEY` 的值时,反馈按钮才会出现。 #### AI 内部威胁场景生成 1. 选择您的模型提供商并输入相关的 API 密钥(对于 Azure OpenAI 部署或本地模型,请使用自定义提供商)。 2. 从下拉菜单中选择您首选的模型。 3. 从下拉菜单中选择您组织的行业和规模。 4. 导航到 `AI Insider Threat Scenarios` 页面。 5. (可选)选择一个模板,为常见场景预填充部署原型、威胁类别和 STRIDE 威胁。 6. 选择反映 AI agent 在您组织内自治运行程度的**部署原型**(例如:监督助理、自治 agent、完全自治集群)。这是决定 agent 威胁面的主要因素。 7. 选择一个或多个**威胁类别**(凭证攻陷、供应链破坏、数据泄露、基础设施破坏、欺骗与规避)。 8. (可选)将场景缩小至特定的 **STRIDE 威胁**。如果留空,将自动使用与所选类别关联的 STRIDE 威胁。这些是基础论文中提到的 23 项 STRIDE 威胁。 9. (可选)调整 prompt 中强调的**前沿 agent 能力**。 10. 点击 'Generate Scenario'。输出内容包括映射到 STRIDE 标识符的攻击叙述、检测机会以及对齐 NIST CSF 的建议控制措施。 11. 使用 👍 或 👎 按钮提供反馈(需要 LANGCHAIN_API_KEY)。 此页面背后的威胁模型在 [*Actions Speak Louder Than Tokens: An Insider Threat Model for Frontier AI Agents*](https://ai-insider-threat.matt-adams.co.uk) 中有所描述。 请注意,生成场景可能需要一分钟左右的时间。场景生成后,您可以在应用上查看它,也可以将其作为 Markdown 文件下载。 ## 安全最佳实践 AttackGen 专为本地单用户部署而设计。使用该工具时: ### 保护您的 API 密钥 **您的 API 密钥是敏感凭证,可能会在您的账户上产生费用。** ✅ **宜:** - 通过 UI 输入 API 密钥(它们会保留在您的浏览器会话中) - 为了在您的个人计算机上方便使用,可以使用 .env 文件 - 在您的 LLM 提供商控制台中设置消费限额 - 定期检查您的 API 使用情况和费用 - 在公用计算机上使用时清除会话 ❌ **忌:** - 将 .env 文件提交到版本控制(已在 .gitignore 中忽略) - 分享可见 API 密钥的截图 - 在不受信任/受损的系统上运行 AttackGen - 将您的 API 密钥分享给他人 - 忽视意外的 API 费用 ### 数据隐私考虑事项 当您生成场景时,AttackGen 会将数据发送给您选择的 LLM 提供商: - 组织详细信息(行业、公司规模) - 选定的 ATT&CK 技术 - 自定义输入文本 - 生成的场景(通过 AttackGen Assistant) **这意味着:** - OpenAI、Anthropic 等可能会根据其隐私政策记录这些数据 - 考虑在演示时使用通用/虚构的组织详细信息 - 查看您 LLM 提供商的数据保留和隐私政策 - 对于敏感的用例,请考虑提供更严格隐私保证的提供商 ### 对于团队/组织部署 如果为多个用户部署 AttackGen(非默认用例): - 添加身份验证/授权(默认不包含) - 使用机密管理服务来管理 API 密钥 - 部署在 VPN 或内部网络之后 - 查看此威胁模型文档以获取其他注意事项 - 考虑数据驻留和合规性要求 ### 依赖安全性 我们维护依赖项并监控漏洞: - 依赖项会定期更新 - 安全公告会在 GitHub Issues 中进行跟踪 - 运行 `pip list --outdated` 检查更新 - 考虑使用 `pip-audit` 进行漏洞扫描 ### 报告安全问题 发现安全问题?请负责任地报告: - 通过 GitHub 的[私有漏洞报告](https://github.com/mrwadams/attackgen/security/advisories/new)创建安全公告 - 不要公开发布安全问题 - 我们将在 48 小时内予以确认 - 修复将被优先处理并快速发布 ## 许可证 本项目基于 [GNU GPLv3](https://choosealicense.com/licenses/gpl-3.0/) 授权。
标签:Kubernetes, Petitpotam, Spyse API, Sysdig, 请求拦截, 逆向工具