Turbotanker/Malware-Analysis-Sandbox
GitHub: Turbotanker/Malware-Analysis-Sandbox
基于 VirtualBox 和 REMnux 构建的隔离式恶意软件分析环境,通过 Python 自动编排系统调用追踪、网络流量捕获和文件监控,生成结构化的行为分析报告。
Stars: 0 | Forks: 0
# 恶意软件行为分析沙箱
一个使用 VirtualBox 和 REMnux 构建的隔离恶意软件分析环境,用于安全地执行和观察可疑二进制文件。该实验室捕获系统调用、网络流量、进程活动和文件系统更改,然后生成结构化分析报告——全部由 Python 自动化完成。

## 目录
- [概述](#overview)
- [架构](#architecture)
- [功能](#features)
- [设置](#setup)
- [用法](#usage)
- [分析工作流](#analysis-workflow)
- [项目结构](#project-structure)
- [安全注意事项](#security-considerations)
- [许可证](#license)
## 概述
恶意软件分析需要一个可以在不危及生产系统或个人数据风险的情况下运行可疑代码的环境。本项目提供:
- **完全隔离的虚拟机**(VirtualBox 上的 REMnux),无互联网访问
- 对系统调用、进程、文件更改和网络流量的**自动化监控**
- **Python 脚本**,用于编排分析管道并生成 Markdown 报告
- 涵盖静态分析、动态分析和网络取证的**详尽文档**
该沙箱设计为可复现——对 VM 进行快照、运行恶意软件、收集样本、还原、重复。
## 架构
沙箱由三个隔离层组成:
| 层级 | 组件 | 用途 |
|---|---|---|
| **Hypervisor** | VirtualBox | 主机与 VM 之间的硬件级隔离 |
| **网络** | 仅主机适配器 (`vboxnet0`) | 无互联网;所有流量可从主机观察 |
| **快照** | VirtualBox 快照 | 每次运行后立即还原到干净状态 |
在 REMnux VM 内部,五个 Python 脚本协同工作:
1. **sandbox_launcher.py** —— 启动所有监控器,执行样本,并收集结果
2. **network_capture.py** —— 封装 `tcpdump` 以进行自动化数据包捕获
3. **process_monitor.py** —— 轮询 `/proc` 以检测新生成的进程
4. **file_monitor.py** —— 监视目录中的文件创建、修改和删除(inotify 或轮询)
5. **report_generator.py** —— 将 strace 日志、PCAP 统计信息和监控输出解析为 Markdown 报告
有关详细分类,请参阅 [architecture.md](architecture.md)。
## 功能
- **静态分析**工具指南 —— `strings`、`file`、`readelf`、`objdump`、SHA-256 哈希、YARA 规则
- 使用 `strace`、`ltrace` 和自动化 Python 监控器进行**动态分析**
- 使用 `tcpdump` 和 Wireshark 过滤器配方进行**网络分析**,用于 DNS 信标、C2 流量和数据渗透
- 包含 IOC 表和 MITRE ATT&CK 映射的**自动化报告生成**
- **安全至上设计** —— 仅主机网络、无凭证、iptables 加固、快照工作流
## 设置
### 前置条件
| 需求 | 详情 |
|---|---|
| VirtualBox | 7.0+ ([安装指南](setup/install_virtualbox.md)) |
| REMnux OVA | 从 [remnux.org](https://remnux.org/) 下载 ([设置指南](setup/remnux_setup.md)) |
| 主机 OS | Linux、macOS 或 Windows |
| RAM | 最小 8 GB(推荐 16 GB) |
| 磁盘 | 40 GB 可用空间 |
| Python | 3.10+(REMnux 上预装) |
### 快速开始
```
# 导入 REMnux VM
VBoxManage import remnux-v7-focal.ova --vsys 0 --vmname "REMnux-Sandbox"
# 配置 host-only networking (无互联网)
VBoxManage hostonlyif create
VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
VBoxManage modifyvm "REMnux-Sandbox" --nic1 hostonly --hostonlyadapter1 vboxnet0
# 拍摄一个干净快照
VBoxManage snapshot "REMnux-Sandbox" take "clean-baseline"
# 启动 VM 并传输分析脚本
VBoxManage startvm "REMnux-Sandbox"
scp -r scripts/ remnux@192.168.56.101:~/sandbox/
# 传输样本并运行分析
scp sample.zip remnux@192.168.56.101:~/sandbox/samples/
ssh remnux@192.168.56.101
cd ~/sandbox
unzip -P infected samples/sample.zip
sudo python3 scripts/sandbox_launcher.py samples/suspicious_binary --duration 120
```
有关详细说明,请参阅:
- [VirtualBox 安装](setup/install_virtualbox.md)
- [REMnux 设置](setup/remnux_setup.md)
- [网络隔离](setup/network_isolation.md)
## 用法
### 运行分析
```
# 全自动流水线 (VM 内部)
sudo python3 scripts/sandbox_launcher.py --duration 120 --output-dir ./results
```
这将启动网络捕获、进程监控和文件系统监控,在 `strace` 下执行二进制文件,等待观察窗口,并生成报告。
### 单独脚本
```
# 捕获网络流量
sudo python3 scripts/network_capture.py --interface eth0 --output capture.pcap --duration 60
# 监控新进程
python3 scripts/process_monitor.py --output processes.log --interval 2
# 监控文件系统变化
python3 scripts/file_monitor.py --watch /tmp --watch /var/tmp --output file_changes.log
# 根据收集的 artifacts 生成报告
python3 scripts/report_generator.py \
--strace-log strace.log \
--network-log capture.pcap \
--process-log processes.log \
--file-log file_changes.log \
--output report.md
```
## 分析工作流
```
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Obtain │───►│ Static │───►│ Setup │───►│ Dynamic │───►│ Report │
│ Sample │ │ Analysis │ │ Sandbox │ │ Analysis │ │ & IOCs │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
```
1. **获取** —— 从 MalwareBazaar、VirusTotal 或内部分类下载样本
2. **静态分析** —— 对文件进行哈希、提取字符串、检查头部([指南](analysis/static_analysis.md))
3. **设置** —— 将 VM 还原到干净的快照,启动监控
4. **动态分析** —— 执行样本并观察行为([指南](analysis/dynamic_analysis.md))
5. **报告** —— 审查生成的报告,提取 IOC,映射到 MITRE ATT&CK([示例](analysis/example_report.md))
## 项目结构
```
malware-analysis-sandbox/
├── README.md ← You are here
├── architecture.md ← System design and data flow
├── setup/
│ ├── install_virtualbox.md ← VirtualBox installation guide
│ ├── remnux_setup.md ← REMnux VM import and configuration
│ └── network_isolation.md ← Host-only network setup
├── scripts/
│ ├── sandbox_launcher.py ← Orchestrates the full analysis pipeline
│ ├── network_capture.py ← Automated tcpdump wrapper
│ ├── process_monitor.py ← Detects new processes via /proc
│ ├── file_monitor.py ← Filesystem change detection (inotify)
│ └── report_generator.py ← Aggregates logs into Markdown report
├── analysis/
│ ├── static_analysis.md ← Static analysis techniques and tools
│ ├── dynamic_analysis.md ← Dynamic analysis techniques and tools
│ └── example_report.md ← Sample analysis report template
├── samples/
│ └── sample_malware_note.txt ← Safety notice (no real malware here)
└── diagrams/
└── sandbox_architecture.png ← Visual architecture diagram
```
## 安全注意事项
| 规则 | 原因 |
|---|---|
| **切勿在主机 OS 上运行恶意软件** | 主机管理 Hypervisor;一旦被攻陷将失去所有隔离 |
| **始终使用仅主机网络** | 防止恶意软件访问互联网或横向移动 |
| **每次执行前进行快照** | 确保干净的还原路径;恶意软件持久化被清除 |
| **切勿使用真实凭证** | VM 凭证是有意众所周知的(`remnux` / `malware`) |
| **切勿允许直接互联网访问** | 如果恶意软件需要网络响应,请使用 INetSim 模拟服务 |
| **以加密 ZIP 传输样本** | 防止意外执行;行业惯例密码为 `infected` |
| **添加 iptables FORWARD DROP 规则** | 主机上的深度防御,阻止任何转发流量 |
## 使用的工具
| 类别 | 工具 |
|---|---|
| 虚拟化 | VirtualBox |
| 分析 OS | REMnux (基于 Ubuntu) |
| 静态分析 | `strings`, `file`, `readelf`, `objdump`, `sha256sum`, YARA |
| 动态分析 | `strace`, `ltrace` |
| 网络分析 | `tcpdump`, Wireshark |
| 文件系统监控 | inotify, Python 轮询 |
| 自动化 | Python 3 |
| 报告 | Markdown |
## 许可证
本项目基于 [MIT 许可证](LICENSE) 发布。请负责任地使用,并仅用于授权的安全研究。
标签:Beacon Object File, DAST, DNS 反向解析, DNS 解析, HTTP工具, IP 地址批量处理, Python, REMnux, VirtualBox, 二进制分析, 云安全运维, 云资产清单, 合规性检查, 威胁情报, 子域名生成, 安全实验室, 开发者工具, 恶意软件分析, 情报收集, 文件系统监控, 无后门, 沙箱技术, 流量捕获, 漏洞研究, 私有化部署, 网络安全, 网络安全审计, 网络拓扑, 自动化报告, 虚拟化隔离, 逆向工具, 逆向工程, 防御加固, 防御规避, 隐私保护