EPFPhmiw47mosLJR/malware-sandbox
GitHub: EPFPhmiw47mosLJR/malware-sandbox
一个基于 Rust 的恶意软件沙箱,通过 VMware 隔离执行、API 钩子与机器学习,实现自动化样本行为分析与检测。
Stars: 0 | Forks: 0
> ⚠️ **Repository Status Notice**
# 恶意软件沙箱
一个用 Rust 构建的综合性恶意软件分析系统,具备通过 DLL 注入和 API 钩子进行动态分析的功能,并与 VMware Workstation 集成以提供隔离的执行环境。
## 概述
该项目提供一个自动化的恶意软件分析平台,能够:
- **动态分析**可疑文件,在隔离的 Windows 虚拟机中运行
- **使用自定义 DLL 注入钩子关键 Windows API 调用**
- **捕获行为数据**,包括文件操作和系统调用
- **提供 Web 界面**用于样本提交和结果查看
- **包含基于 ML 的静态分析**,使用 ONNX 模型进行检测
- **支持多虚拟机并行分析**
## 系统要求
### 硬件与系统要求
- **宿主机操作系统**:Windows(因 VMware Workstation 兼容性要求)
- **虚拟化**:VMware Workstation(需安装 `vmrun` CLI 工具)
- **Rust 工具链**:
- `x86_64-pc-windows-msvc` 目标(用于 64 位构建)
- `i686-pc-windows-msvc` 目标(用于 32 位 DLL 构建)
- **客户机操作系统**:具备管理员权限的 Windows 虚拟机
### 软件依赖
- [Rust](https://www.rust-lang.org/tools/install)(最新稳定版)
- VMware Workstation(版本 15 或更高)
- Windows SDK(用于 MSVC 工具链)
## 架构
系统由四个主要组件构成:
1. **Webserver** - Web 界面与编排层
- 处理文件提交与结果展示
- 管理虚拟机生命周期与分析流程
- 提供用于机器通信的 REST API
- 包含基于 ML 的静态分析
2. **Agent** - 运行在客户机虚拟机中
- 接收来自 Webserver 的命令
- 使用 DLL 注入执行样本
- 收集并转发行为日志
- 管理临时文件与清理工作
3. **DLL** - 注入到目标进程的钩子库
- 钩住 Windows NT API 函数(如 NtOpenFile、NtReadFile 等)
- 记录 API 调用及其参数
- 通过命名管道与 Agent 通信
4. **Injector** - 独立的 DLL 注入工具
- 将监控 DLL 注入目标进程
- 支持按进程名或 PID 注入
## 构建项目
### 前提条件
安装所需的 Rust 目标平台:
```
rustup target add x86_64-pc-windows-msvc
rustup target add i686-pc-windows-msvc
```
### 构建命令
以发布模式构建所有组件:
```
# 构建 Web 服务器
cargo build --release -p webserver --target x86_64-pc-windows-msvc
# 构建代理
cargo build --release -p agent --target x86_64-pc-windows-msvc
# 构建 64 位 DLL
cargo build --release -p dll --target x86_64-pc-windows-msvc
# 构建 32 位 DLL
cargo build --release -p dll --target i686-pc-windows-msvc
# 构建注入器(可选)
cargo build --release -p injector --target x86_64-pc-windows-msvc
```
或者使用提供的构建脚本:
```
# PowerShell
.\build.ps1
# 或批处理脚本
.\build.bat
```
### 构建输出
可执行文件位于以下路径:
- `target/x86_64-pc-windows-msvc/release/webserver.exe`
- `target/x86_64-pc-windows-msvc/release/agent.exe`
- `target/x86_64-pc-windows-msvc/release/dll.dll`(64 位)
- `target/i686-pc-windows-msvc/release/dll.dll`(32 位)
## ⚙️ 配置
### 第一步:VMware 配置
在与 `webserver.exe` 相同的目录中创建 `vmware.conf` 文件:
```
[vmware]
# 运行模式:'nogui'(无头)或 'gui'(带 UI)
mode = nogui
# vmrun 可执行文件的完整路径
path = C:/Program Files (x86)/VMware/VMware Workstation/vmrun.exe
# 以逗号分隔的虚拟机标识符列表
machines = sandbox1,sandbox2
# 网络接口(保留用于未来使用)
interface = default
# 上述每个虚拟机的配置
[sandbox1]
# 虚拟机账户凭证(必须具有管理员权限)
username = testUser
password = admin123
# 虚拟机 .vmx 文件的完整路径
vmx_path = E:/VMs/sandbox1/sandbox1.vmx
# 恢复分析前要还原的快照名称
snapshot = Snapshot1
# 虚拟机平台(目前仅支持 'windows')
# 未来:windows / linux / android
platform = windows
# 用于参考的操作系统版本字符串
os_version = Windows 10
# IP地址(运行时自动填充;不要修改)
ip = 0.0.0.0
```
#### 多虚拟机配置
要配置额外的虚拟机,请添加新的配置段:
```
[sandbox2]
username = testUser
password = admin123
vmx_path = E:/VMs/sandbox2/sandbox2.vmx
snapshot = Snapshot1
platform = windows
os_version = Windows 11
ip = 0.0.0.0
```
### 第二步:虚拟机准备
1. 在 VMware Workstation 中**创建干净的 Windows 虚拟机**
2. **禁用 Windows Defender 或其他杀毒软件**
3. **创建快照**(在 `vmware.conf` 中引用)
4. **确保主机与虚拟机之间的网络连通性**
5. **配置管理员账户**,使其凭证与 `vmware.conf` 匹配
### 第三步:Agent 部署
**重要**:由于命名管道通信的要求,Agent 必须在初始设置期间手动启动。
1. 将 `agent.exe` 复制到虚拟机(例如:`C:\agent\agent.exe`)
2. 在宿主机上启动 Webserver:
.\webserver.exe
3. 等待虚拟机初始化完成
4. 在客户机虚拟机上,**以管理员身份**运行 `agent.exe`:
# 右键点击 agent.exe → 以管理员身份运行
5. 在 Webserver 日志中验证 Agent 初始化状态
**提示**:将 `agent.exe` 添加到虚拟机启动程序中,并赋予管理员权限,以实现持久化。
## 使用说明
### 启动系统
1. **启动 Webserver**(在宿主机上):
.\webserver.exe
2. **访问 Web 界面**:
- 在浏览器中打开 `http://localhost:8080`
3. **提交样本**:
- 导航到提交页面
- 上传文件(可执行文件、脚本、文档等)
- 选择目标虚拟机
- 点击“提交分析”

4. **查看结果**:
- 分析完成后显示结果
- 包含静态分析、行为日志和 ML 检测评分

### AI 检测结果
系统包含基于 ML 的检测模块,可将样本分类为良性或恶意:
**恶意样本检测:**

**良性样本检测:**

### API 端点
Agent 提供以下 REST 端点供 Webserver 调用:
- `GET /` - 健康检查
- `POST /store` - 上传文件到虚拟机
- `POST /execute` - 执行样本并启用监控
- `GET /logs` - 获取行为日志
- `GET /results` - 获取分析结果
- `POST /flush_logs` - 清除日志文件
- `GET /status` - Agent 状态
- `POST /kill` - 终止 Agent
## 📁 项目结构
```
malware-sandbox/
├── webserver/ # Web interface and orchestration
│ ├── src/
│ │ ├── api/ # REST API handlers
│ │ ├── database/ # SQLite database layer
│ │ ├── modules/ # Static analysis modules
│ │ ├── services/ # Analysis and VM services
│ │ └── virtualization/ # VMware integration
│ └── Cargo.toml
│
├── agent/ # Guest VM agent
│ ├── src/
│ │ ├── api/ # HTTP API handlers
│ │ ├── injection/ # DLL injection logic
│ │ └── pipes/ # Named pipe communication
│ └── Cargo.toml
│
├── dll/ # API hooking DLL
│ ├── src/
│ │ ├── core/ # Logging and error handling
│ │ └── hooks/ # NT API hooks
│ └── Cargo.toml
│
├── injector/ # Standalone injection tool
│ ├── src/
│ │ └── injection/ # Injection implementations
│ └── Cargo.toml
│
├── vmware.conf # VM configuration (you create this)
└── README.md
```
## 贡献
欢迎贡献代码!请随时提交 Pull Request 或针对 Bug 和功能请求打开 Issue。
## 免责声明
本工具仅用于恶意软件研究与教育目的。请负责任地使用,仅分析您有权限检查的文件。作者不对任何误用或因该软件造成的损害负责。
标签:API钩子, CNCF毕业项目, DAST, DLL注入, ONNX, REST API, Rust, SSH蜜罐, VMware Workstation, Web界面, Windows虚拟机, 主机隔离, 云安全监控, 云资产清单, 可视化界面, 合规性检查, 命名管道通信, 并行分析, 恶意软件分析, 文件操作监控, 机器学习检测, 样本提交, 沙箱, 流量审计, 系统调用捕获, 网络安全, 网络流量审计, 自动化分析平台, 虚拟机隔离, 行为监控, 进程注入, 逆向工程, 通知系统, 隐私保护, 静态分析