CybercentreCanada/assemblyline-service-frankenstrings
GitHub: CybercentreCanada/assemblyline-service-frankenstrings
Assemblyline 平台的字符串与 IOC 提取服务,通过模式匹配、编码解码和 XOR 去混淆来自动化恶意软件静态分析。
Stars: 3 | Forks: 6
[](https://discord.gg/GUAy9wErNu)
[](https://discord.gg/GUAy9wErNu)
[](https://github.com/CybercentreCanada/assemblyline)
[](https://github.com/CybercentreCanada/assemblyline-service-frankenstrings)
[](https://github.com/CybercentreCanada/assemblyline/issues?q=is:issue+is:open+label:service-frankenstrings)
[](./LICENSE)
# FrankenStrings 服务
该服务使用模式匹配、简单的编码解码器和脚本去混淆器来执行文件和 IOC 提取。
BALBUZARD:BSD 2-Clause 许可证,参见 balbuzard 代码文件顶部
## 服务详情
1. 字符串提取:
* ASCII 和 unicode 字符串 IOC 检查。(参见 patterns.py)
* Balbuzard 的 bbcrack 级别 1(*深度扫描时为级别 2*)XOR 转换模块。仅匹配特定的 IOC(参见 patterns.py, bbcrack.py)
* Base64 字符串提取
2. 文件提取:
* Balbuzard 的 bbcrack 级别 1(*深度扫描时为级别 2*)XOR 转换模块。(仅搜索 PE 文件)
* Base64 模块搜索感兴趣的文件类型(参见 frankenstrings.py)
* 嵌入式 PE 文件提取
* Unicode, Hex, Ascii-Hex 提取模块(用于可能的 shellcode)
**当不处于深度扫描模式时,此 AL 服务将根据提交文件的大小跳过检测模块
(以防止服务积压和超时)。默认值特意设置在较小的尺寸。可以根据您的 AL 实例运行的流量/硬件量在服务配置中轻松更改过滤器。**
### 服务配置
- max_size:提交给此服务的文件的最大大小
- max_length:字符串最大长度。用于基本的 ASCII 和 UNICODE 模块
- st_max_size:字符串列表最大大小。由基本的 ASCII 和 UNICODE 模块结果生成的列表,并将决定 patterns.py 是否仅评估网络 IOC 模式
- bb_max_size:运行该模块时提交给 BBcrack 的文件的最大大小
### 结果输出
1. 静态字符串 (ASCII, UNICODE, BASE64):
* 标记与感兴趣的 IOC 模式匹配的字符串
* 解码 BASE64。提取超过 200 字节的内容,否则将所有解码的内容合并并提取到单个文本文件中
2. 嵌入式 PE 文件:
* 提取文件中嵌入的 PE 文件
* 提取文件中嵌入的反向 PE 文件
3. ASCII 十六进制字符串:
* 成功解码的 ascii 十六进制数据的内容提取(任何超过 500 字节的数据)
* 为任何成功解码的数据标记 IOC 模式匹配
* 在自定义暴力破解 xor 模块之后标记 URI 模式匹配(有关添加的模块,请参见 bbcrack.py)
4. BBCrack XOR 字符串:
* 标记所有与感兴趣的 IOC 模式匹配的字符串
* 提取解码后的 XOR PE 文件
## 镜像版本和标签
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 | 完整的构建详细信息,包括版本和构建类型:`version.buildType`。 | `4.5.stable`, `4.5.1.dev3` |
## 运行此服务
这是一个 Assemblyline 服务。它被设计为 Assemblyline 框架的一部分运行。
如果您想在本地测试此服务,您可以直接从 shell 运行 Docker 镜像:
```
docker run \
--name FrankenStrings \
--env SERVICE_API_HOST=http://`ip addr show docker0 | grep "inet " | awk '{print $2}' | cut -f1 -d"/"`:5003 \
--network=host \
cccs/assemblyline-service-frankenstrings
```
要将此服务添加到您的 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/
# Service FrankenStrings
该服务使用模式匹配、简单的编码解码器和脚本去混淆器来执行文件和 IOC 提取。
## 服务详情
1. 字符串提取:
* ASCII 和 unicode 字符串 IOC 检查。(参见 patterns.py)
* Balbuzard 的 bbcrack 级别 1(*深度扫描时为级别 2*)XOR 转换模块。仅匹配特定的 IOC(参见 patterns.py, bbcrack.py)
* Base64 字符串提取
2. 文件提取:
* Balbuzard 的 bbcrack 级别 1(*深度扫描时为级别 2*)XOR 转换模块。(仅搜索 PE 文件)
* Base64 模块搜索感兴趣的文件类型(参见 frankenstrings.py)
* 嵌入式 PE 文件提取
* Unicode, Hex, Ascii-Hex 提取模块(用于可能的 shellcode)
**当不处于深度扫描模式时,此 AL 服务将根据提交文件的大小跳过检测模块
(以防止服务积压和超时)。默认值特意设置在较小的尺寸。可以根据您的 AL 实例运行的流量/硬件量在服务配置中轻松更改过滤器。**
### 服务配置
- max_size:提交给此服务的文件的最大大小
- max_length:字符串最大长度。用于基本的 ASCII 和 UNICODE 模块
- st_max_size:字符串列表最大大小。由基本的 ASCII 和 UNICODE 模块结果生成的列表,并将决定 patterns.py 是否仅评估网络 IOC 模式
- bb_max_size:运行该模块时提交给 BBcrack 的文件的最大大小
### 结果输出
1. 静态字符串 (ASCII, UNICODE, BASE64):
* 标记与感兴趣的 IOC 模式匹配的字符串
* 解码 BASE64。提取超过 200 字节的内容,否则将所有解码的内容合并并提取到单个文本文件中
2. 嵌入式 PE 文件:
* 提取文件中嵌入的 PE 文件
* 提取文件中嵌入的反向 PE 文件
3. ASCII 十六进制字符串:
* 成功解码的 ascii 十六进制数据的内容提取(任何超过 500 字节的数据)
* 为任何成功解码的数据标记 IOC 模式匹配
* 在自定义暴力破解 xor 模块之后标记 URI 模式匹配(有关添加的模块,请参见 bbcrack.py)
4. BBCrack XOR 字符串:
* 标记所有与感兴趣的 IOC 模式匹配的字符串
* 提取解码后的 XOR PE 文件
## 镜像版本和标签
Assemblyline 服务构建自 [Assemblyline 服务基础镜像](https://hub.docker.com/r/cccs/assemblyline-v4-service-base),
该镜像基于 Debian 11 和 Python 3.11。
Assemblyline 服务使用以下标签定义:
| **标签类型** | **描述** | **示例标签** |
| :------------------: | :------------------------------------------------------------------------------------------------------------- | :------------------------: |
| 最新版本 | 最近的构建版本(可能不稳定)。 | `latest` |
| build_type | 使用的构建类型。`dev` 是最新的不稳定构建。`stable` 是最新的稳定构建。 | `stable` 或 `dev` |
| 版本系列 | 完整的构建详细信息,包括版本和构建类型:`version.buildType`。 | `4.5.stable`, `4.5.1.dev3` |
## 运行此服务
该服务经过专门优化,可作为 Assemblyline 部署的一部分运行。
如果您想在本地测试此服务,您可以直接从终端运行 Docker 镜像:
```
docker run \
--name FrankenStrings \
--env SERVICE_API_HOST=http://`ip addr show docker0 | grep "inet " | awk '{print $2}' | cut -f1 -d"/"`:5003 \
--network=host \
cccs/assemblyline-service-frankenstrings
```
要将此服务添加到您的 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, DAST, DNS 反向解析, 字符串提取, 恶意软件分析, 特征提取, 请求拦截, 逆向工具