WillBoone24/Malware-Sandbox
GitHub: WillBoone24/Malware-Sandbox
一个基于 Go 的模块化恶意软件分析沙箱,结合静态二进制剖析与动态行为监控来生成威胁评分和 HTML 报告。
Stars: 0 | Forks: 0
# 恶意软件沙箱
**Malware Sandbox** 是一个基于 Go 的工具,它结合了手工编写的静态二进制分析和真实的动态执行监控,以生成统一的威胁判定结果和独立的 HTML 报告。
它对 PE 和 ELF 二进制文件执行深入的静态检查,在资源受限的沙箱中执行样本,同时追踪 syscall 和网络流量,并将所有信息关联起来,生成带有 MITRE ATT&CK 映射发现的加权威胁评分。
## 功能
**静态分析**
- 手工编写的 PE 解析器(DOS/NT 头、节表、导入/导出目录、特征标志)—— 无需类似 `pefile` 的依赖
- 手工编写的 ELF 解析器(头、程序/节头、动态符号表、解释器路径)
- ASCII/UTF-16 字符串提取,带有熵评分和熵标记区域
- 加壳和混淆检测(节熵、UPX 签名、异常节名、导入异常)
- 针对精选的恶意软件家族和可疑模式签名规则集进行嵌入式 YARA 扫描
- 入口点反汇编,标记可疑操作码(反调试技巧、`CPUID`/`RDTSC` 检查)
**动态分析**
- 强制执行资源限制(`ulimit`、cgroups)的沙箱执行,以及每个样本独立的临时目录
- 通过 `strace` 进行完整的 syscall 追踪,并解析为结构化的事件流
- 将 syscall 分类为不同的行为类别:文件 I/O、网络、进程注入、权限提升、持久化
- 文件系统监控,标记对敏感路径(`/etc`、`/tmp`、cron 目录)的写入操作
- 执行期间的网络捕获,提取 C2 指标(IP、域名、HTTP 主机)
- 从 `clone`/`fork`/`execve` 事件重建进程树,检测进程空心化和异常的派生链
**检测与报告**
- 加权评分引擎,将静态和动态信号结合为 0–100 的威胁评分
- `CLEAN` / `SUSPICIOUS` / `MALICIOUS` 判定结果,包含每个发现的置信度级别和 MITRE ATT&CK 战术映射
- 告警去重,仅显示严重程度最高的唯一行为
- 独立的 HTML 报告,包含威胁评分仪表盘、进程树可视化、syscall 时间轴以及静态/动态发现表格
## 架构
```
┌─────────────────┐
sample ──▶ │ Ingestion │ magic bytes, file typing, hashing
└────────┬─────────┘
│
┌──────────────┼───────────────┐
▼ ▼
┌───────────────┐ ┌───────────────┐
│ Static Engine │ │ Dynamic Engine │
│ PE/ELF parse │ │ strace sandbox │
│ strings/entropy│ │ syscall classify│
│ YARA + disasm │ │ net + fs monitor│
└───────┬────────┘ └───────┬────────┘
│ │
└──────────────┬────────────────┘
▼
┌──────────────────┐
│ Scoring & Verdict │ weighted score, ATT&CK mapping
└─────────┬─────────┘
▼
┌──────────────────┐
│ Report Generator │ JSON + self-contained HTML
└──────────────────┘
```
## 安装说明
```
git clone https://github.com//malware-sandbox.git
cd malware-sandbox
go build -o malware-sandbox ./cmd/malware-sandbox
```
### 前置条件
- Go 1.21+
- Linux 主机(使用 `strace`、cgroups 和 `/proc`)
- 已安装 `strace` 并可在 `PATH` 中访问
- `libpcap-dev`(用于网络捕获)
- YARA C 库(用于嵌入式规则扫描)
- 需要 Root 权限或 `CAP_SYS_PTRACE` 才能进行 syscall 追踪
## 用法
```
# 仅 Static 扫描
./malware-sandbox scan --static-only sample.exe
# 完整的 Static + dynamic 分析(包含 HTML report)
./malware-sandbox scan --sandbox --timeout 60s --output report.html sample.bin
# 批量扫描 samples 目录
./malware-sandbox scan --sandbox --dir ./samples --output-dir ./reports
```
### 配置
Malware Sandbox 通过 YAML 文件进行配置(默认:`config.yaml`):
```
sandbox:
timeout: 60s
memory_limit: 512M
network_capture: true
yara:
rules_dir: ./rules
scoring:
weights:
yara_hit: 30
entropy_anomaly: 15
suspicious_syscall: 20
network_c2_indicator: 25
packer_detected: 10
```
## 示例输出
```
$ malware-sandbox scan --sandbox sample.bin
[+] Static analysis complete (PE, 4 sections, entropy: 7.2 avg)
[+] YARA matches: 2 (Win32.Generic.Trojan, UPX.Packed)
[+] Dynamic execution complete (42s runtime, 1,204 syscalls traced)
[+] Network: 1 C2 indicator (185.x.x.x:443, TLS SNI mismatch)
[+] Process tree: 3 children (1 flagged: hollowed process)
Threat Score: 87/100
Verdict: MALICIOUS (high confidence)
ATT&CK Techniques:
T1055 Process Injection
T1071 Application Layer Protocol (C2)
T1027 Obfuscated Files or Information
Report written to: report.html
```
## 项目结构
```
malware-sandbox/
├── cmd/malware-sandbox/ # CLI entrypoint
├── internal/
│ ├── ingest/ # File typing, hashing, metadata
│ ├── static/ # PE/ELF parsers, strings, entropy, YARA, disasm
│ ├── dynamic/ # Sandbox executor, strace parser, classifiers
│ ├── network/ # Packet capture and C2 indicator extraction
│ ├── scoring/ # Weighted scoring and verdict engine
│ └── report/ # JSON and HTML report generation
├── rules/ # Bundled YARA rules
├── config.yaml
└── README.md
```
## 安全与隔离
Malware Sandbox 会执行不受信任的、潜在恶意的二进制文件。在针对真实世界的样本运行它之前:
- 在具有快照/还原功能的一次性 VM 或 container 中运行
- 断开与生产网络的连接;为动态引擎的网络捕获使用隔离或模拟的网络
- 切勿在您在乎的主机上以特权用户身份运行
- 将所有样本库(例如 theZoo、MalwareBazaar)视为活动武器——仅在隔离环境中下载和存储它们
## 路线图
- [ ] Windows 原生动态执行(目前仅支持 Linux/`strace`)
- [ ] 内存取证集成(类 volatility 的进程内存转储)
- [ ] 用于批处理吞吐量的分布式沙箱池
- [ ] 基于 JSON 报告 API 的 Web UI
## 许可证
MIT(或您首选的许可证——发布前请更新)
标签:DAST, EVTX分析, Go, Ruby工具, 云安全监控, 威胁情报, 开发者工具, 恶意软件分析, 日志审计, 沙箱, 网络信息收集, 静态分析