基于缓冲区溢出的攻击与防御技术研究
发布时间:2022-01-16 18:36
缓冲区溢出是一种非常普遍并且危险的漏洞,在各种操作系统和应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的情况可以利用它执行非授权指令,甚至可以取得系统特权,进而执行各种非法操作。要实现缓冲区溢出攻击,一般需要完成两个任务,一是在漏洞程序的内存空间中安排攻击代码;二是通过适当的溢出操作使程序跳转到预先安排好的地址空间执行指令。本文重点研究Heap Spray,它是一种代码植入技术,可以帮助攻击者实现稳定布局shellcode的目的。首先,简单介绍了缓冲区溢出的相关知识,对缓冲区溢出攻击原理作出总结,这为研究Heap Spray作了良好的铺垫。详细分析了 Heap Spray的实现原理,结合漏洞实例分析加深了对该技术的理解,接着针对现有的两个防御机制DEP和Nozzle提出了一个Heap Spray攻击模型HSM,并对模型中用到的shellcode编码技术提出了自己的改进策略。其次,研究Heap Spray技术的防御策略,不仅根据Heap Spray自身的特点对防御技术进行了分析,还从防御缓冲区溢出的角度作出归纳研究。通过对HSM模型的分析...
【文章来源】:沈阳理工大学辽宁省
【文章页数】:70 页
【学位级别】:硕士
【部分图文】:
图1.1?2018年4月至2018年9月漏洞新增数量统计图??’
帧的底部)的内容入栈,并把ESP中的内容复制给EBP,作为新的基地址[25];然??后把ESP减去20,为数组sta开辟内存空间。如果输入内容为字符串“Hello?world!”,??那么执行完gets(sta)之后,栈中的内容如图2.2所示。??内存低端栈顶部?内存低端栈底部??Hello?world!\0??^?-??sta?EBP?Ret??&sta??图2.2执行gets(sta)后栈的状态??Fig.2.2?The?state?of?the?stack?after?executing?gets(sta)??接下来执行for循环,做字符串打印操作,最后从main函数返回。首先要把??ESP的值增加20来回收sta数组占用的内存空间,这时ESP指向之前保存的EBP??值,程序会把这个值弹出,并赋给EBP,使它重新指向main函数调用者的栈底。??紧接着弹出的是位于栈顶的返回地址Ret,将其赋值给EIP,CPU就会接着去执行??EIP指向的命令[26]。??这是程序正常执行下的一种状态,那么当输入的数据超过20个字节的长度??时,栈的状态又会是怎样的呢?例如输入.??Helloworld!AAAAAAAA……,这次??执行完gets(name)之后
帧的底部)的内容入栈,并把ESP中的内容复制给EBP,作为新的基地址[25];然??后把ESP减去20,为数组sta开辟内存空间。如果输入内容为字符串“Hello?world!”,??那么执行完gets(sta)之后,栈中的内容如图2.2所示。??内存低端栈顶部?内存低端栈底部??Hello?world!\0??^?-??sta?EBP?Ret??&sta??图2.2执行gets(sta)后栈的状态??Fig.2.2?The?state?of?the?stack?after?executing?gets(sta)??接下来执行for循环,做字符串打印操作,最后从main函数返回。首先要把??ESP的值增加20来回收sta数组占用的内存空间,这时ESP指向之前保存的EBP??值,程序会把这个值弹出,并赋给EBP,使它重新指向main函数调用者的栈底。??紧接着弹出的是位于栈顶的返回地址Ret,将其赋值给EIP,CPU就会接着去执行??EIP指向的命令[26]。??这是程序正常执行下的一种状态,那么当输入的数据超过20个字节的长度??时,栈的状态又会是怎样的呢?例如输入.??Helloworld!AAAAAAAA……,这次??执行完gets(name)之后
【参考文献】:
期刊论文
[1]信息安全、网络安全与国家安全间的关系与构成探讨[J]. 张少华. 网络安全技术与应用. 2018(08)
[2]浅析DEP安全保护技术[J]. 郭建伟. 网络安全和信息化. 2018(08)
[3]基于源码与二进制文件的漏洞挖掘技术[J]. 傅涛. 软件. 2018(07)
[4]漏洞库现状分析及质量评价[J]. 杨刚. 电信网技术. 2018(02)
[5]Windows栈缓冲区溢出攻击原理及其防范[J]. 李云飞,陈洪相. 软件工程. 2017(09)
[6]GCC编译器中的堆栈保护技术概述[J]. 曹耀彬,王亚刚. 信息技术. 2017(07)
[7]基于遗传算法的缓冲区溢出漏洞挖掘技术[J]. 王春东,王少华,邱晓华. 南开大学学报(自然科学版). 2017(02)
[8]美国网络战的历史及其对现代网络作战组织和决策的影响[J]. 夏聃,Omry Haizler. 中国信息安全. 2017(04)
[9]Windows Shellcode自动构建方法研究[J]. 朱帅,罗森林,柯懂湘. 信息网络安全. 2017(04)
[10]基于任意函数地址的ASLR绕过技术研究[J]. 徐鑫,张松年,胡建伟. 信息网络安全. 2016(07)
博士论文
[1]代码复用攻击与检测技术研究[D]. 袁平海.南京大学 2017
[2]面向软件安全的二进制代码逆向分析关键技术研究[D]. 邱景.哈尔滨工业大学 2015
硕士论文
[1]基于API调用行为特征的ROP检测机制[D]. 吕留东.西北大学 2017
[2]网页恶意代码检测技术研究与实现[D]. 王大浩.北京邮电大学 2017
[3]基于Windows平台的地址空间布局随机化技术的研究[D]. 王睿宸.北京邮电大学 2016
[4]基于漏洞分析的软件综合检测方法研究[D]. 王宏阳.大连海事大学 2016
[5]基于面向方面技术的软件检查点及恢复技术研究[D]. 张苏超.电子科技大学 2015
[6]基于数据不可信的缓冲区溢出攻击检测技术研究[D]. 许来光.东北大学 2014
[7]基于Active SVM算法的恶意网页检测技术研究[D]. 施光莹.南京理工大学 2014
[8]缓冲区溢出漏洞挖掘和防护技术研究[D]. 邱晓华.天津理工大学 2014
[9]针对ROP攻击的程序安全性检测与防御技术的研究[D]. 黄志军.南京大学 2013
[10]Windows内核漏洞检测与利用关键技术研究[D]. 倪涛.解放军信息工程大学 2013
本文编号:3593212
【文章来源】:沈阳理工大学辽宁省
【文章页数】:70 页
【学位级别】:硕士
【部分图文】:
图1.1?2018年4月至2018年9月漏洞新增数量统计图??’
帧的底部)的内容入栈,并把ESP中的内容复制给EBP,作为新的基地址[25];然??后把ESP减去20,为数组sta开辟内存空间。如果输入内容为字符串“Hello?world!”,??那么执行完gets(sta)之后,栈中的内容如图2.2所示。??内存低端栈顶部?内存低端栈底部??Hello?world!\0??^?-??sta?EBP?Ret??&sta??图2.2执行gets(sta)后栈的状态??Fig.2.2?The?state?of?the?stack?after?executing?gets(sta)??接下来执行for循环,做字符串打印操作,最后从main函数返回。首先要把??ESP的值增加20来回收sta数组占用的内存空间,这时ESP指向之前保存的EBP??值,程序会把这个值弹出,并赋给EBP,使它重新指向main函数调用者的栈底。??紧接着弹出的是位于栈顶的返回地址Ret,将其赋值给EIP,CPU就会接着去执行??EIP指向的命令[26]。??这是程序正常执行下的一种状态,那么当输入的数据超过20个字节的长度??时,栈的状态又会是怎样的呢?例如输入.??Helloworld!AAAAAAAA……,这次??执行完gets(name)之后
帧的底部)的内容入栈,并把ESP中的内容复制给EBP,作为新的基地址[25];然??后把ESP减去20,为数组sta开辟内存空间。如果输入内容为字符串“Hello?world!”,??那么执行完gets(sta)之后,栈中的内容如图2.2所示。??内存低端栈顶部?内存低端栈底部??Hello?world!\0??^?-??sta?EBP?Ret??&sta??图2.2执行gets(sta)后栈的状态??Fig.2.2?The?state?of?the?stack?after?executing?gets(sta)??接下来执行for循环,做字符串打印操作,最后从main函数返回。首先要把??ESP的值增加20来回收sta数组占用的内存空间,这时ESP指向之前保存的EBP??值,程序会把这个值弹出,并赋给EBP,使它重新指向main函数调用者的栈底。??紧接着弹出的是位于栈顶的返回地址Ret,将其赋值给EIP,CPU就会接着去执行??EIP指向的命令[26]。??这是程序正常执行下的一种状态,那么当输入的数据超过20个字节的长度??时,栈的状态又会是怎样的呢?例如输入.??Helloworld!AAAAAAAA……,这次??执行完gets(name)之后
【参考文献】:
期刊论文
[1]信息安全、网络安全与国家安全间的关系与构成探讨[J]. 张少华. 网络安全技术与应用. 2018(08)
[2]浅析DEP安全保护技术[J]. 郭建伟. 网络安全和信息化. 2018(08)
[3]基于源码与二进制文件的漏洞挖掘技术[J]. 傅涛. 软件. 2018(07)
[4]漏洞库现状分析及质量评价[J]. 杨刚. 电信网技术. 2018(02)
[5]Windows栈缓冲区溢出攻击原理及其防范[J]. 李云飞,陈洪相. 软件工程. 2017(09)
[6]GCC编译器中的堆栈保护技术概述[J]. 曹耀彬,王亚刚. 信息技术. 2017(07)
[7]基于遗传算法的缓冲区溢出漏洞挖掘技术[J]. 王春东,王少华,邱晓华. 南开大学学报(自然科学版). 2017(02)
[8]美国网络战的历史及其对现代网络作战组织和决策的影响[J]. 夏聃,Omry Haizler. 中国信息安全. 2017(04)
[9]Windows Shellcode自动构建方法研究[J]. 朱帅,罗森林,柯懂湘. 信息网络安全. 2017(04)
[10]基于任意函数地址的ASLR绕过技术研究[J]. 徐鑫,张松年,胡建伟. 信息网络安全. 2016(07)
博士论文
[1]代码复用攻击与检测技术研究[D]. 袁平海.南京大学 2017
[2]面向软件安全的二进制代码逆向分析关键技术研究[D]. 邱景.哈尔滨工业大学 2015
硕士论文
[1]基于API调用行为特征的ROP检测机制[D]. 吕留东.西北大学 2017
[2]网页恶意代码检测技术研究与实现[D]. 王大浩.北京邮电大学 2017
[3]基于Windows平台的地址空间布局随机化技术的研究[D]. 王睿宸.北京邮电大学 2016
[4]基于漏洞分析的软件综合检测方法研究[D]. 王宏阳.大连海事大学 2016
[5]基于面向方面技术的软件检查点及恢复技术研究[D]. 张苏超.电子科技大学 2015
[6]基于数据不可信的缓冲区溢出攻击检测技术研究[D]. 许来光.东北大学 2014
[7]基于Active SVM算法的恶意网页检测技术研究[D]. 施光莹.南京理工大学 2014
[8]缓冲区溢出漏洞挖掘和防护技术研究[D]. 邱晓华.天津理工大学 2014
[9]针对ROP攻击的程序安全性检测与防御技术的研究[D]. 黄志军.南京大学 2013
[10]Windows内核漏洞检测与利用关键技术研究[D]. 倪涛.解放军信息工程大学 2013
本文编号:3593212
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3593212.html