教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

缓冲区溢出攻击的工作原理及防范策略

来源:网络收集 时间:2026-02-24
导读: 病毒黑客 服 务 服务 病毒黑客 操作如下:首先把参数‘c’,’b’,’a’压入堆栈;然后保存指令寄存器 ( I P )中的内容,作为返回地址 ( R E T );第三个放入堆栈的是基址寄存器 ( F P );接着把当前的栈指针 ( S P )拷贝到 F P,作为新的基地址;最后为函数变量

病毒黑客

服 务

服务

病毒黑客

操作如下:首先把参数‘c’,’b’,’a’压入堆栈;然后保存指令寄存器 ( I P )中的内容,作为返回地址 ( R E T );第三个放入堆栈的是基址寄存器 ( F P );接着把当前的栈指针 ( S P )拷贝到 F P,作为新的基地址;最后为函数变量留出一定空间,把 S P减去适当的数值,使其指向局部变量的位置;执行完上述函数调用操作后,程序转到函数中继续执行,此时堆栈中的数据如图 2所示。

栈结果如图 3所示:首先将参数 * s t r压入堆栈,占用 512字节的内存,接着将返回地址将指令寄存器 IP中的返回地址 ret入栈,然后将基址指针 FP入栈,最后分配 16字节的函数局部变量存储空间,随后程序转入 function执行,当执行完 strcpy(buffer,str)指令后,溢出产生了,程序执行的结果是从 buffer开始的 512个字节都将被 *str的内容\'A\'覆盖,包括基址指针 SF P和程序返回地址 r e t,甚至部分 *str的内容。\'A\'的十六进值为 0x41,所以函数的返回地址 ret变成了 0x41414141,这超出了程序的地址空间,引起段错误,而且导致函数执行完毕后不能返回到调用它的主程序。由此可见,缓冲区溢出允许我们改变一个函数的返回地址。通过这种方式,可以改变程序的执行顺序。通过精心

3基于缓冲区溢出攻击的防范策略通过缓冲区溢出攻击原理分析可以看出,底层系统自动保护措施的缺陷和程序员程序设计所犯的错误是攻击赖以发生的根源,所以对于缓冲区溢出攻击的防范应该从弥补底层系统缺陷和完善程序设计两方面入手,要让程序员不犯错误通常是很难的,因此缓冲区溢出攻击的防范措施应该主要依赖于对底层系统缺陷的弥补,譬如对于操作系统的缺陷,可以通过及时地下载安装操作系统补丁程序予以解决。除此之外,还常采用以下几类防范策略[4]: (1)基于探测方法(c a n a r y)的防御。基于探测方法(c a n a r y)的防御主要包括 Immunix使用的 StackGuard方法、OpenBSD

使用的 ProPolice方法和 Microsoft的/GS选项方法。 StackGuard方法是通过修改 C编译器(g c c),以便将一个“探测值”插入到返回地址 r e t的前面,在任何函数返回之前,它执行检查以确保探测值没有改变。如果攻击者改写返回地址,探测仪的值就会改变,系统内就会发出警告并相应地中止程序的执行。这是一种行之有效的方法,不过这种方法无法防止缓冲区溢出改写其他值(攻击者仍然可以利用这些值来攻击系统)。人们也曾研究扩展这种方法来保护其他值(比如堆上的值)。 P r o P o l i c e方法又称为 s s p,是 StackGuard的方法的一种变化形式。像 StackGuard一样,ssp使用一个修改过的编译器在函数调用中插入

图 2堆栈工作原理示意图

设计,黑客可以利用覆盖缓冲区数据的方式将病毒、木马程序或者入侵程序代码殖入被攻击的计算机,并更改返回地址值以指向它们已殖入的恶意代码,对系统发起攻击,获取系统的控制权。溢出是病毒编写者和特洛伊木马编写者偏爱使用的一种攻击方法。攻击者或者病毒善于在系统当中发现容易产生缓冲区溢出之处,运行特别程序,获得优先级,指示计算机破坏文件,改变数据,泄露敏感信息,产生后门访问点,感染或者攻击其他计算机。

函数执行完毕后,执行出栈操作,其中最主要的是将 r e t送到 I P中[3],正常执行此操作会使程序返回到函数调用指令的下一条指令,继续程序的正常执行,不会产生缓冲区的溢出,那么什么情况下会产生缓冲区的溢出呢?让我们来分析一下面的程序。Buffer_overflow.c void function(char *str){ char buffer[16]; strcpy(buffer,str);} void main(){ char large_str[512]; int i; for( i= 0; i< 512; i++) large_str[i]=\'A\'; function(large_str);}

在程序 Buffer_overflow.c执行过程中,当调用函数 function时,函数将字符串 *str不经过边界检查,直接拷贝到内存区域 buffer[16]。此时堆图 3堆栈溢出原理示意图

一个探测仪以检测堆栈溢出。然而,

84

算机安全 2008.3

病毒黑客

服 务

…… 此处隐藏:60字,全部文档内容请下载后查看。喜欢就下载吧 ……
缓冲区溢出攻击的工作原理及防范策略.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/52083.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)