在之前的文章中,我提出了我的研究目标,并介绍 了三个主要的USB传输协议:MSC,PTP和MTP;以及每一个的一些基本信息。然后,我论述了一些围绕Windows对于一个新插入的设备如何去给它选择驱动程序的基本概念。在本篇文章及即将到来的文章中,我涵盖我的研究发现,包括测试环境和运行测试所用的各种各样的程序。在本篇博文中,我会讲到注册表项在一个USB设备首次插入时的不同变化,并对照到不同的传输协议进行探讨。
1.0测试环境
在表1.1.1中是用来辅助测试的测试环境详情。所有的测试都是使用的虚拟化软件WMWare Workstation。在运行测试之前,会捕获基准报告,然后开始测试,最后会捕获操作系统的变化并生成最终报告。然后,相关的文件会被复制和编目。收集完数据后,虚拟机会恢复到一个干净的快照,以在未来的测试中保证一致性。
1.1额外的考虑
由于虚拟机软件的局限性,我们的分析不能在USB3.0设备上进行。即使我们在测试中使用USB3.0设备,那么到了虚拟机中也会自动被降级为USB2.0。
此外,MTP和PTP设备的测试是使用了有限的数量和部分种类进行的,所以,对于是否支持其它未测试种类的设备来说,可能考虑的范围有限。
表1.1.1 测试环境:USB传输协议的识别和研究
2.0测试1:第一次插入设备对注册表的影响
本实验的目的在于测试Windows是如何将USB设备进行识别和安装的。这是通过观察当一个设备首次插入系统时,系统中的注册表的变化来实现的。在测试之前的假设是,Windows给一个设备选择和安装驱动程序主要是根据这个设备使用的传输协议来决定的。我们的目的是观察每个协议是否是一致的变化,或者是MSC、PTP和MTP这三个USB传输协议之间的变化不同。然后根据这个结果确定Windows是否根据其它的信息去安装USB设备的。
2.1方案1:表2.1.1是协议之间在Windows XP SP 3中的比较,代表设备插入虚拟机中的Windows XP Service Pack 3时的项和值的变化。
我们对表1.1.1提到的设备按协议进行了测试,很显然,Windows XP 确实是根据传输协议去安装设备的。在这个表中比较设备首次插入电脑时,这三个协议对于注册表的影响有明显的差别。
你可以下载用于测试设备的注册表文件:
XP_1-toshiba_canvio_1tb_usb30.zip
XP_2-seagate_bkplus_3tb_usb20.zip
XP_3-sandisk_cruzer_8gb_usb20.zip
XP_4-sandisk_cruzer_16gb_usb20.zip
XP_11-samsung_galaxys3_android.zip
XP_12-blackberry_storm_9530.zip
下面是特别值得注意的地方:
从表中我们可以看到,这三个协议之间只有三个注册表项。其它的所有都是指向特定的协议。
由于这三个协议的通用性有限,所以一个取证软件基本不可能去包含完所有的已经绑定到系统的USB设备的信息,因此在它的输出报告中可能没办法完全说明一个设备。所以在正式调查时,一个取证分析员必须要会手动去分析注册表进行取证。
对于PTP和MTP设备,当一个设备首次插入式注册表的NTUSER不会发生变化。这就可能很难识别出到底是哪一个用户在使用特定的设备了。然而,还应该记住一点,插入一个PTP和MTP设备不会在Windows XP 的NTUSER中遗留数据。而用户执行上述设备之外的相关行为时,就会创建与用户关联的特定数据,并标明连接这个设备的用户。
这些稍后再讨论。
表2.1.1 Windows XP:当USB设备首次插入系统时注册表的变化比较
2.2 方案2:从表2.2.1中比较Windows 7 Service Pack 1中的协议,代表设备插入虚拟机中的Windows 7 Service Pack 1 时的项和值的变化。
你可以下载用于测试设备的注册表文件:
Win7_1-wd_mypassport_500gb_usb20.zip
Win7_2-wd_mypassport_1tb_usb30.zip
Win7_3-toshiba_canvio_1tb_usb20.zip
Win7_4-toshiba_canvio_1tb_usb30.zip
Win7_5-seagate_bkplus_3tb_usb20.zip
Win7_6-sandisk_cruzer_8gb_usb20.zip
Win7_7-sandisk_cruzer_16gb_usb20.zip
Win7_8-adata_s102_8gb_usb30.zip
Win7_13-sandisk_sansa_m240.zip
Win7_14-samsung_galaxys3_android.zip
Win7_15-samsung_galaxys4_android.zip
Win7_16-blackberry_storm_9530.zip
下面是特别值得注意的地方:
1.Windows7貌似根据两种不同的因素决定一个设备是否由WPD支持安装。如果一个设备由WPD支持安装的话,那么用于安装和枚举的注册表项就映射了这个设备的类型。Windows使用WPD支持安装的因素有:
(1) 使用的协议:WPD自动支持安装和枚举PTP及WPD设备。MSC作为海量存储类进行安装,一些具有WPD的支持,这些取决于下一条因素。
(2) 该MSC设备的可移动媒体位(Removable Media Bit)的状态:如果这个设备的可移动媒体位标志开启(闪存设备和其它使用MSC的设备),那么Windows就会给这些设备的安装提供WPD支持。若扩展启动器出现“fixed”及可移动媒体位标志关闭,那么他们就没有安装WPD支持。在表2.2.1中,注册表项在可移动媒体标志位开启的设备首次插入电脑时,在“MSC”栏下用“RM”作标志。
2.和Windows XP一样,Windows7在PTP和MTP设备首次插入电脑时,Windows不会在NTUSER中提供工件。除非这个设备支持Device Stage。
3.随着Windows 7的到来,一个名叫“Device Stage”的新功能被引入。由于厂商的实现,一些USB设备支持了Device Stage。在Windows 7内部,安装这些设备时,Windows会提供对取证来说相当重要的工件。比如,在NTUSER内,审查者可以识别出是哪个用户使用了特定的设备。Device Stage设备在NTUSER产生的项包含一个名为“DDO”的值,它可以链接到一个名为“ContainerID”的值。在SYSTEM项下的ENUMUSB注册表键指向这个设备。在下面的表中,支持了Device Stage的设备的注册表项在MTP列里用DS进行了标识。
4.最后非常重要的一点是关于Windows识别枚举出的WPD设备所具有的功能。根据设备支持的功能,Windows为安装和枚举出来的设备使用不同的注册表键值。由于测试的MTP和PTP设备数量有限,要想说明所有的设备是不大可能了。不过可以通过枚举设备用到的注册表键值去间接推断一个设备支持的功能,或者直接观察SOFTWARE下的MicrosoftWindowsCurrentVersionExplorerAutoplayHandlersDeviceHandlers下的注册表键、子键和值来判定。
表2.2.1 Windows 7: 比较支持各协议的设备首次插入时注册表的变化
你可以在这里下载Excel格式的表格
在即将到来的文章中,我将涵盖在Windows 7中对MSC设备进行遍历的测试内容。还将包括两种不同协议的设备的bagMRU shell注册表键。
资源
[1] http://msdn.microsoft.com/en-us/windows/hardware/gg463154.aspx
发表评论
您还未登录,请先登录。
登录