描述
包 装: 平塑勒是否套装: 否国际标准书号ISBN: 9787121466717丛书名: 安全技术大系
内容简介
本书系统地讲解软件漏洞分析与利用所需的各类工具、理论技术和实战方法,主要涉及Windows和Android系统平台。全书内容根据不同的软件漏洞类型划分,如堆栈溢出、沙盒逃逸、类型混淆、UAF、内核漏洞等,同时针对流行的移动安全,加入Android平台的漏洞分析与利用。本书以精心挑选的经典漏洞为例,以分享漏洞的分析技巧和工具为主,对漏洞的成因及利用和修复方法进行详细讲解,旨在“授人以渔”。本书最大的特点是以经典漏洞作为实战案例来讲解,摒弃空头理论,几乎是“一本用调试器写出来的书”。本书适合计算机相关专业的本科生、研究生,信息安全爱好者,软件安全、移动安全相关从业人员,软件开发与测试人员及黑客等阅读。
目 录
第1章 基础知识 1
1.1 漏洞的相关概念 1
1.1.1 什么是漏洞 1
1.1.2 漏洞的价值 1
1.1.3 0Day漏洞 2
1.1.4 PoC与Exploit 2
1.2 为什么要分析漏洞 2
1.3 常用分析工具 3
1.3.1 IDA——汇编利器 3
1.3.2 OllyDbg——破解与逆向常用调试器 4
1.3.3 Immunity Debugger——漏洞分析专用调试器 4
1.3.4 WinDbg——微软正宗调试器 5
1.3.5 x64dbg——Windows 64位调试器 6
1.3.6 Ghidra——反汇编器 7
1.3.7 GDB——Linux调试器 8
1.3.8 JEB——Android反编译器 9
1.3.9 其他工具 10
1.4 常见的漏洞分析方法 10
1.4.1 静态分析 10
1.4.2 动态调试 11
1.4.3 源码分析 11
1.4.4 补丁比较 12
1.4.5 污点追踪 12
1.5 学习资源 13
1.5.1 站点分享 13
1.5.2 书籍推荐 14
1.6 本章总结 15
第2章 栈溢出漏洞分析 16
2.1 栈溢出简史 16
2.2 栈溢出原理 17
2.3 CVE-2010-2883 Adobe Reader TTF字体SING表栈溢出漏洞 18
2.3.1 LuckyCat攻击事件 18
2.3.2 漏洞描述 19
2.3.3 分析环境 19
2.3.4 基于字符串定位的漏洞分析方法 20
2.3.5 样本Exploit技术分析 21
2.3.6 样本Shellcode恶意行为分析 27
2.3.7 漏洞修复 30
2.4 CVE-2010-3333 Microsoft RTF栈溢出漏洞 31
2.4.1 林来疯攻击事件 31
2.4.2 漏洞描述 32
2.4.3 分析环境 32
2.4.4 RTF文件格式 33
2.4.5 基于栈回溯的漏洞分析方法 34
2.4.6 漏洞利用原理分析 42
2.4.7 Office 2003与Office 2007 Exploit通用性研究 43
2.4.8 漏洞修复 46
2.5 CVE-2011-0104 Microsoft Excel TOOLBARDEF Record栈溢出漏洞 52
2.5.1 漏洞描述 52
2.5.2 分析环境 52
2.5.3 基于污点追踪思路的漏洞分析方法 53
2.5.4 漏洞修复 59
2.6 阿里旺旺ActiveX控件imageMan.dll栈溢出漏洞 60
2.6.1 漏洞描述 60
2.6.2 分析环境 61
2.6.3 针对ActiveX控件的漏洞分析方法 61
2.6.4 漏洞利用原理分析 64
2.7 CVE-2012-0158 Microsoft Office MSCOMCTL.ocx栈溢出漏洞 65
2.7.1 Lotus Blossom 行动 65
2.7.2 漏洞描述 66
2.7.3 分析环境 66
2.7.4 基于OffVis工具的Office漏洞分析方法 66
2.7.5 漏洞修复 72
2.8 本章总结 73
第3章 堆溢出漏洞分析 74
3.1 堆溢出简史 74
3.2 堆溢出原理 75
3.3 堆调试技巧 80
3.3.1 堆尾检查 81
3.3.2 页堆 82
3.4 CVE-2010-2553 Microsoft Cinepak Codec CVDecompress函数堆溢出漏洞 86
3.4.1 漏洞描述 86
3.4.2 分析环境 86
3.4.3 基于HeapPage的堆漏洞分析方法 86
3.4.4 漏洞修复 101
3.5 CVE-2012-0003 Microsoft Windows Media Player winmm.dll MIDI文件堆溢出漏洞 104
3.5.1 关于“蜘蛛”漏洞攻击包(Zhi-Zhu Exploit Pack) 104
3.5.2 漏洞描述 105
3.5.3 分析环境 105
3.5.4 MIDI文件格式 105
3.5.5 基于导图推算的漏洞分析方法 107
3.5.6 漏洞利用原理分析 120
3.5.7 补丁比较 127
3.6 CVE-2013-0077 Microsoft DirectShow quartz.dll m2p文件堆溢出漏洞 127
3.6.1 漏洞描述 127
3.6.2 基于HTC的漏洞分析方法 127
3.6.3 漏洞修复 131
3.7 CVE-2012-1876 Internet Explorer MSHTML.dll CalculateMinMax堆溢出漏洞 132
3.7.1 在Pwn2Own黑客大赛上用于攻破IE9的漏洞 132
3.7.2 分析环境 132
3.7.3 基于HPA的漏洞分析方法 132
3.7.4 通过信息泄露实现漏洞利用 146
3.7.5 漏洞修复 155
3.8 本章总结 157
第4章 整数溢出漏洞分析 158
4.1 整数溢出简史 158
4.2 整数溢出原理 158
4.2.1 基于栈的整数溢出 159
4.2.2 基于堆的整数溢出 160
4.3 CVE-2011-0027 Microsoft Data Access Components整数溢出漏洞 161
4.3.1 在Pwn2Own黑客大赛上用于攻破IE8的漏洞 161
4.3.2 基于堆分配记录的漏洞分析方法 162
4.3.3 补丁比较 170
4.4 CVE-2012-0774 Adobe Reader TrueType字体整数溢出漏洞 172
4.4.1 漏洞描述 172
4.4.2 PDF文件格式与常用分析工具 172
4.4.3 基于条件记录断点的漏洞分析方法 176
4.4.4 补丁分析 190
4.5 CVE-2013-0750 Firefox字符串替换整数溢出漏洞 191
4.5.1 漏洞描述 191
4.5.2 基于源码调试的漏洞分析方法 191
4.5.3 源码比对 201
4.6 CVE-2013-2551 Internet Explorer VML COALineDashStyleArray整数溢出漏洞 202
4.6.1 在Pwn2Own黑客大赛上攻破IE10的漏洞 202
4.6.2 基于类函数定位的漏洞分析方法 202
4.6.3 利用信息泄露实现漏洞利用 217
4.7 本章总结 220
第5章 格式化字符串漏洞分析 221
5.1 格式化字符串漏洞简史 221
5.2 格式化字符串漏洞的原理 221
5.3 CVE-2012-0809 Sudo sudo_debug函数格式化字符串漏洞 228
5.3.1 漏洞描述 228
5.3.2 通过源码比对分析漏洞 228
5.4 CVE-2012-3569 VMware OVF Tool格式化字符串漏洞 229
5.4.1 漏洞描述 229
5.4.2 基于输出消息的漏洞定位方法 229
5.4.3 漏洞利用原理分析 233
5.5 本章总结 236
第6章 双重释放漏洞分析 237
6.1 双重释放漏洞简史 237
6.2 双重释放漏洞的原理 237
6.3 CVE-2010-3974 Windows传真封面编辑器fxscover.exe双重释放漏洞 240
6.3.1 漏洞描述 240
6.3.2 通过栈回溯和堆状态判定漏洞类型 240
6.3.3 通过补丁比较确定漏洞成因及修复方法 243
6.4 CVE-2014-0502 Adobe Flash Player 双重释放漏洞 245
6.4.1 GreedyWonk行动 245
6.4.2 静态分析攻击样本 245
6.4.3 Shellcode自动化模拟执行 254
6.4.4 基于ROP指令地址的反向追踪 256
6.5 本章总结 264
第7章 释放重引用漏洞分析 265
7.1 释放重引用(Use After Free,UAF)漏洞简史 265
7.2 UAF漏洞的原理 265
7.3 CVE-2011-0065 Firefox mChannel UAF漏洞 268
7.3.1 漏洞描述 268
7.3.2 通过动态调试快速定位漏洞源码 268
7.3.3 漏洞利用原理分析 276
7.3.4 源码比对 277
7.4 CVE-2013-1347 Microsoft IE CGenericElement UAF漏洞 278
7.4.1 “水坑”攻击事件 278
7.4.2 通过HPA快速定位漏洞对象 278
7.4.3 逆向分析IE引擎对JavaScript代码的解析 281
7.4.4 追本溯源:探寻漏洞的根因 312
7.4.5 漏洞利用原理分析 315
7.5 CVE-2013-3346 Adobe Reader ToolButton UAF漏洞 317
7.5.1 “Epic Turla”网络间谍攻击行动 317
7.5.2 使用peepdf分析PDF恶意样本 317
7.5.3 漏洞利用原理分析 326
7.6 CVE-2015-0313 Adobe Flash Player Workers ByteArray UAF漏洞 328
7.6.1 漏洞描述 328
7.6.2 分析ActionScript虚拟机源码辅助漏洞调试 328
7.6.3 Flash JIT调试插件与符号文件 341
7.6.4 漏洞利用原理分析 342
7.6.5 漏洞修复 348
7.7 本章总结 348
第8章 数组越界访问漏洞分析 349
8.1 数组越界与溢出的关系 349
8.2 数组越界访问漏洞原理 349
8.3 CVE-2011-2110 Adobe Flash Player数组越界访问漏洞 351
8.3.1 漏洞描述 351
8.3.2 解决安装旧版Flash Player的限制问题 351
8.3.3 通过Perl脚本辅助分析样本 352
8.3.4 搭建服务器重现漏洞场景 358
8.3.5 通过修改样本代码定位漏洞 360
8.3.6 通过构造信息泄露利用漏洞 363
8.3.7 通过搜索指令序列分析补丁 367
8.4 CVE-2014-0160 OpenSSL TLS数组越界访问漏洞(“心脏滴血”) 369
8.4.1 漏洞描述 369
8.4.2 基于源码对比与跟踪的漏洞分析方法 370
8.4.3 利用漏洞盗取网站账号 376
8.5 本章总结 380
第9章 内核漏洞分析 381
9.1 Windows内核漏洞漫谈 381
9.2 Windows内核调试环境搭建 382
9.3 常见内核漏洞原理与利用 384
9.3.1 漏洞成因分析 384
9.3.2 漏洞利用原理分析 391
9.4 360安全卫士bregdrv.sys本地提权漏洞分析 399
9.4.1 漏洞描述 399
9.4.2 基于导出函数和I/O控制码的追踪分析 400
9.5 CVE-2011-2005 Windows Afd.sys本地提权漏洞 409
9.5.1 漏洞描述 409
9.5.2 从利用代码到漏洞函数的定位分析 409
9.5.3 补丁比较 412
9.6 CVE-2013-3660 Windows win32k.sys EPATHOB指针未初始化漏洞 412
9.6.1 漏洞描述 412
9.6.2 通过IDA定义结构体辅助分析 413
9.6.3 漏洞利用原理分析 417
9.7 CVE-2014-1767 Windows AFD.sys双重释放漏洞(Pwn2Own 2014) 423
9.7.1 Pwnie Awards 2014“最佳提权漏洞奖”得主 423
9.7.2 基于IOCTL处理函数自动追踪记录的分析方法 423
9.7.3 漏洞利用原理分析 440
9.7.4 补丁分析 446
9.8 本章总结 448
第10章 Android平台漏洞分析 449
10.1 Android平台漏洞简史 449
10.2 Android平台漏洞分类 452
10.3 常见的漏洞分析方法 453
10.3.1 APK静态分析 453
10.3.2 smali动态调试 454
10.3.3 so库动态调试 460
10.3.4 补丁源码比对 460
10.3.5 系统Java源码调试 463
10.3.6 系统C/C++源码调试 471
10.3.7 Android内核源码调试 473
10.4 智能插座漏洞分析 476
10.4.1 漏洞描述 476
10.4.2 静态逆向分析 477
10.4.3 利用漏洞控制网络上的任意插座 481
10.4.4 总结 486
10.5 CV
1.1 漏洞的相关概念 1
1.1.1 什么是漏洞 1
1.1.2 漏洞的价值 1
1.1.3 0Day漏洞 2
1.1.4 PoC与Exploit 2
1.2 为什么要分析漏洞 2
1.3 常用分析工具 3
1.3.1 IDA——汇编利器 3
1.3.2 OllyDbg——破解与逆向常用调试器 4
1.3.3 Immunity Debugger——漏洞分析专用调试器 4
1.3.4 WinDbg——微软正宗调试器 5
1.3.5 x64dbg——Windows 64位调试器 6
1.3.6 Ghidra——反汇编器 7
1.3.7 GDB——Linux调试器 8
1.3.8 JEB——Android反编译器 9
1.3.9 其他工具 10
1.4 常见的漏洞分析方法 10
1.4.1 静态分析 10
1.4.2 动态调试 11
1.4.3 源码分析 11
1.4.4 补丁比较 12
1.4.5 污点追踪 12
1.5 学习资源 13
1.5.1 站点分享 13
1.5.2 书籍推荐 14
1.6 本章总结 15
第2章 栈溢出漏洞分析 16
2.1 栈溢出简史 16
2.2 栈溢出原理 17
2.3 CVE-2010-2883 Adobe Reader TTF字体SING表栈溢出漏洞 18
2.3.1 LuckyCat攻击事件 18
2.3.2 漏洞描述 19
2.3.3 分析环境 19
2.3.4 基于字符串定位的漏洞分析方法 20
2.3.5 样本Exploit技术分析 21
2.3.6 样本Shellcode恶意行为分析 27
2.3.7 漏洞修复 30
2.4 CVE-2010-3333 Microsoft RTF栈溢出漏洞 31
2.4.1 林来疯攻击事件 31
2.4.2 漏洞描述 32
2.4.3 分析环境 32
2.4.4 RTF文件格式 33
2.4.5 基于栈回溯的漏洞分析方法 34
2.4.6 漏洞利用原理分析 42
2.4.7 Office 2003与Office 2007 Exploit通用性研究 43
2.4.8 漏洞修复 46
2.5 CVE-2011-0104 Microsoft Excel TOOLBARDEF Record栈溢出漏洞 52
2.5.1 漏洞描述 52
2.5.2 分析环境 52
2.5.3 基于污点追踪思路的漏洞分析方法 53
2.5.4 漏洞修复 59
2.6 阿里旺旺ActiveX控件imageMan.dll栈溢出漏洞 60
2.6.1 漏洞描述 60
2.6.2 分析环境 61
2.6.3 针对ActiveX控件的漏洞分析方法 61
2.6.4 漏洞利用原理分析 64
2.7 CVE-2012-0158 Microsoft Office MSCOMCTL.ocx栈溢出漏洞 65
2.7.1 Lotus Blossom 行动 65
2.7.2 漏洞描述 66
2.7.3 分析环境 66
2.7.4 基于OffVis工具的Office漏洞分析方法 66
2.7.5 漏洞修复 72
2.8 本章总结 73
第3章 堆溢出漏洞分析 74
3.1 堆溢出简史 74
3.2 堆溢出原理 75
3.3 堆调试技巧 80
3.3.1 堆尾检查 81
3.3.2 页堆 82
3.4 CVE-2010-2553 Microsoft Cinepak Codec CVDecompress函数堆溢出漏洞 86
3.4.1 漏洞描述 86
3.4.2 分析环境 86
3.4.3 基于HeapPage的堆漏洞分析方法 86
3.4.4 漏洞修复 101
3.5 CVE-2012-0003 Microsoft Windows Media Player winmm.dll MIDI文件堆溢出漏洞 104
3.5.1 关于“蜘蛛”漏洞攻击包(Zhi-Zhu Exploit Pack) 104
3.5.2 漏洞描述 105
3.5.3 分析环境 105
3.5.4 MIDI文件格式 105
3.5.5 基于导图推算的漏洞分析方法 107
3.5.6 漏洞利用原理分析 120
3.5.7 补丁比较 127
3.6 CVE-2013-0077 Microsoft DirectShow quartz.dll m2p文件堆溢出漏洞 127
3.6.1 漏洞描述 127
3.6.2 基于HTC的漏洞分析方法 127
3.6.3 漏洞修复 131
3.7 CVE-2012-1876 Internet Explorer MSHTML.dll CalculateMinMax堆溢出漏洞 132
3.7.1 在Pwn2Own黑客大赛上用于攻破IE9的漏洞 132
3.7.2 分析环境 132
3.7.3 基于HPA的漏洞分析方法 132
3.7.4 通过信息泄露实现漏洞利用 146
3.7.5 漏洞修复 155
3.8 本章总结 157
第4章 整数溢出漏洞分析 158
4.1 整数溢出简史 158
4.2 整数溢出原理 158
4.2.1 基于栈的整数溢出 159
4.2.2 基于堆的整数溢出 160
4.3 CVE-2011-0027 Microsoft Data Access Components整数溢出漏洞 161
4.3.1 在Pwn2Own黑客大赛上用于攻破IE8的漏洞 161
4.3.2 基于堆分配记录的漏洞分析方法 162
4.3.3 补丁比较 170
4.4 CVE-2012-0774 Adobe Reader TrueType字体整数溢出漏洞 172
4.4.1 漏洞描述 172
4.4.2 PDF文件格式与常用分析工具 172
4.4.3 基于条件记录断点的漏洞分析方法 176
4.4.4 补丁分析 190
4.5 CVE-2013-0750 Firefox字符串替换整数溢出漏洞 191
4.5.1 漏洞描述 191
4.5.2 基于源码调试的漏洞分析方法 191
4.5.3 源码比对 201
4.6 CVE-2013-2551 Internet Explorer VML COALineDashStyleArray整数溢出漏洞 202
4.6.1 在Pwn2Own黑客大赛上攻破IE10的漏洞 202
4.6.2 基于类函数定位的漏洞分析方法 202
4.6.3 利用信息泄露实现漏洞利用 217
4.7 本章总结 220
第5章 格式化字符串漏洞分析 221
5.1 格式化字符串漏洞简史 221
5.2 格式化字符串漏洞的原理 221
5.3 CVE-2012-0809 Sudo sudo_debug函数格式化字符串漏洞 228
5.3.1 漏洞描述 228
5.3.2 通过源码比对分析漏洞 228
5.4 CVE-2012-3569 VMware OVF Tool格式化字符串漏洞 229
5.4.1 漏洞描述 229
5.4.2 基于输出消息的漏洞定位方法 229
5.4.3 漏洞利用原理分析 233
5.5 本章总结 236
第6章 双重释放漏洞分析 237
6.1 双重释放漏洞简史 237
6.2 双重释放漏洞的原理 237
6.3 CVE-2010-3974 Windows传真封面编辑器fxscover.exe双重释放漏洞 240
6.3.1 漏洞描述 240
6.3.2 通过栈回溯和堆状态判定漏洞类型 240
6.3.3 通过补丁比较确定漏洞成因及修复方法 243
6.4 CVE-2014-0502 Adobe Flash Player 双重释放漏洞 245
6.4.1 GreedyWonk行动 245
6.4.2 静态分析攻击样本 245
6.4.3 Shellcode自动化模拟执行 254
6.4.4 基于ROP指令地址的反向追踪 256
6.5 本章总结 264
第7章 释放重引用漏洞分析 265
7.1 释放重引用(Use After Free,UAF)漏洞简史 265
7.2 UAF漏洞的原理 265
7.3 CVE-2011-0065 Firefox mChannel UAF漏洞 268
7.3.1 漏洞描述 268
7.3.2 通过动态调试快速定位漏洞源码 268
7.3.3 漏洞利用原理分析 276
7.3.4 源码比对 277
7.4 CVE-2013-1347 Microsoft IE CGenericElement UAF漏洞 278
7.4.1 “水坑”攻击事件 278
7.4.2 通过HPA快速定位漏洞对象 278
7.4.3 逆向分析IE引擎对JavaScript代码的解析 281
7.4.4 追本溯源:探寻漏洞的根因 312
7.4.5 漏洞利用原理分析 315
7.5 CVE-2013-3346 Adobe Reader ToolButton UAF漏洞 317
7.5.1 “Epic Turla”网络间谍攻击行动 317
7.5.2 使用peepdf分析PDF恶意样本 317
7.5.3 漏洞利用原理分析 326
7.6 CVE-2015-0313 Adobe Flash Player Workers ByteArray UAF漏洞 328
7.6.1 漏洞描述 328
7.6.2 分析ActionScript虚拟机源码辅助漏洞调试 328
7.6.3 Flash JIT调试插件与符号文件 341
7.6.4 漏洞利用原理分析 342
7.6.5 漏洞修复 348
7.7 本章总结 348
第8章 数组越界访问漏洞分析 349
8.1 数组越界与溢出的关系 349
8.2 数组越界访问漏洞原理 349
8.3 CVE-2011-2110 Adobe Flash Player数组越界访问漏洞 351
8.3.1 漏洞描述 351
8.3.2 解决安装旧版Flash Player的限制问题 351
8.3.3 通过Perl脚本辅助分析样本 352
8.3.4 搭建服务器重现漏洞场景 358
8.3.5 通过修改样本代码定位漏洞 360
8.3.6 通过构造信息泄露利用漏洞 363
8.3.7 通过搜索指令序列分析补丁 367
8.4 CVE-2014-0160 OpenSSL TLS数组越界访问漏洞(“心脏滴血”) 369
8.4.1 漏洞描述 369
8.4.2 基于源码对比与跟踪的漏洞分析方法 370
8.4.3 利用漏洞盗取网站账号 376
8.5 本章总结 380
第9章 内核漏洞分析 381
9.1 Windows内核漏洞漫谈 381
9.2 Windows内核调试环境搭建 382
9.3 常见内核漏洞原理与利用 384
9.3.1 漏洞成因分析 384
9.3.2 漏洞利用原理分析 391
9.4 360安全卫士bregdrv.sys本地提权漏洞分析 399
9.4.1 漏洞描述 399
9.4.2 基于导出函数和I/O控制码的追踪分析 400
9.5 CVE-2011-2005 Windows Afd.sys本地提权漏洞 409
9.5.1 漏洞描述 409
9.5.2 从利用代码到漏洞函数的定位分析 409
9.5.3 补丁比较 412
9.6 CVE-2013-3660 Windows win32k.sys EPATHOB指针未初始化漏洞 412
9.6.1 漏洞描述 412
9.6.2 通过IDA定义结构体辅助分析 413
9.6.3 漏洞利用原理分析 417
9.7 CVE-2014-1767 Windows AFD.sys双重释放漏洞(Pwn2Own 2014) 423
9.7.1 Pwnie Awards 2014“最佳提权漏洞奖”得主 423
9.7.2 基于IOCTL处理函数自动追踪记录的分析方法 423
9.7.3 漏洞利用原理分析 440
9.7.4 补丁分析 446
9.8 本章总结 448
第10章 Android平台漏洞分析 449
10.1 Android平台漏洞简史 449
10.2 Android平台漏洞分类 452
10.3 常见的漏洞分析方法 453
10.3.1 APK静态分析 453
10.3.2 smali动态调试 454
10.3.3 so库动态调试 460
10.3.4 补丁源码比对 460
10.3.5 系统Java源码调试 463
10.3.6 系统C/C++源码调试 471
10.3.7 Android内核源码调试 473
10.4 智能插座漏洞分析 476
10.4.1 漏洞描述 476
10.4.2 静态逆向分析 477
10.4.3 利用漏洞控制网络上的任意插座 481
10.4.4 总结 486
10.5 CV
评论
还没有评论。