
基于逆向分析的缓冲区溢出漏洞挖掘技术.pdf
86页上海交通大学 硕士学位论文 基于逆向分析的缓冲区溢出漏洞挖掘技术 姓名:罗鸿彦 申请学位级别:硕士 专业:计算机应用技术 指导教师:李小勇 20080601 上海交通大学硕士论文 - I- 基于逆向分析的缓冲区溢出漏洞挖掘技术基于逆向分析的缓冲区溢出漏洞挖掘技术 摘摘 要要 随着信息与网络技术的发展, 以及这些技术在军事领域的不断渗 透, 计算机网络已成为连接未来信息化战场的枢纽 对计算机的攻击, 能够获得大量宝贵的情报以及达到其它武器系统所不能及的效果 因 此对以计算机为基础的网络攻击与防护就自然成为军事领域密切关 注的问题 在过去的十年中,以缓冲区溢出为代表的安全漏洞是最为常见 的,也是主要威胁计算机系统安全的攻击手段更为严重的是,缓冲 区溢出漏洞占了远程网络攻击的绝大多数 由于这类攻击使任何人都 有可能取得主机的控制权, 所以缓冲区溢出攻击代表了一类极其严重 的安全威胁从 Windows 系统到 Linux 系统,从 Internet Explorer 到 Sendmail,无论是系统软件还是应用软件都不乏有缓冲区溢出漏洞的 存在在对信息系统安全所发动的攻击中,针对缓冲区漏洞进行的攻 击已经成为一种最重要的攻击方式之一。
本文对缓冲区溢出的原理作了详细地介绍, 并在此基础上介绍了 利用缓冲区溢出执行攻击代码的常用方法和 ShellCode 编程技术然 后对 CSRSS.EXE 的缓冲区溢出漏洞进行了全面的分析,对利用缓冲 区溢出做手段的权限提升做了详细的分析 最后, 本文还对基于二进制代码逆向分析的缓冲区溢出漏洞的挖 掘技术进行了研究,基于 Fuzzing 并结合逆向分析技术提出一种缓冲 区溢出漏洞的挖掘模型 关键词:信息安全,缓冲区溢出,ShellCode,逆向分析,漏洞挖掘 上海交通大学硕士论文 - II- Vulnerability Discovering Technique of Buffer Overflow Based On Reverse Analysis ABSTRACT With rapid development of information and network technique,as well as their continuous penetration into military realm,computer network is becoming the hinge of information battle field in the future.Some attacks on computers can obtain valuable intelligence which other weapon systems can never achieve.So,computer network based attack and defense has drawn great attention in military areas. For the past ten years,security vulnerability represented by Buffer Overflow attacks have been the most common and main method of compromising a computing system’s security.More important,Buffer Overflow has been the most frequence of remote network attacking.Many of these attacks have been extremely serious security threat, for they allow the attacker to attain administrator privileges on the attacked systems.From Windows operation system to Linux operation system,from Internet Explorer to Sendmail,whatever operation software and application software both have Buffer Overflow problem. In the attacks at the information system,the method based on Buffer Overflow is one of the most important. This thesis in detail describes the Buffer Overflow,and it makes an introduction of elements of getting use of Buffer Overflow to execute attacking code and the skill of ShellCode programming.Then this article makes a full analysis of the vulnerability in CSRSS.EXE,and more,this paper give a detail analysis of authority promoting by buffer over flow. Finally,this thesis researches the Buffer Overflow vulnerability discovering technology based on binary code reverse analysis,and try to find a model of Buffer Overflow vulnerability discovering based Fuzzing and combinesv reverse technique. KEY WORDS: Information security,Buffer Overflow, ShellCode, Reverse Analysis,Vulnerability Discovering 上海交通大学硕士论文 - II- 上海交通大学上海交通大学 学位论文原创性声明学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究工作所取得的成果。
除文中已经注明引用的内容外,本论 文不包含任何其他个人或集体已经发表或撰写过的作品成果 对本文 的研究做出重要贡献的个人和集体,均已在文中以明确方式标明本 人完全意识到本声明的法律结果由本人承担 学位论文作者签名:罗鸿彦 日期:2009 年 1 月 15 日 上海交通大学硕士论文 - III- 上海交通大学上海交通大学 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定, 同意学校保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查阅和借阅 本人授权上海交通大学可以将本学位论文的 全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫 描等复制手段保存和汇编本学位论文 保密保密□,在 年解密后适用本授权书 本学位论文属于 不保密不保密□√ (请在以上方框内打“√”) 学位论文作者签名:罗鸿彦 指导教师签名:李小勇 日期:2009 年 1 月 15 日 日期:2009 年 1 月 15 日 上海交通大学硕士论文 - 1- 第一章第一章 绪论绪论 1.1 研究背景研究背景 近年来, 缓冲区溢出漏洞的广泛性和破坏性受到国内外信息安全研究领域的 极切关注。
从 1988 年 CERT (计算机紧急响应小组)成立以来,统计到的安全威 胁事件每年以指数增长 缓冲区溢出攻击作为网络攻击一种主要形式占所有系统 攻击总数的 80%以上[1]这种缓冲区溢出漏洞可以发生在不同操作系统、不同应 用程序上 比如, 在 1998 年 Lincoln 实验室用来评估入侵检测的的 5 种远程攻击 中, 有 3 种是基于社会工程学的信任关系, 2 种是缓冲区溢出 而在 1998 年 CERT 的 13 份建议中[1],有 9 份是是与缓冲区溢出有关的,在 1999 年,至少有半数的 建议是和缓冲区溢出有关的在 Bugtraq 的调查中,有 2/3 的被调查者认为缓冲 区溢出漏洞是一个很严重的安全问题 缓冲区溢出漏洞被蠕虫病毒利用造成了很大的危害,如 2001 年 7 月 19 日, CodeRed 蠕虫爆发,造成的损失估计超过 20 亿美元,2001 年 9 月 18 日,Nimda 蠕虫被发现,造成的损失更大,超过 26 亿美元,2002 年 Slapper 蠕虫出现,2003 年 1 月 25 日 Slammer 蠕虫爆发,2004 年 5 月 1 日,“震荡波”被发现,这几个病 毒对网络安全造成的破坏之大是前所未有的。
以上病毒都利用了缓冲区溢出漏 洞,这种攻击技术被称为缓冲区溢出攻击 现在软件的功能越来越强大, 它从开始的严格的技术领域扩展到生活中这种 的许多其他方面,软件在商业和军事上的应用越来越普遍软件的功能复杂性导 致我们无法从编码的角度彻底消除所有的漏洞或缺陷; 软件的可扩展性可导致恶 意代码以不可预料的扩展方式入侵系统;软件的连通性可导致错误的远程利用 目前,大多数的质量评估(QA)组织更多的是关注软件的功能测试,对于理解 和探测软件安全风险只花费了很少的力气夸大了作用的防火墙、病毒扫描工具 和入侵检测工具的使用,也使得软件本身的安全问题被忽略据统计,每千行代 码 (KLOC) 中的漏洞或缺陷数量都在 5~50 个之间 此外, 低级语言 (如 C/C++) 的广泛使用更加剧了这一问题[5] 信息和网络安全技术经过十多年来的发展, 在广度和深度上都有了长足的进 步,其中一个重要的研究趋势就是注重攻防结合,追求动态安全在信息安全技 术的研究上[6],形成了两个完全不同的角度:一是从正面防御的角度考虑,研究 加密、鉴别和认证、授权和访问控制等等;另一个是从反面攻击的角度考虑,研 究漏洞利用、入侵监测、紧急响应、防病毒等。
本文的研究角度侧重于后者 本文就是研究缓冲区溢出漏洞的产生、利用,同时基于二进制可执行程序的 上海交通大学硕士论文 - 2- 逆向分析,研究漏洞的自动挖掘识别通过漏洞挖掘技术,有效地对软件固有的 缓冲区溢出漏洞进行定位、评估此项技术无论对军事,商业都具有重大意义 1.2 缓冲区溢出漏洞及挖掘技术研究现状缓冲区溢出漏洞及挖掘技术研究现状 1996 年 1 月,著名的黑客电子邮件组 Bugtraq 邮递清单的仲裁者 Aleph One 给安全杂志 Phrack Magazine(第四十九期)写了一篇题目为“Smashing The Stack For Fun And Profit”的文章[3]这篇文章清楚地阐述了一种攻击方式— 缓冲区溢 出攻击; 缓冲区溢出漏洞影响的范围之广是软件开发商和计算机安全人员所始料 不及的正可谓“一石激起千层浪”,随之而来的是人们在大量的服务进程和应用 程序中发现了缓冲区溢出漏洞,这些漏洞引起了许多严重的安全性问题;更为严 重的是,缓冲区溢出攻击可以使得一个匿名的 Internet 用户有机会获得一台主机 的部分或全部的控制权然而缓冲区溢出攻击并不是一种新的攻击方式,早在 1988 年,Robert TaPpan Morrisjr 编写的蠕虫病毒就是利用了 fingerd 中的缓冲区 。
