缓冲区溢出攻击的分析及防范策略谢志强(已取走)

缓冲区溢出攻击的分析及防范策略谢志强(已取走)

ID:18923184

大小:55.50 KB

页数:10页

时间:2018-09-27

缓冲区溢出攻击的分析及防范策略谢志强(已取走)_第1页
缓冲区溢出攻击的分析及防范策略谢志强(已取走)_第2页
缓冲区溢出攻击的分析及防范策略谢志强(已取走)_第3页
缓冲区溢出攻击的分析及防范策略谢志强(已取走)_第4页
缓冲区溢出攻击的分析及防范策略谢志强(已取走)_第5页
资源描述:

《缓冲区溢出攻击的分析及防范策略谢志强(已取走)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、缓冲区溢出攻击的分析及防范策略一、缓冲区与出的概念及原理(一)何谓缓冲区溢出缓冲区是用户为程序运行时在计算机中申请得的一段连续的内存,它保存了给定类型的数据。缓冲区溢出指的是一种常见且危害很大的系统攻击手段,通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。(二)缓冲区溢出的原理从上面的缓冲区溢出概念可以看出,缓冲区溢出就是将一个超过缓冲区长度的字符串置入缓冲区的结果,这是由于程序设计语言的一些漏洞,如C/C++语言中,不对缓冲区、数组及指针进行边界检查,(strcpy()、s

2、trcat()、sprintf()、gets()等语句),在程序员也忽略对边界进行检查而向一个有限空间的缓冲区中置入过长的字符串可能会带来两种结果:一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一种后果是利用这种漏洞可以执行任意指令,甚至可以取得系统特权,由此而引发多种攻击方法。缓冲区溢出对系统的安全性带来很大的威胁,比如向程序的有限空间的缓冲区中置入过长的字符串,造成缓冲区溢出,从而破坏程序的堆栈,使程序转去执行其他的指令,如果这些指令是放在有Root权限的内存里,那么一旦这些指令得到了运行,入侵者就以Root的

3、权限控制了系统,这也是我们所说的U2R(UsertoRootAttacks)攻击。例如在Unix系统中,使用一些精心编写的程序,利用SUID程序(如FDFORMAT)中存在的缓冲区溢出错误就可以取得系统超级用户权限,在Unix取得超级用户权限就意味着黑客可以随意控制系统。为了避免这种利用程序设计语言漏洞而对系统的恶意攻击,我们必须要仔细分析缓冲区溢出攻击的产生及类型,从而做出相应的防范策略。二、缓冲区溢出攻击的分析(一)缓冲区溢出攻击的产生C编程语言中,静态变量分配在数据段中,动态变量分配在堆栈段中,C语言允许程序员在运行时在内存的两个不同部分(堆

4、栈和堆)中创建存储器。通常,分配到堆的数据是那些malloc()或新建时获得的数据,而分配到堆栈的数据一般包括非静态的局部变量和所有按值传递的参数。大部分其它信息存储在全局静态存储器中。一个程序在内存中通常分为程序段、数据段和堆栈三个部分。程序段里为程序的机器码和只读数据,这个段通常是只读代码,故禁止对程序段进行写操作。数据段放的是程序中的静态数据。存储器主要分为三个部分,一是文本区域,即程序区,用来存储程序指令,只读属性;二是数据区域,它的大小可以由brk系统调用来改变;三是堆栈,其特点是LIFO(lastin,firstout)。当C程序调用函

5、数的时候,首先将参数压入堆栈,然后保存指令寄存器(IP)中的内容作为返回地址(RET),放入堆栈的是地址寄存器(FP),然后把当前的栈指针(SP)拷贝到FP,作为新的基地址,并为本地变量留出一定的空间,把SP减去适当的数值。计算机执行一条指令,并保留指向下一条指令的指针(IP)。当函数或过程被调用的时候,在堆栈中被保留下来的指令指针将被作为返回地址(RET)。执行完成后,RET替换IP,程序接着继续执行本来的流程。(二)缓冲区溢出攻击的类型缓冲区溢出的目的在于扰乱具有某些特权运行程序的功能,这样就可以让攻击者取得程序的控制权,如果该程序具有足够的权

6、限,那么整个主机甚至服务器就被控制了。一般而言,攻击者攻击root程序,然后执行类似“exec(sh)”的执行代码来获得root的shell。但并不总是这样,为了达到这个目的,攻击者必须达到如下两个目标:在程序的地址空间里安排适当的代码通过适当地初始化寄存器和存储器,让程序跳转到安排好的地址空间执行。我们可以根据这两个目标来对缓冲区溢出攻击进行分类。三、缓冲区溢出攻击的防范策略缓冲区溢出攻击的防范是和整个系统的安全性分不开的。如果整个网络系统的安全设计很差,则遭受缓冲区溢出攻击的机会也大大增加。针对缓冲区溢出,我们可以采取多种防范策略。(一)系统管

7、理上的防范策略1、关闭不需要的特权程序由于缓冲区溢出只有在获得更高的特权时才有意义,所以带有特权的Unix下的suid程序和Windows下由系统管理员启动的服务进程都经常是缓冲区溢出攻击的目标。这时候,关闭一些不必要的特权程序就可以降低被攻击的风险。如Solaris下的fdformat是个有缓冲区溢出漏洞的suid程序,因为这个格式化软盘的命令用的较少,最直接的措施是去掉这个程序或者去掉suid位。当有缓冲区溢出漏洞的程序还没有补丁时,就可以用这种方法。2、及时给程序漏洞打补丁这是漏洞出现后最迅速有效的补救措施。大部分的入侵是利用一些已被公布的漏

8、洞达成的,如能及时补上这些漏洞,无疑极大的增强了系统抵抗攻击的能力。这两种措施对管理员来说,代价都不是很高,但能很有效地防

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。