在勒索软件之后,DFIR 第二常听到的问题是 「这里有东西被偷出去了吗?」。USN 日志是回答这件事最便宜的地方之一。它记录每一次创建、每一次重命名、每一次数据扩展 — 这就意味着 U 盘外泄、云同步的 staging,以及经典的「先把所有东西放进 temp 文件夹再 zip」全都在时间线上有非常独特的样子。
本文是寻找这些模式的实操指南。
U 盘是简单模式
当用户接入一个可移除卷时,Windows 给它分配一个新的盘符,而设备上的文件系统如果是 NTFS,也会有自己的 $UsnJrnl。但当文件 从 你正在调查的系统 拷贝到 U 盘时,源卷的日志仍会以一连串访问记录读取侧 — 更重要的是,目标的日志(如果你能拿到 U 盘镜像)会显示实际的写入。
你通常拥有的:
- 源磁盘的日志 — 显示有哪些被打开/关闭,以及临时文件。
- 注册表 hive —
SYSTEM\MountedDevices、NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2,以及 Setup 的硬件事件,用以确认 哪一个 U 盘被接入。 - 目标卷的日志,如果 设备是 NTFS 且你能镜像它 — 这里能看到真正的文件。
源侧的第一个信号:在很短的时间窗内对用户的 documents/desktop/downloads 树发生一簇文件 打开。打开不一定会产生 USN 记录,但随后跟进的文件系统缓存和杀软扫描通常会(碰属性会触发 BasicInfoChange | Close)。
如果攻击者先打包,信号会更确定:在某个 temp 路径出现 .7z、.zip、.rar 或随机命名文件的 FileCreate,紧接着是持续的 DataExtend | Close 直到该文件达到最终尺寸。
经典的 「先 staging 后拷贝」 模式
一个常见的模式,在 MITRE ATT&CK 中映射到 T1074 Data Staged:
FileCreate | Close C:\Users\bob\AppData\Local\Temp\sales_q3\
FileCreate | Close C:\Users\bob\AppData\Local\Temp\sales_q3\report.xlsx
DataExtend | Close C:\Users\bob\AppData\Local\Temp\sales_q3\report.xlsx
FileCreate | Close C:\Users\bob\AppData\Local\Temp\sales_q3\customers.csv
DataExtend | Close ...
…
FileCreate | Close C:\Users\bob\AppData\Local\Temp\sales_q3.zip
DataExtend | Close ... ← 大量,文件变大
FileDelete | Close C:\Users\bob\AppData\Local\Temp\sales_q3\* (清理)
三种信号同时出现:
- 单一 staging 目录下的一阵
FileCreate突发。 - 紧随其后的一系列
DataExtend作用于一个单一归档,其最终尺寸大致等于被 staging 文件的总和。 - 归档创建后不久对 staging 目录的一波删除。
过滤 \AppData\Local\Temp\、\Public\、\Downloads\ 等用户树下可写位置的 FileCreate,寻找 60 秒内超过 50 个文件的时间簇。这正是内部窃密或 infostealer 在磁盘上的样子。
云同步的 staging
OneDrive、Dropbox、Google Drive — 全都维护一个本地同步文件夹。投到这个文件夹里的东西一旦被代理察觉就会上传。两种信号:
- 大规模的
RenameNewName到同步文件夹,来自Desktop\、Documents\或Downloads\。重命名的一半告诉你之前的父级;新的父级就是同步文件夹。 - 同步文件夹内文件的
DataExtend | Close,且没有来自任何用户应用的FileCreate。这些是同步代理自己写入的 — 即下载 — 但 创建 才是你要找的上传线索。
按名称过滤的话,Windows 上典型的同步目录是 \Users\<u>\OneDrive\、\Users\<u>\Dropbox\ 和 \Users\<u>\Google Drive\。CISA TLP-WHITE 内部威胁资源 中列出的工具都假设类似的基线。
真正有效的启发式
经过若干案例后,实际能标记真实外泄的启发式是:
- 创建突发:单个目录在 T 秒内
FileCreate多于 N 次。按基线调优。起点 N=50,T=60。 - 突发后的归档:在创建突发的几分钟内,出现一个带已知归档扩展名(
.zip、.7z、.rar、.tar.gz)文件的单条FileCreate,并伴随累计到多 MB 的DataExtend。 - 跨边界的大规模重命名:
RenameNewName记录中,新父路径与旧父路径在结构上不同(Documents→OneDrive、Desktop→Public等)。可用正则在解析后的完整路径上表达。 - 非工作时间的突发:以上任意一种发生在该用户的非工作时间。配合
Security.evtx的登录事件做确认。
本站解析器直接公开了时间窗口过滤与按 reason 过滤,1–3 步分别只需点击一次。第 4 步则导出 CSV 并按一天中的小时做透视。
看不到的事
一些真实的外泄手段不会产生任何有用的 USN 信号:
- 直接从内存上传(浏览器或 PowerShell)— 数据从未落地磁盘,日志一无所获。
- 读取一个网络共享 — 源头是该共享所在的文件系统,通常不在你这边。
- 将屏幕截图作为外泄 — 仅产生一两个图片文件的创建。
- 打印 — 只在
\Windows\System32\spool\PRINTERS\留下活动,属于另一个取证痕迹,并非真正的 USN 议题。
要看到完整威胁模型, MITRE 的 Exfiltration 战术页 罗列了每种技术及其遗痕。USN 大概直接覆盖三分之一,剩下需要事件日志、网络抓包或浏览器历史。
工作示例
下面是真实案件中可能导出来证明外泄的 CSV:
| 时间 | 原因 | 路径 | 备注 |
|---|---|---|---|
| 19:42:11 | FileCreate Close | \Users\b\Temp\q3\ | 新文件夹 |
| 19:42:13–14 | FileCreate × 84 | \Users\b\Temp\q3\*.xlsx | 突发 |
| 19:44:08 | FileCreate Close | \Users\b\Temp\q3.zip | 归档 |
| 19:44:08–22 | DataExtend × ~40 | \Users\b\Temp\q3.zip | 增至 187 MB |
| 19:44:45 | RenameNewName Close | \Users\b\OneDrive\q3.zip | 移入同步 |
| 19:45:11 | FileDelete × 84 | \Users\b\Temp\q3\* | 清理 |
这条时间线就是一份铁证。没有日志,就只能从注册表、Prefetch 和卷影副本里重建 — 五倍的工作量,一半的置信度。