本文目录导读:

比较系统快照通常用于追踪文件系统、注册表(Windows)或系统配置的变化,常用于安全分析(如检测恶意软件行为)或系统维护,以下是几种使用工具进行系统快照比较的方法,按平台分类:
原生工具(无需安装)
Windows:robocopy 或 fc 结合日志
- 适用场景:快速比较两个时间点的文件列表或内容。
- 方法:
- 创建第一次快照:
dir /s /b "C:\Path" > snapshot1.txt - 一段时间后创建第二次快照:
dir /s /b "C:\Path" > snapshot2.txt - 比较差异(文件新增/删除):
fc snapshot1.txt snapshot2.txt - 若需比较文件内容变化,可用
fc /b file1 file2(二进制)或comp。
- 创建第一次快照:
Linux:diff 结合日志
- 方法:
find /path -type f -printf "%p %s %M\n" > snap1.txt # 记录路径、大小、权限 # ... 一段时间后 ... find /path -type f -printf "%p %s %M\n" > snap2.txt diff snap1.txt snap2.txt
- 更精细(包括时间戳):
rsync -a --delete --dry-run /source /destination可生成差异报告。
macOS:mdfind + diff(或 Time Machine)
- 可用
ls -laR /path > snap1.txt,再diff。 - Time Machine 自带基于时间的文件系统快照比较(导航到前一个版本并对比)。
专用快照比较工具(推荐)
WinMerge(Windows)
- 功能:对比文件/文件夹内容、注册表导出的
.reg文件。 - 步骤:
- 导出两次快照(如使用
reg export HKLM\Software snapshot.reg)。 - 在 WinMerge 中打开这两个
.reg文件,自动高亮差异。
- 导出两次快照(如使用
- 优势:图形化、支持文件夹同步、忽略空白行。
RegShot(Windows)
- 专用工具:专门比较注册表和文件系统快照。
- 流程:
- 点击“1st snapshot”拍摄初始状态。
- 执行操作(如安装软件、运行进程)。
- 点击“2nd snapshot”后选“Compare”,生成详细差异报告(新增/删除/修改的键值对和文件)。
- 输出:HTML 或 TXT 报告,含高亮。
AIDE / Tripwire(Linux/Unix)
- 适用于安全基线监控:生成数据库快照,定期比对完整性。
- 使用:
aide --init # 生成 /var/lib/aide/aide.db.new mv aide.db.new aide.db # 初始化基线 aide --check # 比较当前与数据库差异
- 输出:列出新增、删除、修改的文件及属性(权限、大小、哈希、链接数)。
Sysinternals Suite(Windows)
- 进程监视器(Procmon):实时捕获文件、注册表、进程事件,但更适合动态监控。
- 比较方式:先导出两次日志(如操作前后),用
Log Comparison(内置)或第三方工具比较 CSV。
专业数据分析工具(高级)
Elastic Stack(SIEM)
- 流程:使用
OSQuery或Beats采集文件、注册表哈希,存入 Elasticsearch。 - 比较:通过 Kibana 可视化不同时间点的字段差异(如
file.hash.md5变化)。 - 示例:查询
@timestamp在两个窗口的file.path集合的差集。
Velociraptor(跨平台,取证)
- 功能:用 VQL 查询「所有文件的时间戳、哈希」,生成快照,再利用
diff或VQL的hash_compare函数比较。 - 适合:大规模终端取证,自动标记新增/修改的可执行文件。
自定义脚本(Python + hashlib)
import os, hashlib, json
def get_snapshot(path):
snap = {}
for root, dirs, files in os.walk(path):
for f in files:
full = os.path.join(root, f)
try:
with open(full, 'rb') as fp:
h = hashlib.md5(fp.read(65536)).hexdigest()
snap[full] = h
except: pass
return snap
# 保存两次快照的 JSON,然后用 dict 比较
- 优势:自定义粒度(仅比较哈希、时间戳、权限 vs 内容)。
快照 VS 当前状态(瞬间比较)
若你已有快照文件(如备份的镜像、虚拟机快照、系统还原点):
| 快照类型 | 比较工具 | 说明 |
|---|---|---|
| 虚拟机快照(VMware/VirtualBox) | vmware-vdiskmanager -R 或 VBoxManage diff |
计算快照链的差异块 |
| 系统还原点(Windows) | vssadmin list shadows + 手工挂载 |
将还原点挂载为卷(如 C:\@GMT-...),然后用 robocopy 或 WinMerge 比较 |
磁盘镜像 dd/img |
diff + xxd 或 gddrescue --diff-maps |
仅比较二进制差异,适合底层取证 |
总结建议
- 简单文件/注册表变化:使用 RegShot(Windows)或
diff+ 索引文件(Linux)。 - 系统完整性监控(长期):部署 AIDE/Tripwire(Linux)或 Wazuh/Sysmon(Windows)。
- 高速、大量的文件差异:用 Python/VQL 脚本比较哈希列表,避免全文件内容比较。
- 图形化任务:WinMerge 或 Beyond Compare(付费)提供直观对比树。
如果目标是安全审计,建议组合使用:
- 先拍注册表快照(RegShot)
- 同时记录文件列表及哈希(
certutil -hashfile或Get-FileHash) - 执行可疑操作后比较,结合 Procmon 筛选异常进程的 I/O。
这样能覆盖大多数静态和动态变化分析需求。
标签: 系统快照
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。