缓冲区溢出攻击的工作原理及防范策略
病毒黑客
服 务
服务
病毒黑客
操作如下:首先把参数‘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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




