Shellbags+JumpLists+Prefetch:Windows行为痕迹三部曲"

admin 2026-10-21 23:08:44 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

Shellbags + Jump Lists + Prefetch:Windows 行为痕迹三部曲

原创

Pik安全实验室
Pik安全实验室

Pik安全实验室

2026年6月22日 09:30
广东

在小说阅读器读本章

去阅读

Pik 安全团队 | 2026-06-22

应急排查中有一个常见困境:攻击者清掉了浏览器历史,删了下载目录里的文件,安全日志被 1102 清空。看起来什么都没留下。但有三类痕迹,攻击者几乎从来不碰——不是不想,是不知道它们存在。

这三类痕迹分别是 Shellbags、Jump Lists、Prefetch。它们各自记录一个维度的用户行为,合在一起可以还原一台机器上\"谁在什么时间用资源管理器浏览了哪些目录、打开了哪些文件、运行了哪些程序\"。

一、Shellbags:资源管理器的\"浏览记忆\"

Shellbags 记录的是用户通过资源管理器(explorer.exe)浏览过的所有目录结构、窗口位置、最后访问时间。只要你在资源管理器里点开过一个文件夹,它就留下了记录。

存储位置

NTUSER.DAT\Software\Microsoft\Windows\Shell\BagMRU       → 目录结构树
NTUSER.DAT\Software\Microsoft\Windows\Shell\Bags          → 窗口属性(大小/位置/视图模式)
USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\Shell\BagMRU  → 桌面/下载等特殊目录
USRCLASS.DAT\Local Settings\Software\Microsoft\Windows\Shell\Bags

BagMRU 的结构

BagMRU 是一个树形结构。根节点是桌面,每个子节点编号(0, 1, 2...)代表一个用户访问过的文件夹。子节点本身又是一个 BagMRU 节点,递归记录该文件夹内的子文件夹访问。

Desktop (根)
├── 0 → 此电脑
│   ├── 0 → C:\
│   │   ├── 0 → C:\Users
│   │   │   ├── 0 → Administrator
│   │   │   │   ├── 0 → Desktop
│   │   │   │   ├── 1 → Downloads
│   │   │   │   └── 2 → Documents\敏感数据
│   │   │   └── 1 → Public
│   │   └── 1 → C:\Windows\Temp
│   └── 1 → D:\
└── 1 → 回收站

关键字段

字段 含义 取证价值
MRUListEx 最近使用的顺序(4字节一组,从最近到最远) 确定访问先后
NodeSlot 节点编号 关联 BagMRU 和 Bags
LastWriteTime (注册表键) 该目录最后一次被浏览的时间 时间锚点

Shellbags 的三个独特能力

  1. 记录已删除的目录

即使攻击者删除了 C:\Tools\payload\ 目录,Shellbags 中对该路径的记录仍然存在。直到对应的注册表键被覆盖或被清理工具专门清除。

  1. 记录 ZIP 文件内部结构

如果用户通过资源管理器直接打开 ZIP 文件(双击打开,不是解压),Shellbags 会记录 ZIP 内部的目录树。Windows 把 ZIP 当作一个虚拟文件夹处理:C:\Users\xxx\Downloads\payload.zip → payload.zip\cmd\。这意味着即使攻击者解压后删掉了文件,Shellbags 里可能还留着压缩包内部的目录名。

  1. 天然关联用户

每个 NTUSER.DAT 只属于一个用户。Shellbags 不会出现\"不知道是谁操作的\"这种问题。

解析工具

- ShellbagExplorer (Eric Zimmerman):直接读取注册表 Hive 文件,图形化展示目录树,支持时间排序

  • 系统 regedit 不行——它只能看到二进制数据,无法解码 BagMRU 的 MRU 顺序和时间

排查实战

场景:某员工笔记本电脑失陷,怀疑数据被窃取。

排查步骤:

  1. 加载 NTUSER.DAT 到 ShellbagExplorer

  2. 按 LastWriteTime 排序,找到攻击时间段内的所有浏览记录

  3. 搜索关键字:财务、客户、工资、.xlsx、.docx、USB 盘符(D:\ E:\ F:\)

  4. 从目录层级还原:攻击者从桌面 → 此电脑 → C:\ → Users → 员工名 → Documents → 财务数据 → 复制到 → D:\(USB)

Shellbags 给不出\"文件被复制了\"这个结论,但它能给出\"攻击者导航到了这个目录\"。配合 Jump Lists 和 LNK 文件可以补上\"打开了哪个文件\"的拼图。

二、Jump Lists:最近打开文件的\"签到表\"

Jump Lists 是 Windows 7 之后的任务栏快捷跳转列表。每当用户打开一个文件,系统会在这个文件中记录文件名、完整路径、打开时间。

存储位置

%APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations\   → \.automaticDestinations-ms
%APPDATA%\Microsoft\Windows\Recent\CustomDestinations\       → \
.customDestinations-ms

文件命名规则

AutomaticDestinations 的文件名是应用程序 ID(AppID)的 MS-SHLLINK 格式。例如:

文件名 对应程序
f01b4d95cf55d32a.automaticDestinations-ms 资源管理器 (explorer.exe)
9b9cdc69c1c24e2b.automaticDestinations-ms 记事本 (notepad.exe)
aaa3a5b0b0e3c46e.automaticDestinations-ms Office Word
b8ab77100df80e3e.automaticDestinations-ms 远程桌面 (mstsc.exe)

关键是最后一个——mstsc.exe 的 Jump List 会记录攻击者通过 RDP 连接过的目标 IP 或主机名。用 JumpList Explorer 打开对应的 .automaticDestinations-ms 文件,可以直接看到 RDP 连接历史。

每条记录包含的信息

字段 说明
文件名 打开的文件名(如 2026年客户清单.xlsx)
完整路径 文件的绝对路径(如 C:\Users\xxx\Desktop\2026年客户清单.xlsx)
最近访问时间 最后一次通过该程序打开的时间
目标文件属性 文件大小、创建/修改时间(部分文件记录)

Jump Lists vs LNK 文件

Jump Lists LNK 文件
存储位置 AutomaticDestinations/CustomDestinations
记录方式 按程序聚合多个文件
保留策略 Taskband 策略控制数量(通常保留最近几十条)
攻击者清理难度 极少有人知道这个目录

排查实战

场景:怀疑有人通过 RDP 连到了域控。

  1. 打开 %APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations\
  2. 找到 mstsc.exe 对应的 .automaticDestinations-ms(AppID: b8ab77100df80e3e)
  3. JumpList Explorer 打开 → 目标地址列表
  4. 看到 dc01.company.local、192.168.1.10、10.0.0.50
  5. 交叉验证:UserAssist 中 mstsc.exe 的启动时间

与 Shellbags 的协同

Shellbags 告诉你的攻击者\"去了哪个文件夹\",Jump Lists 告诉你\"打开了哪个文件\"。两者时间线对齐:

2026-06-21 03:15:22  Shellbag → C:\Users\admin\Documents\财务\
2026-06-21 03:15:45  JumpList → 2026年Q2财报.xlsx (Excel 打开)
2026-06-21 03:17:10  Shellbag → D:\ (USB 设备)
2026-06-21 03:17:30  JumpList → 2026年Q2财报.xlsx (从 D:\ 打开)

同一文件先在 C 盘打开,三分钟后在 D 盘(USB)再次打开 → 数据被拷到了 U 盘上。

三、Prefetch:程序的\"运行计数器\"

Prefetch 是 Windows 的应用预加载机制。每次程序启动,Windows 会在 C:\Windows\Prefetch\ 目录下创建或更新一个 .pf 文件,记录程序执行次数、最后一次执行时间、加载的文件列表。

文件路径

C:\Windows\Prefetch\\*.pf

命名格式:程序名-路径哈希.pf
例如:
  MSTSC.EXE-A5D3F9B2.pf   → 远程桌面客户端
  CMD.EXE-4A81B2C7.pf     → 命令行
  POWERSHELL.EXE-8D7F3A1C.pf → PowerShell

.pf 文件内的关键字段

字段 偏移 含义
执行次数 0x?? 该程序在系统上被执行了多少次
最后执行时间 文件 LastWriteTime 程序最后一次被运行的时间
之前执行时间 文件内部时间戳 倒数第二次、倒数第三次执行时间(最多记录8次)
加载的文件列表 文件末尾 程序启动时加载的 DLL 和资源文件

为什么攻击者可能删不掉或被注意到

  1. Prefetch 文件能被删除,但删除本身会留下痕迹——管理员如果之前做过系统基线,少了某些 .pf 文件就是告警

  2. Prefetch 目录有大量合法系统文件(SvcHost.exe、explorer.exe 等几百个),攻击者删掉某个文件不容易被注意到——前提是他知道该删哪个

  3. 但如果攻击者把整个 Prefetch 目录清空,管理员登录后会立即注意到性能卡顿(所有程序重新生成 .pf)以及文件数量异常

排查技巧

用 WinPrefetchView (NirSoft) 或直接 PowerShell:

Get-ChildItem C:\Windows\Prefetch\\*.pf | Sort-Object LastWriteTime -Descending | Select-Object Name, LastWriteTime, Length -First 30

重点关注:

  • 非系统目录下的 exe(如 C:\Users\xxx\AppData\Local\Temp\payload.exe)

  • 在攻击时间窗口内首次出现或修改的 .pf 文件

  • 同一程序短时间内多次执行(如 cmd.exe 或 powershell.exe 的 .pf 文件反复更新)

与 RDP 取证联动

之前《RDP取证全攻略》中提到的关键时间锚点:

源主机:
  MSTSC.EXE-\*.pf          → 攻击者启动 RDP 客户端的时间

目标主机:
  TSTHEME.EXE-\.pf        → RDP 远端进入桌面的时间(远程桌面主题服务启动)
  RDPCLIP.EXE-\
.pf        → RDP 剪贴板重定向启动(攻击者可能在做复制粘贴)

这三个 Prefetch 时间相差几秒到几十秒,就是 RDP 横向移动的精确时间窗口。

三部曲合体:还原完整行为链

把 Shellbags、Jump Lists、Prefetch 三条时间线放入同一个时间轴,你几乎可以还原攻击者在图形界面上的每一步操作:

03:14:55  Prefetch    MSTSC.EXE              → 启动 RDP 客户端
03:15:02  Prefetch    TSTHEME.EXE (目标)      → 进入桌面
03:15:12  Shellbag    此电脑 → C: → Users     → 导航到用户目录
03:15:18  Shellbag    C:\Users\admin\Documents → 进入文档目录
03:15:22  Shellbag    C:\Users\admin\Documents\财务数据  → 进入财务数据子目录
03:15:45  JumpList    2026年Q2财报.xlsx        → 打开财务文件
03:16:30  Shellbag    D:\                      → 导航到 USB 盘符
03:16:45  JumpList    2026年Q2财报.xlsx (D:\)  → 在 USB 上再次打开同一文件
03:17:05  Prefetch    RDPCLIP.EXE (目标)       → 启用剪贴板重定向
03:18:00  Prefetch    CMD.EXE                  → 打开命令提示符

这就是一个完整的\"RDP 登录 → 浏览文件系统 → 找到敏感文件 → 复制到 USB → 可能通过剪贴板或命令行执行后续操作\"的行为链。

攻击者以为自己清了日志就安全了。但这三类痕迹,每一类都来自不同的机制(注册表 Hive + OLE Compound File + NTFS 文件系统),清理其中一类根本不够。要全部抹掉需要理解 Windows 内部至少 4 个子系统的行为——而大多数攻击者做不到。

工具推荐:ShellbagExplorer (Eric Zimmerman)、JumpList Explorer (Eric Zimmerman)、WinPrefetchView (NirSoft)。

本文方法论来自多起真实应急案例的实战总结。Forensic Collector 已内置这三类痕迹的自动采集模块。


Shellbags+JumpLists+Prefetch:Windows行为痕迹三部曲" 网络安全文章

Shellbags+JumpLists+Prefetch:Windows行为痕迹三部曲"

本文系统分析Windows取证中三类关键行为痕迹:Shellbags记录资源管理器目录浏览历史,可还原已删除或ZIP内部路径;JumpLists追踪程序打开文件记录,包含RDP连接等敏感信息;Prefetch存储程序执行次数与时间线。三者结合可构建完整攻击行为链,如RDP横向移动与数据窃取过程。推荐使用ShellbagExplorer等工具进行应急排查,该方法源于多起实战案例验证。
Chrome扩展程序漏洞:数百万用户面临安全风险" 网络安全文章

Chrome扩展程序漏洞:数百万用户面临安全风险"

Rebora安全团队发现Chrome扩展程序SiderAI和MaxAI存在Spyder和MaXSS漏洞,允许攻击者通过恶意网站静默控制用户浏览器、窃取数据或执行任意命令。受影响设备超千万台,漏洞涉及缺乏输入验证和事件模拟机制,目前尚未修复。建议用户立即卸载相关扩展并审查浏览器工具安全。
F5修复HTTP/3与HTTP/2模块中的两个严重NGINX漏洞(CVE-2026-42530、CVE-2026-42055)" 网络安全文章

F5修复HTTP/3与HTTP/2模块中的两个严重NGINX漏洞(CVE-2026-42530、CVE-2026-42055)"

F5紧急修复NGINX中两个CVSS9.2分严重漏洞:CVE-2026-42530为HTTP/3模块释放后使用漏洞,可导致进程重启或代码执行;CVE-2026-42055为HTTP/2上游流量堆溢出漏洞,需非默认配置触发。影响NGINX开源版/Plus等多个产品,暂无主动利用迹象。建议立即升级至修复版本,或通过禁用HTTP3/恢复默认请求头设置缓解风险。
“登录”后的风险?——ATO攻击的防御断层" 网络安全文章

“登录”后的风险?——ATO攻击的防御断层"

文档分析ATO攻击通过劫持合法会话绕过MFA认证,攻击手法包括会话Cookie窃取、MFA疲劳攻击和凭证滥用。防御失效根源在于过度依赖一次性认证而缺乏持续信任评估。建议构建现代化身份防御体系,通过设备合规检查、上下文感知和动态信任评估实现全链路防护。
评论:0   参与:  0