




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,缓冲区溢出攻击,曹天杰tjcao中国矿业大学计算机科学与技术学院,2,缓冲区溢出,1988年11月,23岁的程序员RobertTappanMorris编写的“Morris蠕虫”是用于攻击VAX和Sun机器的程序。这个程序大约使得整个Internet的10%崩溃。Morris蠕虫利用了一个被称为缓冲区溢出的程序缺陷。缓冲区溢出指的是一种系统攻击的手段,通过向程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。,3,原因,造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。缓冲区溢出就是将一个超过缓冲区长度的字符串置入缓冲区的结果,4,后果,向一个有限空间的缓冲区中置入过长的字符串可能会带来两种后果一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一种后果是利用这种漏洞可以执行任意指令,甚至可以取得系统特权,由此而引发了许多种攻击方法。,5,缓冲区溢出原理,堆栈顶部,EBP是基址寄存器,它指向当前堆栈储存区的底部,6,由于内存的生长方向与堆栈的生长方向是相反的,堆栈是从内存的低端向内存的高端生长那么向堆栈中压入的数据超过了堆栈预先分配的容量时,则就会覆盖内存高端的有用数据,此时就会出现堆栈溢出,从而使得程序失败,如果发生堆栈溢出的是大型程序,则有可能导致系统崩溃。,7,看一段小程序,#includeintmain()charname8;printf(Pleasetypeyourname:);gets(name);printf(Hello,s!,name);return0;,编译并且执行,我们输入ipxodi,就会输出Hello,ipxodi!。,8,运行时的堆栈分配,内存底部内存顶部nameEBPret-;name堆栈顶部堆栈底部,9,执行完gets(name)之后,内存底部内存顶部nameEBPret-ipxodi0;name堆栈顶部堆栈底部,10,堆栈溢出,再执行一次,输入ipxodiAAAAAAAAAAAAAAA,执行完gets(name)之后内存底部内存顶部nameEBPret-ipxodiAAAAAAAAAA;name堆栈顶部堆栈底部,11,由于我们输入的name字符串太长,name数组容纳不下,只好向内存顶部继续写A由于堆栈的生长方向与内存的生长方向相反,这些A覆盖了堆栈的老的元素EBP,ret都已经被A覆盖了在main返回的时候,就会把AAAA的ASCII码:0 x41414141作为返回地址,CPU会试图执行0 x41414141处的指令,结果出现错误,这就是一次堆栈溢出,12,攻击成功发生必须同时满足三个条件,将攻击代码注入内存将函数返回地址指针指向已注入攻击代码的内存地址执行攻击代码,13,缓冲区溢出实例,WindowsMessenger服务用于MicrosoftWindows操作系统服务器与客户端之间互相发送一些短消息。MicrosoftWindowsMessenger服务存在堆溢出问题,远程攻击者可以利用这个漏洞以系统权限在目标机器上执行任意指令。问题存在于Messenger服务程序的search-by-name函数中,攻击者提交特定序列的字符串给这个函数可造成堆溢出,精心构建提交数据可能以系统权限在目标机器上执行任意指令。,14,消息通过NetBIOS或者RPC提交给消息服务,因此可以通过封闭NETBIOS端口(137-139)和使用防火墙过滤UDP广播包来阻挡此类消息。用到的工具X-Scan3.3、专用于MicrosoftWindowsMessenger服务远程堆溢出漏洞的扫描工具RetinaMSGSVC.exe、漏洞利用工具msgdos.exe。,15,首先,对目标主机进行漏洞扫描,利用X-Scan3.3对202.119.201.1-202.119.201.254网段进行漏洞扫描,发现主机202.119.201.71存在安全漏洞,如图6.2所示。图6.2发现主机漏洞,16,其中的一个漏洞为MicrosoftWindowsMessenger服务远程堆溢出漏洞,图6.3为漏洞信息。图6.3漏洞描述,17,为确定目标主机202.119.201.71确实存在该漏洞,利用MicrosoftWindowsMessenger服务远程堆溢出漏洞的扫描工具RetinaMSGSVC.exe对其进行扫描(如图6.4所示),扫描结果出现VULENRABLEtoMS03-43,说明该主机确实可能存在此漏洞。,18,图6.4RetinaMSGSVC.exe扫描结果,19,然后,利用msgdos.exe对主机202.119.201.71进行攻击,msgdos.exe是一个命令行工具,如图6.5所示。图6.5利用msgdos.exe对主机进行攻击,20,如果溢出成功,则目标主机将会在一分钟后重启,如图6.6所示。图6.6目标主机被溢出,21,6.3.3缓冲区溢出的防范,编写正确的代码非执行的缓冲区技术数组边界检查程序指针完整性检查及时安装安全补丁关闭不需要的特权程序,22,编写正确的代码,由于缓冲区溢出漏洞存在的原因是在程序开发时使用了与字符串操作相关的函数,没有对函数参数进行严格控制,导致数据越界造成的。如果能确保缓冲区中数据不越界并有效,就可以避免缓冲区溢出。很多存在漏洞的程序是由于调用了一些不安全的库函数,这些库函数往往没有对数组边界进行检查。现在已经开发了一些工具和技术来帮助程序员编写安全正确的代码,例如利用grep搜索源代码中容易产生漏洞的库的调用。,23,非执行的缓冲区技术,所谓的非执行的缓冲区技术,也称为堆栈不可执行,就是指通过使被攻击程序的数据段地址空间不可执行,从而使得攻击者不可能执行被植入被攻击程序输入缓冲区的代码。非执行的缓冲区技术可以有效地对付把代码植入自动变量的缓冲区溢出攻击,而对于其他形式的攻击则没有效果。通过引用一个驻留的程序的指针,就可以跳过这种保护措施。攻击者也可以采用把代码植入堆或者静态数据段中来跳过保护。,24,数组边界检查,缓冲区溢出的一个重要原因就是没有对数组进行边界检查,如果数组不能被溢出,也就不可能发生数组溢出攻击。当数组被溢出的时候,函数返回地址、过程帧指针、函数指针等重要数据就有可能被修改。被植入的攻击代码就可能执行。因此,对数组进行边界检查,使超长代码不可能植入,这样就完全没有了缓冲区溢出攻击产生的条件。对数组边界检查,直接的办法就是对所有的数组读写操作都进行检查,但这种完全检查要付出很大的性能代价。,25,程序指针完整性检查,程序指针完整性检查是指在程序指针被应用之前检测到指针的改变,因此即使一个攻击者成功地改变程序指针,由于系统提前检测到了指针的改变,因此这个指针将不会被使用。程序指针完整性检查通过阻止缓冲区溢出的一个条件由于函数返回地址或函数指针的改变而导致的程序执行流程的改变,来阻止缓冲区溢出的发生。,26,它的原理是在每次在程序指针被引用之前先检测该指针是否已被恶意改动过,如果发现被改动,程序就拒绝执行。因此,即使一个攻击者成功地改变程序的指针,由于系统事先检测到了指针的改变,因此这个指针不会被使用。常用的程序指针完整性检查有堆栈保护和指针保护。,27,及时安装安全补丁,管理员必须不断关注最新的技术和补丁,不断的对系统进行修补,这是漏洞出现后最迅速有效的补救措施。大部分的入侵是利用一些已被公布的漏洞达成的,如能及时补上这些漏洞,将增强系统抵抗攻击的能力,有效地防止大部分的攻击。,28,关闭不需要的特权程序,由于缓冲区溢出只有在获得更高的特权时才有意义,所以带有特权的Unix下的suid程序和Wi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025按揭商品房买卖合同范本
- 农村生态旅游开发与资源保护协议
- 酒店管理项目合作协议
- 2025标准的合作合同书范文
- 物流运输规划与调度辅助工具
- 公证员任职面试经典题及答案
- 工程预算修正合同
- 企业年会活动策划协议
- 重阳节尊老精神的作文9篇
- 2025年甘肃特岗教师考试题库(附答案)
- 无呕吐病房的CINV管理
- 2025年福建南平市武夷山水茶业有限公司招聘笔试参考题库含答案解析
- 2025-2030年中国液压系统行业市场全景评估及未来趋势研判报告
- JCC工作循环检查流程与标准
- 牢记教师初心不忘育人使命作新时代合格人民教师课件
- 门窗工程采购相关知识
- 2025风电机组无人机巡检技术方案
- 浙江省台州市住在室内装修施工合同书
- 2025年高压电工资格考试国家总局模拟题库及答案(共四套)
- 《服务器安装与维护》课件
- 金蝶K3供应链操作手册
评论
0/150
提交评论