为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

缓冲区溢出攻击代码的分析研究

2013-01-19 5页 pdf 331KB 21阅读

用户头像

is_592957

暂无简介

举报
缓冲区溢出攻击代码的分析研究 缓冲区溢出攻击代码的分析研究 邱晓鹏张玉清冯登国 (中国科学院研究生院,信息安全国家重点实验室,北京100039) (中国科学院研究生院国家计算机网络入侵防范中心,北京100039) 摘要缓冲区溢出漏洞是当前互联网中存在的最主要的威胁之一。该文先讨论了缓冲区溢出漏洞的产生原理和一般 的攻击手段,然后分析了利用缓冲区溢出漏洞的攻击代码,给出了攻击代码的主要特征。最后,讨论了如何利用这些特 征,来防范缓冲区溢出攻击的发生。 关键词缓冲区溢出攻击代码 文章编号1002—8331-(2005)18—0134—02文献标识...
缓冲区溢出攻击代码的分析研究
缓冲区溢出攻击代码的研究 邱晓鹏张玉清冯登国 (中国科学院研究生院,信息安全国家重点,北京100039) (中国科学院研究生院国家计算机网络入侵防范中心,北京100039) 摘要缓冲区溢出漏洞是当前互联网中存在的最主要的威胁之一。该文先讨论了缓冲区溢出漏洞的产生原理和一般 的攻击手段,然后分析了利用缓冲区溢出漏洞的攻击代码,给出了攻击代码的主要特征。最后,讨论了如何利用这些特 征,来防范缓冲区溢出攻击的发生。 关键词缓冲区溢出攻击代码 文章编号1002—8331-(2005)18—0134—02文献标识码A 中图分类号‘rP393.08 AnalysisontheExploitsofBufferOverflowVulnerabilities QiuXiaopengZhangYuqingFengDengguo (StateKeyLaboratoryofInformationSecurity,GraduateSchoolofChinese AcademyofSciences.Beijing100039) (NationalComputerNetworkIntrusionProtectionCenter,GSCAS,Beijing100039) Abstract:Bufferoverflowsarethemostseriousthreatenstothecomputersecurity.Inthispaper,theprinciplesandthe attackmethodsoftheoverflowsarediscussed,andthemainfeaturesoftheexploitsaregivenaftertheanalysisonthe exploits.Finally,wediscusshowtousethesefeaturestodefendtheattackstobufferoveriflowvulnerabilities. Keywords:bufferoverflOW,exploit 1 引言 当前,缓冲区溢出漏洞是互联网和计算机系统中最普遍也 是威胁最大的安全漏洞。根据统计,2003年中,CVE和CVE候 选漏洞(CAN)中,错误处理缓冲区类的漏洞占46%,位于各种 类型漏洞之首【1]。而SANS选出的威胁最大的20个漏洞中,有 10个是由于缓冲区溢出所造成的[21。 利用缓冲区溢出漏洞进行攻击,所要做的第一步工作是写 出利用漏洞的攻击代码,即exploit程序t3]。在此基础上,经过适 当的变换,就可以生成更富有攻击性和破坏性的蠕虫、木马等 其它的恶意代码。比如,曾经造成巨大破坏的冲击波蠕虫、震荡 波蠕虫,都是通过对利用相应漏洞的攻击代码进行改进而生成 的。 有鉴于此,对于攻击代码的深入分析就显得十分重要。通 过对它的分析,可以得出攻击代码以及蠕虫病毒等的代码特 征,有利于更准确、更有效地发现它们。这些代码特征可以用在 入侵检测系统中,作为判断攻击是否发生的依据。该文将首先 讨论缓冲区溢出漏洞的原理和利用方法,然后分析利用缓冲区 溢出漏洞的攻击代码,并给出其相关特征。同时还讨论了如何 将这些特征用于入侵检测系统,以降低系统的误报率和漏报 率。 冲区溢出嘲。如果溢出发生在堆栈中,则可能会改写函数的返回 地址,从而使程序转到内存中的其它地址继续执行。如果攻击 者控制了函数的返回地址,使程序转到攻击者所构造的指令中 继续执行的话,攻击者就可以控制系统或者甚至获得管理员 (root)权限。 堆栈是用来存储程序运行时所用到的动态变量的内存区 域,所存储的内容包括:函数的参数、函数的返回地址、局部变 量等。由于其为LIFO,即后进先出的结构,后进入堆栈的数据 如果过大,就可能会覆盖掉在它之前进入堆栈的数据。如图1 所示,如果本地变量LocalVariables过大,则可能会覆盖Base Pointer和ReturnAddress,而函数的返回地址ReturnAddress 指向函数返回后下一条指令的位置。通过控制ReturnAd— dress,可以使程序转入攻击者所提供的代码继续运行。 Arguments Retm-aAddress BasePointer LocalVats 栈底 』 栈顶 图1堆栈结构 2缓冲区溢出漏洞 在许多利用C语言编写的软件中,由于没有恰当地校验 C语言中,存在多个用来向内存写入数据的函数,其中的 写入缓冲区数据的大小,可能导致写入的数据过大而造成的缓 一些如果不正当使用,会非常危险。比如,strcpy()、s仃cat()、gets 基金项目:北京市科技项目(编号:H020120090530)的支持 作者简介:邱晓鹏(1979一),男,硕士研究生,主要研究方向:网络安全,系统安全。张玉清(1966一),男,副研究员,硕士生导师,主要研究方向:网络 安全。冯登国(1965一),男,研究员,博士生导师,主要研究方向:信息安全。 1342005.18计算机与应用 端 端高●lllllI低 存 存 内 内 万方数据 ()、fgets()等,它们在不进行检验的情况下,直接将数据写入内 存【4]。如图2所示,如果将数据写入LocalVariables中,而数据 的大小超过所开辟的缓冲区,则会发生溢出,造成写入的数据 覆盖函数的返回地址RA。 图2造成缓冲区溢出的函数操作 3攻击代码的结构分析 攻击者对系统发起攻击,其目的是要获取系统权限。利用 缓冲区溢出漏洞时,通常的做法是将函数的返回地址指向一段 构造好的代码,通常称其为shellcode,运行shellcode后,就可 以得到系统的一个shell。如果存在漏洞的程序是以root权限 运行的,则攻击者将得到具有root权限的shell,从而完全控制 受害者的系统。 一段典型的攻击代码如图3所示,RA覆盖存在漏洞的函 数的返回地址,将程序转到shellcode处继续执行。为了提高命 中率,在shellcode之前通常会添加一段没有用途的空指令,如 IA32指令集中的NOP指令[51。这一段指令通常被成为sledge。 这样,即使RA指向了shellcode之前,也不会影响shellcode的 执行。下面将分析这三个部分的特征,并给出利用它们检测入 侵攻击的方法。 程序跳转 / ./步—\\ IⅣ加日删加咖r(sledge)SiaellcodeRARARARA 图3一段典型的缓冲区溢出攻击代码 3.1 shellcode分析 shellcode是完成攻击行为的主要执行部分,功能是为攻击 者提供系统的一个shell。为了完成其功能,shellcode中会含有 系统调用。例如,利用exec()系统请求,执行“/bin/sh”,以获得 系统的一个shell;利用setuid,达到提升权限的目的。表1给出 了经常包含在shellcode中的系统调用。 表1 shellcode中包含的系统调用嘲 完成功能 系统调用 读文件 写文件 创建进程 执行程序 访问网络 改变文件属性 改变权限限制 open() open(),create(),link(),unlink() fork() excc(),system(),pepen() socket(),connect(),send() chmod()。ehown() setuid(),setgid() 如果在HTrP、F1甲等的数据包中,发现了上述系统调用,或 者发现了如“/bin/sh”的字符串,则很可能是发生了攻击行为。 3.2 sledge分析 由于攻击者不能够准确地估计出shelleode在堆栈中的位 置,所以在攻击代码中,shellcode之前总是会有一段没有实际 作用,只是用来占位的指令,通常称之为sledge。一种最为简单 的构成sledge的方法是全部用“NOP”指令填充,在IntelIA32 体系结构中NOP的机器码为0x90。 现有的入侵检测系统几乎都可以检测出NOP序列,但是 在IA32中,有50多种其它的单字节指令可以替代NOP。如用 于调整计算结果的AAA、AAS,用于操作标志位的CLC、CLD 等。这些指令均为单字节长,而且不会对后面shellcode的运行 产生影响。表2列出了一些具有这种特征的指令。 表2可代替NOP的单字节指令嘲 汇编指令 机器码 AAA AAS CM CLD CU CMC Ox37 0x3f ox{B 0fie 0xfa Oxf5 对于IA32体系结构,除了利用单字节指令外,也可以采用 多字节指令达到上述目的。只要保证返回地址指向以word(4 字节)对齐的位置。这样有更多的多字节指令可以用来替代 NOP,从而可以更容易地绕过入侵检测系统的检测。 根据对sledge的分析,可以得出sledge的一个重要特征是 sledge(包括后面紧接的shelleode)含有相当长的合法指令,而 这对于一般的网络中的数据包来说,是非常不寻常的。统计得 出,一般的攻击代码中,为了完成攻击目的,含有有效指令的长 度为几百个字节长。而一般的网络数据,如H1rrP服务请求或 FrP服务请求的数据包中,能够形成连续的有效指令的可能性 很小。经统计这样的有效指令长度一般不会超过10个字节, 50%以上在5字节以下171。在这种条件下,对于连续的有效指令 长度的检测,就可以成为一个判定攻击是否发生的特征之一。 3.3返回地址的分析 攻击代码中必须存在一段返回地址RA,将程序转到攻击 者指定的位置继续运行。为提高覆盖函数返回地址的成功率, 攻击代码中的RA通常由连续而且重复的地址构成,如图3所 示。这也可以成为判定攻击代码的一个重要特征。 例如在Linux系统中,用户程序执行时,其堆栈从0】【bⅢ跹 向内存的低端增长。所以溢出发生时,指向存在于堆栈中的攻 击代码的返回地址RA的值也是指向堆栈的顶端附近。表3列 出了Linux系统中对部分漏洞攻击代码的返回地址。 表3针对不同漏洞的返回地址 可以看出,返回地址的值,相对于所有可能的取值来说,集 中于一个很小的区域内。这样,如果对于Linux系统来说,有一 段连续的、取值在上表范围内的数据,往往意味着攻击的发生。 对于其它的操作系统,也存在有类似的特征。 3.4攻击代码特征小结 除了上述分析的各个部分的特征以外,攻击代码还含有一 (下转175页) 计算机工程与应用2005.18135 万方数据 查询与重写,但一般的重写文件都不大,可以在用户可忍受的 时间内完成,而有些较大的文件可在夜间生成节省时间。同时, 大量文件重写浪费磁盘空间,以后可借助ASP.NET将查询结 果按SVG格式直接写到页面,由浏览器进行解释。总而言之, 根据测试表明这种借助SVG数据库进行空间信息发布的 可操作性强,具有可行性和实用性。 该模型的研究尚处初期阶段,一个融合各种数据源的数据 仓库正在研究阶段,期望能为SVG数据库提供各种数据源,并 且供用户编辑地图图形数据的工具正在开发与研究之中。 (收稿日期:2004年12月) 参考文献 1_龚健雅.整体GIS的数据组织与处理方法【M】.武汉:武汉测绘科技大 学出版社,1993 2.郭仁忠.空间物体分类及空间物体构造【J】.武汉测绘科技大学学报, 1994;19(1) 3.(美)MarkGraves编著.尹志军等译.XML数据库设计Designing XMLDatabases[M].北京:机械工业出版社,2002:94-151 4.RonaldBourret.XMLandDatabases.http://www.rpbourret.com/xml/ XMLAndDatabases.htm.July2004 5.RonaldBourret.MappingDTDstoDatabases.http://www.xml.com/ pub/a/200I/05/09/dtdtodbs.html,,2001-05 6.郑小平.VisualC#.NET开发实践【M】.北京:人民邮电出版社,2001: 347~351 7.DonBoxeta1.EssentialXML【M】.AddisonWesleyLongman,Inc,2001 8.CharlesFGoldfrab's.XMLHandbook[M].FourthEdition,PearsonEd- UCation.Inc.2002 (上接135页) 个重要的特征是在整个代码中,不能含有“0】【00”。因为攻击代 码往往利用strcpy等不安全的函数所造成漏洞进行攻击,而 “0](00”是一个字符串结束的标志。如果代码中含有0)【00,会使 strcpy认为字符串已经结束,而停止复制,导致攻击代码无法 被完整地复制进缓冲区。 综上所述,攻击代码所具有的特征为: (1)含有exee()、setuid()等系统调用; (2)含有一段用于占位的无用指令,可以为NOP、AAA、 CLC等,同时具有长达几百字节的连续可执行指令; (3)含有一段位置上连续,数值相同的值来存储所要跳转 的地址,且其值的范围很小; (4)不能含有“0x00”。 4防范缓冲区溢出攻击的手段 防范缓冲区溢出攻击,最理想的形式应当是在攻击代码被 执行之前,将其检测出来,并且拒绝其执行。因为如果攻击代码 已经得到执行,则意味着已经造成破坏,并且攻击者可能已经 获取了系统的控制权,此时再进行补救为时已晚。如果是对于 网络蠕虫等利用缓冲区溢出漏洞来进行攻击的恶意代码,由于 其传播速度极快,更需要在最短的时间内将其检测出来,并做 出反应,这样才可以避免造成大的损失。 为了完成防范缓冲区溢出攻击的目标,入侵检测系统是一 个不可或缺的工具。但是在利用它的时候,需要解决降低误报 率和漏报率的问题。比如Snon这种基于模式匹配的入侵检测 系统中,其规则库的影响至关重要,能否准确地描述攻击的特 征,是发现攻击行为的关键。而3.4节中所给出的缓冲区溢出 攻击代码的特征(1)和特征(3),就可以方便地转化为人侵检测 系统的攻击特征,加入到其规则数据库中。 但是,缓冲区溢出攻击代码的某些特征,如3.4节中给出 的特征(2)和特征(4),并不适合用于入侵检测系统,因为它们 并不能很好地被一条简单的规则所描述。尤其是特征(2),需要 进行一定数量的计算,才可以得出是否有攻击发生的结论。这 对于基于模式匹配的入侵检测系统,比如Snort来说,是不适合 的。 解决上述问题,可以通过开发专门的检测软件监视网络中 的数据包,来对此特征加以利用。因为,如前面所讨论的, H’I耶、FTrP以及DNS等常规的网络数据包中,同时具有特征 (2)和特征(4)的概率极低。所以对于每次的网络请求,通过分 析其数据包中的内容,可以在很大程度上检测到其中是否含有 攻击代码,进而确定其中是否会含有攻击行为。如果发现可能 存在攻击行为,则应拒绝其请求、发出警报或者再进行其它的 相关操作。 5 总结 缓冲区溢出漏洞是当前互连网中的主要威胁之一,而且在 一个很长的时间内,还将继续存在。该文在分析攻击缓冲区溢 出漏洞的攻击代码的基础上,给出了其结构上和内容上所具有 的特征。将这些特征用于入侵检测系统或者其它类似的机制 中,可以更加准确地检测到是否有利用缓冲区溢出漏洞进行攻 击的行为发生,达到防范缓冲区溢出攻击的目的。 (收稿日期:2004年11月) 参考文献 1.NationalInstituteofStandardsandTechnology.ICATMetabase.http: //icat.nist.gov/ 2.SANSInstitute.TheTwemyMostCriticalInternetSecurityVulnera- bilities.http://www.sans.org/top20/ 3.AlephOne.SmashingtheStackforFunandProfitS].Phrack.1996;7 (49) 4.BrianWKeHlighan,DennisMRitchie著.徐宝文等译.C程序设计语 言[M】.北京:机械工业出版社,2001一03 5.Intel.IA一32IntelArchitectureSoftwareDeveloper'sManual[M].Vol- nlne1-3.http://developer.intel.com/design/Pentium4/documentation. htm,2004 6.LinuxOnlineInc.LinuxProgrammer'sManual[M].http://www.1inux. org/docs/index.html 7.ThomasToth,ChristopherKruegel.AccurateBufferOverflowDetection viaAbstractPayloadExecution.RAID2002,LNCS2516,2002: 274。29l 计算机工程与应用2005.18175 万方数据 缓冲区溢出攻击代码的分析研究 作者: 邱晓鹏, 张玉清, 冯登国, Qiu Xiaopeng, ZHANG Yuqing, FENG Dengguo 作者单位: 中国科学院研究生院,信息安全国家重点实验室,北京,100039;中国科学院研究生院国家计算 机网络入侵防范中心,北京,100039 刊名: 计算机工程与应用 英文刊名: COMPUTER ENGINEERING AND APPLICATIONS 年,卷(期): 2005,41(18) 被引用次数: 9次 参考文献(7条) 1.Thomas Toth;Christopher Kruegel Accurate Buffer Overflow Detection via Abstract Payload Execution [外文会议] 2002 2.Linux Online Inc Linux Programmer's Manual 3.Intel.IA-32 Intel Architecture Software Developer's Manual 2004 4.Brian W Kernighan;Dennis M Ritchie;徐宝文 C程序设计语言 2001 5.Aleph One Smashing the Stack for Fun and Profit 1996 6.SANS Institute The Twenty Most Critical Internet Security Vulnerabilities 7.National Institute of Standards and Technology 本文读者也读过(9条) 1. 贾凡.张玉琢.吴承文.JIA Fan.ZHANG Yu-zhuo.WU Cheng-wen 缓冲区溢出攻击检测技术综述[期刊论文]-计算机 安全2011(5) 2. 李肖坚.钟达夫.夏冰.唐懿芳.LI Xiao-jian.ZHONG Da-fu.XIA Bing.TANG Yi-fang 缓冲区溢出原理及植入代码 的分析研究[期刊论文]-计算机应用研究2007,24(1) 3. 王业君.倪惜珍.文伟平.蒋建春.WANG Ye-jun.NI Xi-zhen.WEN Wei-ping.JIANG Jian-chun 缓冲区溢出攻击原 理与防范的研究[期刊论文]-计算机应用研究2005,22(10) 4. 巫玲.王新昊 缓冲区溢出攻击的防范方法[期刊论文]-福建电脑2007(8) 5. 谢恒建.胡兆阳.Xie,Hengjian.Hu,Zhaoyang 缓冲区溢出攻击的防护技术分析[期刊论文]-微计算机信息 2005(27) 6. 徐启杰.薛质.XU Qi-jie.XUE Zhi 缓冲区溢出攻击检测技术的分析和研究[期刊论文]-计算机工程2007,33(16) 7. 高华.李学平.Gao Hua.Li xue-ping 基于缓冲区溢出攻击的安全防范研究[期刊论文]-科技信息(科学·教研) 2007(28) 8. 陶甲寅.李亚芳 缓冲区溢出分析及其防范策略研究[期刊论文]-电脑开发与应用2007,20(10) 9. 何乔.吴廖丹.张天刚.HE Qiao.WU Liao-dan.ZHANG Tian-gang 基于shellcode检测的缓冲区溢出攻击防御技术 研究[期刊论文]-计算机应用2007,27(5) 引证文献(9条) 1.殷超 缓冲区溢出检查技术综述[期刊论文]-科技信息 2011(23) 2.唐晶 漏洞溢出攻击原理与防护[期刊论文]-赤峰学院学报(自然科学版) 2009(8) 3.夏冰.董智勇.金秋 一种缓冲区溢出自动攻击解释器的设计[期刊论文]-河南工程学院学报(自然科学版) 2008(3) 4.陈峰.罗养霞.陈晓江.龚晓庆.房鼎益 网络攻击技术研究进展[期刊论文]-西北大学学报(自然科学版) 2007(2) 5.李肖坚.钟达夫.夏冰.唐懿芳 缓冲区溢出原理及植入代码的分析研究[期刊论文]-计算机应用研究 2007(1) 6.高华.李学平 基于缓冲区溢出攻击的安全防范研究[期刊论文]-科技信息(科学·教研) 2007(28) 7.智明.郑姨婷 基于缓冲区溢出的木马研究[期刊论文]-微型电脑应用 2006(9) 8.鄢喜爱.杨金民.田华 基于缓冲区溢出攻击的分析研究[期刊论文]-农业网络信息 2006(7) 9.付春雷 基于多阶段网络攻击模型的缓冲区溢出攻击技术研究与实践[学位论文]硕士 2006 本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjgcyyy200518042.aspx
/
本文档为【缓冲区溢出攻击代码的分析研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索