mitre-attack/attack-workbench-taxii-server
GitHub: mitre-attack/attack-workbench-taxii-server
为 ATT&CK Workbench 提供 TAXII 2.1 标准化接口的 Node.js 服务器,实现威胁情报的标准化共享与订阅。
Stars: 45 | Forks: 16
# ATT&CK Workbench TAXII 服务器
ATT&CK Workbench TAXII 服务器是一个 Node.js 服务器,旨在通过符合 [TAXII 2.1](https://docs.oasis-open.org/cti/taxii/v2.1/csprd02/taxii-v2.1-csprd02.html) 标准的 REST API 提供 STIX 2.1 内容。它作为整体 [ATT&CK Workbench 项目](https://medium.com/mitre-engenuity/att-ck-workbench-a-tool-for-extending-att-ck-e1718cbfe0ef) 的一部分运行。
ATT&CK Workbench 是一个允许用户**探索**、**创建**、**标注**和**共享** MITRE ATT&CK® 知识库扩展的应用程序。
以下资源提供了关于 TAXII 协议和用例的支持文档:
- [TAXII 简介](https://oasis-open.github.io/cti-documentation/taxii/intro.html)
- [TAXII 2.1 规范](https://docs.oasis-open.org/cti/taxii/v2.1/os/taxii-v2.1-os.html)
- [OASIS Open TAXII 资源](https://oasis-open.github.io/cti-documentation/resources.html#taxii-21-specification)
ATT&CK Workbench 应用程序需要额外的组件才能完全运行。[ATT&CK Workbench Frontend](https://github.com/center-for-threat-informed-defense/attack-workbench-frontend) 仓库包含该项目范围和功能的完整文档。有关设置整个项目的更多详细信息,请参阅 [安装和运行](#install-and-run) 说明。
## API Roots
此应用程序通过 TAXII 2.1 [Collections](https://docs.oasis-open.org/cti/taxii/v2.1/os/taxii-v2.1-os.html#_Toc31107500) 公开本地 ATT&CK Workbench 知识库的内容。目前,使用一个 [API Root](https://docs.oasis-open.org/cti/taxii/v2.1/os/taxii-v2.1-os.html#_Toc31107498) 来对可用的 STIX 集合及其相关端点进行逻辑分组。用户可以通过服务器的 [发现端点](https://docs.oasis-open.org/cti/taxii/v2.1/os/taxii-v2.1-os.html#_q0a03pfr5x7n) (`/taxii2/`) 查看可用的 API roots。
### Workbench Collections
collections API root(`{api-root}/collections/`)允许访问按 [Workbench collection](https://github.com/center-for-threat-informed-defense/attack-workbench-frontend/blob/master/docs/collections.md) 隔离的 Workbench 数据。知识库中每个集合的每个版本,包括本地创建和导入的集合,都通过此 API Root 提供访问。此外,每个集合的最新版本通过静态 ID 别名提供,这样当创建/导入新版本时,相应的 TAXII 端点不会改变。下图展示了此功能:
```
TAXII Collection ID Workbench Collection
──────────────────────────────────── ───────────────────────────────────
4c936680-22bc-4e68-8037-ca7670493eef ◄───────┐ Enterprise ATT&CK (current version)
│
bacf402e-b767-45bc-ae06-f0620d38ff15 ◄───────┴──── Enterprise ATT&CK v9
cda0f120-c30c-4499-a7f2-3bf859c876c3 ◄──────────── Enterprise ATT&CK v8
9cdda5dd-a8b7-41df-97e5-4fc01608dd26 ◄──────────── Enterprise ATT&CK v7
c7beaddb-f5a0-4602-bbb5-3383c1448de9 ◄───────┐ Mobile ATT&CK (current version)
│
fde5d877-6f13-4694-b5c6-85d3f689f068 ◄───────┴──── Mobile ATT&CK v9
44f5bd59-ad8a-4103-8315-9cbb759c7a96 ◄──────────── Mobile ATT&CK v8
596f2f85-790e-4c37-97b7-cf68caa91f43 ◄──────────── Mobile ATT&CK v7
```
## TAXII 服务器文档
该应用程序使用 Swagger UI 模块动态记录可用的 REST API 端点。Swagger 报告可以通过以下路径访问:`/api-docs`。
[docs](/docs/README.md) 文件夹包含有关使用 TAXII 服务器的附加文档:
- [SETUP](/docs/SETUP.md):包含设置 TAXII 服务器的高级详细信息和说明。
- [USAGE](/docs/USAGE.md):关于如何查询/使用 TAXII 2.1 REST API 的用户指南。
- [CONTRIBUTING](/docs/CONTRIBUTING.md):关于如何为该项目做出贡献的信息。
## 安装和运行
默认情况下,使用 ATT&CK Workbench 不需要 TAXII 服务器,但使用 TAXII 服务器需要 ATT&CK Workbench。ATT&CK Workbench 由以下软件组件组成:
- [ATT&CK Workbench Frontend](https://github.com/center-for-threat-informed-defense/attack-workbench-frontend):ATT&CK Workbench 工具的前端用户界面,也是访问知识库的主要界面。
- [ATT&CK Workbench REST API](https://github.com/center-for-threat-informed-defense/attack-workbench-rest-api):用于存储、查询和编辑 ATT&CK 对象的 REST API 服务。
上述每个仓库都包含各自的部署说明。但是,部署整个 ATT&CK Workbench 的最简单方法是使用部署仓库中包含的 [Docker Compose](https://github.com/mitre-attack/attack-workbench-deployment)。
### Docker
#### 容器镜像仓库
ATT&CK Workbench TAXII 服务器作为 Docker 镜像打包在 GitHub Container registry 中:
```
docker pull ghcr.io/mitre-attack/attack-workbench-taxii-server:latest
```
#### 从源码构建
如果您希望从源码构建 Docker 镜像,提供了一个 [shell 脚本](./run.sh) 来简化该过程。它处理以下事项:
- 从指定的 dotenv 文件加载环境变量
- 从源码构建 Docker 镜像
- 创建并启动容器实例
该脚本需要两个环境变量:
- `TAXII_ENV`:用于确定 dotenv 配置文件的名称
- `TAXII_APP_PORT`:在 `docker run` 命令中用于公开所需的端口
```
export TAXII_ENV=prod | dev | local
export TAXII_APP_PORT=8000
./run.sh
```
### 手动安装
#### 要求
- [Node.js](https://nodejs.org) 版本 `14.20.0` 或更高
- [Node.js](https://nodejs.org) 版本必须支持 `AsyncLocalStorage`
#### 安装
##### 步骤 1. 克隆 git 仓库
```
git clone git@github.com:mitre-attack/attack-workbench-taxii-server.git
cd attack-workbench-taxii-server
```
##### 步骤 2. 安装依赖项
ATT&CK Workbench TAXII 服务器安装项目内的所有依赖项。它不依赖于任何模块的全局安装。
```
npm install
```
##### 步骤 3. 配置系统
该应用程序使用从 dotenv 文件加载的环境变量进行配置。为方便起见,提供了一个模板。有关支持的环境变量和使用说明的列表,请参阅 [SETUP](./docs/SETUP.md#environment-variables) 文档。
将 dotenv 文件存储在根目录 `config/` 目录中,并确保 `TAXII_ENV` 环境变量与 dotenv 文件名一致。`TAXII_ENV` 决定服务器加载的环境变量名称。例如:
- 如果 `TAXII_ENV` 等于 `dev`,则服务器尝试加载 `config/dev.env`。
- 如果 `TAXII_ENV` 等于 `prod`,则服务器尝试加载 `config/prod.env`。
示例:
```
export TAXII_ENV=dev
cp config/template.env config/${TAXII_ENV}.env
# 修改 dev.env 文件
# 完成!
```
##### 步骤 4. 运行应用程序
运行启用 Swagger 的生产模式服务器:
```
npm run build
npm run start
```
运行启用热重载的服务器(以便在您更改文件时服务器自动重新加载):
```
npm run start:dev
```
## 声明
版权所有 2025 The MITRE Corporation
经批准公开发布;分发无限。案例编号 21-2703。
根据 Apache 许可证 2.0 版(“许可证”)获得许可;除非遵守许可证,否则您不得使用此文件。您可以在以下地址获取许可证副本
除非适用法律要求或书面同意,否则根据许可证分发的软件是按“原样”分发的,没有任何形式的明示或暗示的担保或条件。请参阅许可证以了解管理许可权限和限制的具体语言。
本项目使用了 ATT&CK®
[ATT&CK 使用条款](https://attack.mitre.org/resources/terms-of-use/)
标签:ATT&CK Workbench, Cloudflare, GNU通用公共许可证, MITM代理, MITRE ATT&CK, Node.js, OASIS 标准, REST API, STIX 2.1, TAXII 2.1, 威胁建模, 威胁情报, 开发者工具, 情报共享, 攻击模型, 数据标注, 知识库管理, 网络安全, 自动化攻击, 自动化攻击, 请求拦截, 隐私保护