11 个版本
0.0.12 | 2024年7月28日 |
---|---|
0.0.10 | 2024年5月31日 |
0.0.8 | 2024年3月22日 |
0.0.5 | 2023年12月30日 |
0.0.3 | 2023年10月28日 |
#63 在 数据库接口
每月266次下载
535KB
12K SLoC
MalwareDB
受 VXCage 和 VirusTotal 启发,MalwareDB是一个恶意软件知识管理系统,它处理关于恶意软件/良品软件样本的账务:哈希、来源、相似度、文件类型等。它的目的是帮助恶意软件/网络安全研究人员、取证调查人员以及需要处理恶意软件或其他可能来源不明的文件的任何人。这是一个目前非常多的 正在进行中 和 alpha级质量 的项目。
主要功能
- 存储恶意软件、良品软件或未知文件样本。
- 通过以下方式对样本进行分类
- 标签,层次分类法(尚未实现)
- 来源,样本的来源。
- 按组权限,基于用户的组成员访问文件
- 通过哈希获取样本
- 基于文件相似度搜索(需要以下提到的Postgres插件)
- 解析文件以获取可能对机器学习模型有用的功能
- 适用于任何现代操作系统
- 允许加密磁盘上的文件,以避免服务器对终端安全或防病毒软件造成问题
- 支持使用CaRT格式,使用默认密钥。
要求
- Postgres 数据库服务器
- Rust 编译
- libmagic,它是
file
命令。在Linux上安装libmagic-dev
,或在macOS上使用Homebrew安装brew install libmagic
。- 在Windows上:
cargo install cargo-vcpkg; vcpkg install libmagic; vcpkg integrate install
- 可以使用环境变量
MAGIC
来指定libmagic数据库的路径。
- 在Windows上:
- 用于更快解压缩.gz文件的zlibng,可选。
- Postgres的相似性哈希扩展
- 或者,使用docker,它提供了一个已安装Postgres扩展的容器(尽管它们仍然需要被激活,请参阅readme)。
状态
该项目正在积极开发中,尚未稳定,并且并非所有功能都已实现。
安装
从源代码安装。检出仓库并构建(推荐),或从crates.io构建
cargo安装malwaredb-client
cargo install malwaredb --features=admin,admin-gui,sqlite,vt,zlibng
(激活所有功能,但仍需要一些外部依赖项)
服务器功能(都是可选的)
admin
:命令行管理功能admin-gui
:由Slint提供的GUI,已测试,在macOS、Linux、Windows上工作,可能在其他地方也能工作?sqlite
:允许使用SQLite作为数据库后端。仅应用于测试和评估,因为它缺乏我们对Postgres的相似性优化。vt
:允许(但仍可启用)VirusTotal功能(为包含的样本缓存AV数据)zlibng
:启用压缩crate,使用zlib-ng作为后端库以进行性能改进。这是用于解压缩.gz文件,并且可选地用于服务器存储使用gzip压缩的样本(必须启用)。
未来
- 计划功能
- 作为独立应用程序的Web界面
- GUI应用程序
- 支持Confidential Computing
- 最初为Enarx: 网站, 代码
- 在Confidential Computing Consortium网站上了解更多信息。
- 如果存储样本,则加密样本,以便主机系统上的防病毒软件不会触发警报,或允许意外感染。
- 根据恶意和良性文件的特征训练ML模型
- 潜在功能
- 为HDFS、S3等提供文件存储后端?
- 有什么遗漏的地方吗?请与我们联系:提交一个 问题 或者开始一个 讨论!
入门指南
- 从源码编译,理想情况下使用
--features=admin,sqlite
。 - 创建您的配置文件。使用
sqlite
功能编译以使用 SQLite。这更适合测试和评估,而不是在真实环境中使用。请参阅存储库根目录中的示例文件。
- 如果存储部分为空(这是可选的),那么 MalwareDB 将仅存储文件的元数据,而不会存储样本。这意味着无法获取原始文件。
- 在 Linux 上将配置文件放置在
/etc/mdb_server/mdb_config.toml
,或在 FreeBSD 上放置在/usr/local/etc/mdb_server/mdb_config.toml
以自动检测配置文件。否则,使用mdb_server run load /path/to/file
或mdb_server run config
在命令行上指定参数。使用--help
查看详细信息。
管理项目
- 由于您已使用
admin
功能编译,因此您可以使用mdb_server admin --help
来查看管理选项。管理选项需要-c /path/to/config.toml
以防止意外更改。注意:使用admin
命令直接与数据库交互,因此服务器不需要运行。 - 使用以下命令列出用户:
mdb_server admin -c /path/to/config.toml list users
。有一个默认的管理员用户,但没有设置密码。因此,让我们设置一个。 - 重置管理员密码:
mdb_server admin -/path/to/config.toml reset-password ---uname admin
。您将被提示输入密码,并且不会回显。管理员用户目前没有特殊功能,但这将改变。 - 文件按来源组织,组可以访问来源。因此,要添加文件,必须添加并关联组和来源。
- 创建一个来源,查看命令行选项:
mdb_server admin -/path/to/config.toml create source --help
- 创建一个组,查看命令行选项:
mdb_server admin -/path/to/config.toml create group --help
- 将组添加到来源,查看命令行选项:
mdb_server admin -/path/to/config.toml add-group--to-source --help
- 将用户添加到组,查看命令行选项:
mdb_server admin -/path/to/config.toml add-user--to-group --help
- 现在,当
mdb_server
运行时,使用客户端通过mdb_client
登录:mdb_client login http://localhost:8080 admin
登录,将 URL 替换为您在服务器配置文件中选择的实际 IP 和端口。 - 使用
mdb_client whoami
测试客户端是否工作正常,它应该显示用户信息和可用的组和来源。
文件加载
- 可以使用客户端上传文件:
mdb_client submit--samples --s SOURCE_ID /path/to/files_or_dirs
。路径可以是文件或目录,并且可以指定多个路径。所有项目都将上传到同一来源(由 ID 指定)。如果文件是 Zip 文件,它将在内存中解压,并且如果它不是已知文档类型(如 MS Office .docx、.xlsx 等),每个文件都将单独提交。 - 也可以使用服务器上的管理员命令上传文件:
mdb_server admin --c /path/to/config.toml --s SOURCE_ID --u USER_ID /path/to/files_or_dirs
。使用服务器管理员功能时,还必须提供用户 ID。否则,这与客户端的工作方式相同,可以提供目录和文件,它们将与同一来源关联,并且 Zip 文件将在内存中解压,如果不是已知的 MS Office 格式,则每个文件都将单独提交。
文件下载
- 使用客户端,可以使用其散列值检索样本。散列类型通过长度检测,支持的散列类型包括:MD5、SHA1、SHA256、SHA384 和 SHA512。
mdb_client retrieve-sample SPECIFY_HASH_HERE
。每个请求一个散列,如果存在,并且用户有权访问与样本关联的组和来源,它将下载。
搜索相似文件
- 使用客户端,计算相似散列并将其提交到服务器。样本不会被发送到服务器!只有散列。
mdb_client find-similar /path/to/file.bin
。与下载相同的限制:用户必须有权访问与潜在相似文件关联的组和来源。输出将是相似文件的散列以及结果相似的方式(相似性算法)。
其他客户端命令
mdb_client server-info
显示有关服务器的一些统计数据,包括版本号、数据库类型和文件总数。mdb_client server-types
显示支持文件类型的列表和魔数。
目标
一些整体目标和设计
- MalwareDB 应该易于使用。
- MalwareDB 应该是存储 您的 数据的地方,并使用简单的数据库模式,以便其他应用程序可以直接与数据交互。
- MalwareDB 应该收集和丰富恶意和良性文件,以便可以使用某些功能用于机器学习模型。
- MalwareDB 应该提供可重用的组件,这可以造福其他项目,即使它们不是直接相关的。
依赖关系
~28–48MB
~796K SLoC