首页>参考读物>计算机科学与技术>安全

内核漏洞的利用与防范
作者 : (美)Enrico Perla Massimiliano Oldani 著
译者 : 吴世忠 郁莲 郭涛 董国伟 译
出版日期 : 2012-02-23
ISBN : 978-7-111-37429-9
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 364
开本 : 16
原书名 : A Guide to Kernel Exploitation: Attacking the Core
原出版社: Elsevier (Singapore) Pte Ltd
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书涵盖了开发可靠和有效的内核级别漏洞利用所需的理论技术和方法,并将其应用于主流操作系统——UNIX衍生系统、Mac OS X和 Windows。本书分4个部分共9个章。第一部分介绍了漏洞利用的目标、内核以及理论基础;第二部分钻研了目前主流操作系统的细节,并针对不同错误类别分别编写了漏洞利用程序。第三部分将关注点从本地场景转移到远程利用的情景;第四部分介绍了未来内核的攻防模式。本书不仅从软件安全研究人员的角度谈论如何发现软件漏洞,也从软件开发者的角度给出了防止软件出现漏洞的方法,以帮助软件编程人员开发出安全的软件系统。
本书内容详实,实例丰富,操作性强,涉及主流操作系统内核漏洞利用的各个方面,适合软件开发人员、测试人员、安全工程师等阅读。

图书特色

“这是一本非常有趣的书,它不仅仅教授读者内核漏洞利用的技术,而且激发了读者对操作系统内部结构的学习兴趣,这样的学习兴趣远远超出了简单的好奇心。”
——Golden G. Richard III博士
新奥尔良大学计算机系教授,数字取证咨询公司CTO

  目前针对用户态漏洞利用的安全对策数量在不断增加,因此,内核漏洞利用在攻击者中变得越来越流行。与操作系统内核共舞可能是一个危险的游戏:本书涵盖了开发可靠并且有效的内核级别漏洞利用所需要的理论技术和方法,并将它们运用于主流操作系统中。
  利用内核漏洞既需要艺术也需要科学。每个操作系统都有其特点,所以,充分实现目标需要对每个漏洞进行建模。本书讨论了最流行的操作系统,并讲解了如何完全控制它们。

本书主要内容
● 涵盖主流操作系统——UNIX家族、Mac OS X和Windows。
● 详解常见方案,如一般内存损坏(栈溢出、堆溢出等)问题、逻辑错误和竞态条件等。
● 从用户态漏洞利用引领到内核态漏洞利用的世界中,专注于漏洞利用实施步骤,可操作性强。
作者简介
Enrico Perla 目前是Oracle公司的内核程序员。他于2007年获得Torino大学学士学位,并于2008年获得Trinity Dublin大学计算机科学硕士学位。他的兴趣范围从低层系统编程到低层系统攻击、利用和利用对策。

Massimiliano Oldani 目前担任Emaze网络的安全顾问。他主要的研究课题包括操作系统安全和内核漏洞。

图书前言

本书概览
  目前针对用户态漏洞利用的安全措施较以往有所增加,同时,内核态的漏洞利用也变得越来越流行。本书覆盖了开发可靠和有效的内核态攻击所需的理论技术和方法,并将它们应用于不同的操作系统—UNIX家族、Mac OS X和Windows。
  内核利用既是艺术也是科学。每个操作系统都有其自身的特点,所以必须建立攻击模型以便充分分析其目标。本书讨论了最流行的操作系统并介绍如何控制它们。
  本书介绍了主流操作系统的概念和安全策略,可以帮助信息安全研究人员更加深入了解内核攻击的方式和方法,为抵制系统级内核攻击,降低安全隐患提供了重要的理论支撑和技术保障。
本书的组织结构
  本书分4个部分,共9章。
  第一部分 内核态 介绍了本书的目标—内核,并讨论了本书后续内容所依赖的理论基础。这一部分包括:
   第1章 从用户态利用到内核态利用 这一章介绍了漏洞利用的世界,并分析了致使安全研究人员和攻击者将漏洞利用的焦点从用户态应用程序转到系统内核上来的原因。
   第2章 内核漏洞分类 这一章讨论了不同类型漏洞(错误类别)的分类,并阐述了它们的共同特性和利用方法。越是能够描述多种错误类型的模型,我们越是能够针对其设计出可靠有效的利用技术。这个分类也便于我们从另一方面看待问题:防御。越多地理解错误类型,越是能够创造出更好的保护和防御手段。
   第3章 成功内核利用进阶 这一章剖析了内核利用的各个阶段,并描述了针对第2章中每个错误类型的最佳利用方法和技术。鉴于操作系统实现子系统的方法不一样,本章致力于提供能够应用于不同内核和体系结构的利用方法。
  第二部分 UNIX家族、Mac OS X和Windows 在这一部分中我们将深入探讨不同操作系统的自身特性,并编写针对不同错误类型的利用代码。对于每种操作系统,我们介绍了相应的调试工具和方法,这在编写漏洞利用代码时非常实用。在本部分中,我们介绍了对真实漏洞的利用,而不是人为设计的例子。这一部分包括:
   第4章 UNIX家族 这一章分析了UNIX类系统,主要讨论了Linux并简单讨论了(开源)Solaris操作系统。部分章节也涉及这些操作系统提供的主要工具(如动态追踪、内核调试器等)的调试技术。
   第5章 Mac OS X 这一章覆盖了目前非常流行的Mac OS X操作系统,主要讨论了其Leopard版本。同时分析了主要的错误类型(如栈和堆的利用),在查找漏洞时,我们介绍了如何利用闭源内核部分进行逆向工程分析。
   第6章 Windows 这一章覆盖了当今最流行的操作系统—微软Windows。和之前的内容不同,在这一章中,我们没有涉及内核的源代码;相反,我们对内部(以及漏洞/攻击方法)的理解来自对不同内核部分的逆向工程。本章着重介绍了逆向分析工具的调试方法,这是非常重要的。
  第三部分 远程内核漏洞利用 这一部分将我们的关注点从本地场景(对于内核攻击来说这是常见的场景)转移到远程情况。实际上,我们进入了更加复杂的境地,我们学到的在本地攻击中使用的许多技术已经不适用了。虽然错误类型仍然一样,但是我们需要为我们的“武器库”增加新的“武器”。第三部分共两章,重温了本书之前的部分(第一部分偏向理论,第二部分偏向实践)。这一部分的主要内容包括:
   第7章 远程内核漏洞利用面临的挑战 这一章从理论开始介绍,分析了为什么以及在多大程度上远程情境会影响我们的方法,并给出新的技术来解决远程利用问题。虽然这一章更偏向理论,但是也给出了一些实际例子,特别关注于Windows操作系统,而UNIX(Linux)的情景将在第8章阐述。
   第8章 一个Linux案例 这一章依次分析了针对一个真实漏洞的可靠利用、一次性利用和远程利用的开发—在Linux内核中发现的一个影响SCTP子系统(http://cve.mitre.org/cgi-bi/cvename.cgi name=CVE-2009-0065)的bug。
  第四部分 展望 这一部分总结全书,结束我们对内核安全的分析,由单独的一章组成:
   第9章 内核演变:未来内核攻防模式 在这一章中,基于我们所学的内核利用知识对未来进行展望。为了深入探讨攻击和防御技术,在这一章中我们讨论了计算机安全的基础:信息流控制。然后,我们将其作为标准来检查和理解一些bug和漏洞利用的基本特点,这样我们才能够更好地展望未来。
  本书中介绍的利用实例和工具的代码在网站www.attackingthecoe.com上可以找到,它也是报告错误的主要参考;您也可以联系我们获得更多的资料。
小结
  编写一本书是一个繁琐但很有趣的过程。它给了作者一个将大脑中浮现的感兴趣的概念表达出来的机会。编写这本书对我们来说是一个挑战。我们力争用准确而清晰的陈述来传递那种发现新的防御方法和提供有价值的攻防信息时的激情和乐趣。我们希望读者能够喜欢我们的成果,如同我们乐于将它奉献出来那样。

上架指导

计算机\安全

封底文字

“这是一本非常有趣的书,它不仅仅教授读者内核漏洞利用的技术,而且激发了读者对操作系统内部结构的学习兴趣,这样的学习兴趣远远超出了简单的好奇心。”
——Golden G. Richard III博士
新奥尔良大学计算机系教授,数字取证咨询公司CTO

目前针对用户态漏洞利用的安全对策数量在不断增加,因此,内核漏洞利用在攻击者中变得越来越流行。与操作系统内核共舞可能是一个危险的游戏:本书涵盖了开发可靠并且有效的内核级别漏洞利用所需要的理论技术和方法,并将它们运用于主流操作系统中。
利用内核漏洞既需要艺术也需要科学。每个操作系统都有其特点,所以,充分实现目标需要对每个漏洞进行建模。本书讨论了最流行的操作系统,并讲解了如何完全控制它们。
本书主要内容:
•涵盖主流操作系统——UNIX系列、Mac OS X和Windows。
•详解常见方案,如一般内存损坏(栈溢出、堆溢出等)问题、逻辑错误和竞态条件等。
•从用户态漏洞利用引领到内核态漏洞利用的世界中,专注于漏洞利用实施步骤,可操作性强。

图书序言

最初邀请我写本书序言时,我拒绝了,因为我觉得我不应该出现在他们的光芒中,这些光芒是他们辛勤工作应得的。然而,在阅读了这本书的一些章节之后,我认识到,如果错过这个机会将会非常遗憾,能为世界上最著名的两位内核漏洞利用者的书写序,我感到无比荣幸。
  我很少阅读关于漏洞利用技术的书籍,因为很多书只提供了很少或是过时的知识,或者只是简单地枚举出其他人完成的攻击。另外,书籍并不能提供动手进行漏洞利用开发的学习,或是带来在数天努力工作之后一个“#”命令行提示的乐趣,特别是一个内核漏洞被利用后所带来的快感。是时候将这种感觉写在纸上了,它将节省其他开发人员的时间,减少令人崩溃和头痛的处境。
  除了需要漏洞利用重要的技巧和艺术之外,编写漏洞利用特别是内核漏洞利用需要对操作系统原理具有深层次理解。这本书绝对有助于实现上述目的,并且还能丰富我书架上内核和驱动编程方面的书籍。
  我当然知道这本书适合的读者,希望大量的内核和驱动开发人员也来读这本书。我的下个内核代码审查的工作就要开始了,希望这本书在那之前就可以出版。

Sebastian Krahmer
系统程序员与漏洞利用工程师

作者简介

(美)Enrico Perla Massimiliano Oldani 著:暂无简介

译者简介

吴世忠 郁莲 郭涛 董国伟 译:暂无简介

译者序

随着信息技术的飞速发展,互联网日益成为人们生活中不可缺少的一部分,社交网络、微博、移动互联网、云计算、物联网等各种新技术、新应用层出不穷。但不管是Facebook、twitter等新兴互联网公司的迅速崛起,还是Android日益成为智能手机市场的主流操作系统,信息安全一直都是永恒的话题。“震网病毒”事件凸显网络武器的实战破坏能力,关键信息基础设施和政府网络保护已成为网络空间防御的新重点;“维基泄密”事件彰显网络空间攻防双方的不对称性,百密难免一疏成为保密防范永远的痛;这些信息安全事件存在一个共同点,那就是信息系统或软件存在的漏洞是问题的根源。因而,漏洞分析日益成为信息安全领域理论研究和实践工作的焦点,越来越引起世界各国的关注与重视。
  随着操作系统安全性逐步提高,安全防护软件日臻完善,攻击者利用用户态漏洞实施攻击变得越来越困难,因此,内核漏洞日益成为攻击的焦点。内核漏洞的利用将给系统的安全带来巨大的威胁,甚至会彻底瓦解安全防护措施。因此,内核漏洞的挖掘与利用已成为研究热点。
  为推动国内的漏洞分析和风险评估工作,提高国家信息安全保障能力和防御水平,中国信息安全测评中心长期跟踪和关注相关领域的理论进展和技术进步,有针对性地精选一些优秀书籍译成中文,供国内参考借鉴。
  本书内容涵盖了开发内核级漏洞利用手段所需的主要理论和方法,包括:内核和内核漏洞利用的基本概念、内核漏洞的分类方法及主要类别、成功利用内核漏洞所需经历的三个阶段等,并在研究UNIX家族、Mac OS X和Windows等不同类型操作系统自身特性的基础上,深入探讨了针对它们的利用代码编写方法,并建立了一套面向操作系统内核漏洞利用开发的行之有效的方法论,从攻防双方不同的视角,介绍了内核漏洞远程利用的方法以及防御措施。书中大量的实际漏洞利用技术及案例,不但能够帮助读者更好地理解那些深奥的理论,还可以帮助安全研究人员更加深入地了解内核攻击的方式和方法,为防御系统级的攻击,降低安全隐患提供了重要的理论支撑和技术保障。
  在本书翻译过程中,译者得到中国信息安全测评中心的张普含、王嘉捷、柳本金、王欣等同志,以及北京大学软件与微电子学院的何建杉、余天天、王斌、万成铖、沈阳、张开元、张任伟、李金诺、彭磊、汤云杰等师生的支持和帮助,在此深表感谢。
本书得到中国信息安全测评中心“漏洞分析与风险评估”专项工程的支持。

图书目录

译者序
序言
前言
致谢
作者简介
第一部分 内核态
第1章 从用户态利用到内核态利用2
引言2
内核和内核漏洞利用的世界2
漏洞利用的艺术4
为什么用户态漏洞利用不再有效7
内核态漏洞利用和用户态漏洞利用8
一个漏洞利用者的内核观10
用户态进程和调度10
虚拟内存11
开源操作系统和闭源操作系统14
小结14
相关阅读15
尾注15
第2章 内核漏洞分类16
引言16
未初始化的/未验证的/已损坏的指针解引用17
内存破坏漏洞20
内核栈漏洞20
内核堆漏洞21
整数误用22
算术/整数溢出23
符号转换错误24
竞态条件26
逻辑bug31
引用计数器溢出31
物理设备输入验证32
内核生成的用户态漏洞33
小结35
尾注36
第3章 成功内核利用进阶37
引言37
架构级概览38
基本概念38
x86和x86-6443
执行阶段46
放置shellcode46
伪造shellcode52
触发阶段55
内存破坏55
竞态条件66
信息收集阶段69
环境告诉我们什么70
环境不想告诉我们的:信息泄露74
小结75
相关阅读76
第二部分 UNIX家族、Mac OS X和Windows
第4章 UNIX家族78
引言78
UNIX家族成员79
Linux79
Solaris/OpenSolaris87
BSD衍生操作系统97
执行步骤97
滥用Linux的权限模型98
实战UNIX108
内核堆利用108
利用OpenSolaris的slab分配器109
利用Linux 2.6 SLAB^H^HUB 分配器127
Linux的栈溢出利用142
重拾 CVE-2009-3234148
小结156
尾注157
第5章 Mac OS X158
引言158
XNU概述159
Mach160
BSD160
IOKit160
系统调用表161
内核调试162
内核扩展 (kext)169
IOKit174
内核扩展审计174
执行步骤185
利用注释186
随意的内存重写186
基于栈的缓冲区溢出195
内存分配符利用208
竞态条件219
Snow Leopard利用219
小结219
尾注220
第6章 Windows221
引言221
Windows内核概述223
内核信息收集 223
DVWD介绍227
内核内部组织攻略228
内核调试232
执行阶段234
Windows验证模型234
编写shellcode242
Windows 漏洞利用实践253
重写任意内存253
栈缓冲区溢出261
小结278
尾注278
第三部分 远程内核漏洞利用
第7章 远程内核漏洞利用面临的挑战280
引言280
利用远程漏洞281
缺少公开信息281
缺少对远程目标的控制283
执行第一条指令284
直接执行流程重定向284
内核内存的任意写294
远程payload296
payload迁移297
KEP上下文297
多级shellcode306
小结311
尾注312
第8章 一个Linux案例313
引言313
SCTP的转发块堆内存损坏313
SCTP简要概述314
漏洞路径316
远程漏洞利用:总体分析319
获得任意内存重写原语320
远程调整堆布局320
创建SCTP消息:从相对到绝对内存的重写323
安装shellcode327
从中断上下文直接跳到用户态327
执行shellcode333
检查当前进程,模拟gettimeofday()函数333
执行反向连接334
恢复Vsyscall336
小结337
相关阅读337
尾注337
第四部分 展望
第9章 内核演变:未来内核攻防模式340
引言340
内核攻击341
保密性341
完整性342
可用性344
内核防御344
内核威胁的分析与建模345
内核防御机制346
内核保证机制347
超越内核bug:虚拟化350
虚拟层安全350
客户机内核安全351
小结351

教学资源推荐
作者: 周学广 等
作者: 马洪连,刘旸,韩瑜,孙亮
作者: [美]奥马尔·桑托斯(Omar Santos)著
作者: 蔡晶晶 李炜 主编
参考读物推荐
作者: [美]雪莉·大卫杜夫(Sherri Davidoff) 著
作者: Susan Young, Dave Aitel