取证笔记
关于 NTFS 内部结构、MFT 格式以及数字取证工作流程的简短笔记。
证明某个文件曾经存在于一台 Windows 系统上
当一个文件不再出现在磁盘上时,$MFT 依然能证明它曾经在过 —— 而且,通常还能告诉你它的内容。
$UsnJrnl 与 $MFT:把变更日志与文件表配对使用
$MFT 告诉你每个文件当前的状态,$UsnJrnl 告诉你它是如何一步步变成那样的。
Master File Table(MFT):NTFS $MFT 详解
什么是 NTFS 主文件表、一条记录是如何布局的、它能存放哪些属性,以及当 $MFT 损坏时该怎么办。
$MFT 如何暴露一次勒索软件攻击
勒索软件会在 $MFT 上留下独特的足迹:大规模扩展名变更、爆发式写入,以及孤立的原始文件。
MFT 解析器对比:MFTECmd、omerbenamram/mft 与浏览器端解析
三款严肃的 MFT 解析器,各自擅长什么,以及何时该选谁:MFTECmd、omerbenamram/mft 和基于 WebAssembly 的浏览器端工具。
如何借助 MFT 在 NTFS 上恢复已删除的文件
分步讲解:NTFS 上已删除文件的恢复原理、应使用哪些工具,以及什么时候数据是真的没了。
用 $MFT 构建取证时间线
每条 MFT 记录都带着八个时间戳,足以让你按小时为单位重建一个 Windows 卷的活动。
如何在 Python 中解析 $MFT
在 Python 中解析 NTFS $MFT 的三种可行方案:analyzeMFT、libmft,以及调用快速的 Rust 解析器。
备用数据流:NTFS 上隐藏的 $DATA 属性
每个 NTFS 文件都可以承载多个 $DATA 属性。每一个都是独立的数据流,对绝大多数文件列表来说是不可见的。
什么是 $MFTMirr,NTFS 何时会用到它?
$MFTMirr 是 MFT 前几条记录的备份,让 NTFS 能够从引导区损坏中恢复。它包含什么、位于何处、chkdsk 如何使用它。
如何从正在运行的 Windows 系统中提取 $MFT
$MFT 在 Windows 运行时是锁定的。三种可靠的获取方式:fsutil、FTK Imager 和 KAPE。
卷影副本与 $MFT:恢复旧版本的 MFT
每个 VSS 快照都包含其自身时间点的 $MFT 副本。如何提取它们,以及它们能告诉你哪些活动 MFT 看不到的事。
NTFS MFT 与 FAT 的对比:改变了什么,以及为何取证人员要在意
NTFS 如何用主文件表替代了 FAT 的分配表,以及这对证据恢复意味着什么。
在 NTFS 上删除一个文件后,真正留下了什么
在 NTFS 上「删除」一个文件几乎从不会真的抹掉它。MFT 记录、$STANDARD_INFORMATION、$FILE_NAME,以及通常 $DATA,都在那里等着被重新使用。
常驻数据:住在 MFT 里的小文件
小文件的 $DATA 属性会被直接保存在 MFT 记录中。在取证中,这意味着无需触碰磁盘就能恢复数据。
NTFS 反取证:攻击者会对 MFT 做什么,以及如何识别
时间戳篡改、备用数据流、擦除、USN 日志操纵 —— NTFS 上常见的反取证手段,以及每一种留下的痕迹。
MFT 的四个时间戳与时间篡改的痕迹
每条 MFT 记录都带有两组四个时间戳。理解它们为何会出现偏差,是 NTFS 时间分析的基础。
MFT 记录内部:签名、头部与属性
对一条 NTFS $MFT 记录的逐字节巡览 —— FILE 签名、记录头部、fixup 数组以及属性流。