毕业论文-软件漏洞分析与利用的研究.doc
《毕业论文-软件漏洞分析与利用的研究.doc》由会员分享,可在线阅读,更多相关《毕业论文-软件漏洞分析与利用的研究.doc(68页珍藏版)》请在三一文库上搜索。
1、软件漏洞分析与利用的研究摘 要现如今,网络市场上的软件琳琅满目,程序员用自己的程序开发出自己的软件,在软件市场上开拓出自己的一片天空,开发了满足不同用户、不同需求的各种软件,实现了各种不同的功能,方便了人们的生活,解决了生活中遇到的难题,让软件的自动化代替人工的繁琐,不仅省时,而且省力,为人类的生产、生活的发展奠定了坚实的基础。软件的设计是程序员的心血,但是人类的思维是有限的,时代的发展是无限的,新事物的发展更是无限的,软件就会暴露出不同的漏洞。黑客们每天精心地进行漏洞的挖掘与分析,再对漏洞进行处理以及漏洞利用,就能够远程的攻击目标主机,甚至于拿到目标主机的管理员权限,随意篡改目标主机的数据,
2、造成目标主机的数据丢失或操作的错误。从而给目标主机的操作人员造成巨大的数据丢失以及经济损失。本设计采用Metasploit软件结合Ruby语言进行主要的攻击工具开发,使用IDA pro advanced进行软件漏洞反编译,同时运用OllDbg进行动态调试分析。论文主要分为两大部分:一个是软件的漏洞分析部分,另一个是软件漏洞利用部分。漏洞分析部分主要实现:对缓冲区溢出的栈溢出原理进行分析,针对通用的软件漏洞,进行通用合理化的漏洞分析;软件漏洞利用部分主要利用两个攻击实例,第一个是针对ms12_020漏洞利用,成功入侵主机,对主机进行破坏性的蓝屏攻击。第二个是针对ms08_067漏洞利用,在自由网
3、络中,成功攻击带有此漏洞的目标主机,查看主机的IP,查看主机的文件目录,修改文件名称,在目标主机上添加用户,并进一步提升至管理员权限,开启后门服务,登陆远程目标主机桌面等。真正成功实现了漏洞的利用过程,模拟黑客攻击的全过程。关键词:漏洞分析 漏洞利用 提升权限 文件读取 远程登陆桌面The Research of both Software Vulnerability Analysis and ExploitsABSTRACT Nowadays, there are all sorts of softwares on the network market.Programmers use its
4、 own procedures to develop his own software,to develop their own piece of the sky in the software market,to meet the different users, different needs of various software development, to achieve a variety of different functions, convenience to peoples life,to solve the problems encountered during lif
5、e, make automated software to replace manual tape, not only save time, but also saving strength, laid a solid foundation for the development of both the humans production and the humans life.The software design is the programmer effort.But the human mind is limited, the development of the times is i
6、nfinite, the development of new things are infinite,The software will expose different vulnerability.Carefully mining and analyzing the loopholes by the hackers , loopholes can be processed and exploited, hackers can attack the target host without administrator permissions, even get the administrati
7、on of the target host,tamper the target host data, resulting in the target host data loss or error.This may result in huge data loss and economic loss to the target host operator.This procedure using Metasploit software combined with Ruby language to development the attack module , use the IDA Pro a
8、dvanced software to decompile software vulnerabilities, while use of OllDbg software to dynamic debugging analysis. The design is divided into two parts: one is a part of analysis software vulnerabilities, the other is the part exploit the software vulnerabilities.Part of the vulnerability analysis:
9、 stack overflow the buffer overflow is analyzed, based on general analysis software vulnerabilities, general rational loopholes; software vulnerability exploits mainly use two attack instances, the first is for the ms12_020 exploit, successful invasion of host, destructive attacks on the host screen
10、. The second is for the ms08_067 exploit: in the free network, a successful attack with the vulnerability of the target host, the host IP, view the host file directory, change the file name, add a user in the target host, and further increase to administrator privileges, open the back door service,
11、landing on the target host, remote desktop. The successful implementation of the process of real vulnerability, whole process simulation of hacker attack.Key Words: Vulnerability Analysis Exploit Elevated PermissionsFile Read Remote Desktop目 录第一章 绪论11.1 软件漏洞的概述11.2 软件漏洞的挖掘技术11.3 软件漏洞的分析原理21.4 漏洞的利用方
12、法21.5 本课题研究的目的与意义21.6 本文的组织和结构3第二章 渗透测试与安全漏洞42.1 渗透测试概述42.1.1 渗透测试的起源42.1.2 渗透测试的概念与分类42.1.3 渗透测试的方法体系标准52.1.4 PTES渗透测试过程环节62.2 安全漏洞概述72.2.1 安全漏洞生命周期72.2.2 安全漏洞披露方式82.2.3 安全漏洞公共资源库82.3 本章小结9第三章 软件漏洞栈溢出原理分析103.1 二进制文件概述103.1.1 PE文件格式103.1.2 虚拟内存113.1.3 PE文件与虚拟内存之间的映射123.2 系统栈的工作原理143.2.1 进程的内存143.2.2
13、 栈和系统栈153.2.3 函数的调用过程163.2.4 寄存器与函数栈帧193.2.5 函数调用约定与相关指令203.2.6 利用OD查看PE文件装载进入内存的效果233.2.6 invoke 指令分解243.3 shellcode的开发243.4 缓冲区溢出实例解析303.5 本章小结32第四章 利用Metasploit软件和Ruby语言实现漏洞利用334.1 Metasploit软件介绍334.1.1 Metasploit体系框架334.1.2 Metasploit体系内容344.2 Ruby语言介绍354.2.1 Ruby语言发展史354.2.2 Ruby语言的特点354.3 Meta
14、sploit与Ruby攻击语言结合进行漏洞利用354.4 本章小结36第五章 ms12_020漏洞利用实例375.1 漏洞利用环境的软硬件介绍375.2 ms12_020漏洞分析实例375.2.1 ms12_020 漏洞概述375.2.2 ms12_020 漏洞源代码结构解析385.3 ms12_020漏洞实例过程405.4 本章小结43第六章 ms08_067漏洞利用实例446.1 漏洞利用环境的软硬件介绍446.2 ms08_067漏洞分析实例446.2.1 ms08_067漏洞概述446.2.2 ms08_067漏洞源代码结构解析456.3 ms08_067漏洞实例过程486.4 本章小
15、结56第七章 总结与展望577.1 本文总结577.2 不足与展望58参考文献59致 谢60天津理工大学2014届本科毕业论文第一章 绪论1.1 软件漏洞的概述当前时代,软件开发工业的迅猛发展,软件的生产规模的不断扩大,其内部编辑的逻辑结构也将越来越具体化。虽然这样,不论从理论的角度上看,还是从功能的角度上看,人类逻辑思维的缺陷都会随着新事物的产生而暴露出来,从而,没有人能够设计出完美无缺的软件。因此,软件的漏洞就暴露出来了。在市面上各种的软件的逻辑缺陷中,有一部分只能获取很小权限的功能,而有一部分能够引起非常严重的后果。例如,网站页面后台设置中,存在用户输入数据限制方面的缺陷,那么可能会出现
16、XSS攻击和SOL注入攻击,服务器在解析数据包的时候,当解析出非同一般的数据格式,而处理不当时,就会被黑客远程控制,读取隐私数据1。一般的,我们将软件漏洞分成大概的两个类别:1. 功能上的逻辑缺陷漏洞:破坏软件常规的执行操作,例如,执行过程的跳转、图像查看的错误等2。2. 安全上的逻辑缺陷漏洞:正常状态下不会影响软件的正常功能,但是被黑客攻击之后,将会造成溢出之后的恶意代码的执行。普遍的软件漏洞一句话木马入侵网站漏洞、缓冲区溢出漏洞、SQL注入漏洞、网站中的跨站脚本漏洞、和暴库漏洞等1。1.2 软件漏洞的挖掘技术安全问题的漏洞不会对软件的正常执行操作有异常的侵入,因此,测试工程师的在进行功能性
17、测试时,普通的测试,是不容易被发现的,站在正在进行正常办公的使用者的角度上看,也很难会发现,因此也不会体验到被入侵的感觉。对于很多高危漏洞,漏洞的价值很高,例如,数据库数据泄露、计算机被非法控制等,所以对于那些技术超高,有充足精力和时间的黑客们,就在不停地寻找软件中的未知漏洞,他们精通二进制汇编语言和操作系统底层调用的原理,他们往往能够根据出人意料的思考方式,捕捉到程序员思维的缺陷3。不是整体做攻击测试的人都是“黑客”。大规模软件开发公司也会特别招一些专门测试安全的人来测试攻击自己产品软件中的漏洞问题,即攻击测试,专门做这些测试工作的团队人员被称作“老虎队”。从测试技术的问题上看,漏洞挖掘被当
18、做是特殊的高级的测试技术。在学术领域,更加通用的方式是静态分析法,来侦查源代码中容易出现的功能性漏洞;而在工程领域,不管是测试者还是破坏者,通常使用的手段是Fuzz测试技术,本质上,是一种特殊的“灰”盒测试1。1.3 软件漏洞的分析原理在fuzz功能性测试的过程中,侦查出软件中一种十分特殊的破坏操作时,可以透过厂商发出实用的漏洞基本的过程描述,黑客们利用一定的漏洞分析能力,来对漏洞进行逆向分析,通常情况,需要对程序进行逆向分析行成二进制级别的程序。在漏洞分析的过程中,需要尽力追踪到POC部分的代码,即可实现达到漏洞爆发的先决条件。这时,可以利用工具来详细的观察漏洞分析过程,或者借助特殊工具更快
19、捷地查找到漏洞的爆发之处的出发点1。当POC没有被发现的时候,必须依靠深入地理解与研究厂商对漏洞的“简单的叙述”。使用“补丁比较器”是一个相对有用的方法。开始时,需要进行可执行文件在特定的被修改之前和之后的位置数值比较,然后使用特殊的破解的“比较工具”重点进行软件的逆向分析的过程。因此,软件的分析原理问题需要很高能力的调试功能技术和逆向分析技术,还有不同的环境下所需要使用的漏洞利用的方式与方法,过程中更依赖的是调试的作用,不断积累经验,并没有统一的测试方法。1.4 漏洞的利用方法缓冲区溢出漏洞的利用技术始源于1980年左右。而这种技术普遍通用的时期,是在Smashing The Stack F
20、or Fun And Profit的公布发表之后1。漏洞利用是针对漏洞分析进行的下一步操作,比较隐蔽的漏洞利用方法是内核的漏洞利用,其中也有两种不同的方法:1. 篡改内核内存数据:这种方法并不推荐,因为很多重要的内核内存数据都是不可直接被改写的,如果内存所在页属性是只读文件,CR0寄存器的WP位设置为1,是不能直接写入内存的寄存器中,所以如果需要改变内存中的值,需要采用第二种方法,在Ring 0 Shellcode中,首先将CR0 寄存器的WP位置为0,即禁用内存保护,篡改完后,再恢复WP位即可1。2. 执行Ring0 Shellcode:其中执行者主体是Ring0程序,不能是Ring3程序,
21、其权限不够资格,我们知道内核中,Ring0包含许多API函数,其地址大多保存在一些表中,并且这些表同样由内核导出1。想要达到的效果是修改这些表中,将Shellcode 存放地址改为内核API函数地址,接下来,继续调用本进程,不仅如此,一定要选择那些相对较“不常用”的函数作为内核API函数,最好是那些不常被访问的函数。别的进程无法访问到我们的Shellcode ,因为它保存在自己进程的Ring3内存地址中,一旦别的进程也需要调用这个API函数时,最后致使内存访问错误甚至内核崩溃,对于系统,是相当危险的1。1.5 本课题研究的目的与意义目前软件的安全性是与任何一个操作者的敏感数据、信息的安全息息相
22、关的。网络中的各种漏洞被黑客利用后危害是相当大的,甚至于以一台主机去感染成千上万台主机的方式进行漏洞利用。所以软件漏洞的分析与利用是相当有必要的。研究本课题,主要是针对目前能够执行远程控制的漏洞进行深入的分析与理解,将漏洞利用的过程和原理进行重现,并详细解析攻击模块的过程原理以及实例过程。通过案例实况重现,对软件漏洞中缓冲区溢出和动态调试基本方法进行深一步的理解。漏洞的利用主要能够利用工具实现在目标主机上添加用户,并进一步提升至管理员权限,能够对目标主机的文件进行查看,能够修改指定目录下的文件名称,开启后门服务,登陆远程目标主机桌面等。1.6 本文的组织和结构第一章:总体对软件漏洞进行简单的介
23、绍,对软件漏洞挖掘技术、软件漏洞分析技术、以及软件漏洞利用技术进行初步简单的介绍,并针对研究的课题出发点和目的进行总结和归纳。第二章:对渗透测试与安全漏洞做了详细的介绍,从渗透测试的起源、概念、分类、执行标准和具体流程进行了详细的阐述,对安全漏洞的周期,披露方式和公共资源库进行了简要的阐述。第三章:对软件漏洞中栈溢出原理进行详细分析,其中包括漏洞分析中二进制文件的介绍,PE文件的组成结构,PE文件和虚拟内存之间的对应关系,以及系统栈的工作原理,内存的调用方式,栈与系统栈的关系,函数调用的具体过程,寄存器与函数栈帧的关系,函数调用约定与相关指令等,最后一节用实际的缓冲区溢出的小的实例进行栈溢出原
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 软件 漏洞 分析 利用 研究
链接地址:https://www.31doc.com/p-3941422.html