译者序
序言
前言
致谢
作者简介
第一部分 内核态
第1章 从用户态利用到内核态利用
引言
内核和内核漏洞利用的世界
漏洞利用的艺术
为什么用户态漏洞利用不再有效
内核态漏洞利用和用户态漏洞利用
一个漏洞利用者的内核观
用户态进程和调度
虚拟内存
开源操作系统和闭源操作系统
小结
相关阅读
尾注
第2章 内核漏洞分类
引言
未初始化的/未验证的/已损坏的指针解引用
内存破坏漏洞
内核栈漏洞
内核堆漏洞
整数误用
算术/整数溢出
符号转换错误
竞态条件
逻辑
引用计数器溢出
物理设备输入验证
内核生成的用户态漏洞
小结
尾注
第3章 成功内核利用进阶
引言
架构级概览
基本概念
x86和x86-64
执行阶段
放置shellcode
伪造shellcode
触发阶段
内存破坏
竞态条件
信息收集阶段
环境告诉我们什么
环境不想告诉我们的:信息泄露
小结
相关阅读
第二部分 UNIX家族、Mac OS X和Windows
第4章 UNIX家族
引言
UNIX家族成员
Linux
Solaris/OpenSolaris
BSD衍生操作系统
执行步骤
滥用Linux的权限模型
实战UNIX1
内核堆利用
利用OpenSolaris的slab分配器
利用Linux 2.6 SLAB^H^HUB 分配器
Linux的栈溢出利用
重拾 CVE-2009-3234
小结
尾注
第5章 Mac OS
引言
XNU概述
Mach
BSD
IOKit
系统调用表
内核调试
内核扩展 (kext)
IOKit
内核扩展审计
执行步骤
利用注释
随意的内存重写
基于栈的缓冲区溢出
内存分配符利用
竞态条件
Snow Leopard利用
小结
尾注
第6章 Windows
引言
Windows内核概述
内核信息收集
DVWD介绍
内核内部组织攻略
内核调试
执行阶段
Windows验证模型
编写shellcode
Windows 漏洞利用实践
重写任意内存
栈缓冲区溢出
小结
尾注
第三部分 远程内核漏洞利用
第7章 远程内核漏洞利用面临的挑战
引言
利用远程漏洞
缺少公开信息
缺少对远程目标的控制
执行第一条指令
直接执行流程重定向
内核内存的任意写
远程payload
payload迁移
KEP上下文
多级shellcode
小结
尾注
第8章 一个Linux案例
引言
SCTP的转发块堆内存损坏
SCTP简要概述
漏洞路径
远程漏洞利用:总体分析
获得任意内存重写原语
远程调整堆布局
创建SCTP消息:从相对到绝对内存的重写
安装shellcode
从中断上下文直接跳到用户态
执行shellcode
检查当前进程,模拟gettimeofday()函数
执行反向连接
恢复Vsyscall
小结
相关阅读
尾注
第四部分 展望
第9章 内核演变:未来内核攻防模式
引言
内核攻击
保密性
完整性
可用性
内核防御
内核威胁的分析与建模
内核防御机制
内核保证机制
超越内核bug:虚拟化
虚拟层安全
客户机内核安全
小结
^ 收 起