Windows 取证之ShellBags

admin 2021年12月2日09:30:50评论188 views字数 4418阅读14分43秒阅读模式

Windows 取证之ShellBags
原创稿件征集

邮箱:[email protected]
QQ:3200599554
黑客与极客相关,互联网安全领域里
的热点话题
漏洞、技术相关的调查或分析
稿件通过并发布还能收获
200-800元不等的稿酬

0x0、概述

ShellBags是一组用来记录文件夹(包括挂载网络驱动器文件夹和挂载设备的文件夹)的名称、大小、图标、视图、位置的注册表项,或称为BagMRU。每次对文件夹的操作,ShellBags的信息都会更新,而且包含时间戳信息。是Windows系统改善用户体验的功能之一。即使删除文件夹后,ShellBags仍然会保留文件夹的信息。因此可以用来揭示用户的活动。

0x1、ShellBags的用途和取证中的价值

微软从Windows 7开始引入ShellBags,虽然在Windows xp中也存在,但是其文件格式发生了很大的改变。并在后续的系统上一直使用。ShellBags用来保存用户浏览文件夹时的偏好信息,比如文件夹的排列方式,文件夹显示图标的大小等,比如将文件夹的显示方式从"大图标"模式改为"详细信息模式",ShellBags会立即创建或更新记录,当你打开、关闭或者右键单击、或者重命名文件夹时,也会创建或更新ShellBags记录。这意味着:

1、如果在Windows ShellBags记录了某个文件夹,那么表示它一定在某个时间出现过在该系统中,包括压缩文件在内的本地文件系统、网络位置和外接设备(如U盘、移动硬盘等)上的文件夹,即使它现在已经不存在了。

2、由于这些对文件夹的操作和查看首选项与该用户的注册表配置单元(registry hives)相关联。所以我们可以将特定用户和特定的文件夹相关联,甚至,还可以从ShellBags包含的MAC时间戳中获取文件夹的访问时间信息。

0x2、ShellBags的存储

Windows XP中,存储在NTUSER.dat文件中,在系统注册表中的位置分别是:

  • 记录网络路径文件夹访问的记录在:SoftwareMicrosoftWindowsShell

  • 记录本地文件夹访问的记录在:SoftwareMicrosoftWindowsShellNoRoam

  • 可移动存储器文件夹访问的记录在:SoftwareMicrosoftWindowsStreamMRU

但是从Windows 7开始,已经发生了很大的变化,Windows 7新增了一个用户特定的注册表配置单元:USRCLASS.dat。这个配置单元支持新的用户访问控制(UAC)和强制访问控制完整性级别。它用于记录来自无权写入标准注册表配置单元的用户进程的配置信息。所以如果要获取完整的ShellBags信息,需要为每个用户解析NTUSER.datUSRCLASS.dat这两个文件。这些文件可以在%userprofile%%userprofile%AppDataLocalMicrosoftWindows路径中找到。

Windows 取证之ShellBags

Windows 取证之ShellBags

具体的注册表位置为:

记录最近通过资源管理器访问的文件夹的信息:

USRCLASS.DATHKCUSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellBagMRU

USRCLASS.DATHKCUSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellBags

Windows 取证之ShellBags

Windows 取证之ShellBags

记录从桌面访问的文件夹信息:

NTUSER.DATHKCUSoftwareMicrosoftWindowsShellBagMRU

NTUSER.DATHKCUSoftwareMicrosoftWindowsShellBags

Windows 取证之ShellBags

Windows 取证之ShellBags

还有其他一些注册表位置:(因为系统版本不同,可能有一些附加的注册表项目)

NTUSER.DATHKCUSoftwareMicrosoftWindowsShellNoRoamBagMRU

NTUSER.DATHKCUSoftwareMicrosoftWindowsShellNoRoamBags

USRCLASS.DATHKCUSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellNoRoamBagMRU

USRCLASS.DATHKCUSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellNoRoamBags

USRCLASS.DATHKCUSoftwareClassesWow6432NodeLocal SettingsSoftwareMicrosoftWindowsShellBagMRU

USRCLASS.DATHKCUSoftwareClassesWow6432NodeLocal SettingsSoftwareMicrosoftWindowsShellBags

可以发现ShellBags的数据主要存在两个注册表键值中,分别是BagMRUBags中。

BagMRU:用于记录文件夹名称和文件夹路径

Bags:记录文件夹的视图配置,比如窗口的大小,位置,排序方式等视图模式信息。

0x3、ShellBags的结构分析

当用户通过Windows资源管理器浏览文件系统的时,首次打开个文件夹时,系统会创建ShellBags条目。每个文件夹都有一个编号,编号从0开始记录。当打开子路径,会在相应的ShellBags条目右侧添加一个条目,并分配一个编号,编号每次递增1

Windows 取证之ShellBags

当用户对文件夹进行操作,ShellBag条目会立即更新。这意味着相应的注册表项最后修改时间可能也是最后操作文件夹的时间。

BagMRU键值:

ShellBags的根目录,它的子键包含了ShellBags子条目和子目录。由数字编号0,1,2...组成。

Windows 取证之ShellBags

而他们的二进制类型的值项(value name)记录着文件夹的路径和文件夹的长短名称。因此,我们可以根据这个结构还原文件系统的目录结构。

我们可以通过Nirsoft的注册表修改监视工具和Shell bags view工具结合注册表查看其创建和变化过程。

首先在C盘下创建一个shellbagstest的文件夹

Windows 取证之ShellBags

查看注册表修改:

Windows 取证之ShellBags

在注册表中查看:

Windows 取证之ShellBags

可以看到HKEY_CURRENT_USERSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellBagMRU2键的值项"11"的内容记录了文件夹的名称,并与其子键"11"对应。

Windows 取证之ShellBags

HKEY_CURRENT_USERSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellBagMRU211键的NodeSlot项值即为HKEY_CURRENT_USERSoftwareClassesLocal SettingsSoftwareMicrosoftWindowsShellBags键中的ID(Bags键的子健名称)。

还有一个MRUListEx,这个记录了上次访问了哪个文件夹。根据这个可以解析出文件夹的访问次序。当对应文件夹下没有子文件夹或者子文件夹未被访问过,其值为ff ff ff ff

Windows 取证之ShellBags

当我们进入这个文件夹并添加一个子文件夹后,再次查看注册表修改:

Windows 取证之ShellBags

可以看到新增了多个键值项,MRUListEx也发生了变化。其中"1"为子文件夹"subdir"。而"0"是新建文件夹时候的"新建文件夹"

Windows 取证之ShellBags

关于MRUListEx值项

它是记录文件夹访问次序的,每4个字节记录一个文件夹的数字编号,新增访问记录,原记录往右边移。拿刚刚这个举例:

Windows 取证之ShellBags

最左侧0x00000001表示最近访问过的是shellbagstest文件夹下数字序号为"1"的文件夹,也就是subdir这个文件夹。如果再增加一个文件夹subdir2

Windows 取证之ShellBags

MRUListEX的值则变成如下数值:

Windows 取证之ShellBags

Bags键值

Bags键值由数字命名的子健组成,每个子健的数字编号对应特定的文件夹。其下包含有一个Shell 的键用于存储与文件夹相关的视图配置信息,比如位置、大小、排序方式等。所以我们可以根据BagMRU键值获得特定文件夹在Bags键下对应的数字序号后, 即可Bags键中定位相应子键, 进而查看文件夹的视图配置信息。

比如刚刚我们创建的文件夹:

Windows 取证之ShellBags

0x4、取证实战

案情:在之前的调查(Windows 取证之注册表)中,我们证明了TheonPodrick不在的时候把U盘(2020年2月3日下午12点15分-12点45分之间)插进了他的电脑。Podrick称他电脑的一些文件/文件夹发生的更改。他认为是Theon干的。Podrick希望我们帮忙找出是哪些文件发生了更改。主要关注桌面上被清空的Projects文件夹。

提交Projects文件夹被Theon重新创建的时间。

提供给我们的文件包括NTUSER.DATUsrClass.dat

Windows 取证之ShellBags

我们可以借助ShellBags解析工具,如Shell Bag Explorerhttps://f001.backblazeb2.com/file/EricZimmermanTools/ShellBagsExplorer.zip

Windows 取证之ShellBags

使用工具加载USRCLASS.DAT文件

Windows 取证之ShellBags

找到Projects文件夹,可以看到文件夹的创建时间是12:41:26 ,这个时间点正好是Podrick不在电脑旁边的时间。结合之前的调查,即可确定这个时间就是文件夹重新创建的时间。

Windows 取证之ShellBags

参考资料:

基于注册表中的ShellNo-Roam表键解析文件夹操作行为:http://www.xsjs-cifs.com/article/2014/1008-3650-39-3-42.html

Computer Forensic Artifacts: Windows 7 Shellbags :https://www.sans.org/blog/computer-forensic-artifacts-windows-7-shellbags/

Explaining the Bags/BagMRU registry tree (trying) - Tielen Consultancy :https://www.jeroentielen.nl/explaining-the-bagsbagmru-registry-tree-trying/

相关实验:内存镜像取证

https://www.hetianlab.com/expc.do?ec=ECID6a2f-ed6f-4f85-9363-731535a5c3c4&pk_campaign=weixin-wemedia#stu

了解常用的内存镜像取证工具的使用,包括Dumplt、FTK Imager、Belkasoft RAM Capture和Dump镜像内存提取工具。

Windows 取证之ShellBags


“阅读原文”


体验免费靶场

本文始发于微信公众号(合天网安实验室):Windows 取证之ShellBags

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月2日09:30:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows 取证之ShellBagshttp://cn-sec.com/archives/414919.html

发表评论

匿名网友 填写信息