cisagov/decider

GitHub: cisagov/decider

一款协助网络防御者和分析师将对手行为准确映射到 MITRE ATT&CK 框架的 Web 应用工具。

Stars: 1208 | Forks: 135

# Decider 知识共享许可协议
本作品采用 知识共享署名 4.0 国际许可协议 进行许可。 本项目使用了 MITRE ATT&CK® - [ATT&CK 使用条款](https://attack.mitre.org/resources/legal-and-branding/terms-of-use/)。 ## :newspaper: 3.0.0 - Kiosk 登场 - Decider 现无需登录且支持响应式布局。 - 内容更新已简化为复制文件并重启 Docker。 - Docker 设置发生了较大变化,没有确切的 2 → 3 更新流程,只需全新安装 3 即可。 - 不过数据库结构保持不变 - 因此可以利用 Decider 2.x.y 来编辑内容。 ***这是 Firefox - 但在移动端也同样有效!*** ![Decider 在小型浏览器窗口中的截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/a80e329725114630.png) ## :thinking: 它是什么? ### :fast_forward: 简而言之 一款 Web 应用程序,旨在协助网络防御者、分析师和研究人员将对手行为映射到 MITRE ATT&CK® 框架。 ### :closed_book: 深入了解 Decider 是一款帮助分析师将对手行为映射到 MITRE ATT&CK 框架的工具。Decider 通过引导用户完成映射过程,使得创建 ATT&CK 映射更容易准确。它通过询问一系列关于对手活动的引导性问题,帮助他们找到正确的战术、技术或子技术。Decider 拥有强大的搜索和过滤功能,使用户能够专注于与其分析相关的 ATT&CK 部分。Decider 还具有购物车功能,允许用户将结果导出为常用格式,例如表格和 [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/) 热力图。 ### :book: 用户指南 - [Markdown 版指南](./docs/user_guide_3_0_0/user-guide.md) - [HTML 版指南](./app/static/user-guide.html) **注意:** *MD 文件可直接在 GitHub 上查看,而 HTML 文件必须下载到本地查看。MD 文件看起来会略显怪异 - 因为它包含用于生成 HTML 的 Pandoc 指令。* ### :triangular_ruler: 预期用途 Decider 最终旨在使映射到 [ATT&CK](https://attack.mitre.org/) 变得更加容易。 它提供: - 带有结果分页的问题树(构建您的进度) - 技术搜索 + 过滤选项 - 可能发生的其他技术的建议 Decider 并不打算取代 ATT&CK 网站 - 相反,它作为一个补充工具,最终引导您访问该网站。其中仅包含辅助映射的信息。 ## :computer: 应用内截图 ### :deciduous_tree: 问题树 \(*您在这里*\)**\[矩阵 > 战术\]** > 技术 > 子技术 ![Decider 的问题树页面](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/4b9797eb5b114631.png) ### :mag: 全技术搜索 包含布尔表达式、前缀匹配和词干提取。 ![Decider 的全技术搜索页面](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/9485bd2abb114633.png) ## 安装 ### :whale: Docker **99% 的人的最佳选择** ``` git clone https://github.com/cisagov/decider.git cd decider cp .env.docker .env # 编辑 .env - 定义 DB_ADMIN_PASS, DB_KIOSK_PASS, CART_ENC_KEY, APP_ADMIN_PASS # 不提供默认密码 :) cp -r default_config/. config/ sudo docker compose up ``` 启动后访问该链接(默认:http://localhost:8001/)。 ![Docker 启动 Decider 的终端输出](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/b06addc990114635.png) #### 配置变得简单 更改了 `config/`?只需: ``` sudo docker compose stop sudo docker compose start ``` 但是,更改 .env 中的变量需要 ``` sudo docker compose up ``` 这将使用修改后的环境重新创建容器 #### HTTPS / URL ##### 端点确定(.env 变量): - `WEB_HTTPS_ON=''` -> http://`WEB_IP`:`WEB_PORT`/ - `WEB_HTTPS_ON='anything'` -> https://`WEB_IP`:`WEB_PORT`/ ##### HTTPS 证书位置 - 写入这 2 个文件以设置 SSL: - config/certs/decider.key - config/certs/decider.crt - 如果缺少任一文件,将生成并使用自签名证书 ### :technologist: 手动安装 #### :warning: 说明已过时 - Docker 是首选的安装方式 - 如果遵循手动安装说明,则需要进行调整 - 您需要 Python 3.12+(说明中提到的 Python 3.8.16 **将不**工作 :warning:) - 您可能需要 PostgreSQL 16(说明中提到的 PostgreSQL 12+ ***应该***可行) #### Ubuntu 22.04 [Ubuntu 安装指南](docs/install/Ubuntu_22.04.2.md) #### CentOS 7 [CentOS 安装指南](docs/install/CentOS_7.md) #### Pip 依赖说明 ##### 对于所有用户 ``` pip install -r requirements-pre.txt pip install -r requirements.txt ``` ##### 对于开发者 ``` pip install -r requirements-dev.txt pre-commit install ``` #### 其他操作系统 阅读 Ubuntu 和 CentOS 指南,并根据您的平台复现相关操作。 ##### Windows Python 中的 `open()` 使用系统的默认文本编码 - 在 macOS 和 Linux 上为 `utf-8` - 在 Windows 上为 `windows-1252` - 这会导致读取数据库构建过程的 json 文件时出现问题 - 在每个 `open()` 中添加 `encoding='utf-8'` 作为参数***可能***允许在 Windows 上部署 ##### macOS (至少 M1 用户)请确保按顺序 (1) 安装 Postgres,然后 (2, 3) 安装 pip 依赖 1. `brew install postgresql` 2. `pip install -r requirements-pre.txt` 3. `pip install -r requirements.txt` ## :gear: 需求 *截至 2023 年 4 月 24 日* ### 软件 #### Docker 未指定确切的必需版本。 - 应使用最新版本的 Docker 和 Docker Compose。 - `docker compose` 应该可用,而 `docker-compose` 已过时。 #### 手动 - 操作系统 - CentOS 7+ - Ubuntu 22.04.2+ - Fedora 37+ 可正常工作 *\(早期版本应该也可以\)* - Python 3.12+(说明中提到的 Python 3.8.16 **将不**工作 :warning:) - PostgreSQL 16(说明中提到的 PostgreSQL 12+ ***应该***可行) ### 硬件 #### 建议规格 - 1-2 核 - 1-2 GB 内存 - 20 GB 磁盘空间 Decider 尚未针对许多并发用户进行测试(这种情况很快就会改变)。 但它非常轻量级 - 两个容器总共占用约 250MB RAM(`docker stats`)。 在构建过程中,由于源数据加载到 RAM 中,占用确实会达到峰值,约为 375MB。 ## :judge: ATT&CK® 数据免责声明 default_config/build_sources/enterprise-attack 下的 JSON 文件提取自 https://github.com/mitre-attack/attack-stix-data/tree/master/enterprise-attack © 2023 The MITRE Corporation。本作品经 The MITRE Corporation 许可复制和分发。 ## 附录 A:在 Decider 1/2 上更新 ATT&CK 内容 ### :whale: Docker 更新说明 ``` # (在 repo root 中) # 拉取 v13 内容 git pull # 移除容器(DB 数据安全) sudo docker compose down # 重建镜像(v13 文件复制覆盖) sudo docker compose up --build # 添加版本 sudo docker exec decider-web python -m app.utils.db.actions.add_version --config DefaultConfig --version v13.0 ``` ### :technologist: 手动更新说明 ``` # (安装 root,与 repo root 相同,包含 app/ 文件夹) cd /opt/decider/1.0.0 # 使用 decider app-user,配合 app venv,用于 add_version 脚本 sudo -u decider -g decider /opt/decider/python3.8.10/bin/python3.8 -m app.utils.db.actions.add_version --config DefaultConfig --version v13.0 ```
标签:ATT&CK Navigator, Cloudflare, Docker, MITRE ATT&CK, Ruby, 分析师工具, 后端开发, 后端开发, 威胁情报, 安全运营, 安全防御评估, 开发者工具, 扫描框架, 攻击框架, 测试用例, 知识库, 网络安全, 行为映射, 请求拦截, 逆向工具, 隐私保护