kanhiya-14s05/MALWARE-ANALYSIS-SANDBOX

GitHub: kanhiya-14s05/MALWARE-ANALYSIS-SANDBOX

一款极简且透明的恶意软件分析沙箱,通过静态分析与 Docker 隔离的动态执行帮助安全研究人员安全地检测和分析可疑文件。

Stars: 0 | Forks: 0

# 恶意软件分析沙箱 一款用于安全分析可疑/不受信任文件的防御工具:包含静态分析(哈希计算、信息熵、字符串提取、格式检测)以及动态分析(在一次性 Docker 容器中进行隔离且受监控的执行)。 它与 Cuckoo Sandbox / CAPE / any.any.run 属于同一类工具——构建得极简且易读,以便你能确切看到它实际执行了哪些隔离和监控操作,并对其进行扩展。 ## ⚠️ 使用前必读 - **此工具会运行不受信任、可能带有恶意的代码。** 请仅在您完全准备好可以随时丢弃的机器/VM 上运行,以防隔离万一失效。强烈建议使用专用的、一次性的 VM(先打快照,使用后恢复)——切勿在您的日常笔记本电脑上运行此工具。 - 默认网络模式为 `none` ——样本**完全没有任何网络访问权限**。这是最安全的默认设置,适用于大多数初步筛选(你仍然可以看到文件/进程行为)。 - `--network isolated` 为样本提供了一个虚拟的 DNS/HTTP sinkhole 进行通信(参见 `setup_fake_network.py`),以便你观察 C2/数据外发尝试。它永远不会拥有连接到真实互联网的路由。仅当你明确需要网络行为可见性,并明白你是在为样本提供*某些交互对象*时,才启用此功能。 - 此工具故意**不**支持为样本提供真实/桥接的网络访问。请勿尝试绕过此限制。 - 静态分析 (`static_analysis.py`) 绝不会执行样本——它始终可以安全运行,是不错的分析第一步。 ## 环境要求 - Docker(用于动态/执行分析;静态分析除 Python 3.8+ 外无其他依赖) - 建议使用 Linux 宿主机(基于 strace 的监控) ## 设置 ``` cd malware_sandbox docker build -t malware-sandbox:latest -f sandbox.Dockerfile . # 可选,仅当你需要 --network isolated 时: python3 setup_fake_network.py create ``` ## 用法 ``` # 仅静态分析 -- 安全,无执行,无需 Docker python3 analyze.py suspicious_file.exe --static-only # 完整分析:静态 + 隔离的动态执行,无网络 python3 analyze.py suspicious_file.exe # 使用 fake-network sinkhole 进行完整分析以观察 C2 尝试 python3 analyze.py suspicious_file.exe --network isolated --timeout 120 # 在运行 sample 时,于另一个终端中查看 sinkhole 日志 docker logs -f fim-sandbox-sinkhole ``` 每次运行都会生成: - 一份 JSON 报告(`.report.json`),包含完整的静态和动态分析结果 - 打印到控制台的可读摘要 - 基于少量启发式信号(高信息熵、可疑字符串、启动的进程、网络系统调用、写入的文件、触发超时)得出的粗略 0-100 风险评分——**这只是初步筛选的辅助工具,而非最终定论。** ## 分析内容 **静态分析(始终运行,安全):** - MD5/SHA1/SHA256(用于交叉比对威胁情报源) - 针对整个文件和分块的 Shannon 熵(检测加壳/加密) - 文件格式检测(PE/ELF/Mach-O/ZIP/PDF/OLE),包含基础的头信息解析 - 可打印字符串提取(ASCII + UTF-16LE),并标记 URL/IP/域名/注册表项/路径模式 **动态分析(隔离执行):** - 在一次性的、非 root 的、剥离权限的、只读根文件系统的、资源受限的 Docker 容器中运行,且每次运行后销毁容器 - 通过 `strace` 监控进程活动(进程派生、文件写入、网络系统调用) - 文件系统差异对比(执行期间创建/删除的文件) - 如果使用 `--network isolated`(通过 sinkhole),还会监控网络活动 - 硬性挂钟超时限制(容器内的 `timeout` + Docker 层面的强制执行) ## 隔离层(纵深防御) 1. `--network none`(或者在 `isolated` 模式下使用完全没有互联网路由的完全内部 Docker 网络) 2. `--cap-drop ALL` ——无 Linux 权限 3. `--security-opt no-new-privileges` 4. `--read-only` 只读根文件系统,仅有一小块可写的 tmpfs 5. 容器内的非 root 用户 6. `--memory`, `--cpus`, `--pids-limit` 资源上限 7. 在容器内部(`timeout` 命令)和编排器端同时强制执行挂钟超时 8. 每次分析运行后都会销毁容器 对于复杂的样本,仅靠这些单独的措施都无法完全抵御容器逃逸漏洞——如果要进行真正高风险的复杂样本分析,请将其与硬件级别的隔离(一个真实的 VM,最好位于物理隔离或严格过滤出站流量的主机上)结合使用,而不是仅仅依赖容器。 ## 扩展功能 - 将 `strace` 替换为 `auditd` 或基于 eBPF 的监控,以实现更低的开销和更丰富的系统调用上下文。 - 在静态分析中添加 YARA 规则扫描,以进行已知特征匹配。 - 添加屏幕截图捕获功能(通过无头 X server + `xdotool`),用于图形界面(GUI)样本。 - 在消耗沙箱执行时间之前,自动将哈希值提交至 VirusTotal/MalwareBazaar API 以查询已知样本。 - 特别是对于 Windows 样本,使用 Windows VM(而非 Linux 容器)能提供更真实的执行环境——这种基于 Docker 的方法最适合分析基于 ELF/脚本的样本。
标签:DAST, Docker, 云安全监控, 动态沙箱, 安全防御工具, 安全防御评估, 恶意软件分析, 无线安全, 网络信息收集, 自动化分析, 请求拦截, 跨站脚本, 逆向工具, 静态分析