分析Windows Shellbag工件 是做什么的?
概述
Shellbag是Windows注册表工件,用于记录用户通过Windows资源管理器与文件夹交互的方式,存储视图设置,如图标大小、窗口位置、排序顺序和视图模式。从取证角度看,Shellbag提供了用户访问文件夹的确凿证据——即使这些文件夹在系统中已不存在。当用户通过Windows资源管理器、打开/保存对话框或控制面板浏览到某个文件夹时,会在用户注册表配置单元中创建或更新一个Shellbag条目。这些条目会在文件夹删除、驱动器断开连接甚至用户配置文件重置后仍然存在,使得它们对于证明用户导航到本地驱动器、USB设备、网络共享或zip存档中的特定目录非常宝贵。
何时使用
- 调查安全事件时,需要分析Windows Shellbag工件
- 为此领域构建检测规则或威胁狩猎查询时
- SOC分析师需要此分析类型的结构化流程时
- 验证相关攻击技术的安全监控覆盖范围时
前提条件
- 熟悉数字取证概念和工具
- 访问测试或实验室环境以安全执行
- 已安装Python 3.8+及所需依赖
- 对任何测试活动获得适当授权
注册表位置
Windows 7/8/10/11
| 配置单元 | 键路径 | 存储内容 |
|---|---|---|
| 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键包含一个由编号子键组成的层次结构树,表示目录结构。每个子键值包含一个编码文件夹标识的Shell项(SHITEMID)二进制块:
- 根(BagMRU):桌面命名空间根
- BagMRU\0:通常为“我的电脑”
- BagMRU\0\0:第一个驱动器(例如C:)
- BagMRU\0\0\0:C:上的第一个子文件夹
每个Shell项包含:
- 项类型(文件夹、驱动器、网络、zip、控制面板)
- 短名称(8.3格式)
- 长名称(Unicode)
- 创建/修改时间戳
- NTFS文件夹的MFT条目/序列
使用EZ Tools进行分析
SBECmd(命令行)
# 从注册表配置单元目录解析Shellbags
SBECmd.exe -d "C:\Evidence\Registry" --csv C:\Output --csvf shellbags.csv
# 从正在运行的系统解析(需要管理员权限)
SBECmd.exe --live --csv C:\Output --csvf live_shellbags.csv
# 关键输出列:
# AbsolutePath - 完整重建路径
# CreatedOn - 首次浏览文件夹的时间
# ModifiedOn - 视图设置最后更改的时间
# AccessedOn - 最后访问时间戳
# ShellType - Shell项类型(目录、驱动器、网络等)
# Value - 原始Shell项数据
ShellBags Explorer(图形界面)
# 启动图形界面工具进行交互式分析
ShellBagsExplorer.exe
# 加载注册表配置单元:文件 > 加载配置单元
# 导航树结构查看文件夹层次结构
# 右键单击条目可查看详细的Shell项属性
取证调查场景
证明USB设备浏览
Shellbag路径:我的电脑\E:\Confidential\Project_Files
Shell类型:目录(在可移动卷上)
创建时间:2025-03-15 09:30:00 UTC
这证明用户通过Windows资源管理器导航到了E:\Confidential\Project_Files,
即使USB驱动器已不再连接。卷标E:和目录时间戳
可以与USBSTOR和MountPoints2注册表条目相关联。
检测网络共享访问
Shellbag路径:\\FileServer01\Finance\Q4_Reports
Shell类型:网络位置
访问时间:2025-02-20 14:15:00 UTC
这证明用户浏览了一个网络共享,即使该共享
已被弃用或访问权限已撤销。
识别已删除文件夹的访问证据
Shellbag路径:C:\Users\suspect\Documents\Exfiltration_Staging
Shell类型:目录
创建时间:2025-01-10 08:00:00 UTC
尽管C:\Users\suspect\Documents\Exfiltration_Staging
已不存在,但Shellbag条目证明用户
创建并导航到了此文件夹。
局限性
- Shellbag仅记录文件夹级别的交互,不记录单个文件访问
- 仅通过Windows资源管理器外壳和打开/保存对话框生成
- 命令行访问(cmd、PowerShell)不会生成Shellbag条目
- 通过API的程序化文件访问不会生成Shellbag条目
- 时间戳可能反映视图设置更改,不一定是文件夹访问
- Windows可能在Explorer关闭时批量更新Shellbag条目
参考文献
- Shellbags取证分析2025:https://www.cybertriage.com/blog/shellbags-forensic-analysis-2025/
- SANS Shellbag取证:https://www.sans.org/blog/computer-forensic-artifacts-windows-7-shellbags
- Magnet Forensics Shellbag分析:https://www.magnetforensics.com/blog/forensic-analysis-of-windows-shellbags/
- ShellBags Explorer:https://ericzimmerman.github.io/
示例输出
$ SBECmd.exe -d "C:\Evidence\Users\jsmith" --csv /analysis/shellbag_output
SBECmd v2.1.0 - ShellBags Explorer(命令行)
====================================================
正在处理用户jsmith的配置单元:
NTUSER.DAT: C:\Evidence\Users\jsmith\NTUSER.DAT
UsrClass.dat: C:\Evidence\Users\jsmith\AppData\Local\Microsoft\Windows\UsrClass.dat
[+] NTUSER.DAT Shellbag条目: 456
[+] UsrClass.dat Shellbag条目: 1,234
[+] 总Shellbag条目: 1,690
--- 文件夹访问时间线(事件窗口) ---
最后访问时间 (UTC) | 文件夹路径 | 类型 | 访问次数
------------------------|---------------------------------------------------------|-------------|-------------
2024-01-15 14:34:05 | C:\Users\jsmith\Downloads | 文件系统 | 45
2024-01-15 14:36:25 | C:\ProgramData\Updates | 文件系统 | 3
2024-01-15 15:05:00 | \\FILESERV01\Finance | 网络 | 2
2024-01-15 15:12:30 | \\FILESERV01\Finance\Q4_Reports | 网络 | 1
2024-01-15 15:30:00 | E:\ | 可移动 | 4
2024-01-15 15:30:45 | E:\Backup | 可移动 | 3
2024-01-15 15:31:20 | E:\Backup\Corporate_Data | 可移动 | 2
2024-01-15 16:12:45 | \\FILESERV01\HR\Employees | 网络 | 1
2024-01-15 16:15:00 | \\FILESERV01\HR\Employees\Records_2024 | 网络 | 1
2024-01-16 02:35:00 | C:\Windows\Temp | 文件系统 | 5
2024-01-17 02:44:00 | C:\ProgramData\svc | 文件系统 | 2
2024-01-18 01:10:00 | C:\Users\jsmith\AppData\Local\Temp | 文件系统 | 8
--- 网络共享访问 ---
\\FILESERV01\Finance 首次:2023-09-10 最后:2024-01-15
\\FILESERV01\Finance\Q4_Reports 首次:2024-01-15 最后:2024-01-15 (新增)
\\FILESERV01\HR\Employees 首次:2024-01-15 最后:2024-01-15 (新增)
\\DC01\SYSVOL 首次:2023-03-15 最后:2024-01-16 (异常访问时间)
--- 可移动设备访问 ---
E:\ (USB驱动器)
卷标名: BACKUP_DRIVE
首次访问:2024-01-15 15:30:00 UTC
最后访问:2024-01-15 15:45:22 UTC
浏览的文件夹数:3 (E:\, E:\Backup, E:\Backup\Corporate_Data)
--- 已删除/不存在的路径 ---
C:\ProgramData\Updates\ (文件夹已删除,shellbag仍然存在)
C:\ProgramData\svc\ (文件夹已删除,shellbag仍然存在)
C:\Windows\Temp\tools\ (文件夹已删除,shellbag仍然存在)
摘要:
访问的唯一文件夹总数: 1,690
访问的网络共享: 4(事件期间新增2个)
可移动介质: 1个USB设备(疑似数据暂存)
已删除文件夹证据: 3个路径(反取证迹象)
CSV导出至: /analysis/shellbag_output/