windows内存保护机制之地址空间分配随机化技术.doc

windows内存保护机制之地址空间分配随机化技术.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
windows内存保护机制之地址空间分配随机化技术

Windows平台下内存保护机制之地址空间分配随机化技术 学习报告 引言 在过去的十几年里,随着信息化步伐的高速迈进,计算机已经深入到社会生活中的方方面面,成为人们生活中不可分割的重要组成部分,小到个人计算机的娱乐应用,大到贯穿于一个企业生产、经营、管理全过程的企业级应用。因此,在今天的信息环境里,如何保证信息本身以及信息系统的安全性已然变得至关重要了。操作系统是计算机必不可少的软件平台,其安全的重要性不言而喻。微软公司的Windows 操作系统是当前最流行的操作系统,因此,了解并深入研究Windows 操作系统的内存保护机制,是非常有必要的。 Windows内存保护机制主要有:用户界面特权分离机制,强制完整性控制机制,驱动程序签名机制,地址空间分配随机技术,数据执行保护机制等。本文我们就谈谈其中的地址空间分配随机化技术。 地址空间分配随机化 S. Forrest 最早提出了地址空间分布随机化的概念,指出计算机系统的相似性会带来安全隐患,对一台计算机的攻击方法可以轻易移植到其他计算机上,带来攻击的大众化和病毒的快速传播,并首次提出通过进程地址空间随机化的方法来实现多样化的计算机系统。地址空间分布随机化的基本出发点是: 基于缓冲区溢出安全漏洞的攻击需要事先熟悉进程的地址空间,从而将程序的执行流程跳转到攻击代码的位置。为此,地址空间分布随机化 流程跳转到预期的位置,从而阻止攻击代码执行。地址空间分布随机化技术的优点在于,不仅能对已知漏洞防范,而且还能对未知漏洞利用攻击进行防护。在Windows 系统中,很多系统核心对象加载到进程空间中的基地址是固定的,比如动态链接库、栈、堆,进程环境块( EB) 和线程环境块( TEB) ,以及其它一些系统对象。动态链接库一般都是映射到不同进程的虚拟地址空间的同一地址。线程栈和堆的创建也遵循一定的规律。进程环境块和线程环境块的创建则是根据某一固定的值( MinHighestUseraddn) 来查找可用的空闲空 间,加载基地址也相对不变。攻击者根据进程内的组件和对象被加载到固定地址这一事实,利用固定地址的指令或堆栈空间执行shellcode,从而溢出成功,达到攻击的目的。如果采用地址空间分布随机化 shellcode,结果是溢出失败。即使软件存在漏洞,也无法利用。因此,地址空间分布随机化是防御缓冲区溢出攻击的一种有效方法。目前,一些操作系统和第三方软件采用了地址空间随机化技术,地址空间分布随机化技术主要对进程的栈、堆、主程序代码段、静态数据段、共享库等装载地址进行随机化。采用了后,攻击代码的地址不固定,攻击者只能猜测该地址,所以不能保证能正确地跳转到攻击代码的位置。地址空间分布随机化: 降低攻击者成功的概率; 使针对一台计算机的攻击方法不能简单地移植到另一台计算机上。 windows7下的地址空间分布随机化机制 加载地址随机(地址空间分布随机化Windows Xp 及2003 系统中,只能实现对PEB,TEB 等关键结构的地址随机化,但是在Windows 7下,则几乎使其应用到所有的结构、程序映像、堆栈等,地址空间分布随机化 1)堆地址的随机化 2)栈基址的随机化 3)PE 文件映像基址的随机化 4)PEB(Process Environment Block,简称PEB)地址的随机化 线程栈、进程堆、PEB 的地址随着进程每一次运行而不同,EXE、DLL 等则是随系统每一次启动而不同。地址空间分布随机化DLL 中的指令对程序流程进行控制,如利用JMP、ESP 等。当其位置不再固定,跳转到目标指令就变得困难,许多攻击代码不能成功执行。地址空间分布随机化 DEP)等,共同为抵抗内存漏洞提供了强有力的保护。为了测试Windows 7 地址空间分布随机化4 项测试,记录每一次它运行时的相关数据:输出代码中某一函数的地址,测试进程的映象文件加载地址随机化程度;输出一个变量的存储地址,测试栈地址的随机化程度;输出PEB地址,测试PEB 地址随机化程度;输出malloc、HeapAlloc、HeapCreate 三个函数的返回地址,测试堆地址的随机化程度。 地址空间分布随机化1)利用静态加载的DLL 与EXE 映像。Windows 7 系统默认只随机加载使用/DynamicBase 连接的程序。而众多的第三方软件,组件都没采用这种连接。特别是浏览器中大量第三方组件的存在,使系统安全性大大降低。 2)部分覆盖。通过对溢出大小的精确控制,只覆盖关键指针的几个字节。分析地址空间分布随机化机制3)暴力方式。当溢出只发生在一个线程中且不会造成整个进程的崩溃时。此时如果以暴力猜测的方法不断尝试不同的跳转地址,将可能触发异常处理例程,进程不会崩溃,甚至从外部无法获得攻击的任何迹象。由于系统DLL 只对基址的8 比特

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档