1. 极安网首页
  2. 网络安全技术

USB Fuzz:漏洞挖掘到漏洞报告

最近,我开始使用基于Facedancer的一种工具来挖掘USB主机堆栈中的漏洞。本文首先介绍我的Fuzzing测试方法,然后给出完整更新的Windows 8.1 x64中的漏洞的实际示例。本文的目的不是重新定义USB Fuzzing测试,也不是对我的Fuzzing测试架构进行完整描述,而是要叙述从Fuzzing测试到漏洞报告的完整步骤。

0x01 Fuzzing 方法

我的Fuzzing结构基于Facedancer和Umap工具,并向其中添加了一些功能:

· 在PCAP中为仿真设备捕获流量;

· 从已记录的PCAP重放流量;

· 基于Radamsa的数据包变异。

0x02 USB基础

本文的目的不是要详细描述USB的工作原理,但仍需要一些知识才能更好地理解USB Fuzzing。连接设备后,主机会向该设备发出标准请求,以检索有关该设备的信息(供应商ID,产品ID,可用功能等),这样做是为了对其进行配置并将适当的驱动程序加载到OS中,此信息称为 描述符。这些请求/描述符在特殊端点上交换:每个连接的新标准设备都必须响应发送给它的请求。端点是设备接口之间的逻辑链接和USB主机堆栈,接口由一个或多个端点组成,并提供类功能(HID,大容量存储等)或特定功能。

0x03 Fuzzing的实例示例

我模拟了USB大容量存储设备,并丢弃了交换的流量,然后,我决定Fuzzing配置描述符,尤其是bNumEndpoints字段。

变异只是将这个字节替换为一个随机字节。一段时间后,我在Windows 8.1 x64上触发了BSOD。在这里,我的变异描述符以红色框的形式发送到主机。在使用变异描述符对数据包序列重放了几次之后,我推测主机在以橙色框发送设置配置请求后立即触发了BSOD 。

USB Fuzz:漏洞挖掘到漏洞报告-极安网

在Wireshark中,变异的描述符如下所示:

USB Fuzz:漏洞挖掘到漏洞报告-极安网

崩溃转储分析几乎没有用,因为内核池内存已被损坏:每次崩溃都在另一个位置。我继续注入数据包,并且在某个时候Windows BSOD给了我以下问题的位置:USBSTOR.sys。

驱动程序名称是显式的:它是大容量存储驱动程序。

原创文章,作者: Admin ,转载请注明出处:https://secvery.com/2036.html