首页
社区
课程
招聘
[讨论]关于DEP及ASLR的突破方式
2010-1-22 22:20 10293

[讨论]关于DEP及ASLR的突破方式

2010-1-22 22:20
10293
《0day:软件漏洞分析技术》是一本深入浅出的、非常棒的书籍,应该说跟作者的深厚功力分不开,从中我学习了很多知识,很多关键概念有醍醐灌顶的感觉。看书过程中有些疑问,本来准备过来提问的,但是由于权限的限制,今天成为初级会员才能过来发帖,以前我发在新手交流区了,但是无解。今天终于可以发过来了。
由于软件及硬件升级,DEP及ASLR已经很好地防止传统溢出及利用溢出的网页挂马。当DEP保护机制被使用后,由于攻击代码是存放在系统的数据页面(堆栈页面上),那么函数返回时,指令寄存器EIP将跳转到攻击代码的入口地址。此时该页面是非可执行的(non-executable),于是DEP就会触发系统异常而导致程序中止。如果采用Ret2libc的方式,迂回攻击,攻击者设定的函数的返回地址并不直接指向攻击代码,而是指向一个已存在的系统函数的入口地址。由于系统函数所在的页面权限是可执行的,这样就不会触发DEP异常。这种方式的基础是固定的系统函数入口地址。ASLR(Address Space Layout Randomization)技术使得系统函数的地址在每次系统启动后变得不再相同,从而使Ret2libc攻击失去其基础。要想通过程序进程表结构来获得特定DLL的加载基址会触发DEP的异常保护,这样DEP及ASLR在一定程度上是相互形成闭环。这种防护是否是密不透风、没有缺陷的?如何突破?大家一起讨论讨论!

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞0
打赏
分享
最新回复 (6)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lfhack 2010-1-27 08:49
2
0
ASLR(Address Space Layout Randomization)技术使得系统函数的地址在每次系统启动后变得不再相同,从而使Ret2libc攻击失去其基础
雪    币: 261
活跃值: (78)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
hacker一疒亻 2010-2-22 20:12
3
0
通过MS08-078这个去年的IE7的漏洞来说一下思路:

1.通过Heap spray注入内存的构造的数据绕过DEP,因为没有在堆上执行代码

2.绕过ASLR,是因为内核服务调用的入口地址是不会变化的,只要能够构造相应的内核调用需要用到的

参数,就可以执行类似这样的shellcode,但是局限性也很明显了,因为这样构造出来的shellcode功能很

有限。

3.目前来说这种机制还是比较安全的,呵呵, 不过过不了多久,就会有更有效的办法的利用起来非常困难,但就理论上就对抗windows的这些安全保护机制,算是绕过了
雪    币: 267
活跃值: (24)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
youstar 2 2010-2-24 16:32
4
0
可以研究下JIT heap 没怎么理解清楚!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
eyeego 2010-3-23 16:13
5
0
看公开的那个stage0 shellcode是用于单级指针利用的,如果多级指针呢? 能否利用呢? 应该怎么利用?
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
漂亮宝贝 2010-3-29 12:51
6
0
http://vreugdenhilresearch.nl/Pwn2Own-2010-Windows7-InternetExplorer8.pdf

看看这篇文章吧,会受到启发的。
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
walterwong 2010-4-29 23:48
7
0
希望啦, 我不相信stack/heap overflow 從此成為history!
游客
登录 | 注册 方可回帖
返回