作为**单位,每回的**检查USB检查是重点,但是现在网上到处都是清除工具,而专业的检查工具又贵还不一定好用,为给各位检查人员提供点好用的工具。今天给大家贡献一下本人的观点。下一步做一个专业工具放出来共享。本文只代表个人观点,有意见的可以随时拍我。
USB是一种外部总线标准,, 用于电脑与外部设备的连接和通讯。典型的USB设备主要包括U盘、移动硬盘、数码相机、扫描仪、图像设备、打印机、键盘和鼠标等。
目前大家都是利用UsbViewer工具抽取出的USB设备信息, 主要包含有设备名称、设备类型、设备序列号、首次挂载时间及最近一次挂载时间等。此工具完全依赖注册表进行信息收集, 在相关注册表项被删除(如UsbViewer即自带“ 清除痕迹” 功能)的情况下就什么都找不到了。其实操作系统整体环境分析USB设备使用痕迹还是有很多手段的
Windows环境下调查USB使用痕迹
1.1 基于注册表调查USB设备使用痕迹
注册表是USB设备使用痕迹最主要且最重要的来源。
HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX(CurrentControSetXXX)\Enum\USB HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX(CurrentControSetXXX)\Enum\USBSTOR HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX(CurrentControSetXXX)\Control\DeviceClasses\{53f56307-b6bf-11d0-94f2-00a0c91efb8b} HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX(CurrentControSetXXX)\Control\DeviceClasses\{a5dcbf10-6530-11d2-901f-00c04fb951ed}
其中 ControlSetXXX 和 CurrentControlSetXXX 表示的是注册表中的类似于 ControlSet001、ControlSet002、CurrentControlSet 这样的子键(CurrentControlSet 子键一般只有一个,特殊情况下可能有 CurrentControlSet001 等多个,同样的 ControlSet 一般只有 ControlSet001 和 ControlSet002 这两个,特殊情况下可能会有多个),CurrentControlSet 保存的是系统的当前的一些配置信息,而 ControlSet001 等则是对当前配置信息的备份,一般注册表都会有两个以上的备份,有的时候可能会有更多。在 ControlSetXXX 中的信息和 CurrentControlSet 中的信息一般都是一样的,所以在检测和删除 USB 存储设备信息时,不仅要检测 CurrentControlSet 子键,也要检测 ControlSetXXX 子键。Enum\下的USB表键使用VID_v(4)& PID_d(4)格式描述USB设备。其中, v(4)代表4个数字的销售商代码(由 USB协会分配给各销售商); d(4)代表4个数字的产品代码(由销售商分配给其生产的产品)。USBSTOR表键则使用Disk& Ven_iManufacturer& Prod_iProduct& Rev_r(4)格式进行描述。iManufacturer表示制造厂商, iProduct表示设备类型, r(4)则为修正码。UsbViewer工具即基于USBSTOR表键进行信息抽取, 因此获取到的序列号通常情况下并不完全准确。值得一提的是, 如USB设备中未包含有序列号信息, Windows则会通过系统自动生成的字符串标识该设备。 USB表键和USBSTOR表键均未包含挂载的时间信息, 实际上此处时间信息是以属性形式进行存储的。选择以序列号为名称的子键, 单击右键选择“ 导出” , 并将“ 保存类型” 选为“ 文本文件” , 打开保存后的文本文件即可获得时间信息。还需要指出的是, USBSTOR表键下有一名为ParentIdPrefix键值, 该键值数据通过关联MountedDevices表键可以指示出USB设备的盘符信息。MountedDevices表键下的信息只会存储最近一次挂载的ParentIdPrefix键值信息, 无法追溯盘符分配的历史记录。Windows 7注册表中则不再含有ParentIdPrefix键值, 而是通过设备序列号与MountedDevices表键关联, 以确定盘符。Windows 7、10中最新设置的UMB表键为追踪USB设备提供了更大的便利[2]。该表项涵盖了USB和USBSTOR表键的重要信息, 同时指示出USB设备被分配的盘符, 弥补了MountedDevices表键的不足。对于 Control\DeviceClasses 来说,该子键下存储的是以 GUID 分类的设备信息,其中有几个是和 USB 设备有关的(它们在微软的 USB 和存储设备输入输出控制头文件 USBIODEF.H 和NTDDSTOR.H 中定义,有兴趣自己到MSDN上去看):
{A5DCBF10-6530-11D2-901F-00C04FB951ED} GUID_DEVINTERFACE_USB_DEVICE {3ABF6F2D-71C4-462A-8A92-1E6861E6AF27} GUID_DEVINTERFACE_USB_HOST_CONTROLLER {F18A0E88-C30C-11D0-8815-00A0C906BED8} GUID_DEVINTERFACE_USB_HUB {53F56307-B6BF-11D0-94F2-00A0C91EFB8B} GUID_DEVINTERFACE_DISK
1.2 基于系统文件调查USB设备使用痕迹
Windows 7、10系统分区下的\Windows\inf\Setupapi.dev.log文件(Windows XP环境下则为\Windows \set upapi.log)包含有关设备更换、驱动程序更改和重要系统修改等数据。该文件记载有制造厂商、设备类型、设备序列号、首次挂载时间等详细的USB设备信息。基于该文件进行分析一般可以获得与注册表同样的效果
Windows 7、10事件日志增加了对USB设备的审核。查询日志也可知道。日志检索是检查的最有效的手段。
为了方便计算机用户快速查找最近使用过的文件, Windows操作系统设置了Recent文件夹, 该文件夹默认存放路径为\Users\UserName\AppData\Roaming\Microsoft\Windows\Recent(Windows XP下则为\Docu ments and Settings\UserName\Recent)。Recent文件夹有隐藏属性, 只有在文件夹选项中取消“ 隐藏受保护的操作系统文件” 后, 才能正常查看Recent文件夹。Recent文件夹下存放的实际是文件(或文件夹及应用程序)的快捷方式文件, 其扩展名为lnk。此类快捷方式文件包含的有目标文件属性及用户操作信息, 这些信息会跟随用户行为改变而发生改变。利用WFA(Windows File Analyzer)工具解析出的内嵌于快捷方式文件中的目标文件信息, 主要包括目标文件路径、创建时间、修改时间、访问时间等。
另外, Windows 7以后为实现跳转列表功能而设置了扩展名为automaticDestinations-ms的文件(\Users\%username%\AppData\Roaming\Microsoft\Windows\Recent\Automatic Destinations文件夹下), 利用此类文件同样可以分析出与Recent文件夹下快捷方式文件类似的痕迹信息。
IconCache.db是Windows操作系统用于缓存图标的文件, 在Windows 7系统中该文件位于C:\Users\Username\AppData\Local\文件夹下(在Windows XP系统中该文件则存放在C:\Document and Settings\Username\ Local Settings\Application Data下)。IconCache.db是隐藏文件, 需要在文件夹选项中显示所有文件和文件夹才能正常查看。Windows操作系统利用Icon Cache.db文件缓存图标信息, 实现在特定文件夹下快速展现文件图标, 以减轻系统重新解析所造成的负担。
用户使用Windows系统的过程中, 系统会逐渐向IconCache.db文件添加文件图标、文件存储路径等信息。当用户把USB存储设备连接至计算机系统后, 如果USB存储设备的根目录下包含可执行程序, 无论它是否运行, 其文件名称、图标、存储位置、USB设备盘符等信息就会自动添加至IconCache.db数据库中。此外, 如果用户浏览的文件夹含有可执行程序, 也会自动追加相应信息。基于IconCache.db文件分析USB设备使用痕迹的局限是需要对应文件夹下有可执行程序, 并且只能分析出盘符信息。
当然这些操作,在结合数据恢复技术,基本上痕迹就很难藏得住了。
路由