1.覆盖返回地址为jmp esp,执行shellcode,当函数返回,返回地址被覆盖为jmpesp,导致执行shellcode
对付方法:引入Dep(data ExecutionPrevention 数据执行保护),堆,栈上的内存页属性为不可执行,执行会出错。
DEP
数据执行保护(DEP)(Data Execution Prevention) 是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。在 Microsoft Windows XP Service Pack 2及以上版本的Windows中,由硬件和软件一起强制实施 DEP。
支持 DEP 的 CPU 利用一种叫做“No eXecute 不执行”的技术识别标记出来的区域。如果发现当前执行的代码没有明确标记为可执行(例如程序执行后由病毒溢出到代码执行区的那部分代码),则禁止其执行,那么利用溢出攻击的病毒或网络攻击就无法利用溢出进行破坏了。如果 CPU 不支持 DEP,Windows 会以软件方式模拟出 DEP 的部分功能。
Anti-Dep:
绕过Dep技术ROP(return oriented programming),ROP由一系列的 Gadget组成。所谓ROP Gadget,就是一系列以retn结尾的指令。

本文深入探讨DEP(数据执行保护)和ASLR(地址空间布局随机化)两种安全机制,解释其工作原理以及如何在安全防御中发挥作用。DEP防止shellcode执行,ASLR则通过随机化地址空间来增加攻击难度。尽管如此,攻击者仍能通过ROP、未启用ASLR的模块、HeapSpray等技术进行绕过。Java Applet Spraying和JIT Spraying也是攻击者利用的手段,利用解释器的特性执行恶意代码。
最低0.47元/天 解锁文章
6378

被折叠的 条评论
为什么被折叠?



