绕过堆栈保护缓冲区溢出攻击技术.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
王新志等:绕过堆栈保护的缓冲区溢出攻击技术 绕过堆栈保护的缓冲区溢出攻击技术 王新志刘克胜 (解放军电子工程学院) 摘 要 缓冲区溢出攻击是网络攻击的主要形式之一,占远程网络攻击的大多数。堆 栈溢出是缓冲区溢出攻击的主要方法,但堆栈保护技术能够在很大程度上防止堆栈溢 出的发生。本文在介绍缓冲区溢出原理的基础上,对堆栈溢出和堆栈保护进行了分析, 然后对绕过堆栈保护的缓冲区溢出技术进行了探讨和研究。 关键词缓冲区溢出 堆栈保护 网络攻击 1. 引言 缓冲区溢出(burferoverflow,又称为bufferoverrun)是现代计算机系统长期存在的安全 问题,是目前远程网络攻击的主要手段。1988年的“莫尔斯蠕虫”事件引起了人们对缓冲区溢 出的关注,缓冲区溢出攻击成为少数高水平黑客手中的“杀手锏”;1996年,《Phrack))口…杂志 The ForFunAnd Stack Profit))的文章详尽描述了利用缓冲区溢 49期中一篇名为((Smashing 出漏洞进行攻击的原理及实现细节,复杂的攻击手段有了简单的实现方式,大量缓冲区溢出 漏洞被发现并被利用来攻击,缓冲区溢出攻击一跃成为远程网络攻击的主流。根据【:ERT/ 年以来,缓冲区溢出占所有重大安全性错误的百分之五十以上。根据国内外多家权威网络安 全机构实时更新的漏洞列表分析数据显示,缓冲区溢出问题正在扩大,而不是在缩减。缓冲 区溢出攻击及相应的防护技术已经成为软件安全、网络安全等领域研究的重要课题之一。 缓冲区溢出的基本原理是指某些缺乏数组边界检查的编译器(如标准C编译器)编译的 程序在运行时,如果执行向一个指定大小的缓冲区内写人超长字符串这样的操作,将导致与 该缓冲区相邻的数据被覆盖,在某些条件下这会改变程序的正常执行流程,使程序的执行不 可控。攻击者利用缓冲区溢出修改程序的指令指针,使计算机执行攻击者预先植入或程序内 存空间中已存在的某些指令,从而达到攻击目的。缓冲区溢出主要分为堆栈溢出和堆溢出, 其中堆栈溢出最常见,约占总数的90%以上,而且容易被利用来攻击。有效的防止堆栈溢出 可以根除绝大多数缓冲区溢出问题。 正确的编程技术以及对代码进行仔细检查可以清除部分缓冲区溢出隐患,但是海量的代 码和缓冲区溢出发生环境的复杂性决定了该手段的效能有限。自动的防缓冲区溢出手段是 必须的,以堆栈保护为目的的防缓冲区溢出技术正是其中之一。它通过检测程序堆栈是否遭 受破坏来决定程序是否继续执行,在一定程度上可以有效防止部分堆栈溢出问题。 本文在分析堆栈溢出攻击原理以及现有堆栈保护技术的基础上,着重对堆栈保护技术中 的关键问题以及绕过堆栈保护的堆栈溢出攻击进行探讨。 2. 堆栈溢出原理 ~931 中国电子学会电子对抗分会第十三届学术年会论文集 简单的讲,堆栈溢出攻击是利用堆栈生长方向和数据存储方向相反的特点,用后存人的 数据覆盖先前压栈的数据,直至覆盖函数的返回地址,在函数执行完返回时改变程序的正常 执行流程,从而达到攻击目的。下面通过一个例子来详细分析。 2.1一个存在堆栈溢出问题的程序 如图1所示,这是一个存在缓冲区溢出问题的C语言程序。它调用strcpyO完成字符串 传递的过程。 char*func(char率17lsg){ int varl: char bur[80]: int var2: strcpy(buf,msg): return msg: ) int

文档评论(0)

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

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

1亿VIP精品文档

相关文档