取证笔记
关于 NTFS 内部结构、MFT 格式以及数字取证工作流程的简短笔记。
证明一份文件曾经存在——尽管它现在已经不在磁盘上
当 dir 返回为空,$MFT 通常仍能给出答案。一份实务指南:如何从 NTFS 元数据中证明某文件曾经存在,以及在审阅中能立住脚的告诫。
把 $UsnJrnl 与 $MFT 配对,做出真正的时间线
$MFT 是一张快照。$UsnJrnl 是产生这张快照的变更序列。实务视角下如何把两者配对、reason 码各自的含义,以及 journal 在哪里会撒谎。
Master File Table(MFT):详解 NTFS 的 $MFT
NTFS 的 Master File Table 是什么,一条记录如何布局,承载哪些属性,开头的系统文件意味着什么,以及 $MFT 损坏时该怎么办。
勒索软件在 $MFT 中的样子
大规模扩展名变化、突发写入、被删除的原件,以及在一次加密运行中出现在 Master File Table 上的模式。来自实务者的取证视角。
真正经得起用的 MFT 解析器:MFTECmd、omerbenamram/mft 与浏览器解析
由三者都用的人对三款认真的 MFT 解析器进行比较。何时用 MFTECmd,何时用 omerbenamram/mft 写脚本,何时浏览器解析器才是正解。
用 MFT 从 NTFS 恢复已删除文件
NTFS 上的实务恢复流程:哪些情况下已删除文件还能救回来,该用什么工具,哪些数据是真没了,以及常驻数据这一招。
用 $MFT 构建一条经得起审查的时间线
基于 MFT 的时间线构建实务方法:应该输出哪些时间戳、如何与 USN 与事件日志合并、以及朴素 super timeline 在哪里会误导。
用 Python 解析 $MFT 又不至于赔上一个周末
在 Python 中解析 NTFS $MFT 的三种可行方式:纯 Python 用 analyzeMFT,需要类型化对象模型用 libmft,速度重要时用 shell out 调用 Rust 解析器。
备用数据流:人人都会忘记的第二个 $DATA 属性
命名的 $DATA 属性与你能看到的文件并行存在。实务视角下的 ADS 藏身处、Windows 对它的用法,以及为什么按文件枚举找不到 ADS 而 MFT 取证可以找到。
$MFTMirr 究竟做什么,以及 NTFS 何时用它
$MFTMirr 镜像 $MFT 的前几条记录,使得在主表头不可读时卷仍能挂载。它在哪儿、装了什么、以及在哪些情况下真的起作用。
在不破坏运行中的 Windows 主机的前提下提取 $MFT
从一台运行中的 Windows 系统取得取证可信的 $MFT 的三种可靠方法,会悄悄损坏拷贝的常见错误,以及在信任文件之前要先核验什么。
Volume Shadow Copy 与 $MFT:每一份快照都是被冻结的 MFT
每份 VSS 快照都包含一个时间点上完整的 $MFT。如何枚举、挂载、抽取和做差分,以及快照如何挽救案件的若干例子。
为什么 NTFS 给取证的远比 FAT 多得多
FAT 记录下一个簇。NTFS 记录一切。从 FAT 到 Master File Table 的转变到底为证据恢复改变了什么——实务视角。
NTFS 上文件被删除时,到底什么留了下来
NTFS 上的删除只是清掉一个 bit 并更新一项索引。记录、属性,以及通常还包括数据,都在等着。实务视角下哪些可恢复,可恢复多久。
常驻数据:住在 MFT 里的小文件
小文件把整个 $DATA 属性存在 MFT 记录里。大小阈值、它救你案子的几种情形,以及这一招的边界。
NTFS 反取证:攻击者实际怎么做,以及什么会让他们暴露
Timestomping、ADS 载荷、USN 删除、MFT 涂写。实务视角的 NTFS 反取证手法清单,配上每种手法擦不掉的具体工件。
MFT 的四个时间戳,以及 timestomping 在其中如何显形
每条 MFT 记录都携带两组共四个的时间戳。它们为什么会发散、在被篡改时会呈现何种样貌,以及能逮住偷懒工具的亚秒级线索。
MFT 记录内部,逐字节解读
对一条 1,024 字节 FILE 记录的细读:签名、头部、fixup 数组、属性流,以及在十六进制编辑器中读取原始字节时真正重要的那些字段。