Pr0cella/AttackFlow

GitHub: Pr0cella/AttackFlow

一款将 MITRE ATT&CK、CAPEC、CWE 和 STIX 2.1 映射到 Unified Kill Chain 的攻击链可视化编辑器,支持离线使用和丰富的元数据标注。

Stars: 1 | Forks: 1

# ![](https://raw.githubusercontent.com/Pr0cella/AttackFlow/master/favicon.ico) AttackFlow - Kill Chain 编辑器与可视化工具 一款用于创建内容丰富的网络杀伤链(Cyber Kill Chain)评估的编辑器,通过将 MITRE ATT&CK、CAPEC、CWE 和 STIX 2.1 对象映射到 Unified Kill Chain 框架,并用额外的元数据丰富阶段条目。结合灵活的 TTP 映射、原子可观测数据、CVE/CVSS 上下文和 STIX 情报对象,对复杂的攻击场景进行可视化和评估。 ### 开发中 ![Version](https://img.shields.io/badge/version-2.9.1-blue) [![MITRE ATT&CK® 18](https://img.shields.io/badge/MITRE%20ATT%26CK®-v18-red)](https://attack.mitre.org/versions/v18/) ![License](https://img.shields.io/badge/license-Apache%202.0-green) ![Dependencies](https://img.shields.io/badge/dependencies-none-brightgreen) ## 功能 ### 实现 - **原生 CSS & JavaScript** - 核心模块无外部依赖或任何第三方库。 - 无构建步骤,无包管理器运行时依赖,可在任何浏览器中运行 - **离线操作** - 无 CDN 或远程运行时请求;模块依赖在本地供应,模块可被禁用。 - 可通过在浏览器中打开 `index.html` 文件离线使用。 - 离线模块通信在 `file://` 模式下使用加固的 iframe IPC 桥接(`MessageChannel`、nonce 绑定、白名单 payload)。默认在 `config.js` 中禁用。参见 [本地 iframe IPC](#local-iframe-ipc)。 - 如果 IPC 桥接被禁用或不可用,AttackFlow 会回退到本地资源选择以获取所需的 JSON 数据集。 - **STIX 可视化模块** — STIX Bundle 的模块化可视化 - 可视化模块可通过 `config.js` 标志禁用。参见 [STIX 可视化开关](#STIX-Visualizer-Toggle) - 有关可视化器使用的捆绑运行时依赖列表,请参阅:[STIX 可视化依赖项](#Bundled-STIX-Visualizer-Dependencies) - **轻量级主题引擎** - 通过各视图间的共享设置(通过 `config.js`)切换可配置的亮/暗主题 ### 资源语料库 - **Unified Kill Chain** — 将实体映射到 IN → THROUGH → OUT 阶段 - **多域 ATT&CK** — 跨越 Enterprise、Mobile 和 ICS 的 898 项技术 - **CAPEC/CWE 集成** — 链接攻击模式和弱点 - **STIX 2.1 对象** — 创建和管理所有 19 种已配置的 SDO 类型(包括 `x-custom`) ### 导入与共享 - **导入/导出** — JSON 共享、CSV 导出(含缓解措施行)和 STIX 2.1 bundle 导出(含缓解措施和关系) - **STIX Bundle 导出** — 将已分配的技术导出为 `attack-pattern` SDO,缓解措施导出为 `course-of-action` SDO 和 `mitigates` SRO,使用确定性 UUIDv5 ID - **STIX Bundle 导入** — 导入多个 STIX 2.1 bundle 以提取 SDO,并完整保留属性(可通过 `config.js` 配置在导入 bundle 或 kill chain 时自动清除)。默认聚合数据。 - **Navigator Layers** — 导入 ATT&CK Navigator JSON 导出文件 ### 编辑器 - **拖放** — 直观地将实体分配到各个阶段 - **分组** — 在阶段内将项目组织成可折叠的命名组 - **丰富的元数据** — 注释、超链接、可观测数据、多 CVE/CVSS 引用 - **评分与置信度** — 按严重程度和评估置信度对项目进行评级 - **紧凑模式** — 仅含 ID 的紧凑标签以适应大型 kill chain,可折叠侧边栏及隐藏空阶段 - **STIX 编辑器** — 使用词汇下拉菜单编辑每种 SDO 类型的所有规范定义字段 ![预览](/docs/images/preview.png) #### Kill Chain 关系 - **可浏览的映射浏览器** — 在专用视图中浏览每个阶段的 Kill Chain 相关 CAPEC → CWE → ATT&CK → Mitigation 模式,并提供阶段详情模态对话框 ![关系视图](/docs/images/relations.png) ### 关系浏览器 - **集成资源语料库浏览器** — 探索和搜索完整的 ATT&CK ↔ CAPEC ↔ CWE ↔ Mitigation 语料库 - **技术交叉引用** — 项目关系及描述中通过 ID 引用的技术链接到关系浏览器 ![浏览器视图](/docs/images/explorer.png) ### STIX 编排器 #### 交互式 STIX 对象/Bundle 编辑器与可视化工具 ![编排器视图](/docs/images/visualizer.png) ## 快速开始 关系浏览器是第二个主视图,允许您在不先分配项目的情况下调查 ATT&CK ↔ CAPEC ↔ CWE ↔ Mitigations。使用头部导航切换视图,单击任何节点以在右侧面板中加载其详细信息,并打开缓解措施链接以在上下文中探索跨框架关系。 1. 克隆或下载此代码库 2. 在浏览器中打开 `index.html`,或部署到 Web 服务器 3. 在左侧边栏中浏览技术 4. 将项目拖放到 kill chain 阶段上 5. 单击图中的项目以添加元数据 6. 切换到 **STIX** 选项卡以创建或导入 STIX 2.1 对象 7. 点击 **Import STIX Bundle** 加载 STIX 2.1 bundle JSON(例如,Operation Midnight Eclipse bundle) 8. 使用头部导航切换到关系浏览器 9. 根据需要在头部切换亮/暗主题 10. 需要时启用紧凑模式以进行密集布局 11. 将您的攻击链导出为 JSON、CSV 或 STIX Bundle ### 快速开始(本地 `file://` 模式) 1. 可选地通过 `CONFIG.ConfigIframeIPC.enableLocalIframeIPC = true` 启用本地 iframe IPC。 2. 直接在浏览器中打开 `index.html`。 3. 如果收到提示,选择您的本地 `resources/*.json` 文件(或完整的 resources 目录)以填充语料库。 ## 用例 有关详细信息,请参阅用例 [README](docs/Usecases/README.md)。 1. 事件响应 TTP 映射 2. 红队行动规划 3. 蓝队防御态势评估 4. CTI 报告构建 5. 以漏洞为中心的风险分析 6. 紫队演练规划与复盘 7. 勒索软件 Playbook 文档化 8. 供应链攻击分析 ## 测试 - **Demo kill chain**:导入 [examples/demo.json](examples/demo.json) 以演练所有元数据字段(CVE/CVSS、observables、链接、置信度)和多阶段覆盖。 - **Grouping demo**:导入 [examples/grouping-demo.json](examples/grouping-demo.json) 以查看展示分组功能的勒索软件 TTP 映射。 - **STIX demo**:导入 [examples/stix-demo.json](examples/stix-demo.json) 以查看跨 UKC 阶段包含所有 19 种 SDO 类型的完整 STIX 2.1 展示。 - **STIX bundle**:通过 STIX 选项卡的 "Import STIX Bundle" 按钮导入 [examples/Operation-Midnight-Eclipse-stix-bundle.json](examples/Operation-Midnight-Eclipse-stix-bundle.json) 以测试 STIX bundle 解析(跨 19 种类型的 25 个 SDO + 18 个阶段关系 SRO)。 ## 项目结构 ``` ├── index.html # Main application ├── explorer.html # Relationship Explorer view ├── stix-builder.html # STIX Composer (STIX 2.1 Bundle Creator & Visualizer) ├── stix-builder.config.js # STIX Composer configuration & STIX 2.1 spec reference ├── config.js # Centralized configuration │ # (paths, colors, imports, settings) ├── stix-config.js # STIX 2.1 SDO type definitions and vocabularies ├── examples/* # Sample kill chain exports ├── docs/ │ └── Usecases/* # Usecase documentation and sample exports ├── scripts/ │ ├── extract-attack.py # ATT&CK STIX bundle parser │ ├── extract-data.py # CAPEC/CWE XML parser │ └── sanitize-json.py # Remove markup from data files ├── frameworks/ # Source data (configure paths in config.js) │ ├── ATTCK/ │ │ ├── ENTERPRISE.json # Enterprise ATT&CK STIX bundle │ │ ├── MOBILE.json # Mobile ATT&CK STIX bundle │ │ └── ICS.json # ICS ATT&CK STIX bundle │ ├── CAPEC/ │ │ ├── DOMAINS.xml # CAPEC domains view │ │ └── MECHANISMS.xml # CAPEC mechanisms view │ └── CWE/ │ ├── ALL.xml # Full CWE list │ ├── HARDWARE.xml # CWE hardware design weaknesses │ └── SOFTWARE.xml # CWE software development weaknesses └── resources/ # Generated data (do not edit directly) ├── attack-techniques.json # ATT&CK library (898 techniques) ├── capec-full.json # CAPEC attack patterns ├── cwe-full.json # CWE weaknesses ├── capec-to-technique.json # CAPEC → ATT&CK mappings ├── cwe-to-capec.json # CWE → CAPEC mappings ├── Nav_Layer_ENTERPRISE.json # Enterprise Navigator layer ├── Nav_Layer_MOBILE.json # Mobile Navigator layer └── Nav_Layer_ICS.json # ICS Navigator layer ``` ## Unified Kill Chain 阶段 | 阶段 | 步骤 | |-------|--------| | **IN** (Initial Foothold) | Reconnaissance, Resource Development, Delivery, Social Engineering, Exploitation, Persistence, Defense Evasion, Command & Control | | **THROUGH** (Network Propagation) | Pivoting, Discovery, Privilege Escalation, Execution, Credential Access, Lateral Movement | | **OUT** (Action on Objectives) | Collection, Exfiltration, Impact, Objectives | ## 元数据字段 每个已分配的项目支持: | 字段 | 描述 | |-------|-------------| | **Score** | 严重程度评级:Unclassified, Low, Medium, High, Critical | | **Confidence** | 评估置信度:0% (Unknown) 到 100% (High) | | **CVE-ID(s)** | 漏洞引用(例如,CVE-2024-12345) | | **CVE Score** | 每个CVE的可选评分(0.0–10.0) | | **CVSS Vector** | 每个CVE的可选 CVSS 3.1 向量字符串 | | **Comments** | 自由文本注释 | | **Hyperlinks** | 带标签的外部引用 | | **Observables** | 威胁指标(IP、哈希、域名等) | ## 数据来源 - [MITRE ATT&CK](https://attack.mitre.org/) — 对手战术和技术 - [MITRE ATT&CK Navigator](https://github.com/mitre-attack/attack-navigator) - [CAPEC](https://capec.mitre.org/) — 常见攻击模式枚举 - [CWE](https://cwe.mitre.org/) — 常见弱点枚举 - [STIX 2.1](https://docs.oasis-open.org/cti/stix/v2.1/) — 结构化威胁信息表达 - [Unified Kill Chain](https://www.unifiedkillchain.com/) — 攻击阶段框架 ## 安全 [安全策略](SECURITY.md) AttackFlow 实施纵深防御保护并遵循安全设计原则。 (注意:应用程序尚不适合生产环境 - 可能仍包含易受攻击的组件) 如果您发现任何安全问题或对进一步改善应用程序安全和缓解利用场景有建议,请随时创建 issue / pull request 或直接联系我。 - **输入阻断** — 危险字符(`` < > [ ] { } " ' ; -- ` ``)在输入层级被阻断 - **输出编码** — 所有用户提供的值在渲染前进行 HTML 编码 - **防御性渲染** — 动态模板渲染在插入前经过输出编码和清理 - **导入验证** — 对导入文件的大小、项目数量和模式进行验证 - **清理数据** — 源数据在提取过程中清除嵌入的标记 - **XXE 防护** — 安全的 XML 解析,禁用实体扩展 - **CSV 安全性** — 导出时的公式注入防护 ### 原型污染加固 导入路径和 JSON 处理包含明确的原型污染防御: - **危险键黑名单** — `__proto__`、`constructor` 和 `prototype` 键在解析/清理路径中被拒绝。 - **安全 JSON 解析** — 使用 reviver 解析不受信任的 JSON,该 reviver 会丢弃危险的原型键。 - **Null-prototype 累加器** — 清理后的对象收集器对不受信任的键映射使用 `Object.create(null)`。 - **自有属性检查** — 导入逻辑使用自有属性守卫进行动态字段复制,以避免继承属性滥用。 ### 本地 iframe IPC AttackFlow 包含一个用于本地使用的 IPC 桥接,位于 `index.html`(父页面)和嵌入式 `explorer.html` / `stix-builder.html` iframe 之间。这允许通过简单地在浏览器中打开 `index.html` 文件来使用所有功能,让 IPC 桥接处理 iframe 之间的所有数据交换。 注意:严格设计用于本地、非 Web 服务器使用(需要 `file://` 作为协议) - **目的**:主题同步和共享数据移交,以减少冗余的 iframe 加载路径。 - **范围**:专为本地使用模式设计(需要 `file://` 协议),由 `CONFIG.ConfigIframeIPC.enableLocalIframeIPC` 控制。 - **传输**:仅限通道的 `MessageChannel` 传输(无传统请求/响应回退路径)。 - **会话绑定**:通道消息需要每个 iframe 的会话 nonce。 - **验证**:IPC 消息类型/键已列入白名单;未知的键/类型被拒绝。 - **共享 payload 安全性**:`AF_SHARED_DATA` 在使用前经过模式检查、克隆和深度冻结。 - **隔离**:嵌入式 iframe 受沙盒保护(`allow-scripts allow-same-origin allow-modals`)。 - **节流**:父页面应用基于每个框架/每种请求类型的令牌桶速率限制。 - **弹性**:父页面引导程序使用有界的超时/重试/退避;子页面检测终端引导失败并在没有传统传输的情况下恢复。 在 `config.js` 中配置: - `CONFIG.ConfigIframeIPC.enableLocalIframeIPC` - `CONFIG.debugging.traceLocalIframeIPCLogs` - `CONFIG.debugging.localIframeIPCRateLimit.enabled` - `CONFIG.debugging.localIframeIPCRateLimit.refillPerSecond` - `CONFIG.debugging.localIframeIPCRateLimit.burst` - `CONFIG.debugging.localIframeIPCBootstrap.timeoutMs` - `CONFIG.debugging.localIframeIPCBootstrap.maxRetries` - `CONFIG.debugging.localIframeIPCBootstrap.retryBaseDelayMs` - `CONFIG.debugging.localIframeIPC.retryBackoffMultiplier` - `CONFIG.debugging.localIframeIPCBootstrap.maxRetryDelayMs` - `CONFIG.debugging.localIframeIPCBootstrap.graceMs` 有关简明的架构和威胁模型文档,请参阅 [IPC API 文档](docs/IPC_API-DOCS.md)。 有关跨运行时文件的完整维护者导向函数清单,请参阅 [Function Index](docs/FUNCTION_INDEX.md)。 有关自动生成的声明清单,请参阅 [Generated Function Index](docs/FUNCTION_INDEX.generated.md)。 ### STIX 可视化开关 集成的 STIX 可视化器可以通过配置完全禁用: - `CONFIG.visualizer.enabled = false` 禁用时,AttackFlow 通过不注入其自己的可视化器资源和捆绑的第三方可视化器库来阻止可视化器加载和执行。 ### 捆绑的 STIX 可视化器依赖项 [STIX 可视化器](https://github.com/oasis-open/cti-stix-visualization) 作为本地供应文件提供(无 CDN): - RequireJS `2.3.6` (`stix-visualization/stix_visualizer/require.js`) - RequireJS domReady plugin `2.0.1` (`stix-visualization/stix_visualizer/domReady.js`) - vis-network (stix2viz 使用的 vendored build;`stix-visualization/stix_visualizer/stix2viz/visjs/vis-network.js`) - stix2viz module (`stix-visualization/stix_visualizer/stix2viz/stix2viz/stix2viz.js`) ### 安全目标 1. **不执行来自本地或上游数据的不受信任的内容**(MITRE JSON/XML、用户导入的 layers)。 2. **防御性渲染**:所有 UI 输出在清理和编码前均被视为不受信任。 3. **安全的文件导入/导出**,具有完整性和防注入输出。 4. **弹性的大型/恶意 XML/JSON 输入解析**。 5. **可预测的独立、离线操作**。无 CDN 请求、远程资源检索或第三方依赖,以防止上游供应链入侵。 ## 更新数据 下载最新的框架数据并运行提取脚本: ``` # 从 https://github.com/mitre-attack/attack-stix-data 下载 ATT&CK STIX bundles # 放入 frameworks/ATTCK/ 并命名为 ENTERPRISE.json, MOBILE.json, ICS.json # 从 https://capec.mitre.org/data/ 下载 CAPEC XML views # 放入 frameworks/CAPEC/ 并命名为 DOMAINS.xml, MECHANISMS.xml # 从 https://cwe.mitre.org/data/ 下载 CWE XML views # 放入 frameworks/CWE/ 并命名为 ALL.xml, SOFTWARE.xml, HARDWARE.xml # 运行 extraction scripts python3 scripts/extract-attack.py # Parse ATT&CK techniques python3 scripts/extract-data.py # Parse CAPEC/CWE # 文件路径可在 config.js 中的 sources.* 下配置 # JSON sanitization 路径可在 config.js 中的 sanitize.paths 下配置 # Sanitization 在解析前后运行,以保持源文件和生成文件的整洁 ``` ## 安装 ### 在服务器上安装: - 只需将文件放在 Web 服务器上,(可选)设置 CSP 头并导航到 index.html。 ### 本地使用(在浏览器中): 1. 可选地将 `CONFIG.ConfigIframeIPC.enableLocalIframeIPC` 设置为 `true` 并在浏览器中打开 `index.html`。 2. 在 `file://` 模式下收到提示时,选择本地 `resources/*.json` 文件(或完整的 resources 目录)以填充框架数据集。 ## 贡献与报告问题 有关如何贡献的详细信息,请参阅 [CONTRIBUTING 指南](CONTRIBUTING.md)。 有关如何报告漏洞的详细信息,请参阅 [安全策略](SECURITY.md)。 ## 许可证 Apache License 2.0 — 详情见 [LICENSE](LICENSE)。 ## 第三方声明 AttackFlow 使用来自以下第三方来源的数据和参考: - MITRE ATT&CK: https://attack.mitre.org/ - MITRE ATT&CK Navigator: https://github.com/mitre-attack/attack-navigator - CAPEC: https://capec.mitre.org/ - CWE: https://cwe.mitre.org/ - STIX 2.1: https://oasis-open.github.io/cti-documentation/ - STIX Visualizer (stix2viz): https://github.com/oasis-open/cti-stix-visualization - Unified Kill Chain: https://www.unifiedkillchain.com/ - FontAwesome: https://github.com/FortAwesome/Font-Awesome MITRE 和 ATT&CK 是 The MITRE Corporation 的商标。本项目不 隶属于 MITRE,也不受其认可。CAPEC 和 CWE 由 MITRE 维护。 这些框架的使用受其各自所有者发布的适用条款和使用指南 约束。 AttackFlow 不隶属于或受威胁知情防御中心 (CTID) 或 CTID "Attack Flow" 项目认可。
标签:CAPEC, Cloudflare, CVE, CVSS, FTP漏洞扫描, GPT, IOC指示器, MITRE ATT&CK, Mutation, STIX 2.1, TTP映射, 反取证, 可视化, 多模态安全, 威胁建模, 威胁情报, 安全编排, 安全评估, 开发者工具, 攻击流程图, 数字签名, 数据可视化, 无依赖, 杀伤链编辑器, 漏洞管理, 离线可用, 纯JavaScript, 网络安全, 网络攻击框架, 自定义脚本, 自定义脚本, 逆向工具, 隐私保护