基本信息
- 原书名:A Guide to Kernel Exploitation: Attacking the Core
- 原出版社: Syngress

编辑推荐
涵盖主流操作系统——UNIX系列、Mac OS X和Windows
详解常见方案,如一般内存损坏(栈溢出、堆溢出等)问题、逻辑错误和竞态条件等
从用户态漏洞利用引领到内核态漏洞利用的世界中,专注于漏洞利用实施步骤
内容简介
计算机书籍
《内核漏洞的利用与防范》系统地讲解内核级别漏洞利用所需的理论技术和方法,并将其应用于主流操作系统——UNIX家族、Mac OS X和 Windows。本书分4个部分:第一部分介绍漏洞利用的目标、内核以及理论基础;第二部分深入介绍了目前主流操作系统的细节,并针对不同错误类别分别编写了漏洞利用程序。第三部分将关注点从本地场景转移到远程利用的情景;第四部分介绍未来内核的攻防模式。本书不仅从软件安全研究人员的角度谈论如何发现软件漏洞,也从软件开发者的角度给出了防止软件出现漏洞的方法,以帮助软件编程人员开发出安全的软件系统。
《内核漏洞的利用与防范》内容详实,实例丰富,可操作性强,涉及主流操作系统内核漏洞利用的各个方面,适合软件开发人员、测试人员、安全工程师等阅读。
作译者
Massimiliano Oldani 目前担任Emaze网络的安全顾问。他主要的研究课题包括操作系统安全和内核漏洞。
技术编辑简介
Graham Speake 是Yokogawa电气公司首席系统架构师,该公司是一个工业自动化供应商。他目前为内核开发人员,并为多个国家的客户提供安全咨询和解决方案。他擅长工业自动化和过程控制安全、渗透测试、网络安全和网络设计。Graham经常在安全会议上发表演讲,并经常给世界各地的客户进行安全培训。Graham的背景包括:BP和ATOS/Origin的安全顾问,以及福特汽车公司的工程师。
Graham拥有位于威尔士的Swanseada大学学士学位,并且是ISA的成员之一。
目录
译者序
序言
前言
致谢
作者简介
第一部分 内核态
第1章 从用户态利用到内核态利用2
引言2
内核和内核漏洞利用的世界2
漏洞利用的艺术4
为什么用户态漏洞利用不再有效7
内核态漏洞利用和用户态漏洞利用8
一个漏洞利用者的内核观10
用户态进程和调度10
虚拟内存11
开源操作系统和闭源操作系统14
小结14
相关阅读15
尾注15
译者序
随着操作系统安全性逐步提高,安全防护软件日臻完善,攻击者利用用户态漏洞实施攻击变得越来越困难,因此,内核漏洞日益成为攻击的焦点。内核漏洞的利用将给系统的安全带来巨大的威胁,甚至会彻底瓦解安全防护措施。因此,内核漏洞的挖掘与利用已成为研究热点。
为推动国内的漏洞分析和风险评估工作,提高国家信息安全保障能力和防御水平,中国信息安全测评中心长期跟踪和关注相关领域的理论进展和技术进步,有针对性地精选一些优秀书籍译成中文,供国内参考借鉴。
本书内容涵盖了开发内核级漏洞利用手段所需的主要理论和方法,包括:内核和内核漏洞利用的基本概念、内核漏洞的分类方法及主要类别、成功利用内核漏洞所需经历的三个阶段等,并在研究UNIX家族、Mac OS X和Windows等不同类型操作系统自身特性的基础上,深入探讨了针对它们的利用代码编写方法,并建立了一套面向操作系统内核漏洞利用开发的行之有效的方法论,从攻防双方不同的视角,介绍了内核漏洞远程利用的方法以及防御措施。书中大量的实际漏洞利用技术及案例,不但能够帮助读者更好地理解那些深奥的理论,还可以帮助安全研究人员更加深入地了解内核攻击的方式和方法,为防御系统级的攻击,降低安全隐患提供了重要的理论支撑和技术保障。
在本书翻译过程中,译者得到中国信息安全测评中心的张普含、王嘉捷、柳本金、王欣等同志,以及北京大学软件与微电子学院的何建杉、余天天、王斌、万成铖、沈阳、张开元、张任伟、李金诺、彭磊、汤云杰等师生的支持和帮助,在此深表感谢。
本书得到中国信息安全测评中心“漏洞分析与风险评估”专项工程的支持。
前言
目前针对用户态漏洞利用的安全措施较以往有所增加,同时,内核态的漏洞利用也变得越来越流行。本书覆盖了开发可靠和有效的内核态攻击所需的理论技术和方法,并将它们应用于不同的操作系统—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上可以找到,它也是报告错误的主要参考;您也可以联系我们获得更多的资料。
序言
我很少阅读关于漏洞利用技术的书籍,因为很多书只提供了很少或是过时的知识,或者只是简单地枚举出其他人完成的攻击。另外,书籍并不能提供动手进行漏洞利用开发的学习,或是带来在数天努力工作之后一个“#”命令行提示的乐趣,特别是一个内核漏洞被利用后所带来的快感。是时候将这种感觉写在纸上了,它将节省其他开发人员的时间,减少令人崩溃和头痛的处境。
除了需要漏洞利用重要的技巧和艺术之外,编写漏洞利用特别是内核漏洞利用需要对操作系统原理具有深层次理解。这本书绝对有助于实现上述目的,并且还能丰富我书架上内核和驱动编程方面的书籍。
我当然知道这本书适合的读者,希望大量的内核和驱动开发人员也来读这本书。我的下个内核代码审查的工作就要开始了,希望这本书在那之前就可以出版。
Sebastian Krahmer
系统程序员与漏洞利用工程师
媒体评论
——Golden G. Richard III博士, 新奥尔良大学计算机系教授,数字取证咨询公司CTO