← 返回博客

在 NTFS 上删除一个文件后,真正留下了什么

· 阅读 1 分钟

在 NTFS 中,删除并不是抹除。当一个文件被删除时,操作系统只是把该文件 MFT 记录条目头中的 使用中 标志位翻转,然后更新父目录索引。记录的其余部分完全照旧。

还留着什么

一条被删除的 MFT 记录通常保留:

  • $STANDARD_INFORMATION —— 四个时间戳、文件标志位、安全 ID
  • $FILE_NAME —— 原始文件名、父目录引用、逻辑大小与物理大小
  • $DATA —— 对小文件来说是完整内容(常驻);对大文件来说是指向尚未被覆盖的簇的 runlist

你可以按记录号枚举已删除文件,仅靠 $MFT 本身就能重建一个被删除文件几乎完整的身份信息。

它什么时候才会真正消失?

被删除的记录会一直保留,直到 NTFS 需要把这个槽位让给新文件。在下一次文件创建时,系统可能会复用最早可用的空闲槽位。在繁忙的卷上,被删除的记录通常几小时就会被回收;而在使用率低的系统上,它们可以保留数月。

MFT 本身只会增长,不会缩减 —— 正是这一点让它成为如此丰富的取证产物。

互相印证,才看到完整图景

$MFT 告诉你「哪些记录存在」。$UsnJrnl(Update Sequence Number Journal)告诉你「它们身上发生过什么」,包括翻转使用中标志位的那些删除事件。$LogFile 在其上再叠加一层事务历史。

把这三者结合起来排查,常常不仅能复原「什么被删除」,还能复原「何时」与「以什么顺序」。本站的解析器读取 $MFT,另外两个日志则是非常合适的下一步目标。

外部资源