-
-
[讨论]关于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元/年,续费同价!