《星期一沙》ppt课件

上传人:tia****nde 文档编号:69681312 上传时间:2019-01-14 格式:PPT 页数:35 大小:327.40KB
返回 下载 相关 举报
《星期一沙》ppt课件_第1页
第1页 / 共35页
《星期一沙》ppt课件_第2页
第2页 / 共35页
《星期一沙》ppt课件_第3页
第3页 / 共35页
《星期一沙》ppt课件_第4页
第4页 / 共35页
《星期一沙》ppt课件_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《《星期一沙》ppt课件》由会员分享,可在线阅读,更多相关《《星期一沙》ppt课件(35页珍藏版)》请在金锄头文库上搜索。

1、Windows 2003 堆溢出及其利用技术深入研究,作者:FlashSky,日期:2003-12-26,感谢 安全焦点所有的成员与启明星辰积极防御实验室的同事 主讲目录 WINDOWS堆结构简介 WINDOWS堆溢出利用 WINDOWS 2003堆溢出保护 WINDOWS 2003堆溢出保护的弱点 思路的延续:弱点利用深入的讨论 思路的突变:更广泛的另类有效利用的手段 未来WINDOWS 2003堆溢出利用研究的方向,Copyright FlashSkyxfocus.org 2003,WINDOWS 堆结构简介(1) 前言 WINDOWS 2003,系统低层的安全性改进 本文的目的 当前关于

2、WINDOWS堆的研究 WINDOWS 堆管理结构与管理特性的研究 WINDOWS 堆特性在堆溢出时的利用的研究 WINDOWS 2003的堆特性的研究,Copyright FlashSkyxfocus.org 2003,WINDOWS 堆结构简介(2) WINDOWS堆结构简介 堆与堆块 堆管理结构与堆块管理结构 堆的整体结构构架,Copyright FlashSkyxfocus.org 2003,Copyright FlashSkyxfocus.org 2003,堆管理结构块 (SIZE:0X640/0XC50),堆段表块0 (SIZE:0X40),小堆块分配管理表结构 (SIZE:0X1

3、818),可选,用户堆块数据区,堆的基地址,一般紧接着堆管理结构块之后,WINDOWS 堆结构简介(3) WINDOWS堆块分配与释放的管理 大堆块对象与小堆块对象 空闲堆块双向链表头 空闲大堆对象与空闲小堆对象入链算法,Copyright FlashSkyxfocus.org 2003,WINDOWS 堆溢出利用(1) 基本原理 常见的普通利用方式: 引起空闲堆组成的双向链表的脱链的操作,Copyright FlashSkyxfocus.org 2003,Copyright FlashSkyxfocus.org 2003,NextP2,PrevP0,NextP3,PrevP1,NextP4,

4、PrevP2,NextP3/PrevP3,NextP2/PrevP2,NextP1/PrevP1,NextP3,PrevP0,NextP3,PrevP1,NextP4,PrevP1,一个正常的堆块脱链表过程,WINDOWS 堆溢出利用(2) 双向链表的入链利用的可能性 可利用的原理 利用的要求,Copyright FlashSkyxfocus.org 2003,NextP3,PrevP0,NextP3,PrevP1,NextP4,PrevP1,NextP3/PrevP3,NextP2/PrevP2,NextP1/PrevP1,NextP2,PrevP0,NextP4,PrevP1,UNKN,U

5、NKP,NextP3,PrevP1,NextP2,PrevP0,NextP4,PrevP2,一个正常的大堆块插入入链表过程,Copyright FlashSkyxfocus.org 2003,WINDOWS 堆溢出利用(3) 覆盖空闲大堆可以达到的目的: 我们能将一个当前释放堆的地址填入到一个由我们指定的内存地址中,Copyright FlashSkyxfocus.org 2003,NextP3,PrevP0,NextP4,PrevP1,NextP3,PrevP0,JMP,TSEHP,TSEH,NextP3,PrevP0,JMP,NextP2,NextP2,NextP3,SEHP,TOPSEH

6、,TOPSEH,一个利用大堆块插入入链表的过程,NextP3/PrevP3,NextP1/PrevP1,NextP2/PrevP2,Copyright FlashSkyxfocus.org 2003,WINDOWS 堆溢出利用(4) 入链表利用的进一步 问题:当前释放堆块地址的前8字节内容是我们无法控制的指针价值。 解决方法:再次分配时候可以将我们可以控制的4字节写入,Copyright FlashSkyxfocus.org 2003,Copyright FlashSkyxfocus.org 2003,NextP3,PrevP0,JMP,NextP2,NextP2,JMP,SEHP,NextP

7、3,PrevP0,JMP,NextP2,NextP2,JMP,SEHP,TOPSEH,JMP ADDR,触发异常,利用分配再次写入JMP代码到头四字节,WINDOWS 堆溢出利用(5) WINDOWS堆溢出可以利用的途径 脱链表时 入链表时,Copyright FlashSkyxfocus.org 2003,WINDOWS 2003 堆溢出保护(1) 基于堆溢出利用原理的检查 基于覆盖双向链表的地址导致可写入任一地址空间 检查上下链表的一致性可以检查和防止堆溢出的利用,Copyright FlashSkyxfocus.org 2003,Copyright FlashSkyxfocus.org

8、2003,lea ecx, esi+8 mov edi, ecx mov ebp-0D8h, edi mov eax, esi+0Ch mov ebp-94h, eax mov edx, eax cmp edx, edi+4 jnz loc_77F36DE1 cmp edx, ecx jnz loc_77F36DE1 mov eax, edi mov edi+4, eax,WINDOWS 2003 的检查的代码,WINDOWS 2003 堆溢出保护(2) 简单而言,其要求就是 被处理的当前堆块的管理结构的双向链表的下一个堆块指针与上一堆块指针要满足如下条件: 1.当前堆块的下一个堆块指针指向的

9、堆块的上一个堆块指针要等于当前堆块的地址 2.当前堆块的上一个堆块指针指向的堆块的下一个堆块指针要等于当前堆块的地址,Copyright FlashSkyxfocus.org 2003,WINDOWS 2003 堆溢出保护(3) 普通饶过的困难 需要构造这样的条件需要准确的知道当前堆块的地址,然而往往当前堆块的地址我们不可知。 同时我们需要改写的有效的内存地址如SHE,RET ADDR,TOP SHE,FUNC HANDLE等周围的内容我们不可控制,Copyright FlashSkyxfocus.org 2003,WINDOWS 2003 堆溢出保护的弱点与问题(1) 保护的范围 跟踪所有的

10、利用途径,发现: WINDOWS 2003只对出链表的路径做了完善检查,缺乏对入链表路径利用的检查。 构造满足入链表攻击的条件就能成功修改一个特定内存的值为释放堆块的地址。 MS遗漏检查的原因?,Copyright FlashSkyxfocus.org 2003,WINDOWS 2003 堆溢出保护的弱点与问题(2) 检查的逻辑 逻辑上,并不能真正保证 检查的正确性。 某种含义上,我们还是能欺骗这种保护,如果我们能找到一种有普遍意义的特殊的利用形式,我们也能饶过检查。,Copyright FlashSkyxfocus.org 2003,思路的延续:遗漏检查利用深入的讨论(1) 新的困难 无法使

11、用分配的过程再次写入JMP CODE,这样头8字节我们无法控制其内容,引起SHELLCODE执行的异常或失败。 因为分配路径做了完整的保护检查 。,Copyright FlashSkyxfocus.org 2003,Copyright FlashSkyxfocus.org 2003,NextP3,PrevP0,JMP,NextP2,NextP2,NextP3,SEHP,TOPSEH,无法满足检查的条件,思路的延续:遗漏检查利用深入的讨论(2) 期待于运气? 再次的推导:构造的欺骗 如果我们能知道堆块的准确地址,是否可以构造欺骗? 为什么这里能构造欺骗而前面不能? 演示:一个构造欺骗写入JMP的

12、实现,Copyright FlashSkyxfocus.org 2003,思路的延续:遗漏检查利用深入的讨论(3) 新的发现与困境 一个可以满足检查的堆块的脱链操作将再次改写SEH,Copyright FlashSkyxfocus.org 2003,Copyright FlashSkyxfocus.org 2003,NextP3,PrevP0,JMP,NextP2,NextP2,NextP3,SEHP,TOPSEH,如果我们能让这个堆块进行脱链表操作又如何?,Copyright FlashSkyxfocus.org 2003,NextP2,PrevP0,JMP,SEHP,NextP3,Next

13、P3,SEHP,TOPSEH,这时异常会有什么结果?,思路的延续:遗漏检查利用深入的讨论(4) 双堆块释放的触发 一个可以满足检查的堆块的脱链操作将再次改写SHE指向我们原来的被覆盖的堆块(而不是当前释放的堆块),而这里的头4字节是我们可以控制的内容。 演示:双堆块释放二次重写TOP SHE的实现利用,Copyright FlashSkyxfocus.org 2003,思路的延续:遗漏检查利用深入的讨论(5) 更深入一步: 利用次序,在非双堆块释放环境下构造双堆块释放的环境 演示:构造双堆块释放的实现 限制条件汇总,Copyright FlashSkyxfocus.org 2003,思路的突变

14、:更广泛的另类有效利用手段(1) 不能满足于覆盖空闲大堆块的苛刻条件,我们需要再求新的思路 转换一下思路,构造欺骗用于新的利用形式: 思路的来源,Copyright FlashSkyxfocus.org 2003,思路的突变:更广泛的另类有效利用手段(2) 一种利用的转换 与堆栈/数据区的结合 甚至可以用于制造空闲大堆块覆盖的条件,Copyright FlashSkyxfocus.org 2003,思路的突变:更广泛的另类有效利用手段(3) 演示:一个将堆溢出转化为数据区溢出利用的实现 限制条件汇总,Copyright FlashSkyxfocus.org 2003,未来WINDOWS 2003堆溢出研究的方向,Copyright FlashSkyxfocus.org 2003,Thanks !,Q/A,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号