程序保护机制
系统内存保护
1. 基于栈的缓冲区溢出检测(GS/Canary)我们首先来介绍基于栈的缓冲区溢出检测(GS)的实现,这个机制的本质思想是在缓冲区溢出导致的覆盖位置设置一个标签值,该值具体位于所保存的EBP和RETN(EIP)地址的上方,当从函数返回时会检查这个标签值,看其是否被修改。由于其位于EBP上方,因此一档该值修改,则可以判定RETN也被修改,即发生了缓冲区溢出攻击。新的函数开场白如下:
push ebp mov ebp, esp sub esp, 24h ;这三步同正常的开场白一致 move ax, dword ptr [vuln!_security_cookie] xor eax, ebp ;xor cookie with ebp mov dword ptr [ebp - 4]
而对应的函数收场白也添加了cookie值的验证:
mov ecx, dword ptr [ebp - 4] xor ecx, ebp ;if cookie or ebp changed call vuln!_security_check_cookie(004012e8) leave ret
其实就是将安全cookie同ebp进行异或运算后存放在栈上,然后函数返回的时候取出安全cookie,再次与ebp进行异或测试是否同系统值匹配。一种改进是在这个基础上添加了一份参数副本,从而使得原始函数参数即使被覆盖也没用,具体结构如下:
2. SafeSEHSafeSEH主要是对SEH结构的保护机制,防止覆盖和使用存储在栈上的SEH结构。在触发异常时SafeSEH会进行以下几项检查:
确保异常记录位于当前线程的栈上; 确保处理程序指针没有回指栈; 确保处理程序已经在授权处理程序列表中登记; 确保处理程序位于可执行的内存映像中; 3. 堆保护(NX)传统的堆漏洞攻击会覆盖对块首部,并视图创建一个伪造的块,当内存释放例程执行时可以使用该块在任意内存地址处写入任意4个字节。具体为:
安全移除:在进行移除前,操作系统会验证向前和向后指针指向的相同的块; 堆元数据cookie:在堆块首部存储一个1字节的cookie,当从空闲列表中移除之前先检查该值。Vista中在几个关键首部字段增加了XOR加密措施,并在使用前进行检查,以防止篡改。 4. DEP(NX)DEP(Data Execution Prevention),即数据执行保护,阻止存放在堆、栈或数据内存中的代码执行,这一直以来都是安全操作系统设计的目标。2004年AMD在其CPU中提供了NX位,首次允许硬件识别内存页是否可执行并采取相应措施。Intel后来推出来了XD功能,实现了类似的功能。
5. ASLRASLR(Address Space Layout Randomization),即地址空间随机化,思想时在进程使用的内存地址引入随机性,这样会使得攻击变得更加艰难。一些随机化有:
可执行映像采取255个随机位置之一; DLL映像中,ntdll.dll随机加载到256个随机位置之一,然后其他的DLL文件随机加载到另一个随机位置; 栈:比其他内存区更加随机化; 堆:基本堆结构位于32个随机位置之一; PEB(Process Enviroment Block,进程环境块)/TEB(Thread Enviroment Block,线程环境块)但是应该注意到,由于Windows系统64KB内存页的限制,因此内存地址随机化时其中一些内存区的熵值较小,即随机化空间不大,因此可以利用蛮力破解。
相关知识
生态保护红线划定与调整的法律机制研究
训练免疫:训练机制与交叉保护
线上花店小程序开发
植物的枯萎和生理保护机制.pptx
“内外联动” 云南健全横向生态保护补偿机制
珍稀濒危植物的濒危机制与保护对策
杜鹃花冷驯化及光保护机制研究
绿色攀枝花 | 解读《攀枝花市健全生态保护补偿机制实施方案》
米花同城社区小程序前端安装更新教程
乡村生物多样性——变化、维持机制及保护策略
网址: 程序保护机制 https://www.huajiangbk.com/newsview1618820.html
上一篇: 两种保护机制:NX和Canary |
下一篇: 阴阳师彼岸花护盾机制测试与详细说 |
推荐分享

- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039