




已阅读5页,还剩87页未读, 继续免费阅读
(计算机应用技术专业论文)针对linux缓冲区溢出漏洞的攻防转换系统.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
针对l i n u x 缓冲区溢出漏洞的攻防转换系统 摘要 缓冲区溢出是一种在l i n u x 操作系统中广泛存在的且危险的漏洞,也 是黑客最常使用的攻击手段之一。传统的溢出漏洞检测手段大多都是通过 扫描软件对系统可能存在的漏洞文件、命令或一些设置进行扫描,以此来 确定漏洞是否存在。但是扫描只是验证某些漏洞文件是否存在,而系统管 理员可能已经将存在的漏洞的文件进行了修补或者此软件和系统的版本 已经升级等等。而且很多漏洞往往都是在攻击过程中才能体现出来的,所 以扫描器经常发生漏报误报的现象。并且大多数的扫描器只是单纯的扫描 漏洞,并没有给出相应的解决措施。 因此目前l i n u x 缺少一种准确高效的自动检测手段。本论文就这一存 在的问题的解决设计了针对l i n u x 缓冲区溢出漏洞的攻防转换安全检测系 统。由于有些安全漏洞存在于一个主体或表现在攻击过程中,所以此检测 系统会尝试进一步利用这些漏洞,以确保这些漏洞的真实存在,进而消除 漏报误报的可能性。一个模拟攻击有时能够检测到多个安全漏洞。而且这 种检测的误报漏报要大大低于普通的扫描软件。实际上这个检测系统并不 是真正对目标主机进行攻击,而是采用定制的模拟插件对系统进行攻击, 然后对过程和结果进行分析。并且根据漏洞规则库给出相应得解决方案。 本文主要针对l i n u x 缓冲区溢出的攻防转换系统进行了探索和研究。 除了深入探讨缓冲区溢出漏洞产生的原因和缓冲区溢出攻击技术的原理 和相关的实例分析外,本文在以下方面进行了创新性的探索: 第一,研究了s h e l l c o d e 的编写技巧及改进措施,利用s h e l l c o d e 可复 用性的特点提出了建立s h e l l c o d e 库来提高模拟攻击检测效率的方案。在 软件设计过程中,将s h e l l c o d e 从攻击程序中分离出来,建立一个独立的 s h e l l c o d e 数据库,用来存放s h e l l c o d e 及其相关信息。这样当攻击需要什 么类型的s h e l l c o d e ,就可以从s h e l l c o d e 数据库中提取相应的s h e l l c o d e , 然后动态挂接到攻击线程中。采用s h e l l c o d e 数据库很大程度上提高了软 件的灵活性,降低冗余。随着s h e l l c o d e 技术的更新,数据库的内容可以 不断地充实和更新,可以在不修改软件其它部分的情况下轻松升级软件的 功能。 第二,将模拟攻击技术引入到攻防转换系统中,不仅避免了系统受到 不可预期的破坏而且提高了漏洞检测的准确性。 通过利用插件技术编写相应的模拟攻击插件并建立模拟攻击插件库。 这种插件结构化设计,可以使用户在今后轻松的进行漏洞探测手段的扩 充,具有良好的可扩展性。其中d l l 文件作为一个单独的程序模块,封装 性、独立性好,在软件需要升级的时候,开发人员只需要修改相应的d 1 1 文件就可以了,而且,当d l l 中的函数改变后,只要不是参数的改变, 程序代码并不需要重新编译。这在编程时十分有用,大大提高了软件开发 和维护的效率。 第三,本文所研究的攻防转换系统不同于单纯扫描系统漏洞的传统手 段。本系统不仅通过模拟攻击检测系统漏洞还能够分析模拟攻击的结果, 给予用户有效的安全防范建议。 、中文摘要 关键字:缓冲区溢出s h e l l c o d e模拟攻击 插件漏洞 英文摘要 t h es y s t e mo ft r a n s l t l o nf r o ma r t a c k t od e f e n s ea i m i n ga tl i n u xb u f f e l o o v e r f l o w n e r a b i l i t y t h eb u f f e r - o v e r f l o wa l w a y sa b r o a de x i s ti nl i n u xs y s t e ma sas e r i o u s v u l n e r a b i l i t ya n daa t t a c km e a s u r ef r e q u e n t l yu s e db yh a c k e r m o s to ft h e t r a d i t i o n a ld e t e c tm e a s u r ei sa l w a y ss c a nt h ee x i s t e n c eo ft h ef i l e so rc o n f i g u r e w h i c hm a yh a v ev u l n e r a b i l i t yo fb u f f e r - o v e r f l o wt om a k es u r ei ft h e r eh a st h e b u f f e r - f l o wv u l n e r a b i l t y b u tt h ee x i s t e n c eo ft h ef i l e sm a yh a v i n g v u l n e r a b i l i t yw i l ln o te x a c t l ya s c e r t a i nt h eb e i n go f t h ev u l n e r a b i l i t y b e c a u s e s o m eo ft h ef i l e sm a yh a v eb e e nm e n d e do ru p g r a d e da l r e a d yb yt h es y s t e m a d m i n i s t r a t o r a n dm a n yv u l n e r a b i l i t i e sc a no n l yb ed e t e c t e dd u r i n gt h e p r o c e s so f t h ea t t c k s ot h em a n ys c a nt o o l sa l w a y sf a i lo rd i s t o r tt or e p o r t t h ev u l n e r a b i l i t y l i k e w i s em o s to ft h es c a nt o o l si s o n l yt od e t e c tt h e v u l n e r a b i l i t yb u to f f e rc o r r e s p o n d i n gr e s o l v e n t c o n s e q u e n t l yt h e r e i sl a c ko fae x a c td e t e c t i o nm e a s u r eo fh i 曲 e f f i c i e n c ya tp r e s e n t s ot h ep a p e ri sd e s i g na d e t e c t i o ns y s t e ma i m e da tt h e l i n u xb u f f e r - f l o wv u l n e r a b i l i t yo r i e n t e dt ot h ep r o b l e m t h es y s t e mw i l lt r yt o m a k eu s eo ft h ev u l n e r a b i l i t yf u t h e rw h i c hm a ye x i s ti nt h em a i n b o d yo r r e p r e s e n td u r i n gt h ea t t a c kp r o c e d u r e t h i sm e a s u r ec a nc o n f i r mt h et r u e n e s s o ft h ee x i s ti no r d e rt oa v o i dt h ed i s t o r t o n es i m u l a t ea t t a c km a yd e t e c to n eo r m o r ev u l n e r a b i l i t ya n dw i l lh i g h l yr e d u c et h er a t eo fd i s o r tc o m p a r e dw i t h m o s to ft h es c a nt o o l s a c t u r e l yt h i sd e t e c t i o ns y s t e mi sn o tr e a l l ya t t a c kt h e t a r g e ts y s t e mb u ta t t a c kb ya d o p t i n gt h es i m u l a t ea t t a c kp l u g i na n do f f e ru s e r t h ef e e d b a c ko fd e f e n s ea d v ic ea c c o r d i n gt ot h ea n a l y s ist op r o c e d u r eo rr e s u l t o ft h es i m t a l a t ea t t a c k i v 、 英文摘要 _ 一 t h ep a p e ri sm a i n l ys t u d yt h et h es y s t e mo ft r a n s i t i o nf r o ma t t a c kt o d e f e n s ea i m i n ga tl i n u xb u f f e r - o v e r f l o wv u l n e r a b i l i t y t h er e s e a r c hc o n t e n t s a n dc o n 仃i b u t i o n si n c l u d e di nt h i sd i s s e r t a t i o na r ed i v i d e di n t ot h ef o l l o w i n g t h r e ep a r t s f i r s t l y , b e s i d e st h et e c h n i q u eo ft h es h e l l c o d ec o m p i l ea n da m e l i o r a t e m e a s u r et h ep a p e rp u tf o r w a r dt h ep r o je c tw h i c ht ob u i l da s h e l l c o d ed a t a b a s e a c c o r d i n gt ot h er e p e a tu s i n ga b i l i t yo f t h es h e l l c o d e d u r i n gt h ed e s i g n i n go f t h es o f t w a r ew es e p a r a t e rt h es h e l l c o d ef r o mt h ea t t a c kp r o g r a m m es ow e c a n h u n gc o r r e s p o n d i n gs h e l l c o d ed y n a m i c l yt ot h ea t t a c kc o u r s e a d o p t i n gt h e s h e l l c o d ed a t a b a s ew i l lg r e a t l yi n h a n c et h ea g i l i t yo fs o f t w a r ea n dr e d u c et h e r e d u n d a n c e s e c o n d l y ,i m p o r t i n gt h es i m u l a t ea t t a c kt e c h n i q u ei sn o t o n l ya v o i d i n gt h e d e s t r o yo ft h et a r g e ts y s t e mb u ta l s oh i g h l y i n h a n c et h ev e r a c i t yo ft h e d e t e c t i o n w eu n i t et h ep l u g - i nt e c h n i q u et ot h eb u i l d i n go ft h es i m u l a t e a t t a c k p l u g i nb a s e t h i sc o n f i g u r a b l ed e s i g nw i l lm a k ei tp o s s i b l ef o ru s e r t oe x t e n d t h ed e t e c t i o nm e a s u r ee a s i l y t h e r e i n t ot h ed l la sas e p a r a t em o d u l eh a sm a n y v i r t u es u c ha sn i c e re n c a p s u l a t i o na n de x p a n s i b i l i t y t h i r d l y , t h i sd e t e c t i o ns y s t e mi s n o to n l yd e t e c t t h ev u l n e r a b i l i t yb y s i m u l a t ea t t a c km e a s u r eb u ta l s oo f f e rf e e d b a c kt ou s e rb ya n y l a s i st h er e s u l t o fa r a c ko t h e rt h a n o t h e rd e t e c t i o nt o o l sw h i c ho n l yd e t e c t i n g t h e v u l n e r a b i l i t y d o n gj i a ( c o m p u t e rs c i e n c e ) s u p e r v i s e db yp r o f w a n gy i g a n g k e y w o r d s :b u f f e r - o v e r f l o w ,s h e e l l c o d e ,p l u g i n ,v u l n e r a b i l i t y , s i m u l a t ea t t a c k v 附件一: 东华大学 学位论文原创性声明 本人郑重声明:我恪守学术道德,崇尚严谨学风。所呈交的学 位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。 除文中己明确注明和引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的作品及成果的内容。论文为本人亲自撰写,、 我对所写的内容负责,并完全意识到本声明的法律结果由本人承担。 弓e j 学位论文作者签名:壹侄 日期:姗年f 月 附件二: 东华大学 学位论文版权使用授权书 学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保 留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅或借 阅。本人授权东华大学可以将本学位论文的全部或部分内容编入有关数据库进 行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密在立年解密后适用本版权书。 本学位论文属于 不保密醒 学位论文作者签名:氇佑 日期:伽眄年1 月;日 燧氆批叫 第一章绪论 1 1 研究现状分析 第一章绪论 1 1 1 缓冲区溢出的研究背景及国内外研究现状 l i n u x 不论在功能上、价格上或性能上都有很多优点,但是随着越来越多的大型 服务器采用l i n u x 操作系统,一些安全问题也随之产生。作为开放式操作系统,它不 可避免地存在一些安全隐患。l i n u x 是一种类u n i x 的操作系统。从理论上讲,u n i x 本身的设计并没有什么重大的安全缺陷。绝大多数在u n i x 操作系统上发现的安全问 题主要存在于个别程序中,所以大部分u n i x 厂商都声称有能力解决这些问题,提供 安全的u n i x 操作系统。但l i n u x 有些不同,因为它不属于某一家厂商,没有厂商宣 称对它提供安全保证,因此用户只有自己解决安全问题。 历史上最著名的缓冲区溢出攻击可能要算是1 9 8 8 年1 1 月2 日基于b s du n i x 的m o m s w o r m 所携带的攻击代码了,这个因特网蠕虫利用t f i n g e r d 程序的缓冲区溢出漏洞, 给用户带来了很大危害。此后,越来越多的缓冲区溢出漏洞被发现。从b i n d 、棚f l p d 、 t e l n e t d 、a p a c h e 等常用服务程序,至l j m i c r o s o f l 、o r a c l e 等软件厂商提供的应用程序,都 存在着似乎永远也弥补不完的缓冲区溢出漏洞。 2 0 0 1 年8 月5 号的红色代码“c o d er e d ”蠕虫发作,直至2 0 0 3 年8 月1 2 号 的冲击波“b l a s t e r ”蠕虫的大规模爆发。互联网的安全问题正威胁每一个用户。1 9 8 8 年,因特网蠕虫利用缓冲区溢出感染了因特网中的百分之五到十的系统。在当时只有 大型商业机构及科研机构才拥有计算机,蠕虫的出现给他们带来了巨大的损失。至今 这种缓冲区溢出安全缺陷己在网络安全领域中横行了十几年。当今面临的重大安全缺 陷中还有很大一部分是与缓冲区溢出相关。程序员在经过缓冲区溢出安全缺陷这么多 年的肆虐以后,已经非常注意对那些危险的函数进行回避,而软件厂商也使用大量的 压力测试软件对产品进行测试,乐观的是绝大部分的缓冲区溢出隐患正在被消除。 2 0 0 0 年,黑客们又发现了另一个极具攻击力的攻击手段:格式化字符串。其实它的最 基本的安全缺陷成因与缓冲区溢出相同,都是因为控制数据与数据保存在同一个区域 中造成的。然而格式化字符串这种安全缺陷非常容易使用自动工具检测出来,所以在 第一章绪论 后来两年这种安全缺陷就逐渐减少了。同年s o l a rd e s i g n e r 在他的n e t s c a p ej p e gc o m m a r k e r 的攻击程序中演示了一种对l i n u x 下针对d l m a l l o c 的堆溢出的通用攻击方法, 这种攻击方法的通用性使黑客的注意力转向到了对堆溢出漏洞的发现和利用上面。从 此缓冲区溢出的主角“堆溢出”的发现及利用研究逐渐开始了。在接下来的一年中 p h r a c k 杂志在5 7 期中发布了两篇关于堆溢出漏洞的攻击方法的论文1 2 3 1 。 根据绿盟科技提供的漏洞报告【6 】,2 0 0 2 年共发现各种操作系统和应用程序的漏洞 1 8 3 0 个,其中缓冲区溢出漏洞有4 3 2 个,占总数的2 3 6 而绿盟科技评出的2 0 0 2 年严 重程度、影响范围最大的十个安全漏洞中,和缓冲区溢出相关的就有6 个。 因为堆溢出不同于一般的缓冲区溢出,不易被一般的测试程序检测出来,所以使 它有了一定的隐蔽性,而从代码的角度来看程序员犯的错误不再是那些非常简单的堆 栈溢出,而是由于函数返回地址这样的重要数据保存在程序员可见的堆栈中,因此也 给系统安全带来了极大的隐患1 2 】。 以下为一些l i n u x 溢出漏洞所造成影响的相关统计数据: 病毒损失病毒简述 i n t e r n e tw o r m 感染了1 9 8 8 年网络上仅有的利用b s du n i xf i n g e r d 的 6 0 ,0 0 0 台系统的5 1 0 一个缓冲区溢出 r a m e n 针对r e d h a t6 2 和r e d h a t7 0 3 0 8 亿美元 存在的r p c s t a t d 远程溢出漏 洞 利用o p e n s s lj 畏务器的缓冲 w o r m l i n u x s l a p p e r 未知溢出漏洞来执行远程s h e l l 命 令 e x p l o i t n c p f s n c p f s q b 的n w c l i e n t c 中的 未知 n c p l o g i n 和n c p m a p 缺少正确 的缓冲区边界检查,本地攻 击者可以利用这个漏洞进行 缓冲区溢出攻击 ( 部分数据来自c e r t c c ) 表1 1l i n u x 溢出漏洞所造成影响的相关统计数据 除“i n t e r n e tw o r m ”因为年代久远己消失外,其它这些蠕虫还继续在网络上传播 2 第一章绪论 着,并不断造成经济损失。 “i n t e r a c tw o r m ”蠕虫利用的是u n i xf i n g e r d 服务的一 个缓冲区溢出:“r a m e n ”病毒是针对r e d h a t6 2 和r e d h a t7 0 存在的r p c s t a t d 远程溢出漏 洞;“w o r m l i n u x s l a p p e r 利用o p e n s s l 服务器的缓冲溢出漏洞来执行远程s h e l l 命令; “e x p l o i t n c p f s 利用n c p f sr = p 的n w c l i e n t c 中的n c p l o g i n 和n c p m a p 缺少正确的缓冲区边 界检查,本地攻击者可以利用这个漏洞进行缓冲区溢出攻击。这些注定写入互联网 安全发展史的蠕虫自身传播无不依赖程序缓冲区溢出漏洞的安全缺陷。 本章就目前缓冲区溢出漏洞的几种保护方法做个简单的描述。但直到1 9 8 8 年, w a r d s 蠕虫病毒出现并在因特网上肆意传播,才引起了人们对于缓冲区溢出问题的广 泛关注。1 9 9 6 年,出现了一些较为全面地介绍缓冲区溢出的文章,这些文章提出了控 制程序流的跳转方法和如何解决小缓冲区溢出的方法,其中包括a l e p ho n e 的 ( ( s u n s h i n gt h es t a c kf o rf u na n dp r o f i t ) ) 。1 9 9 8 年1 月c r i s p i nc o w a n ,c a l t e np u ,d a v i d m a i e r , p e a tb a k e , p e r r yw a g l e 等在第七届u n i x 安全学术会议上发表了题目为a u t o m a t i c d e t e c t i o na n dp r e v e n t i o no f b u f f e r - o v e r f l o wa t t a c k s 的论文,提出了侦测和防护缓冲区溢 出的自适应技术,引起了多方的注意。 紧接着5 月份,在美国o a k l a n d 举行的i e e e 安全和密码学术年会上c r i s p i nc o w a n 、 t i mc h e c ,c a _ t o nd s 、p e r r yw a g l e 展示了i m m u n i x 根据自动侦测和预防技术开发的 s t a c k g u a r d 系统。后来,r e c h a r dj e r e s 和p a u lk e l l y 开发了一个g c c 的补丁,用来实现c 程序完全的数组边界检查,防范溢出问题。2 0 0 0 年已经有人实现了在某些特定条件下 如何逃避s t a c k g u a r d e 的保护达到缓冲区溢出攻击的方法。 国内这方面的技术的研究起步较晚,2 0 0 0 年左右,才有部分国内的信息安全技术 人员开始涉足这方面的研究,至今国内的这方面研究和技术水平仍处于相对落后的地 位。目前,国内尚没有专门的组织开展这方面大型的研究工作。 1 1 2研究意义:安全防护测试存在的不足 缓冲区溢出是一种在l i n u x 操作系统中广泛存在的且极具危险的漏洞,也是黑客最 常使用的攻击手段之一。利用缓冲区溢出攻击可以导致程序运行失败、系统崩溃等后 果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行 各种非法操作。上文提到的第一个缓冲区溢出攻击m o r r i s 蠕虫,在l o 多年前曾造成 了全世界6 0 0 0 多台网络服务器瘫痪。 第一章绪论 * n i x 系统漏洞是被广大用户忽视却实实在在公开存在的威胁。各大运营商及大 型商业机构都使用到了s u n 、h p 、i b m 、l i n u x 的产品,且这类u n i x 系统一直以重 要角色编制在网络中。近两年,利用u n i x 漏洞的蠕虫一直没有被发现,从纯技术的 角度,它的实现并不比b l a s t e r 来的困难多少,多数漏洞的利用甚至相对简单些。特 别是近期公布的在s o l a r i s s a d m i n d 、o p e n s s h 、s e n d m a i l 中的这几个安全漏洞。如果 再结合过去的一些系统安全缺陷,其影响范围是不容忽视的。 以下是一些存在溢出漏洞的程序举例: s e n d m a i lp r e s c a n 0 变量远程缓冲区溢出漏洞s e n d m a i l 是n 操作系统使用 最广的邮件服务程序,全球范围内每天有上亿封邮件由s e n d m a i l 发出。而今,在 s e n d m a i lp r e s c a n ( ) 3 l 被发现了一个堆溢出漏洞。该漏洞可以使远程攻击者以 s e n d m a i l 进程权限执行任意的代码。 o p e n s s h 缓冲区管理操作远程溢出漏洞 o p e n s s h 是一套以安全为开发初衷的远程命令操作服务。该程序出现了远程溢出漏 洞,攻击者可以向o p e n s s h 服务发送一个超大包触发此漏洞,使攻击者可能使用 o p e n s s h 权限执行任意代码。 远程利用默认的s o l a r i ss a d m i n d 设置s u ns o l a r i s 系统上的一个远程越权漏洞。 攻击者可以运行s a d m i n d 服务执行r o o t 命令。默认的s a d m i n d 安装在系统b o o t 区。最 大的危害是,如果漏洞被跨平台的蠕虫利用就会造成较为严重危害。 如何及时有效地发现系统中存在的溢出漏洞是防范溢出攻击的前提。目前的溢出 漏洞检测都是通过扫描软件对系统可能存在的漏洞文件、命令或一些设置进行扫描, 以此来确定漏洞是否存在。但是扫描器只是验证某些漏洞文件是否存在,而漏洞文件 的存在不是漏洞真正存在的决定性因素,因为系统管理员可能已经将存在漏洞的文件 进行了修补或者此软件和系统的版本已经升级等等。而且很多漏洞往往都是在攻击过 程中才能显现出来地,所以扫描器经常发生漏报误报的现象。并且大多数的扫描器只 是单纯地扫描漏洞,并没有给出相应的解决措施。 因此目前l i n u x 缺少一种准确高效的自动检测手段。本论文就这一存在问题的解 决设计了针对l i n u x 缓冲区溢出漏洞的攻防转换安全检测仿真系统。由于有些安全漏 洞存在于一个主体或表现在攻击过程中,所以此检测系统会尝试进一步利用这些漏 洞,这样能够确保这些漏洞的真实存在,进而消除漏报误报的可能性。所以一个模拟 4 第一章绪论 攻击脚本有时能够检测到多个安全漏洞。而且这种检测的误报漏报要大大低于普通的 扫描软件。实际上这个检测系统并不是真正对目标主机进行攻击,而是采用定制的模 拟插件对系统进行攻击,然后对过程和结果进行分析。并且根据漏洞规则库给出相应 的解决方案。 1 2论文的研究内容 1 2 1研究的内容 由于溢出攻击影响范围广,造成危害大,所以如何设计出能有效检测到可能存在 的l i n u x 溢出漏洞并采取措施杜绝被攻击的可能变得尤为重要。本文将就针对l i n u x 缓 冲区溢出漏洞的攻防转换系统的设计与部分系统实现做出研究和探讨。 具体的研究内容如下: 缓冲区溢出攻击技术:包括各种缓冲区溢出攻击技术、高级缓冲区溢出攻击技 术及s h e l l c o d e 的编写技巧。 针对一般扫描器存在的误报漏报现象,本系统采用了模拟攻击的方法。很多情 况下,不经过真正和全面的攻击检测很难发现系统中问题的严重性。所以,模拟攻击在 安全检测系统中占有极为重要的地位。模拟攻击主要是采用高级黑客攻击的手段,所不 同的是,模拟攻击并不破坏系统。在某个目标存在较多漏洞的情况下,一步探测是很难 全部发现的,所以可能需要分多步进行,这部分工作由漏洞模拟攻击插件完成。 本系统中的漏洞模拟攻击部分采用插件技术来完成,通过编写漏洞模拟攻击插 件库存放对各种漏洞进行模拟攻击的插件。即对新发现的漏洞及其攻击方法,通过编 写相应的模拟攻击插件,并加上插件服务接口的相应函数调用,加到漏洞模拟攻击插 件库中,此后主程序会自动识别并调用该插件。 根据溢出攻击中s h e l l c o d e 的可复用性,创建s h e l l c o d e 库供模拟攻击插件调用。 1 2 2研究的关键技术 缓冲区溢出攻击技术 s h e l l c o d e 编写 插件技术 第一章绪论 1 2 3本论文的创新点及难点 创新点: 针对s h e u c o d e 的可复用性,创建s h e u e o d e 库 模拟攻击,并不会对系统造成损害 攻防转换,分析攻击结果并向用户提供解决方案 难点: 溢出攻击的进程执行中的流程跳转问题 s h e l l c o d e 编写 插件接口编写 1 3目标操作系统平台及工具简介 操作系统:r e d h a tl i n u x7 0o ni 3 8 6 l i n u x 操作系统是一个遵循p o s i x ( p o r t a b l eo p e r a t i n g s y s t e mi n t e r f a c e ) 标准的免 费操作系统,具有a s d 和s y s v 的扩展特性。r e d h a t ( 一s f _ 帽) l i n u x ,支持i n t e l ,a l p h a 和s p a r c 等多种硬件平台,具有丰富的软件包。r e d h a tl i n u x 操作简便,配置快捷, 独有的r p m 模块功能使得软件的安装极为容易。r e d h a tl i n u x 被公认为最易使用的 l i n u x 版本,同时它也是目前使用最多的l i n u x 操作系统。7 0 版本是其一个较新的 版本,使用r e d h a t l i n u x7 0 的用户占有非常大的比例。选用r e d h a tl i n u x7 0o ni 3 8 6 为主要的实验平台的原因是因为这个版本的l i n u x 操作系统目前的使用率最高,具有 普遍性和针对性。 开发工具及后台数据库:v c + + ,s q l s e r v e r 6 第二章缓冲区溢出攻击技术 第二章缓冲区溢出攻击技术 缓冲区溢出攻击技术一直是黑客攻击的主要手段,其相关的自动攻击工具不断地 被开发,从而使一个没有专业知识的入侵者可以破坏一个技术先进的网络信息系统成 为可能,缓冲区溢出攻击成为现有网络的最大威胁。深入分析现有的缓冲区溢出攻击 方法,研究现有安全检测防御策略,对于提高网络安全,提出新型的防御方案有重大 意义。 本章将从多种缓冲区溢出攻击技术的基本原理和s h e l l c o d e 的编写技巧两方面来 探讨,由现有缓冲区溢出攻击手段及原理可以得知相应攻击的范围及特征,从而帮助 了解现有检测手段是否有效以便更好的建构攻防转换系统。 2 1缓冲区溢出攻击 如何使缓冲区产生溢出并执行所植入的代码是缓冲区溢出攻击的关键。本章将重 点讲述缓冲区溢出漏洞产生的原因和缓冲区溢出攻击技术的原理和相关的实例分析。 2 1 1缓冲区溢出攻击技术概述【l o 】1 1 1 就缓冲区来讲其实就是程序运行时内存中的一个存放数据的连续空间。在程序试 图将过多的数据放到内存中的缓冲区时,因为超过了其边界就会发生缓冲区溢出。而 人为的溢出则是有一定企图的,攻击者写一个超过缓冲区长度的字符串植入到缓冲 区,出现的缓冲区溢出可能会导致系统受到三个方面的攻击:导致关于可得性的拒绝 服务攻击:导致数据被更改( 针对完整性的攻击) ;导致敏感信息被读取( 针对机密性的 攻击) 。图2 1 是l i n u x 进程地址空间的布局; 第二章缓冲区溢出攻击技术 高地址, 低地址一 s t a c k + j i b 系鳃r b s s , - d a t a + t e x t 一 存放命令行参数及环境变量 - , j 三= 扣 图2 1l i n u x 系统进程地址空间的布局 攻击者通过精确构造数据并控制用于堆栈缓冲区溢出的数据的量,达到执行其所 期望代码的目的。攻击者发送的数据中都包含一些特殊的字节码( 二进制指令 s h e l l c o d e ) ,一旦攻击成功,这些二进制指令将得到执行。这些攻击者使用的二进制指 令代码被称作s h e l l c o d e ,s h e l l c o d e 将为攻击者对被攻击主机的控制提供服务。这些 s h e l l c o d e 将以被攻击进程同等的权限运行,大多数的服务程序都是以超级用户权限运 行的。也就是说,s h e llc o d e 有可能以超级用户权限执行,这样攻击者就可以以r o o t 权限完全控制目标主机。 缓冲区溢出攻击可以分为三个步骤:首先,向有漏洞的程序的缓冲区注入攻击字 符串( 包括s h e l l c o d e ) ;然后,利用其漏洞改写内存中的特定数据( 如返回地址p e t ) 使 得程序的执行流程跳转至预先植入的s h e l l c o d e ;最后,执行s h e l l c o d e 获得被攻击主 机的控制权,然后攻击者以一定的方式控制被攻击主机。 缓冲区溢出攻击技术的种类很多。从攻击原理划分,缓冲区溢出攻击可以分为堆 栈溢出、普通堆溢出、高级的堆溢出和格式化字符串溢出等;从攻击方式划分,又可 分为本地溢出和远程溢出两类。本文将主要讨论远程溢出攻击技术。 2 1 2s t a c k 溢出攻击技术 从逻辑上讲进程的堆栈( s t a c k ) 是由多个堆栈帧构成的,其中每个堆栈帧都对应一 个函数调用。当函数调用发生时,新的堆栈帧被压入堆栈;当函数返回时,相应的堆 8 第二章缓冲区溢出攻击技术 栈帧从堆栈中弹出。尽管堆栈帧结构的引入为在高级语言中实现函数或过程这样的概 念提供了直接的硬件支持,但是由于将函数返回地址这样的重要数据保存在程序员可 见的堆栈中,因此也给系统安全带来了极大的隐患。 进程在内存的映像可以被分成三个区域:文本、数据和堆栈( 如图2 2 所示) 。文 本区是由程序确定的,存放代码( 指令) 和只读数据。该区域对应可执行文件的文本段, 这个区域通常被标记为只读。任何针对其的写操作都会导致段错误。数据区域包含了 已初始化和末初始化的数据,静态变量储存在这个区域中。数据区域对应可执行文件 中的d a t a b s s 段。堆栈区用来存放动态变量和函数调用的现场数据。这里,重点关 注堆栈区域。 内存低地址 内存高地址 文本 数据 ( 包括未初始化 已初始化数据) 堆栈 图2 - 2 进程的内存映像图 下面通过个典型的缓冲区溢出的例子来说明造成缓冲区溢出的原因: v o i df u n c t i o n ( c h a rs t r ) c h a rb u f f e r 1 6 ; s t r c p y ( b u f f e r , s t r ) ; ) v o i dm a i n ( ) i n ti ; c h a rb u f f e r 12 8 ; f o r ( i = o ;i 幸f u n c p t r o ; 在堆中,变量的存放如2 - 6 图所示: 低地址高地址 图2 - 6 堆中变量的存放 其中,b u 脏r 是一个字符数组,f u n c p t r 是一个函数指针。函数指针实质上就是函 数的入口地址。由于程序在做字符串拷贝时没有做边界检查,攻击者可以覆盖f u n c p t r 函数指针的值。程序在执行f u n c p t r 函数时,就会跳转到被覆盖地址继续执行。如果 攻击者精确构造填充数据,就可以在缓冲区中植入s h e l l c o d e 并使用s h e l l c o d e 的内存 地址覆盖f u n c p t r ,当f u n c p t r 被调用时,s h e l l c o d e 将被执行。 针对堆还有另外一种类型的攻击。在c 语言中包含了一个简单的检验恢复系统, 称为s e t j m p l o n g j m p 。在检验点设定“s e t j m p g m p _ b u f ) ,用“l o n g j m p ( j m pb u f , v a l ) ” 来恢复检验点。 s e t j m p ( j m p b u r ) 用来保存当前的堆栈栈帧到j m pb u f 中,l o n g j m p g m p _ b u f , v a l ) 将 从j m p b u f 中恢复堆栈栈帧,l o n g j m p 执行完后,程序继续从s e t j m p o 的下一条语句处 执行,并将v a l 作为s e t j m p o 的返回值。j m pb u f 被声明为全局变量,因此存放在堆中。 j m p _ b u f 中保存有寄存器e b x ,e s i ,e d i ,e b p ,e s p ,e i p ,如果能在l o n g j m p 执行以前覆盖掉 i m p _ b u f , 就能重写寄存器e i p 。因此当l o n g j m p 恢复保存的堆栈栈帧后,程序就可以 跳到指定的地方去执行。跳转地址,可以在堆栈中,也可以在堆中。 1 2 第二章缓冲区溢出攻击技术 2 1 4单字节溢出攻击技术 通常的缓冲区溢出就是通过重写堆栈中存储的e i p 内容,使程序跳转到s h e l l c o d e 处执行。其实,即使缓冲区只溢出一个字节的时候,也有可能去执行攻击者的代码。 下面是一段有弱点的程序: i n t i : c h a rb u f f 2 5 6 ; f o r ( i = 0 ;i m e n l - c h u n k2 0 , 图2 1 2 被分配的c h u n k 如果使用m e m l = m a l l o c ( 2 0 ) ;申请内存,m e m l 为m a l l o c 函数返回的指针,它将如 图2 1 2 所示指向申请到的内存块的起始位置,程序的数据从这里开始存放。在m e m l 2 0 第二章缓冲区溢出攻击技术 之前有两个字段:p r e y _ s i z e 和s i z e ,它们存放着这个块的管理信息。 p r e vs i z e 和s i z e 均占用4 字节空间。对p r e ys i z e 而一言,如果当前块的前一个 块空闲,它存放着前一个块的大b ;当前块的前一个块被分配,它则作为前一个块的 数据区的一部分。如图2 1 2 所示c h u n k 2 的p r e ys i z e 就是c h u n k l 的数据区的一部分。 s i z e 的计算方法是将欲申请的空间大z j 、 j i j 4 ( s i z e 自身占用的空间) 然后与下一个双 字边界对齐。也就是说,m a l lo c ( 7 ) 时,s i z e 为1 6 ;m a l l o e ( 2 0 ) 时,s i z e 为2 4 等。这样 做更多的是出于性能方面的考虑。s i z e 字段也有其特殊的定义:它除了包含当前块的大 小信息外,还包含有其它的管理信息。s i z e 的低三位存放其它信息。其中s i z e 的最低 位称为p r e v j m u s e 位,表示前一个块是否被使用( ( 1 表示被使用,o 表示未被使用) 。 由此,检查当前的块是否被使用,只需查看下一个块的s i z e 字段的最低位是否为t o 内存块被释放后的情形如图2 1 3 所示: c h u n k1 一 m e m1j c h u n k2 , p r e v _ s i z e s 1 z e f d b k ( 本使用内存) p r e y _ s i z e 图2 1 3 被释放的c h u n k 在块被释放时,除了p r e ys i z e 和s i z e 字段外,f d 和b k 也变为有意义的字段。另 外,c h u n k 2 的p r e vs i z e 字段表示c h u n k l 的大小。 内存的分配和释放可能多次进行,如果每次分配都只是在未分配的空间分配一块 新的空间,将导致空间的浪费,因而必须要回收被释放的空间。在g n uc 实现中使 用一个双向链表来管理被释放的空间,所有被释放的块都会被放到这个链中。f d 和 b k 就是用来构成双向链表的两个指针,f d 指向前一个块,b k 指向下一个块。在内存 块被释放时,要将与其相邻的空闲的块合并以减少碎片。 当调用f r e e ) 释放内存时,首先对释放的内存做一些
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年汽车尾气净化三效催化剂项目立项申请报告范文
- 主提升机操作工中秋节后复工安全考核试卷含答案
- 接触网工中秋节后复工安全考核试卷含答案
- 2025年审记软件项目申请报告范文
- 水(油)压机锻造工中秋节后复工安全考核试卷含答案
- 室内基础装修合同(标准版)
- app应用开发合同(标准版)
- 森林抚育工国庆节后复工安全考核试卷含答案
- 软件项目缺陷跟踪管理流程
- 水声测量工国庆节后复工安全考核试卷含答案
- 2024-2025学年南充市七年级下英语期末考试题(含答案和音频)
- 成都产业投资集团有限公司所属产业投资板块企业2025年招聘投资管理等岗位的考试参考试题及答案解析
- 2025年法院书记员招聘考试笔试试题含答案
- 重阳节活动致辞
- 地下室结构施工课件
- 2025至2030中国氢燃料电池堆行业项目调研及市场前景预测评估报告
- 搭建铁棚合同(标准版)
- 2025年铜仁市招聘工会社会工作者11人考试参考试题及答案解析
- 4.6.2.2神经调节(第二课时)课件-人教版(2024)生物八年级上册
- 银行积分培训课件
- 2.5 秋天的怀念 课件2025-2026年度统编版语文七年级上册
评论
0/150
提交评论