大多数勒索软件在磁盘上做的事情都差不多:枚举文件、逐个读取、在旁边写一份加密副本、删掉原文件。每一步都会出现在 $MFT 中。
三种关键模式
大规模扩展名变更。新文件出现在和已有文件相同的父目录、同样的基名,但扩展名不同。report.docx 变成 report.docx.locked、report.encrypted 或 report.{guid}。统计某段短时间窗口内出现了多少这样的成对文件,是 $MFT 上最干净的勒索软件指标之一。
几秒内集中爆发的 SI 创建时间戳。正常用户活动只会零星地一次创建一两个文件。勒索软件则会创建成百上千个。把 SI 创建时间戳画成直方图,攻击窗口就以一根高耸的竖线出现。
与加密副本对应的被删除原件。每一个 report.docx.locked 通常都对应着一个 report.docx,后者的「使用中」标志已经被清掉。被删除的记录会一直留在 $MFT 中,直到被重新使用。从这些槽位里,你可以恢复原件的名字、大小和时间戳。
$MFT 不会告诉你的
$MFT 能确认什么和何时。但它不告诉你是哪一个进程进行了写入。要补足这一块,你需要:
- Prefetch 与 ShimCache —— 证明哪个可执行文件曾经运行;
$UsnJrnl—— 看清创建、删除、重命名等操作的顺序;- 内存取证 —— 如果机器仍然存活、进程仍然驻留。
但仅仅依靠 $MFT,通常就能回答最紧迫的问题:攻击是何时开始的、波及范围多大、哪些文件被动过。
关于勒索说明文件
大多数家族会在每个被影响的目录里丢下一份勒索说明,名字往往是 HOW_TO_DECRYPT.txt 或 README_FOR_DECRYPT.html。这些说明内容一致、大小一致,创建时间也高度集中。在 $MFT 上搜索「散落在大量目录中、大小完全相同的若干文本文件」,通常会比任何按文件名的过滤都更快地找到它们。