详解如何利用Windows设备驱动
2009-02-12 13:55:33 来源:WEB开发网设备驱动漏洞现在正在增长成为Windows 和其他操作系统安全的主要威胁。这是一个相关的新领域,但是很少有公开的技术文档讲述这个方面。据我所知,第一个windows 设备驱动攻击是由SEC-LABS小组在Win32 Device Drivers Communication Vulnerabilities白皮书中提到的。这个文章公开了一些有用的驱动溢出技术,并且描绘了未来研究的蓝图。
第二个值得一读的文章是Barnaby Jack的文章,叫做“Remote Windows Kernel Exploitation Stepinto the Ring 0”。由于这方面技术文档的缺乏,我决定共享我自己的研究成果。在这个文章中,我将会介绍我的设备驱动攻击技术,提供一些详细的可用技术的细节,包括完整的攻击代码和用于测试的样例驱动的代码。
读者需要拥有IA-32 汇编阅读能力和软件漏洞攻击经验。另外,强烈建议你要去阅读之前提过的两篇白皮书。
实验环境的组建
过程中我使用了我的小型“实验室”:
- 一台1G 内存的电脑;
- 虚拟机软件,比如Vmware;
- windbg 或者softice。我在VMware 中使用第二种,但是它并不怎么稳定;
- IDA 反汇编器;
- 一些软件我会在后面提到。
在虚拟机和主机之间使用pipe 进行远程调试,但是通常其他方式更好一点。如果你想进一步研究驱动的话,这个环境的组建是非常重要的。
用户态代码(软件)在Ring3 模式下运行(它没有访问Ring0 模式的权限),并且不能直接访问操作系统的函数,如果想使用这些函数只能通过call请求他们。这个叫做函数封装。用户模式内存地址是由0x00000000 到0x7FFFFFFF。
Windows 系统使用了两种权限模式(ring0 和ring3)。
Driver loader
在我发布那个简单驱动之前,我们先来简单看下如何加载它。这是实现这个功能的代码:
更多精彩
赞助商链接