如何在沙盘里分析一个程序释放了哪些文件

在沙盘中分析程序释放了哪些文件,核心是记录运行前后的文件系统变化,并把变化关联到程序及其子进程。
通用流程
-
准备干净环境
- 使用隔离的虚拟机或沙盘,先创建快照。
- 记录程序运行前的目录状态;尽量不要放入真实个人文件。
- 运行程序时观察完整流程,包括弹窗、安装步骤和延迟行为。
-
记录文件操作
重点关注:- 新建、写入、覆盖文件
- 临时文件和缓存
- 重命名、移动、删除
- 子进程创建的文件
- 用户目录、临时目录、启动目录、系统目录中的变化
-
比对运行前后
检查运行前后目录清单、时间戳和文件哈希。这样能发现新增文件,也能发现被覆盖的文件。若程序会延迟释放文件,可在运行后继续观察一段时间。
Windows
可用 Process Monitor(Procmon):
- 以管理员身份启动,清空现有事件后开始捕获。
- 用 Process Tree 找到目标程序及其子进程,并按进程名或 PID 过滤。
- 重点查看
CreateFile、WriteFile、SetRenameInformationFile、SetDispositionInformationFile等事件。 - 检查事件路径、操作结果和进程名;保存
.PML日志供后续分析。
也可以使用 Windows Sandbox 或其他沙盘的“文件系统变化 / 行为报告”功能。注意:只按主程序名过滤可能漏掉由它启动的子进程。
Linux
可用 strace 跟踪文件相关系统调用,例如:
strace -ff -o trace -e trace=%file ./program
日志中可搜索 openat、creat、rename、unlink 等调用及对应路径。strace 记录的是程序尝试执行的操作,需结合返回值判断操作是否成功;写入内容和最终文件状态还应通过文件系统比对确认。
最后确认
对疑似释放出的文件记录路径、大小、时间戳、SHA-256 哈希,必要时复制出来做静态分析。不要仅凭“文件被打开”就认定它是新释放的文件:程序也可能只是读取了该文件。