首页/安全/取证与溯源速查/USN 日志:序号与时间的顺序性
Windows 取证55 条

USN 日志:序号与时间的顺序性

USN 变更日志为每条变更分配递增序号,同一秒内的多条操作可依序号定序,这是仅靠时间戳难以做到的。

取证与溯源速查安全更新于 2026-10-13

USN 日志用序号定序

NTFS 卷的 USN 变更日志为每一次文件系统变更分配一个单调递增的序号(USN),并记录文件名、父目录引用号、变更原因与时间戳。时间戳精度有限,同一秒内发生的多条操作靠时间分不出先后,而序号是严格递增的,这让「先创建后改名」这类顺序判断成为可能。

记录存在哪里

日志以 $J 数据流的形式保存在卷的 $Extend\$UsnJrnl 中,容量有限,长期运行的主机早期记录可能已被新记录覆盖。因此可用范围要以实际导出结果为准,报告里要写明导出的时间点与记录起止序号。

基本信息

适用平台Windows(NTFS 卷),Vista 以后的系统默认启用记录
数据流$Extend\$UsnJrnl 中的 $J 数据流
关键字段USN 序号、文件引用号、父目录引用号、Reason、时间戳
提取命令fsutil usn readjournal(另有管理员权限要求)
解析工具MFTECmd 可直接输出 CSV 并按 Reason 归类

典型使用场景

  • 判断某文件是新建还是改名而来:序号相邻的 FILE_CREATE 与 RENAME 组合可还原
  • 区分同秒操作:时间戳只到秒时,用序号排出真实先后
  • 定位数据外带前的打包动作:DATA_EXTEND 与 FILE_CREATE 集中出现在某时段
  • 确认删除行为:FILE_DELETE 记录与 $MFT 中的 inode 状态相互印证
  • 核对时间线:把 USN 序号作为辅助键并入主机时间线

导出与解析

导出与解析
# 原始导出(文本量大,先落地再筛选)
fsutil usn readjournal C: csv > C:\out\usn-c.csv

# 用 MFTECmd 解析 $J 数据流,输出 CSV 便于排序筛选
MFTECmd.exe -f 'C:\case\$Extend\$UsnJrnl_$J' --csv C:\out\usn --csvf usn.csv

# 在结果里按序号排序,观察同一秒内的先后
Import-Csv C:\out\usn\usn.csv | Sort-Object UpdateSequenceNumber |
  Select-Object -First 20

常见 Reason 含义

Reason含义分析用法
FILE_CREATE创建了文件或目录投递阶段的最早痕迹之一
DATA_EXTEND文件数据被追加常用于识别写入与外传前打包
DATA_OVERWRITE覆盖写入与压缩或加密写入相关
RENAME_NEW_NAME文件被改名配合旧名记录还原改名链
FILE_DELETE文件被删除痕迹清理行为的直接证据
USN 日志只记录变更,不记录访问;文件被打开读取不会产生记录,因此不能用它证明某个文件被读取过。
序号出现断档通常说明中间记录已被覆盖或导出过程有丢包,不能直接当作「该时段没有变更」,需要与 $MFT 和文件系统日志交叉确认。

易错点

  • 把序号当成时间戳使用:序号只有相对先后,不能换算成时刻
  • 忽略日志覆盖:早期变更可能已被覆盖,按序号断档处下结论会出错
  • 导出原始 csv 文本后直接入库:体量很大,应先裁剪时间范围再解析
  • 只看文件名不看父目录引用号:遗漏文件被移动到其他目录的路径
  • 把 USN 记录当作访问证据:日志不含读取行为,结论会越界

数据来源与参考

  • Microsoft Learn(USN 变更日志)
  • MFTECmd 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌