《模糊测试—强制性安全漏洞发掘》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)斯顿(Sutton
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2009
  • ISBN:9787111257554
  • 页数:363 页
图书介绍:

第一部分 背景 1

第1章 安全漏洞发掘方法学 1

1.1 白盒测试 1

1.1.1 源代码评审 1

1.1.2 工具和自动化 3

1.1.3 优点和缺点 5

1.2 黑盒测试 5

1.2.1 人工测试 6

1.2.2 自动测试或模糊测试 7

1.2.3 优点和缺点 8

1.3 灰盒测试 9

1.3.1 进制审核 9

1.3.2 自动化的二进制审核 11

1.3.3 优点和缺点 12

1.4 小结 12

第2章 什么是模糊测试 13

2.1 模糊测试的定义 13

2.2 模糊测试的历史 14

2.3 模糊测试阶段 17

2.4 模糊测试的局限性和期望 18

2.4.1 访问控制缺陷 18

2.4.2 设计逻辑不良 19

2.4.3 后门 19

2.4.4 内存破坏 19

2.4.5 多阶段安全漏洞 20

2.5 小结 20

第3章 模糊测试方法和模糊器类型 21

3.1 模糊测试方法 21

3.1.1 预先生成测试用例 21

3.1.2 随机方法 21

3.1.3 协议变异人工测试 22

3.1.4 变异或强制性测试 23

3.1.5 自动协议生成测试 23

3.2 模糊器类型 23

3.2.1 本地模糊器 24

3.2.2 远程模糊器 25

3.2.3 内存模糊器 27

3.2.4 模糊器框架 28

3.3 小结 29

第4章 数据表示和分析 30

4.1 什么是协议 30

4.2 协议域 31

4.3 简单文本协议 32

4.4 二进制协议 32

4.5 网络协议 35

4.6 文件格式 36

4.7 常见的协议元素 38

4.7.1 名字-值对 39

4.7.2 块标识符 39

4.7.3 块长度 39

4.7.4 校验和 39

4.8 小结 39

第5章 有效模糊测试的需求 40

5.1 可重现性和文档记录 40

5.2 可重用性 41

5.3 过程状态和过程深度 42

5.4 跟踪、代码覆盖和度量 44

5.5 错误检测 44

5.6 资源约束 45

5.7 小结 46

第二部分 目标和自动化第6章 自动化测试和测试数据生成 47

6.1 自动化测试的价值 47

6.2 有用的工具和库 48

6.2.1 ETHEREAL/WIRESHARK 48

6.2.2 LIBDASM和LIBDISASM 48

6.2.3 LIBNET/LIBNETNT 49

6.2.4 LIBPCAP 49

6.2.5 METRO PACKET LIBRARY 49

6.2.6 PTRACE 49

6.2.7 PYTHON EXTENSIONS 49

6.3 编程语言的选择 50

6.4 测试数据生成和模糊启发式 50

6.4.1 整型值 51

6.4.2 字符串重复 53

6.4.3 字段分隔符 53

6.4.4 格式化字符串 55

6.4.5 字符翻译 55

6.4.6 目录遍历 56

6.4.7 命令注入 56

6.5 小结 57

第7章 环境变量和参数的模糊测试 58

7.1 本地化模糊测试介绍 58

7.1.1 命令行参数 58

7.1.2 环境变量 58

7.2 本地化模糊测试准则 60

7.3 寻找目标程序 60

7.4 本地化模糊测试方法 63

7.5 枚举环境变量 63

7.6 自动化的环境变量测试 64

7.7 检测问题 65

7.8 小结 67

第8章 环境变量和参数的模糊测试:自动化 68

8.1 iFUZZ本地化模糊器的特性 68

8.2 iFUZZ的开发 69

8.3 iFUZZ的开发语言 73

8.4 实例研究 73

8.5 益处和改进的余地 74

8.6 小结 74

第9章 Web应用程序和服务器模糊测试 75

9.1 什么是Web应用程序模糊测试 75

9.2 目标应用 77

9.3 测试方法 78

9.3.1 建立目标环境 78

9.3.2 输入 79

9.4 漏洞 88

9.5 异常检测 90

9.6 小结 91

第10章 Web应用程序和服务器的模糊测试:自动化 92

10.1 Web应用模糊器 92

10.2 WebFuzz的特性 94

10.2.1 请求 94

10.2.2 模糊变量 95

10.2.3 向应 96

10.3 必要的背景知识 97

10.3.1 识别请求 97

10.3.2 漏洞检测 98

10.4 WebFuzz的开发 100

10.4.1 开发方法 100

10.4.2 开发语言的选择 100

10.4.3 设计 100

10.5 实例研究 106

10.5.1 目录遍历 106

10.5.2 溢出 107

10.5.3 SQL注入 109

10.5.4 XSS脚本 111

10.6 益处和改进的余地 114

10.7 小结 114

第11章 文件格式模糊测试 115

11.1 目标应用 115

11.2 方法 116

11.2.1 强制性或基于变异的模糊测试 117

11.2.2 智能强制性或基于生成的模糊测试 118

11.3 输入 118

11.4 漏洞 119

11.4.1 拒绝服务 119

11.4.2 整数处理问题 119

11.4.3 简单的栈和堆溢出 120

11.4.4 逻辑错误 121

11.4.5 格式化字符串 121

11.4.6 竞争条件 121

11.5 漏洞检测 121

11.6 小结 122

第12章 文件格式模糊测试:UNIX平台上的自动化测试 123

12.1 NOTSPIKEFILE和SPIKEFILE 123

12.2 开发方法 124

12.2.1 异常检测引擎 124

12.2.2 异常报告(异常检测) 124

12.2.3 核心模糊测试引擎 125

12.3 有意义的代码片段 126

12.3.1 通常感兴趣的UNIX信号 127

12.3.2 不太感兴趣的UNIX信号 128

12.4 僵死进程 128

12.5 使用的注意事项 130

12.5.1 ADOBE ACROBAT 131

12.5.2 REALNETWORKS REALPLAYRE 131

12.6 实例研究:REALPLAYER REALPIX格式化字符串漏洞 131

12.7 语言 133

12.8 小结 133

第13章 文件格式模糊测试:Windows平台上的自动化测试 134

13.1 Windows文件格式漏洞 134

13.2 FileFuzz的特性 136

13.2.1 创建文件 136

13.2.2 应用程序执行 138

13.2.3 异常检测 138

13.2.4 保存的审核 139

13.3 必要的背景知识 140

13.4 FileFuzz的开发 142

13.4.1 开发方法 143

13.4.2 开发语言的选择 143

13.4.3 设计 143

13.5 实例研究 149

13.6 益处和改进的余地 152

13.7 小结 152

第14章 网络协议模糊测试 153

14.1 什么是网络协议模糊测试 153

14.2 目标应用 155

14.2.1 数据链路层 156

14.2.2 网络层 156

14.2.3 传输层 157

14.2.4 会话层 157

14.2.5 表示层 157

14.2.6 应用层 157

14.3 测试方法 158

14.3.1 强制性或基于变异的模糊测试 158

14.3.2 智能强制性模糊测试和基于生成的模糊测试 158

14.3.3 修改的客户端变异模糊测试 159

14.4 错误检测 159

14.4.1 人工方法(基于调试器) 160

14.4.2 自动化方法(基于代理) 160

14.4.3 其他方法 160

14.5 小结 160

第15章 网络协议模糊测试:UNIX平台上的自动化测试 161

15.1 使用SPIKE进行模糊测试 161

15.1.1 选择测试目标 161

15.1.2 协议逆向工程 162

15.2 SPIKE 101 164

15.2.1 模糊测试引擎 164

15.2.2 通用的基于行的TCP模糊器 165

15.3 基于块的协议建模 166

15.4 SPIKE的额外特性 167

15.4.1 特定于协议的模糊器 167

15.4.2 特定于协议的模糊测试脚本 167

15.4.3 通用的基于脚本的模糊器 168

15.5 编写SPIKE NMAP模糊器脚本 168

15.6 小结 171

第16章 网络协议模糊测试:Windows平台上的自动化测试 172

16.1 ProtoFuzz的特性 172

16.1.1 包结构 172

16.1.2 捕获数据 173

16.1.3 解析数据 173

16.1.4 模糊变量 174

16.1.5 发送数据 175

16.2 必要的背景知识 175

16.2.1 错误检测 175

16.2.2 协议驱动程序 175

16.3 ProtoFuzz的开发 176

16.3.1 开发语言的选择 176

16.3.2 包捕获库 176

16.3.3 设计 177

16.4 实例研究 181

16.5 益处和改进的余地 182

16.6 小结 183

第17章 Web浏览器模糊测试 184

17.1 什么是Web浏览器模糊测试 184

17.2 目标 185

17.3 方法 185

17.3.1 测试方法 185

17.3.2 输入 186

17.4 漏洞 193

17.5 错误检测 194

17.6 小结 195

第18章 Web浏览器的模糊测试:自动化 196

18.1 组件对象模型的背景知识 196

18.1.1 在Nutshell中的发展历史 196

18.1.2 对象和接口 197

18.1.3 ActiveX 197

18.2 模糊器的开发 199

18.2.1 枚举可加载的ActiveX控件 200

18.2.2 属性、方法、参数和类型 203

18.2.3 模糊测试和监视 207

18.3 小结 208

第19章 内存数据的模糊测试 209

19.1 内存数据模糊测试的概念及实施该测试的原因 209

19.2 必需的背景知识 210

19.3 究竟什么是内存数据模糊测试 213

19.4 目标 214

19.5 方法:变异循环插入 214

19.6 方法:快照恢复变异 215

19.7 测试速度和处理深度 216

19.8 错误检测 217

19.9 小结 217

第20章 内存数据的模糊测试:自动化 219

20.1 所需要的特性集 219

20.2 开发语言的选择 220

20.3 Windows调试API 222

20.4 将其整合在一起 225

20.4.1 如何在特定点将“钩子”植入目标进程 226

20.4.2 如何处理进程快照和恢复 228

20.4.3 如何选择植入钩子的点 231

20.4.4 如何对目标内存空间进行定位和变异 231

20.5 一个最好的新工具PyDbg 231

20.6 一个构想的示例 233

20.7 小结 244

第三部分 高级模糊测试技术第21章 模糊测试框架 245

21.1 模糊测试框架的概念 245

21.2 现有框架 247

21.2.1 antiparser 247

21.2.2 Dfuz 249

21.2.3 SPIKE 252

21.2.4 Peach 255

21.2.5 通用模糊器 257

21.2.6 Autodafé 259

21.3 定制模糊器的实例研究:Shockwave-Flash 260

21.3.1 SWF文件的建模 261

21.3.2 生成有效的数据 270

21.3.3 对环境进行模糊测试 271

21.3.4 测试方法 272

21.4 模糊测试框架Sulley 272

21.4.1 Sulley目录结构 272

21.4.2 数据表示 274

21.4.3 会话 282

21.4.4 事后验证阶段 286

21.4.5 一个完整的实例分析 290

21.5 小结 295

第22章 自动化协议解析 297

22.1 模糊测试存在的问题是什么 297

22.2 启发式技术 299

22.2.1 代理模糊测试 299

22.2.2 改进的代理模糊测试 300

22.2.3 反汇编启发式规则 302

22.3 生物信息学 303

22.4 遗传算法 305

22.5 小结 309

第23章 模糊器跟踪 310

23.1 我们究竟想要跟踪什么 310

23.2 二进制代码可视化和基本块 311

23.2.1 CFG 312

23.2.2 CFG示例 312

23.3 构造一个模糊器跟踪器 313

23.3.1 刻画目标特征 314

23.3.2 跟踪 314

23.3.3 交叉引用 316

23.4 对一个代码覆盖工具的分析 318

23.4.1 PStalker设计概览 319

23.4.2 数据源 320

23.4.3 数据探查 321

23.4.4 数据捕获 321

23.4.5 局限性 321

23.4.6 数据存储 322

23.5 实例研究 324

23.5.1 测试策略 325

23.5.2 测试方法 327

23.6 益处和改进的余地 330

23.7 小结 333

第24章 智能故障检测 334

24.1 基本的错误检测方法 334

24.2 我们所要搜索的内容 336

24.3 选择模糊值时的注意事项 340

24.4 自动化的调试器监视 341

24.4.1 一个基本的调试器监视器 341

24.4.2 一个更加高级的调试器监视器 344

24.5 调试器在应用程序前先看到的异常和调试器再次看到程序未捕获的异常的比较 347

24.6 动态二进制插装 348

24.7 小结 350

第四部分 展望 351

第25章 汲取的教训 351

25.1 软件开发生命周期 351

25.1.1 分析 353

25.1.2 设计 353

25.1.3 编码 354

25.1.4 测试 354

25.1.5 维护 354

25.1.6 在SDLC中实现模糊测试 355

25.2 开发者 355

25.3 QA研究者 355

25.4 安全问题研究者 356

25.5 小结 356

第26章 展望 357

26.1 商业工具 357

26.1.1 安全性测试工具beSTORM 357

26.1.2 BreakingPoint系统BPS-1000 358

26.1.3 Codenomicon 358

26.1.4 GLEG ProtoVer Professional 360

26.1.5 安全性测试工具Mu-4000 361

26.1.6 Security Innovation Holodeck 361

26.2 发现漏洞的混合方法 362

26.3 集成的测试平台 362

26.4 小结 363