Subparse 是一个模块化框架,由 Josh Strochein、Aaron Baker 和 Odin Bernstein 开发。该框架旨在解析和索引恶意软件文件,并以可搜索的 Web 查看器展示解析过程中发现的信息。框架采用模块化设计,包含核心解析引擎、解析模块以及多种富化器,用于向恶意软件索引中添加额外信息。框架的主要输入值是恶意软件文件目录,核心解析引擎或用户指定的解析引擎会先解析这些文件,然后由用户指定的富化引擎添加额外信息,最后将解析出的信息索引到 Elasticsearch 中。收集到的信息可通过 Web 查看器搜索和浏览,该查看器还支持按任何文件中提取的任意值进行筛选。当前共有 3 个解析引擎(默认解析引擎:PEParser、OLEParser 和 ELFParser)和 2 个富化引擎(ABUSEEnricher 和 CAPEEnricher)。
要开始使用 Subparse,需要先安装并设置一些必需的/推荐的软件。
| 软件 | 状态 | 链接 |
|---|---|---|
| Docker |
在系统上安装必需的/推荐的软件后,还需要执行其他几个步骤才能完成 Subparse 的安装。
sudo get apt install build-essential pip3 install -r ./requirements.txt
docker-compose up
注意:由于需要下载镜像并设置 Subparse 所需的容器,这可能需要一些时间。
subparse/parser/subparse.py 可用的命令行选项:
要查看 Subparse 解析器的结果,请导航至 localhost:8080。 如果无法访问该站点,请确保已在 Docker 中启动容器,并且没有其他进程在 8080 端口上运行导致站点不可用。
在执行任何解析器之前,都会收集样本的通用信息,无论底层文件类型如何。这些信息包括:
解析器仅对匹配文件类型的样本执行。例如,PE 文件默认会对其执行 PEParser,因为其文件类型与 PEParser 能够检查的文件类型对应。
这些是可选模块,仅在通过命令行上的 -e | --enrichers 标志指定时才会执行。
Subparse 的 Web 视图使用了 Bootstrap 作为其 CSS,这使得在开发自定义解析器/富化器的 Vue.js 文件时可以使用任何内建的 Bootstrap CSS。我们还为每种类型提供了一个示例以帮助入门,并实现了一些自定义小部件,以简化开发过程并促进数据显示的标准化。所有 Vue.js 文件用于动态显示来自自定义解析器/富化器的信息,并作为数据模板。
注意:类名和文件名的命名约定必须严格遵守;如果遇到自定义解析器/富化器无法执行的问题,应首先检查命名约定。解析器/富化器的命名必须在所有文件和类名中使用相同的名称。
日志记录器对象是默认 Python 日志记录器的单例实现。详细用法请参考 官方文档。 对于 Subparse,我们只推荐使用以下日志级别进行输出。它们是:
| 必需 |
| 安装指南 |
| Python 3.8.1 | 必需 | 安装指南 |
| Pyenv | 推荐 | 安装指南 |
| 参数 | 缩写 | 必需 | 描述 |
|---|
| -h | --help | 否 | 显示帮助菜单 |
| -d SAMPLES_DIR | --directory SAMPLES_DIR | 是 | 要解析的样本目录 |
| -e ENRICHER_MODULES | --enrichers ENRICHER_MODULES | 否 | 用于额外解析的富化器模块 |
| -r | --reset | 否 | 重置/删除已配置的 Elasticsearch 集群中的所有数据 |
| -v | --verbose | 否 | 显示详细的命令行输出 |
| -s | --service-mode | 否 | 进入服务模式,允许在处理过程中向 SAMPLES_DIR 添加更多样本 |