为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 一种缓冲区溢出攻击通用模型研究

一种缓冲区溢出攻击通用模型研究

2011-11-27 3页 pdf 193KB 17阅读

用户头像

is_718048

暂无简介

举报
一种缓冲区溢出攻击通用模型研究 技 术 创 新 中文核心期刊 《微计算机信息》(管控一体化)2008年第 24卷第 1-3期 360元/年 邮局订阅号:82-946 《现场总线技术应用 200例》 信息安全 一种缓冲区溢出攻击通用模型研究 AGeneralModelofBufferOverflowAttack (四川大学信息安全研究所)徐 耘 周安民 王 炜 XUYUN ZHOUANMIN WANGWEI 摘要:随着 Internet的普及,信息安全问题日趋显著,近年来发生的一系列安全事件让每个连接到 Internet的用户感到不安, 特别...
一种缓冲区溢出攻击通用模型研究
技 术 创 新 中文核心期刊 《微计算机信息》(管控一体化)2008年第 24卷第 1-3期 360元/年 邮局订阅号:82-946 《现场总线技术应用 200例》 信息安全 一种缓冲区溢出攻击通用模型研究 AGeneralModelofBufferOverflowAttack (四川大学信息安全研究所)徐 耘 周安民 王 炜 XUYUN ZHOUANMIN WANGWEI 摘要:随着 Internet的普及,信息安全问日趋显著,近年来发生的一系列安全事件让每个连接到 Internet的用户感到不安, 特别是远程缓冲区溢出攻击更是防不胜防。缓冲区溢出攻击是一种常见的攻击方式,对缓冲区溢出漏洞进行恶意利用,会 产生极具破坏性的蠕虫。本文对各种缓冲区溢出漏洞和利用技术进行了深入研究,建立了缓冲区溢出攻击通用模型 OS- JUMP(OverflowShellcodeJump),并利用该模型,提出了在模型的各个阶段阻截缓冲区溢出攻击的防范措施。 关键词:缓冲区溢出;检测;模型 中图分类号:TP309.2 文献标识码:A Abstract:WiththepopularizationofInternet,informationsecurityisbecomingincreasinglyapparent.Aseriesofsecurityeventsdur- ingtheresentyearsareenoughtomakepeopleconnecttoInternetuneasy,especiallytheremote-distancebufferoverflow.Buffer overflowisawellknownattack.InternetWormswillgenerateenormousloseviabufferoverflowattack.Thispaperfirstdeeplyana- lyzedvariousattacktechnologiesofbufferoverflow,thensetupageneralattackmodelOSJUMP(OverflowShellcodeJump),atlast, itpresentedmethodstodefensesuchattackineachphaseofthismodel. Keywords:Bufferoverflow,detection,model 文章编号:1008-0570(2008)01-3-0048-03 1 前言 Internet为人们提供了一个传输和共享信息的平台,但网络 安全问题也越来越引起人们的关注。利用缓冲区溢出攻击,不 仅可以导致程序运行失败、系统当机、重新启动等严重后果;更 恶劣的是,它可以被利用来执行非授权指令,甚至黑客可以因 此而取得系统特权,进而进行各种非法操作。目前,网络安全问 题已变得越来越严重,已经影响到了网络本身和网络应用服务 业务的发展。因此,对于缓冲区溢出攻击和防范的研究,具有现 实和深远的意义。 2 缓冲区溢出的各种类型和利用技术 一个程序分为多个段,不同的段存放不同的数据。常见的 段有代码段(.text),数据段(.data),只读数据段(.rdata)。各段在内 存中的位置和功能如图 1所示。 图 1进程地址空间布局 如果程序员缺乏安全意识,那么每一个段都有出现缓冲区溢 出漏洞的可能。下面详细各种类型漏洞的成因和利用技术。 2.1堆栈溢出利用技术 堆栈负责保存函数的局部变量,也负责保存函数调用时相 关寄存器的值。堆栈由内存高址向内存低址方向增长,如果局 部数组变量未作长度检查,就有可能引发堆栈的溢出漏洞。一 个堆栈缓冲区溢出的例子如下。 voidfun(char*input) {chara[8]; strcpy(a,input);} 系统进入 fun函数时,堆栈先是保存数组 a的 8个字节的 空间,然后保存原EBP和原EIP。strcpy函数没有检查拷贝数据 的长度,如果 input的字符串过长,超过 8个字节,则会在覆盖 完数组 a的空间后,还会覆盖到保存的 EBP和 EIP,从而引发 缓冲区溢出漏洞。 如输入为 input=”aaaaaaaaaaaa/x01/x02/x03/x04”,则堆栈被 覆盖如图 2所示。 图 2堆栈被覆盖布局 当 fun函数返回后,EIP就被改写为 0x04030201,系统就进 入到 0x04030201地址执行。若把 0x04030201改为要执行代码 ――Shellcode的地址,系统就会跳入到Shellcode中执行。 2.2堆溢出利用方式 堆栈溢出的利用已经非常成熟,可以做到通用,但堆溢出 的利用相对复杂。在程序运行过程中,malloc等动态分配函数 最后都是调用 HeapAlloc,在heap堆中申请内存空间。比如: buf1=HeapAlloc(hHeap,0,200); strcpy(buf1,mybuf); buf2=HeapAlloc(hHeap,0,16); 程序在堆中分配了buf1和 buf2。这两个堆块,带有对用户 透明的管理结构,当 buf1溢出覆盖时,会覆盖掉后面的空闲堆 管理结构,以及两个双链表指针。在作 HeapAlloc时,系统会把 徐 耘:硕士生 48- - 邮局订阅号:82-946360元/年 技 术 创 新 信息安全 《PLC技术应用 200例》 您的论文得到两院院士关注 第一个指针值写入到第二个指针指向的地址中。 覆盖利用时,将第一个指针覆盖为 Shellcode的地址,第二 个指针覆盖为某个函数的地址,特别的,覆盖为系统默认异常 处理的地址,利用模型如图 3所示。 图 3堆分配利用模型 当在调用 HeapAlloc时,默认异常处理地址被改写为 Shellcode的地址,同时系统异常,进入异常处理流程执行默认 异常处理,从而进入 Shellcode。 2.3虚函数表溢出利用方式 虚函数是 C++中很重要的一个概念,C++的多态性由虚函 数实现。虚函数是定义 virtual关键字的函数,会执行动态联编。 虚函数表保存在.rdata段中。溢出利用可以通过覆盖 objA 的 pvtable,伪造出一个 vftable表,并把 Shellcode的地址伪造成 test1函数的地址。覆盖利用模型如图 4所示。 图 4虚函数表覆盖模型 当程序调用 objA对象的test1成员函数时,就会调用伪造 的虚函数表,进入 Shellcode。 2.4化溢出利用方式 若?snprintf(buf,sizeof(buf),str);?操作,没有限制用户提交格 式化串,就引发格式化溢出。 如果提交BBBB%20d%n,就会将其写入到对应的地址中。 也可以将 Shellcode地址写入要执行的函数地址。 2.5其他溢出 除上面能独立利用的溢出类型外,还有其他一些较重要的 溢出类型,如整数溢出和流格式溢出。整数溢出和流格式溢出 都不能单独利用,需要通过整数和流格式溢出,引起堆栈溢出 或堆溢出,从而改变系统执行流程,进入到 Shellcode中。 整数溢出的原因是计算机的可保存位数是有限的,超出部 分将会被丢弃。整数溢出特别容易出现在图像处理和视频处理 中,这是因为流由很多段构成,段由标记,参数和数据段构成。 这些文件格式有时会依据标记来确认段,并读取参数进行运 算,再依据这些参数来处理随后紧跟的数据。在对参数进行运 算时相信了文件输入的参数,没有进行确认而导致。 类似的,流格式溢出是直接将 size作为参数调用 memcpy 等函数进行拷贝,如果参数过长,会进入到不可读写的段而引 发异常,从而利用系统异常处理流程,进入到 Shellcode中。 3 缓冲区溢出攻击通用模型―― OSJUMP 3.1模型的定义 通过上面的分析,可以建立 OSJUMP缓冲区攻击通用模型 。OSJUMP这个词来源于 Overflow(溢出)Shellcode(执行代码)和 JUMP(跳转)。这三个方面对成功的缓冲区溢出攻击缺一不可。 定义:OSJUMP指利用 Overflow(缓冲区溢出),覆盖系统数 据,借助系统执行流程(函数的返回,函数的调用,系统异常处 理等),改变系统 EIP指向 Shellcode(目标代码),从而跳入 (JUMP)到 Shellcode中,执行目标代码的攻击过程。OSJUMP模 型如图 5所示。 图 5OSJUMP模型图 3.2模型的说明 模型各个部分的功能和相互联系如下: Overflow:功能是构造 Shellcode,覆盖系统关键数据。Over- flow是缓冲区溢出攻击的前提。 Shellcode:是要执行的目标代码,通过 overflow所构造。 Shellcode正确才能保证执行成功。Shellcode执行是缓冲区溢出 攻击的最终目的。 JUMP:利用系统流程,通过 Overflow,改变 EIP为 Shellcode 的地址,跳入 Shellcode。JUMP跳转是的缓冲区溢出攻击能否成 功的关键。 3.3模型的分析 利用 OSJUMP模型,可以对第 2节中的各种溢出类型和攻 击方式进行建模分析,如表 1所示。 表1各种利用类型分析 而未来发展的缓冲区溢出攻击技术,也可以利用该模型进 行解释,分析和预测。 3.4基于 OSJUMP模型的防范措施 基于 OSJUMP模型,可以对缓冲区溢出攻击,进行不同层 次的阻截和防范。现在的一些缓冲区溢出的防范和检测, 本质上都可以划归于 OSJUMP模型的三个层次。 1)防范 overflow overflow是缓冲区溢出的前提,如果避免缓冲区溢出的可 能,可以从根本上杜绝缓冲区溢出漏洞。 这个层次的防范手段对应有提高程序员安全编程的思想, 采取安全的编程语言和安全的编程方式,避免 strcpy,memcpy 等危险函数,采用人工或自动化工具,对代码进行安全性分析。 2)防止 jump 通过防止利用系统流程,跳入到 Shellcode中。 防范 jump的手段有 1、在栈中加入 Cookie字段,如果检查 到 Cookie字段被覆盖改变,则停止程序的运行;2、对堆中的链 表指针进行实时检查,如果不符合链表结构,则停止执行;3、修 改栈的分布,局部变量和寄存器保存在不同的堆栈中,从根本 49- - 技 术 创 新 中文核心期刊 《微计算机信息》(管控一体化)2008年第 24卷第 1-3期 360元/年 邮局订阅号:82-946 《现场总线技术应用 200例》 信息安全 上避免利用系统流程实现跳转。 3)防止执行 Shellcode 如果前两个阶段的阻截失败,就需要防止恶意代码 Shell- code的执行。 防范执行 Shellcode手段有堆栈不可执行;监控恶意代码的 执行流程,进行表征分析等。 4 小结 本文对各种缓冲区溢出漏洞和利用技术进行了深入研究, 建立了缓冲区溢出攻击通用模型 OverflowShellcodeJump,并利 用该模型,提出了截缓冲区溢出攻击的防范措施。 本文作者创新点在于在全面分析了各种缓冲区溢出攻击 类型的基础上,提出了一种缓冲区攻击通用模型――OSJUMP, 通过 OSJUMP模型,提出了在模型各阶段阻止攻击的措施。 OSJUMP对缓冲区溢出攻击技术的预测,以及对蠕虫的防治,有 重要的作用。 参考文献 [1]WeaverN. Potentialstrategiesforhighspeedactiveworms. 2002.http://www.cs.berkeley.edu/~nweaver/worms.pdf [2]StanifordS,PaxsonV,WeaverN.HowtoowntheInternetin yoursparetime.In:BonehD,ed.Proc.ofthe11thUsenixSecuri- tySymp.SanFrancisco,2002.http://www.icir.org/vern/papers/cdc- usenix-sec02/cdc.pdf [3]WeaverN.Warholworms:ThepotentialforveryfastInternet plagues.2002.http://www.cs.berkeley.edu/?nweaver/warhol.html [4]ZouCC,GongW,TowsleyD.CodeRedwormpropagationmod- elingandanalysis.In:Proc.ofthe9thACMSymp.onComputer andCommunicationSecurity.Washington,2002.138~147. [5]SongD,MalanR,StoneR.AsnapshotofglobalInternetworm activity.TechnicalReport,ArborNetworks,2001. http://www.first.org/events/progconf/2002/d5-02-song-slides.pdf [6]谢恒建 胡兆阳 缓冲区溢出攻击的防护技术分析[J]微计算 机信息 2005,9-3。 作者简介:徐耘(1983-),女(汉族),四川人,硕士生,研究方向为 网络系统与信息安全;周安民(1963-),男(汉族),重庆人,研究 员,硕士生导师,研究方向为信息安全;王炜(1081-),男(汉族), 四川人,博士生,研究方向为网络系统与信息安全。 Biography:XUYun (1983-),Female(Han),SichuanProvince, SichuanUniversity, Master, researchfieldisNetworkSystem &InformationSecurity. ZHOU An-min(1963-),Male(Han), Chongqing, Researcher, researchfieldisInformationSecurity. WANGWei(1981-),Male(Han),SichuanProvince,Ph.D.candi- date,researchfieldisnetworkandsecurity. (610064 四川成都 四川大学信息安全研究所)徐耘 周安民 王炜 (InstituteofInformationSecurity,SichuanUniversity,Cheng- du610064)XUYunZHOUAn-minWANGWei 通讯地址:(610064 四川成都 四川大学电子信息学院信息安 全研究所)徐耘 (收稿日期:2007.10.23)(修稿日期:2007.12.05) (上接第 94页) 图2消息消冗算法活动图 3结束语 针对快速公交(BRT)智能系统的集成,自行开发了专用的 消息中间件来提供了消息可靠性以及消息冗余消减等功能,有 效地提高了快速公交(BRT)智能系统的运行效率,降低了应用子 系统的开发难度。本文提出的消息中间件通信控制策略对其他 利用消息中间件集成的大型应用系统也具有一定借鉴意义。 本文创新点是根据国内首条城市快速公交线路的业务特 点,设计并提出了 BRT智能系统专用消息中间件的消息通信策 略。采用该策略设计并开发的中间件系统,专用于快速公交智 能系统的集成,提高了系统的运行效率,增强了系统的整合工 作能力。 参考文献 [1]王宇辉,熊桂喜.机场管理信息系统中信息发布技术的研究与 应用[C].南京大学学报(自然科学),第36卷,第八届全国青年计 算机学术会议专刊,2000. [2]陈世强.基于XML和Reactor模式的消息中间件的设计[J]微 计算机信息,2006,24,299 [3]JavaMessageServicespecificationVersion1.1 [S],SunMi- crosystems,Inc.2002-04 [4]AndrewS.Tanenbaum,陆丽娜,伍卫国,刘隆国等.分布式操 作系统[M],电子工业出版社,2004 作者简介:姚育章(1981-),男,河北,北京航空航天大学硕士生, 研究方向为中间件技术、系统集成;熊桂喜 (1964-),男,湖北,北 京航空航天大学副教授,研究方向为系统集成、中文信息处理。 Biography:YaoYuzhang(1981-),male,Heibei,Master,BeiHang University,majoredinMiddlewareTechnology,SystemIntegra- tion;XiongGuixi(1964-),male,Hubei,associateprofessor,Bei- HangUniversity,majoredinInformationRetrieval,SystemInte- gration. (100083北京 北京航空航天大学 计算机学院)姚育章 熊桂喜 (CollegeofComputerScience,Beihang University,Beijing 100083)YaoYuZhangXiongGuiXi 通讯地址:(100083北京 北京航空航天大学 计算机学院)姚育章 (收稿日期:2007.10.23)(修稿日期:2007.12.05) 50- -
/
本文档为【一种缓冲区溢出攻击通用模型研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索