4.8 KiB
4.8 KiB
沙箱工具特有坑与边界
网络隔离坑组
- NAT 不等于断网:VM 默认 NAT 允许出站外联——断网必须显式 Host-only/Internal(或
--net=none),并验证ping 8.8.8.8不通(SKILL.md 坑 2) - fake DNS 只劫持解析:样本用 IP 直连或硬编码 IP 时 fake DNS 无效——配合防火墙/INetSim 绑住目标端口,或观察连接落点
- INetSim 只模拟常用服务:样本连的端口不在 INetSim 服务表里会连接失败(TCP RST)——先看样本要连什么端口(静态 re-netcap/动态抓包),按需补模拟服务;DNS 指向错误时样本静默等待超时,先验证
curl落点再放样本 - systemd-resolved 与
--dns冲突:firejail man 页注明--dns在 systemd-resolved 环境不受支持——该环境改用--net=none或 VM 内独立 DNS
快照/回滚坑组
- 快照只建不恢复 = 环境污染:样本持久化残留(进程/文件/注册表)污染下次分析——恢复命令提前写好、分析完立即执行、恢复后验证无残留(SKILL.md 坑 1)
- 快照建在样本运行后:忘了先建基线,样本已经改过系统才想起——基线快照必须早于任何样本运行;中途才建的快照含污染状态,别当干净基线
- VBoxManage 与 VirtualBox 版本行为:
snapshot take/restore语法长期稳定,但新版本对 headless/guestcontrol 有改动——自动化脚本先VBoxManage --version确认版本;VMware 侧vmrun命令兼容性以官方文档为准
容器坑组
- 容器共享内核 ≠ 完全隔离:Docker 与宿主机共享内核,内核漏洞利用/全局 sysctl 影响宿主——高威胁样本用 VM 快照,容器只用于低风险快速测试(SKILL.md 坑 3)
--network none后 docker cp 仍可用:断网只影响容器网络栈,docker cp/docker exec走守护进程通道不受影响——隔离与文件交互不冲突- 镜像带样本残留:容器删了但 commit 出的镜像还留着样本痕迹——分析完
docker rmi清理镜像;复用基线镜像前重新拉取干净层
firejail 坑组
--clean不存在:0.9.80 实测报invalid --clean command line option,官方 man 页(0.9.72 起)无此选项——清理用firejail --list+firejail --shutdown=<name|pid>(SKILL.md 坑「清理选项被讹传」)- 用户态隔离不是安全边界:firejail 是 namespace/seccomp 组合——不防内核漏洞利用与提权(
--net=none下用户态逃逸面仍在),高威胁样本用 VM;--net=none在部分平台可致应用崩溃(man 页注明),备选--protocol=unix --private只隔离 home/root 路径:--private-etc之外的 /etc 全局可见(读)——敏感配置先--private-etc=hosts,resolv.conf等白名单- firejail 检测面:样本可查沙箱特征(firejail 环境变量/挂载特征)——与 VM 逃逸检测同理,识别后按 re-evasion 应对
环境指纹坑组(隔离 ≠ 伪装)
- 隔离与伪装是两个问题:隔离防样本外联/污染宿主;伪装防样本因环境指纹不触发——时间(RDTSC/GetTickCount)、硬件(核数/内存)、交互(鼠标/窗口)检测都要单独应对(SKILL.md 坑 6-8)
- 命名与资源阈值:
sample.exe/malware目录名、CPU/内存/磁盘阈值、交互缺失都会触发 T1497.001 类检测——命名规范化、资源充足、交互按人类分布模拟 - 统计级交互校验:新样本对鼠标轨迹做统计判别(采样频率/欧氏距离/前台窗口数)——固定像素移动会被识破,按真实行为分布模拟并拉长观测窗(SKILL.md 坑 8)
版本差异
- firejail:0.9.72(Debian bookworm)与 0.9.80(Arch 实测)选项集稳定,
--clean均不存在;--net=none的崩溃警告自老版本就有——发行版打包版本差异大(0.9.6x-0.9.8x),脚本化前firejail --version确认 - VirtualBox:snapshot 命令语法跨 6.x/7.x 稳定;Guest Additions 版本需与主版本匹配(不匹配剪贴板/共享目录失效,且是 VM 逃逸检测特征之一)
- docker:
--network none、docker cp行为长期稳定;commit 出的镜像不可复现依赖(分层含中间状态)——基线用 Dockerfile 重建而不是 commit 产物 - INetSim:Debian 包
inetsim(bookworm 1.3.2);--version/--session选项稳定;日志路径随发行版打包略有差异(以/etc/inetsim/inetsim.conf为准)
使用注意
- 动态分析一律先过本技能(re-analyze/platform-tips 最高原则);样本/产物 sha256 双端存证(re-triage)
- 分析结论与决策记录(隔离级别、网络方案、恢复验证)写 re-analyze/analysis-contract
- 版本相关行为(firejail 选项、VM 工具、INetSim 服务表)以目标版本实际表现为准