CybercentreCanada/assemblyline-service-cape
GitHub: CybercentreCanada/assemblyline-service-cape
一个将 Assemblyline 与 CAPEv2 恶意软件沙箱集成的服务,用于自动化提交、引爆和解析恶意样本的动态分析报告。
Stars: 13 | Forks: 6
[](https://discord.gg/GUAy9wErNu)
[](https://discord.gg/GUAy9wErNu)
[](https://github.com/CybercentreCanada/assemblyline)
[](https://github.com/CybercentreCanada/assemblyline-service-cape)
[](https://github.com/CybercentreCanada/assemblyline/issues?q=is:issue+is:open+label:service-cape)
[](./LICENSE)
# CAPE 服务
该 Assemblyline 服务将文件提交至 CAPEv2 部署环境,并解析返回的报告。
## 服务详情
**注意**:该服务**需要在 Assemblyline 之外进行大量额外安装**才能正常运行。在默认安装过程中**并未**预装此服务。
本仓库主要包含改编自以下项目的代码:
[Assemblyline Cuckoo 服务](https://github.com/CybercentreCanada/assemblyline-service-cuckoo),并且
灵感来源于 [x1mus](https://github.com/x1mus) 在 [Sorakurai](https://github.com/Sorakurai)、
[jvanwilder](https://github.com/jvanwilder) 以及 [NVISOsecurity](https://github.com/NVISOsecurity) 的
[RenaudFrere](https://github.com/RenaudFrere) 支持下创建的[项目](https://github.com/NVISOsecurity/assemblyline-service-cape)。
### CAPE 沙箱概述
[CAPE Sandbox](https://github.com/kevoreilly/CAPEv2) 是开源项目 [Cuckoo Sandbox](https://cuckoosandbox.org) 的一个分支。CAPE 的目标是增加自动化的恶意软件解包和配置提取功能。它也是目前唯一仍在维护和提供支持的基于 Cuckoo 的仓库。
### Assemblyline 的 CAPE 服务概述
CAPE 服务使用 CAPE REST API 将文件发送到 CAPE nest,然后由 CAPE nest 将这些任务分配给一个受害者机器池(每个受害者对应一个文件)。
**您需要负责设置 CAPE nest 和受害者机器**。随后将检索在受害者机器中引爆所提交文件的分析结果,
并通过 Assemblyline UI 向用户展示报告的摘要版本。为了方便您阅读,完整的报告也会作为补充文件包含在 Assemblyline UI 中。
已解包并保存到磁盘的文件将被重新回传至 Assemblyline。
### 注意事项
#### 报告
需要注意的是,该服务会抓取报告包的 `lite` 格式。因此,请确保在您的 CAPE 实例上的 `reporting.conf` 文件中启用了 `litereport`,如下所示:
```
[litereport]
enabled = yes
keys_to_copy = info debug signatures network curtain sysmon target
behavior_keys_to_copy = processtree processes summary
```
#### REST API
此服务使用的部分 API 功能在公共 CAPE 实例上被禁用,因此该服务只能在 CAPE 的私有部署环境中运行。
由于 REST APIv2 是唯一受[支持](https://capev2.readthedocs.io/en/latest/usage/api.html)的 API 版本,我们将仅支持此版本。
由于 CAPE 服务每分钟会发出超过 5 个请求,因此需要在 CAPE 主机上的 REST API 中配置以下 `api.conf`:
```
[api]
ratelimit = no
default_user_ratelimit = 99999999999999/s
default_subscription_ratelimit = 99999999999999/s
token_auth_enabled = yes
```
CAPE 服务发出的 REST API 调用如下:
1. 通过 GET /apiv2/cuckoo/status/ 获取 CAPE 的状态
2. 通过 GET /apiv2/machines/list/ 获取机器列表
3. 通过 GET /apiv2/tasks/search/sha256/\/ 搜索样本的 SHA256
4. 通过 POST /apiv2/tasks/create/file/ 提交样本进行文件分析
5. 通过 GET /apiv2/tasks/view/\/ 按任务 ID 轮询任务,直至其完成
6. 通过 GET /apiv2/tasks/get/report/\/lite/zip/ 获取生成的轻量级 JSON 报告和 ZIP 文件
7. 通过 GET /apiv2/tasks/delete/\/ 删除任务
在 `api.conf` 的默认设置中,`[machinelist]`、`[cuckoostatus]` 和 `[taskdelete]` 均被禁用。您需要启用它们。
在 `api.conf` 中,建议为所有 REST API 服务设置 `token_auth_enabled = yes` 和 `auth_only = yes`。
#### 监控建议
CAPE 服务将提交文件并等待文件完成分析及分析后处理,直至达到 800 秒的服务超时时间。此时,服务将重试(再重试 2 次)以获取结果。在大多数情况下,服务进行重试的唯一原因是 CAPE nest 出现了问题。当 CAPE REST API 或 Processor 服务宕机或出错时,CAPE 服务会输出有用的错误日志,您可以针对这些情况设置 Kibana 告警。这是监控您 CAPE nest 的推荐方法。
有关如何配置此服务的更多信息,请点击[此处](./configuration.md)。
## 镜像版本与标签
Assemblyline 服务基于 [Assemblyline 服务基础镜像](https://hub.docker.com/r/cccs/assemblyline-v4-service-base)构建,
该基础镜像基于 Debian 11 并附带 Python 3.11。
Assemblyline 服务使用以下标签定义:
| `标签类型` | `描述` | `标签示例` |
| :----------: | :----------------------------------------------------------------------------------------------- | :------------------------: |
| latest | 最新的构建版本(可能不稳定)。 | `latest` |
| build_type | 所使用的构建类型。`dev` 是最新的不稳定版本。`stable` 是最新的稳定版本。 | `stable` 或 `dev` |
| series | 完整的构建详情,包括版本号和构建类型:`版本号.构建类型`。 | `4.5.stable`, `4.5.1.dev3` |
## 运行此服务
这是一个 Assemblyline 服务。它被设计为 Assemblyline 框架的一部分运行。
如果您想在本地测试此服务,可以直接从 shell 运行 Docker 镜像:
```
docker run \
--name CAPE \
--env SERVICE_API_HOST=http://`ip addr show docker0 | grep "inet " | awk '{print $2}' | cut -f1 -d"/"`:5003 \
--network=host \
cccs/assemblyline-service-cape
```
要将此服务添加到您的 Assemblyline 部署中,请遵循此
[指南](https://cybercentrecanada.github.io/assemblyline4_docs/developer_manual/services/run_your_service/#add-the-container-to-your-deployment)。
## 文档
Assemblyline 的通用文档可以在以下地址找到:https://cybercentrecanada.github.io/assemblyline4_docs/
# CAPE 服务
该 Assemblyline 服务将文件提交至 CAPEv2 部署环境,并解析返回的报告。
## 服务详情
**注意**:该服务**需要在 Assemblyline 之外进行大量额外安装**才能正常运行。在默认安装过程中**并未**预装此服务。
本仓库主要包含改编自 [Assemblyline Cuckoo 服务]的代码。
[Assemblyline Cuckoo service] (https://github.com/CybercentreCanada/assemblyline-service-cuckoo),并且
灵感来源于 [x1mus](https://github.com/x1mus) 在 [Sorakurai](https://github.com/Sorakurai)、
[jvanwilder](https://github.com/jvanwilder) 以及 [NVISOsecurity](https://github.com/NVISOsecurity) 的
[RenaudFrere](https://github.com/RenaudFrere) 支持下创建的[项目](https://github.com/NVISOsecurity/assemblyline-service-cape)。
### CAPE 沙箱概述
[CAPE Sandbox](https://github.com/kevoreilly/CAPEv2) 是开源项目 [Cuckoo Sandbox](https://cuckoosandbox.org) 的一个分支。CAPE 的目标是增加自动化的恶意软件解包和配置提取功能。它也是目前唯一仍在维护和提供支持的基于 Cuckoo 的仓库。
### Assemblyline 的 CAPE 服务概述
CAPE 服务使用 CAPE REST API 将文件发送到 CAPE nest,然后由 CAPE nest 将这些任务分配给一个受害者机器池(每个受害者对应一个文件)。
**您需要负责设置 CAPE nest 和受害者机器**。随后将检索在受害者机器中引爆所提交文件的分析结果,
并通过 Assemblyline UI 向用户展示报告的摘要版本。为了方便您阅读,完整的报告也会作为补充文件包含在 Assemblyline UI 中。
已解包并保存到磁盘的文件将被重新回传至 Assemblyline。
### 注意事项
#### 报告
需要注意的是,该服务会抓取报告包的 `lite` 格式。因此,请确保在您的 CAPE 实例上的 `reporting.conf` 文件中启用了 `litereport`,如下所示:
```
[litereport]
enabled = yes
keys_to_copy = info debug signatures network curtain sysmon target
behavior_keys_to_copy = processtree process summary
```
#### REST API
此服务使用的部分 API 功能在公共 CAPE 实例上被禁用,因此该服务只能在 CAPE 的私有部署环境中运行。
由于 REST APIv2 是唯一[受支持] (https://capev2.readthedocs.io/en/latest/usage/api.html)的 API 版本,我们将仅支持此版本。
由于 CAPE 服务每分钟会发出超过 5 个请求,因此需要在 CAPE 主机上的 REST API 中配置以下 `api.conf`:
```
[api]
ratelimit = no
default_user_ratelimit = 99999999999999/s
default_subscription_ratelimit = 99999999999999/s
token_auth_enabled = yes
```
CAPE 服务发出的 REST API 调用如下:
1. 通过 GET /apiv2/cuckoo/status/ 获取 CAPE 的状态。
2. 通过 GET /apiv2/machines/list/ 获取机器列表。
3. 通过 GET /apiv2/tasks/search/sha256/\/ 搜索样本的 SHA256。
4. 通过 POST /apiv2/tasks/create/file/ 提交样本进行文件分析。
5. 通过 GET /apiv2/tasks/view/\/ 按任务 ID 轮询任务,直至其完成。
6. 通过 GET /apiv2/tasks/get/report/\/lite/zip/ 获取生成的轻量级 JSON 报告和 ZIP 文件。
7. 通过 GET /apiv2/tasks/delete/\/ 删除任务。
在 `api.conf` 的默认设置中,`[machinelist]`、`[cuckoostatus]` 和 `[taskdelete]` 均被禁用。您需要启用它们。
在 `api.conf` 中,建议为所有 REST API 服务设置 `token_auth_enabled = yes` 和 `auth_only = yes`。
#### 监控建议
CAPE 服务将提交文件并等待文件完成分析及分析后处理,直至达到 800 秒的服务超时时间。此时,服务将重试(再重试 2 次)以获取结果。在大多数情况下,服务进行重试的唯一原因是 CAPE nest 出现了问题。当 CAPE REST API 或 Processor 服务宕机或出错时,CAPE 服务会输出有用的错误日志,您可以针对这些情况设置 Kibana 告警。这是监控您 CAPE nest 的推荐方法。
有关如何配置此服务的更多信息,请点击[此处](./configuration.md)。
## 镜像变体与标签
Assemblyline 服务基于 [Assemblyline 服务基础镜像](https://hub.docker.com/r/cccs/assemblyline-v4-service-base)构建,
该基础镜像基于 Debian 11 并附带 Python 3.11。
Assemblyline 服务使用以下标签定义:
| `标签类型` | `描述` | `标签示例` |
| :------------------: | :------------------------------------------------------------------------------------------------------------- | :------------------------: |
| latest | 最新的构建版本(可能不稳定)。 | `latest` |
| build_type | 所使用的构建类型。`dev` 是最新的不稳定版本。`stable` 是最新的稳定版本。 | `stable` 或 `dev` |
| series | 完整的构建详情,包括版本号和构建类型:`版本号.构建类型`。 | `4.5.stable`, `4.5.1.dev3` |
## 运行此服务
此服务专门优化为在 Assemblyline 部署环境中运行。
如果您想在本地测试此服务,可以直接从终端运行 Docker 镜像:
```
docker run \
--name CAPE \
--env SERVICE_API_HOST=http://`ip addr show docker0 | grep "inet " | awk '{print $2}' | cut -f1 -d"/"`:5003 \
--network=host \
cccs/assemblyline-service-cape
```
要将此服务添加到您的 Assemblyline 部署中,请遵循此
[指南](https://cybercentrecanada.github.io/assemblyline4_docs/fr/developer_manual/services/run_your_service/#add-the-container-to-your-deployment)。
## 文档
Assemblyline 的通用文档可以在以下地址找到:https://cybercentrecanada.github.io/assemblyline4_docs/
标签:Assemblyline, CAPEv2, Cuckoo Sandbox, DAST, DNS 反向解析, SOAR, TypeScript, YARA, 云资产可视化, 动态沙箱, 威胁情报, 安全插件, 安全编排与自动化响应, 开发者工具, 恶意软件分析, 恶意软件引爆, 搜索语句(dork), 攻击行为检测, 服务集成, 网络安全, 自动化分析, 自动化脱壳, 请求拦截, 跨站脚本, 逆向工具, 配置提取, 隐私保护