← 返回博客

用 USN 日志检测数据外泄与 U 盘拷贝

大规模复制、U 盘投放和 staging 目录都会在 $UsnJrnl:$J 中留下可辨识的形状。要过滤的模式,附实战示例。

阅读约 2 分钟

在勒索软件之后,DFIR 第二常听到的问题是 「这里有东西被偷出去了吗?」。USN 日志是回答这件事最便宜的地方之一。它记录每一次创建、每一次重命名、每一次数据扩展 — 这就意味着 U 盘外泄、云同步的 staging,以及经典的「先把所有东西放进 temp 文件夹再 zip」全都在时间线上有非常独特的样子。

本文是寻找这些模式的实操指南。

U 盘是简单模式

当用户接入一个可移除卷时,Windows 给它分配一个新的盘符,而设备上的文件系统如果是 NTFS,也会有自己的 $UsnJrnl。但当文件 你正在调查的系统 拷贝到 U 盘时,源卷的日志仍会以一连串访问记录读取侧 — 更重要的是,目标的日志(如果你能拿到 U 盘镜像)会显示实际的写入。

你通常拥有的:

  • 源磁盘的日志 — 显示有哪些被打开/关闭,以及临时文件。
  • 注册表 hiveSYSTEM\MountedDevicesNTUSER.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 内部威胁资源 中列出的工具都假设类似的基线。

真正有效的启发式

经过若干案例后,实际能标记真实外泄的启发式是:

  1. 创建突发:单个目录在 T 秒内 FileCreate 多于 N 次。按基线调优。起点 N=50,T=60。
  2. 突发后的归档:在创建突发的几分钟内,出现一个带已知归档扩展名(.zip.7z.rar.tar.gz)文件的单条 FileCreate,并伴随累计到多 MB 的 DataExtend
  3. 跨边界的大规模重命名:RenameNewName 记录中,新父路径与旧父路径在结构上不同(DocumentsOneDriveDesktopPublic 等)。可用正则在解析后的完整路径上表达。
  4. 非工作时间的突发:以上任意一种发生在该用户的非工作时间。配合 Security.evtx 的登录事件做确认。

本站解析器直接公开了时间窗口过滤与按 reason 过滤,1–3 步分别只需点击一次。第 4 步则导出 CSV 并按一天中的小时做透视。

看不到的事

一些真实的外泄手段不会产生任何有用的 USN 信号:

  • 直接从内存上传(浏览器或 PowerShell)— 数据从未落地磁盘,日志一无所获。
  • 读取一个网络共享 — 源头是该共享所在的文件系统,通常不在你这边。
  • 将屏幕截图作为外泄 — 仅产生一两个图片文件的创建。
  • 打印 — 只在 \Windows\System32\spool\PRINTERS\ 留下活动,属于另一个取证痕迹,并非真正的 USN 议题。

要看到完整威胁模型, MITRE 的 Exfiltration 战术页 罗列了每种技术及其遗痕。USN 大概直接覆盖三分之一,剩下需要事件日志、网络抓包或浏览器历史。

工作示例

下面是真实案件中可能导出来证明外泄的 CSV:

时间原因路径备注
19:42:11FileCreate Close\Users\b\Temp\q3\新文件夹
19:42:13–14FileCreate × 84\Users\b\Temp\q3\*.xlsx突发
19:44:08FileCreate Close\Users\b\Temp\q3.zip归档
19:44:08–22DataExtend × ~40\Users\b\Temp\q3.zip增至 187 MB
19:44:45RenameNewName Close\Users\b\OneDrive\q3.zip移入同步
19:45:11FileDelete × 84\Users\b\Temp\q3\*清理

这条时间线就是一份铁证。没有日志,就只能从注册表、Prefetch 和卷影副本里重建 — 五倍的工作量,一半的置信度。