
_ ___ _
/\/\ __ _| | / _ (_)_ __ ___
/ \ / _` | |/ /_)/ | '_ \ / _ \
/ /\/\ \ (_| | / ___/| | |_) | __/
\/ \/\__,_|_\/ |_| .__/ \___|
|_|
MalPipe 是一个模块化的恶意软件(及指标)收集与处理框架。它被设计用于从多个源拉取恶意软件、域名、URL 和 IP 地址,丰富收集到的数据并导出结果。
目前支持以下源:
这些说明将帮助你在本地机器上获取项目副本并进行开发和测试。请参阅部署部分以了解如何将项目部署到实际系统。
部署 MalPipe 需要安装所需的 Python 库并配置各个模块。
可以通过运行以下命令安装 Python 依赖:
pip install -r requirements.txt
示例配置文件 config_example.json 提供了入门所需设置。该文件包含一个 JSON 对象,其中含有每个数据源/处理器/导出器的必要设置。以下是一个数据源设置的说明:
...
"feeds": {
...
"MalShare": {
"ENABLED" : true,
"API_KEY" : "00000000000000000000000000000000000000000000000000000000000",
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["YaraScan", "DNSResolver"]
},
...
由于部分数据源每天更新,数据源可分为两种形式:定时运行和主动运行。它们的运行时机定义在各模块内部,而非配置文件。
处理器用于丰富/标准化收集到的数据。例如,来自 VirusTotal 的数据包含每个文件的 yara 结果,而 MalShare 则不包含。通过在 PROCESSORS 键中添加 YaraScan,可以扫描文件并包含该数据。
以下是一个模块设置示例:
...
"processors": {
...
"YaraScan": {
"ENABLED" : false,
"RULES_PATH": "/yara_rules/Malware.yara"
},
...
目前已实现的处理器包括:
ASNLookupDNSResolverFileTypeRDNSYaraScan最后一部分是导出器,它们控制数据的去向。可用于将收集的数据导出到恶意软件存储库、SIEM、JSON 日志文件或打印给用户。
...
"exporters": {
...
"JSONLog": {
"ENABLED" : true,
"PRETTY" : true,
"LOG_PATH": "./temp/"
},
...
目前已实现的处理器包括:
DetailsPrinterGenericWebStorageJSONLogLocalFileStorage设置完成后,可以通过以下命令运行 MalPipe:
python malpipe.py
MalPipe 的模块位于 malpipe/ 下,按类型分类:
创建新模块非常简单:
MalPipe 模块定义为 Python 类。以下是一个模块头的示例:
class ModuleName(Processor):
def __init__(self):
md = ProcessorDescription(
module_name="ModuleName",
description="Description",
authors=["Author Name"],
version="VersionNumber"
)
Processor.__init__(self, md)
self.types = ['ipaddresses']
self.parse_settings()
可以通过导入配置并设置为类变量来设置参数,如下所示:
from malpipe.config import CONFIG
...
self.yara_rule_path = CONFIG['processors'][self.get_module_name()]['RULES_PATH']
每个处理器都需要有一个 run 函数,该函数由数据源调用。
创建模块后,需要将设置添加到 config.json 的 processors、feeds 或 exporters 键下。如果新模块是处理器或导出器,还需要将其添加到相关数据源中。示例如下:
...
"processors": {
...
"SuperNewModule": {
"ENABLED" : true,
"DOCOOLSTUFF": true
},
...
"feeds": {
...
"0DayMalwareFeed": {
"ENABLED" : true,
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["SuperNewModule"]
}
...
如果遇到任何问题,请通过提交 Issue 或发起 Pull Request 进行报告。如果你有其他希望看到的模块或功能,请考虑创建 Issue。
另请参阅参与此项目的 贡献者列表。
本项目采用 GNU 通用公共许可证 v3.0 进行许可 - 详见 LICENSE.md 文件