10 Fuzzing Windows 驱动

对于 hacker 来说,攻击 Windows 驱动程序已经不再神秘。

从前,驱动程序常被远程溢出,而如今驱动漏洞越来越多的用于本地提权。在前面我们使用 Sulley 找出了 WarFTPD 的溢出漏洞。

WarFTPD 在远程的机器上由一个受限的用户启动,我们在远程溢出它之后,就会获得一个 受限的权限,这个权限一般是很小的,如果似乎,很多信息都无法获取,很多服务都访问不 了。如果这时候我们拥有一个本地驱动的 exploit,那就能够将权限提升到系统级别,you are god now!

驱动在内核模式下运行,而我们的程序在用户模式下运行,为了在两种模式之间进行交 互,就要使用 IOCTLs(input/output controls )。当 IOCTLs 处理代码有问题的时候,我们就 能利用它获取系统权限。

接下来,我们首先要介绍下如何通过实现 IOCTLs 来和本地的设备进行联系,并且尝试 使用 Immunity 变形 IOCTLs 数据。然后,学会使用 Immunity 提供的 driverlib 库获取驱动信 息,以及从一个编译好的驱动文件中解码出重要的控制流程,设备名,和 IOCTL 代码。最 后用从 drivelib 获得的数据构建测试数据,使用 ioctlizer(我写的一个驱动 fuzzer)进行一次 driver fuzz。