首页
社区
课程
招聘
[原创]《0day安全第二版》样章发布4:第23章 FUZZ驱动程序
2011-2-26 23:07 16346

[原创]《0day安全第二版》样章发布4:第23章 FUZZ驱动程序

2011-2-26 23:07
16346
第23章  FUZZ驱动程序 1
23.1  内核FUZZ思路 1
23.2  内核FUZZ工具介绍 3
23.3  内核FUZZ工具DIY 3
23.3.1  Fuzz对象、Fuzz策略、Fuzz项 3
23.3.2  IoControl MITM Fuzz 4
23.3.3  IoControl Driver Fuzz 4
23.3.4  MyIoControl Fuzzer界面 4
23.4  内核漏洞挖掘实战 4
23.4.1  超级巡警ASTDriver.sys本地提权漏洞 5
23.4.2  东方微点mp110013.sys本地提权漏洞 5
23.4.3  瑞星HookCont.sys驱动本地拒绝服务漏洞 5




23  FUZZ驱动程序
通过我们已经具备的内核漏洞知识和经验,若能挖出一两个内核漏洞,应该是很有成就感的事情。同时也能加深我们对内核程序的认识和理解。
23.1  内核FUZZ思路

前面21.3.2节中提到,漏洞挖掘有两种方式,一是工具挖掘,二是手工挖掘。无论哪种方式,首先都要有一个切入点,也就是内核Fuzz的思路。以下是几个比较常用的切入点:
内核API函数
内核API函数是提供给Ring3调用,在Ring0完成最终功能的函数。这些函数接收Ring3传入的参数,如果处理参数的过程存在问题的话,很有可能成为一个内核漏洞。这样的内核API函数有很多,例如SSDTShadow SSDT等。
Hook API的代码
目前有很多安全软件为了防御病毒木马,对很多内核API进行了Hook/Inline Hook。然而这些Hook内核API的代码也存在安全问题。如果对参数的处理不当或内部逻辑的错误,也很有可能出现内核漏洞。
网络协议处理的内核代码
有一些协议的处理是在SYSTEM进程中的,也就是在内核模块中处理的,可以通过网络协议Fuzz,构造畸形协议数据包,来挖掘这方面的漏洞。
IoControl
从已公布的漏洞来看,IoControl类型的漏洞是最多的,可以作为内核漏洞挖掘的重点方向。IoControl作为Ring0/Ring3缓冲区交互的重要方式,很有可能会出现参数处理不当的问题,或者内部逻辑甚至设计缺陷引发的问题。既然IoControl类型的内核漏洞如此多,那么如何挖掘这种类型的漏洞呢?
首先再来回顾下 21.1.5节中介绍的Ring3Ring0通讯的重要函数——DeviceIoControl函数。
BOOL DeviceIoControl(
  HANDLE hDevice,           //设备句柄
  DWORD dwIoControlCode,        //Io控制号
  LPVOID lpInBuffer,        //输入缓冲区指针
  DWORD nInBufferSize,          //输入缓冲区字节数
  LPVOID lpOutBuffer,           //输出缓冲区指针
  DWORD nOutBufferSize,         //输出缓冲区字节数
  LPDWORD lpBytesReturned,      //返回输出字节数
  LPOVERLAPPED lpOverlapped     //异步调用时指向的OVERLAPPED指针
);
该函数共有8个参数,hDevice是要通信的设备句柄;dwIoControlCodeIo控制号;lpInBuffer是输入缓冲区指针;nInBufferSize是输入缓冲区字节数;lpOutBuffer是输出缓冲区指针;nOutBufferSize是输出缓冲区字节数;lpBytesReturned是返回输出字节数;lpOverlapped是异步调用时指向的OVERLAPPED指针。
可以试想,正常情况下,DeviceIoControl函数的参数都是自己程序指定的,不会是畸形的参数,驱动中也主要考虑功能的实现,对于畸形参数和处理逻辑缺陷方面的安全问题不够重视。因此可以通过构造畸形参数来Fuzz驱动程序的处理是否存在漏洞。这种Fuzz称为“IoControl Fuzz”。
关于IoControl Fuzz,有2种方法:
。。。。。。(详见附件中的样章)

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (7)
雪    币: 179
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gdstcs 2011-2-26 23:14
2
0

什么时候出版啊。。
雪    币: 678
活跃值: (101)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
StudyRush 3 2011-2-26 23:14
3
0
又有样章出来,赞。心里也很纠结,很想看到全书。
雪    币: 222
活跃值: (44)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
shineast 4 2011-2-27 00:01
4
0
应该快了吧。五一之前,哈哈!
雪    币: 220
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
广海混沌 2011-2-27 00:18
5
0
嗯 能看到全书的话 还是很不错的。
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Matrix 2011-3-18 17:25
6
0
驱动上的fuzz效果不是很好
参数要求比较严格,就很久前找到过za的一个bug,后来就没了
感觉逆向来的更快点
雪    币: 121
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
caozhzh 2011-3-30 09:24
7
0
内容**呀,很希望早日看到
雪    币: 92
活跃值: (154)
能力值: ( LV8,RANK:135 )
在线值:
发帖
回帖
粉丝
光棍节 2 2011-4-26 08:28
8
0
具体什么时间出版啊,,,,期待~~
游客
登录 | 注册 方可回帖
返回