sebin-maret/CIC-YNU-IoTMal-Sandbox

GitHub: sebin-maret/CIC-YNU-IoTMal-Sandbox

一个专为IoT二进制文件设计的动态恶意软件分析沙箱,支持ARM/MIPS/x86多架构自动匹配和系统调用、网络流量的同步捕获。

Stars: 0 | Forks: 0

# CIC-YNU-IoTMal-Sandbox 一个用于 IoT 二进制文件的动态恶意软件分析沙箱。恶意软件样本会在与其 CPU 架构相匹配的 QEMU 虚拟机(ARM, MIPS, MIPSEL, x86)内自动执行,同时捕获系统调用跟踪、系统资源使用情况和网络流量。 ## 组件 ``` CIC-YNU-IoTMal-Sandbox/ ├── sandbox-manager/ # Orchestration service — task queue, result storage ├── sandbox-worker/ # Analysis node — QEMU automation, data capture └── docker-compose.yml # Full-stack deployment ``` ### sandbox-manager 一个基于 MongoDB 的 FastAPI 服务。它维护一个持久的恶意软件任务队列,按需将任务分发给 worker,并存储生成的分析归档文件。完整文档请参见 [sandbox-manager/README.md](sandbox-manager/README.md)。 ### sandbox-worker 一个基于 QEMU 的分析节点。每个 worker 从 manager 领取一个任务,检测二进制文件的 ELF 架构,启动匹配的虚拟机镜像,在 `strace`、`sar` 和 `tshark` 监控下运行恶意软件,并返回包含所有捕获数据的 zip 压缩包。Worker 是架构无关的 —— 同一个镜像可以处理 ARM、MIPS、MIPSEL 和 x86 二进制文件。完整文档请参见 [sandbox-worker/README.md](sandbox-worker/README.md)。 ## 工作原理 ``` ┌──────────────────────────────────────────────────────┐ │ sandboxnet │ │ │ │ ┌─────────────────┐ ┌──────────────────────┐ │ │ │ sandbox-manager │◀──────│ sandbox-worker-N │ │ │ │ (+ MongoDB) │ │ │ │ │ └─────────────────┘ │ ┌────────────────┐ │ │ │ ▲ │ │ QEMU VM │ │ │ │ │ result zip │ │ (tap network) │ │ │ │ └──────────────────│ └────────────────┘ │ │ └──────────────────────────────────────────────────────┘ ``` 1. 文件通过 manager API 添加到队列(批量添加用 `/init-queue`,单个文件用 `/submit-file`)。 2. 每个 worker 轮询 manager,认领一个任务,并运行两阶段分析: - **阶段 1**:启动虚拟机 → 配置网络 → 在 `strace`/`sar`/`tshark` 监控下运行恶意软件 → 关机。 - **阶段 2**:重启虚拟机 → 将 `strace.log` 和 `sar.out` 传输给 worker → 关机。 3. Worker 将所有捕获的文件打包成 zip 并提交给 manager。 4. 结果可以通过 manager API 获取。 这种两阶段方法确保虚拟机内写入的日志文件在被收集之前已完全刷新到虚拟磁盘。 ## 网络隔离警告 每个 worker 将其 tap 接口直接桥接到容器的网络。恶意软件虚拟机获得一个可路由的 IP 并可以发起出站连接 —— 这是有意为之,因为捕获真实的 C2 通信、DNS 查询和数据渗透尝试是分析的核心部分。 **这在实践中意味着:** - 在虚拟机内运行的恶意软件**可以访问公共互联网**。C2 信标、DNS 查询和下载尝试将通过您主机的网络连接发出。请确保您在隔离的研究网络或其互联网流量受到监控且可接受的机器上运行此程序。 - 在虚拟机内运行的恶意软件**可以访问 `sandboxnet` 上的其他容器**(manager,其他 worker)。这是桥接网络模型的一个已知限制。请勿在与 worker 相同的 Docker 网络上运行敏感服务。 - 虚拟机的所有出站流量均会在每个任务的 `network.pcap` 中被捕获,这是分析的主要网络产物。 **运行前的建议预防措施:** 1. 在专用、隔离的研究机器或网段(物理隔离、VLAN 或具有限制路由的虚拟机)上运行 —— 而不是在共享的学术或机构基础设施上。 2. 在运行之前通知您机构的网络管理员,特别是在大学或实验室环境中 —— 沙箱将产生异常流量(端口扫描、C2 信标、漏洞利用尝试),可能会触发网络监控系统。 3. 如果您的研究数据集不需要观察实时的 C2 或 DNS 行为,请考虑禁用虚拟机的互联网访问 —— 参见下方的 [禁用虚拟机互联网访问](#disabling-vm-internet-access)。 ## 快速开始 ### 1. 配置 ``` cp .env.example .env ``` 编辑 `.env` 并设置 `MONGO_USERNAME` 和 `MONGO_PASSWORD`。 ### 2. 设置恶意软件目录 编辑 `docker-compose.yml` 并更新 `sandbox-manager` 下的恶意软件卷挂载: ``` volumes: - /path/to/your/malware:/malware:ro ``` ### 3. 构建并运行 ``` docker compose up --build ``` 这将启动 MongoDB、manager(端口 `8011`)和一个 worker。 ### 4. 初始化队列 一旦一切运行起来,告诉 manager 扫描恶意软件目录并将所有样本加入队列: ``` curl http://localhost:8011/api/v1/sandbox-manager/init-queue ``` 或者提交单个文件: ``` curl -X POST http://localhost:8011/api/v1/sandbox-manager/submit-file \ -F "file=@/path/to/sample" ``` ### 5. 监控进度 ``` curl http://localhost:8011/api/v1/sandbox-manager/status ``` ### 6. 获取结果 ``` # 列出已完成任务 curl http://localhost:8011/api/v1/sandbox-manager/results # 下载结果 zip curl -O http://localhost:8011/api/v1/sandbox-manager/results/{task_id} ``` ## 禁用虚拟机互联网访问 默认情况下,QEMU 虚拟机可以访问公共互联网。要阻止这一点,同时仍允许虚拟机与其 worker 通信(二进制文件下载和日志上传需要),请在 `.env` 中设置 `ALLOW_VM_INTERNET=false`: ``` ALLOW_VM_INTERNET=false ``` 设置此项后,每个 worker 在启动时会插入两条 `iptables` FORWARD 规则: 1. **允许** `tap0 → worker IP` —— 虚拟机仍然可以访问同一容器上的 `server.py`。 2. **丢弃** `tap0 → 其他所有内容` —— 互联网和 `sandboxnet` 上的其他容器将无法访问。 轮询进程通过容器自身的网络堆栈与 manager 通信,不受这些规则影响。 ## 扩展 Worker 要并行运行多个 worker,请在 `docker-compose.yml` 中复制 `sandbox-worker-1` 块(其中包含一个注释示例),并为每个 worker 分配唯一的 `APP_NAME`、主机端口以及 `192.168.40.0/24` 子网上的 IP 地址。 每个 worker 需要一个固定的 IP,因为 QEMU 使用 worker 的容器 IP 创建 tap 网络接口,以在主机和虚拟机之间路由流量。 ## 结果归档内容 每个完成的任务会生成一个 `.zip` 文件,包含: | 文件 | 描述 | |------|-------------| | `strace.log` | 恶意软件执行的完整系统调用跟踪 | | `sar.out` | 每秒采样的系统资源使用情况(CPU、内存、I/O) | | `network.pcap` | 在 tap 接口上捕获的原始网络流量 | | `qemu.log` | 两个分析阶段的 QEMU 控制台输出 | ## 环境要求 - Docker 和 Docker Compose - 支持 TUN/TAP 的主机内核(大多数 Linux 发行版的标准配置) - Worker 以 `privileged`(特权)容器运行以创建 tap 接口
标签:AV绕过, DAST, Docker, ELF文件分析, FastAPI, Hakrawler, IoT安全, IP 地址批量处理, MIPS, MIPSEL, MongoDB, QEMU, strace, tshark, x86, 二进制分析, 云安全运维, 僵尸网络检测, 内联执行, 威胁情报, 子域名生成, 安全防御评估, 开发者工具, 恶意软件分析, 沙箱, 系统调用跟踪, 系统资源监控, 网络信息收集, 网络流量分析, 蜜罐, 证书利用, 请求拦截, 身份验证强制, 逆向工具