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工具, 云安全监控, 威胁情报, 开发者工具, 恶意软件分析, 日志审计, 沙箱, 网络信息收集, 静态分析