系统内核漏洞利用迁移技术.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系统内核漏洞利用迁移技术

系统内核漏洞利用迁移技术 自黑客的攻击方向开始瞄向操作系统开始,内核安全性问题日益凸显出它的重要性。攻击兴趣的主要助推器还是因为现代操作系统内核的特性所决定。系统内核包含许多子系统模块的实现代码,子系统之间通过复杂的接口交互;另外,系统内核还包含大量的用户数据接入点,如系统调用、IOCTLs、文件系统及网络连接等,允许可控的用户数据成功 访问到内核中的重要代码区,这些都是可能被黑客利用的漏洞,从而形成各种系统BUG。本文是在参考Patroklos在bh-eu-2011上发表的文章“Protecting the Core-Kernel Exploitation Mitigation”、 Adam 在Phrack-67上发表的文章“Scraps of notes on remote stack overflow exploitation”以及Tarjei Mandt在bh-dc-2011上发表的文章“Kernel Pool Exploitation on Windows 7”的基础上并结合自己的理解分析完成的,主要分析Linux与Windows系统上可能存在的各种漏洞利用及其迁移保护技术。 内核内存污染漏洞 NULL指针解引用是最常见的漏洞之一。在内核代码中NULL值常在变量初始化、设置为缺省值或者作为一个错误返回值时使用。在系统中,虚拟地址空间分为两个部分,分别称为内核空间和用户进程空间,当内核尝试解引用一个NULL指针时,若用户又允许映射NULL地址(如首个页面包含0地址),则可直接或间接控制内核代码路径。(注:NULL指针引用BUG主要是因进程在执行指针解引用时,没有检查其合法性造成的,若待解引用的地址为NULL,则在内核态访问NULL指针时会引发Oops,此时若黑客在用户态将NULL地址设置为可执行并注入恶意代码,则内核代码将会执行NULL地址的恶意指令。 系统内核中另一个利用最为频繁的漏洞即缓冲区溢出。内核通常使用两种类型的栈结构:内核态堆栈和用户态堆栈。在内核内存分配中,通过邻居堆对象污染或者破坏内存分配中的元数据实现内存溢出。内存污染漏洞的bugs实现技术已经在很多公开文献中出现过,这里我们只做简要分析,如用户输入验证不足依旧是内存污染的主要漏洞之一,可采用传统的边界检查或用户数组索引(边界)控制等防止漏洞产生;有符号Bugs也可产生内核漏洞,如: int func ( size_t user_size){ int size = user_size; i f (size MAX_SIZE) { /* do some operation with size considered safe */ } } 若无符号变量user_size值大于231 – 1,则有符号变量size的值将变为负数,此时if语句恒为true. 尽管目前这种有符号bugs并不常见,但在特定的系统内核中还是可以找到。数字运算时可能产生整数溢出,如乘法运算可能导致内核分配比实际所需内存小的内存块。当前大多数处理器都是SMP结构,故内核中共享的资源需要慎重使用,避免资源在使用有效期内发送状态的改变。 用户级内存污染迁移 大量传统的用户级漏洞利用方法已经被系统中的各种防范措施堵死。栈canaries可能是最著名的漏洞迁移技术,用来保护栈内的元数据信息,这些栈元素(如保存的返回地址、栈桢指针)因程序bugs可能被污染,如栈缓冲区溢出可能导致安全漏洞;一个类似的保护技术是堆canaries的使用,有效探测堆内元数据是否被覆写;另一个堆迁移技术是目的地址验证,即验证链表中待卸载元素从链表中拆除之前节点指针值,如: BOOLEAN RemoveEntryList (IN PLIST_ENTRY Entry) { PLIST_ENTRY Blink,Flink; Flink = Entry-Flink; Blink = Entry-Blink; if (Flink-Blink != Entry) KeBugCheckEx(...); if (Blink-Flink != Entry) KeBugCheckEx(...); return (BOOLEAN) (Blink-Flink == Flink-Blink); //即验证双端队列中的恒等式:Entry-Flink-Blink == Entry-Blink-Flink == Entry; } 地址空间随机化(ASLR)是针对缓冲区溢出的漏洞利用迁移技术,通过对栈、共享库映射等线性区布局的随机化,防止攻击者定位攻击代码位置,达到阻止溢出攻击的目的。不同的系统会在不同区域使用ASLR,如用户级栈地址通常在应用程序实例化时随机,同时用户堆地址也是随机化的,即在可执行文件与堆之

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档