首页
社区
课程
招聘
[原创]EPathobj 漏洞调试心得
发表于: 2013-6-21 00:43 3907

[原创]EPathobj 漏洞调试心得

2013-6-21 00:43
3907

之前看了http://bbs.pediy.com/showthread.php?t=172839,对该漏洞的利用过程还是不是很清楚,加之以前没有研究过内核漏洞,所以想自己调试一下,重现漏洞利用的过程。在调试过程中借鉴了instruder大牛的ppt,小弟水平有限,分析的不对的地方还望多多批评指正。

EPATHOBJ Exploit漏洞调试心得

环境:
物理主机windows 7 32位+windbg
虚拟机 windows xp sp3 32位

该漏洞触发是当PathRecord->next被替换成ExploitRecord,之前的EPATHOBJ__bFlatten 循环就会被终止,调用EPATHOBJ__pprFlattenRec函数,触发任意地址写PathObj对象地址,所以在WatchdogThread函数中下断点,如下图:


调用InterlockedExchange函数将&PathRecord->next指向ExploitRecord,如图:


在0x4010d2处下断点,g命令运行到0x4010d2处,如下图:


Call testSYS+0x1810是调用
LogMessage(L_ERROR, "InterlockedExchange(0x%08x, 0x%08x);", &PathRecord->next, &ExploitRecord);
而0x4010f9处就是kernel32!InterlockedExchange函数,此时堆栈如图:


而0x940000就是PathRecord结构,如图:


此时反汇编win32k!EPATHOBJ::bFlatten,如图:


0xbf8b8b67处下断点,g命令运行到该处,此时eax的数据如图:


0x448e50就是ExploitRecord结构,此时调用0xbf8b8b74处的
win32!EPATHOBJ::pprFlattenRec函数触发任意地址写,这里借用instruder大牛的ppt里面的关于漏洞细节的图片:



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 5
支持
分享
最新回复 (4)
雪    币: 2844
活跃值: (2648)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
2
顶!什么情况下r0能直接读r3的地址空间?
2013-6-24 18:33
0
雪    币: 64
活跃值: (55)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
jmp[esp+60]在ring 0直接执行0x4010000处的shellcode,好像是这个地址吧,就是Nt那个函数的第二个参数
2013-6-24 22:57
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习了,谢谢!
2013-6-25 08:54
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个分析好比隔靴挠痒,半懂不懂,从漏洞最后利用部分才开始讲,根本没搞懂漏洞的root cause.

还是看hitcon上keenjoy95的分析吧,比漏洞原作者还更清楚
2013-6-27 20:48
0
游客
登录 | 注册 方可回帖
返回
//