第7单元:缓冲区溢出攻击及防御技术.pptVIP

第7单元:缓冲区溢出攻击及防御技术.ppt

  1. 1、本文档共134页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7单元:缓冲区溢出攻击及防御技术

* 网络入侵与防范技术 * 保护系统信息 攻击者需要系统信息才能确定缓冲区溢出漏洞所在,隐藏系统信息可以获得对系统最大程度的保护。 方法有: 使系统本地登录时不显示Linux发行版名字、版本号、内核版本和服务器名称; 不显示系统远程登录提示信息; 使系统对ping没有反应。 * 网络入侵与防范技术 * 关闭不需要的服务 不必要的对外服务往往会提供攻击者其所需的漏洞。注意如下5点: 禁止提供finger 服务; 处理“inetd.conf”文件:对于在网络环境中的Linux系统,首要的就是确定需要被监听的网络端口,为每个端口启动相应服务,并卸载不必要的服务; 修改系统的rc启动脚本,仅仅启动系统必须的服务; 处理“services”文件,使其不可被用户修改。 * 网络入侵与防范技术 * 最小权限原则 缓冲区溢出漏洞的目标往往是setuid/setgid等具有特殊权限的程序。这使得权限中包含“s”位的程序往往成为系统不安全的主要因素。 方法: 取消普通用户的控制台访问权限; 减少特权程序的使用。 * 网络入侵与防范技术 * 最小权限原则(2) 如果文件的权限位中出现“s”,则这些文件的SUID(-rwsr-xr-x)或SGID(-r-xr-sr-x)位被设定了。 因为这些程序给执行它的用户一些特权,可以被攻击者恶意利用来提示自身权限。 因此所以如果不需要用到这些特权,最好把这些程序的s位移去。可以用下面的这个命令chmod a -s 文件名移去相应文件的s位。 * 网络入侵与防范技术 * 使用系统的堆栈补丁 在安全编程中我们已经讨论过使用不可执行堆栈的好处,但那是针对开发者的要求。 而系统管理员所使用的程序或软件往往不带有这样的配置,因此应该尽量去主动获得并安装操作系统提供商所发布的系统堆栈补丁。 * 网络入侵与防范技术 * 检查系统漏洞,及时安装安全补丁 这也是最为常识的做法,管理员应该经常性的关注安全消息,尽快的获得软件安全漏洞报告,并采取相应的措施,如安装安全补丁。 这对弥补缓冲区溢出漏洞之外的其它安全缺陷也是很重要的。 * 网络入侵与防范技术 * 7.7 小结 本章我们重点介绍了缓冲区溢出的原理、技巧及防范技术。 缓冲区溢出是一种非常危险并且极为常见的漏洞。在过去的十年中,以缓冲区溢出为类型的安全漏洞占是最为常见的一种形式了。 更为严重的是,缓冲区溢出漏洞占了远程网络攻击的绝大多数,这种攻击可以使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权。 因此对缓冲区溢出漏洞的防护成为维护系统安全的重要环节。缓冲区溢出漏洞是程序开发所造成的,关注新的安全公告,升级软件到最新版本或者安装开发商提供的补丁对防止缓冲区溢出溢出是必须的。 * 网络入侵与防范技术 * * * * * * * * * * 网络入侵与防范技术 * 7.6 缓冲区溢出的防御 7.6.1 缓冲区溢出防御概述 7.6.2 源码级保护方法 7.6.3 运行期保护方法 7.6.4 阻止攻击代码执行 7.6.5 加强系统保护 * 网络入侵与防范技术 * 7.6.1 缓冲区溢出防御概述 从前面我们可以看出,缓冲区溢出的真正原因在于某些编程语言缺乏类型安全,程序缺少边界检查。 这一方面是源于编程语言和库函数本身的弱点,如C语言中对数组和指针引用不自动进行边界检查,一些字符串处理函数如strcpy、sprintf等存在着严重的安全问题。 另一方面是程序员进行程序编写时,由于经验不足或粗心大意,没有进行或忽略了边界检查,使得缓冲区溢出漏洞几乎无处不在,为缓冲区溢出攻击留下了隐患。 7.6.1 缓冲区溢出防御概述 这样要么放弃使用这类语言中的不安全类型,放弃不安全的类型就等于放弃这类语言的精华;要么使用其它的类型安全语言,如JAVA等。 而放弃C/C++语言等这样高效易用的编程语言对于大部分程序员又是不能接受的,所以只能采取其它的防护措施。 * 网络入侵与防范技术 * 7.6.1 缓冲区溢出防御概述 首先,可以考虑在一般的攻击防护产品中加入针对缓冲区溢出攻击的防护功能,如防火墙和IDS等。 可以从两方面着手: 一是可以提取用于攻击的shellcode的普遍特征作为攻击特征,过滤掉这样的数据包或者触发报警。 二是对特定的服务限定请求数据的值的范围,比如,某一服务要求请求数据为可打印字符串,如果发现对这一服务的请求存在不可打印字符则认为发生攻击。 * 网络入侵与防范技术 * 7.6.1 缓冲区溢出防御概述 其次,通过分析缓冲区溢出攻击的原理,可以发现缓冲区溢出能够成功的几个条件: 编译器本身或库函数没有对数组类型的数据结构做严格的边界检查,这是溢出的首要原因; 返回地址放在堆栈的底部,使得通过溢出可以覆盖返回地址; 堆栈的属性一般是可执行的,使得

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档