译者序
译者简介
序言
前言
致谢
第一部分 背景
第1章 安全漏洞发掘方法学
1.1白盒测试
1.1.1源代码评审
1.1.2工具和自动化
1.1.3优点合缺点
1.2黑盒测试
1.2.1人工测试
1.2.2自动测试或模糊测试
1.2.3优点和缺点
1.3灰盒测试
1.3.1二进制审核
1.3.2自动化的二进制审核
1.3.3优点和缺点
1.4小结
第2章 什么是模糊测试
2.1模糊测试的定义
2.2模糊测试的历史
2.3模糊测试阶段
2.4模糊测试的局限性和期望
2.4.1访问控制缺陷
2.4.2设计逻辑不良
2.4.3后门
2.4.4内存破坏
2.4.5多阶段安全漏洞
2.5小结
第3章 模糊测试方法和模糊器类型
3.1模糊测试方法
3.1.1预先生成测试用例
3.1.2随机方法
3.1.3协议变异人工测试
3.1.4变异或强制性测试
3.1.5自动协议生成测试
3.2模糊器类型
3.2.1本地模糊器
3.2.2远程模糊器
3.2.3内存模糊器
3.2.4模糊器框架
3.3小结
第4章 数据表示和分析
4.1什么是协议
4.2协议域
4.3简单文本协议
4.4二进制协议
4.5网络协议
4.6文件格式
4.7常见的协议元素
4.7.1名字-值对
4.7.2块标识符
4.7.3块长度
4.7.4校验和
4.8小结
第5章 有效模糊测试的需求
5.1可重现性和文档记录
5.2可重用性
5.3过程状态和过程深度
5.4跟踪、代码覆盖和度量
5.5错误检测
5.6资源约束
5.7小结
第二部 分目标和自动化
第6章 自动化测试合测试数据生成
6.1自动化测试的价值
6.2有用的工具和库
6.2.1ETHEREAL/WIRESHARK
6.2.2LIBDASM和LIBDISASM
6.2.3LIBNET/LIBNETNT
6.2.4LIBPCAP
6.2.5METRO PACKET LIBRARY
6.2.6PTRACE
6.2.7PYTHON EXTENSIONS
6.3编程语言的选择
6.4测试数据生成和模糊启发式
6.4.1整型值
6.4.2字符串重复
6.4.3字段分隔符
6.4.4格式化字符串
6.4.5字符翻译
6.4.6目录遍历
6.4.7命令注入
6.5小结
第7章 环境变量和参数的模糊测试
7.1本地化模糊测试介绍
7.1.1命令行参数
7.1.2环境变量
7.2本地化模糊测试准则
7.3寻找目标程序
7.4本地化模糊测试方法
7.5枚举环境变量
7.6自动化的环境变量测试
7.7检测问题
7.8小结
第8章 环境变量和参数的模糊测试自动化
8.1iFUZZ本地化模糊器的特性
8.2iFUZZ的开发
8.3iFUZZ的开发语言
8.4实例研究
8.5益处和改进的余地
8.6小结
第9章 Web应用程序和服务器模糊测试
9.1什么是Web应用程序模糊测试
9.2目标应用
9.3测试方法
9.3.1建立目标环境
9.3.2输入
9.4漏洞
9.5异常检测
9.6小结
第10章 Web应用程序和服务器的模糊测试:自动化
10.1 Web应用模糊器
10.2WebFuzz的特性
10.2.1请求
10.2.2模糊变量
10.2.3响应
10.3必要的背景知识
10.3.1识别请求
10.3.2漏洞检测
10.4 WebFuzz的开发
10.4.1开发方法
10.4.2开发语言的选择
10.4.3设计
10.5实例研究
10.5.1目录遍历
10.5.2溢出
10.5.3SQL注入
10.5.4XSS脚本
10.6益处和改进的余地
10.7小结
第11章 文件格式模糊测试
11.1目标应用
11.2方法
11.2.1强制性或基于变异的模糊测试
11.2.2智能强制性或基于生成的模糊测试
11.3输入
11.4漏洞
11.4.1拒绝服务
11.4.2整数处理问题
11.4.3简单的栈和堆溢出
11.4.4逻辑错误
11.4.5格式化字符串
11.4.6竞争条件
11.5漏洞检测
11.6小结
第12章 文件格式模糊测试:UNIX平台上的自动化测试
12.1NOTSPIKEFILE和SPIKEFILE
12.2开发方法
12.2.1异常检测引擎
12.2.2异常报告(异常检测)
12.2.3核心模糊测试引擎
12.3有意义的代码片段
12.3.1通常感兴趣的UNIX信号
12.3.2不太感兴趣的UNIX信号
12.4僵死进程
12.5使用的注意事项
12.5.1ADOBE ACROBAT
12.5.2REALNETWORKS REALPLAYRE
12.6实例研究:REALPLAYER REALPIX格式化字符串漏洞
12.7语言
12.8小结
第13章 文件格式模糊测试:Windows平台上的自动化测试
13.1 Windows文件格式漏洞
13.2 FileFuzz的特性
13.2.1创建文件
13.2.2应用程序执行
13.2.3异常检测
13.2.4保存的审核
13.3必要的背景知识
13.4 FileFuzz的开发
13.4.1开发方法
13.4.2开发语言的选择
13.4.3设计
13.5实例研究
13.6益处和改进的余地
13.7小结
第14章 网络协议模糊测试
14.1什么是网络协议模糊测试
14.2目标应用
14.2.1数据链路层
14.2.2网络层
14.2.3传输层
14.2.4会话层
14.2.5表示层
14.2.6应用层
14.3测试方法
14.3.1强制性或基于变异的模糊测试
14.3.2智能强制性模糊测试和基于生成的模糊测试
14.3.3修改的客户端变异模糊测试
14.4错误检测
14.4.1人工方法(基于调试器)
14.4.2自动化方法(基于代理)
14.4.3其他方法
14.5小结
第15章 网络协议模糊测试:UNIX平台上的自动化测试
15.1使用SPIKE进行模糊测试
15.1.1选择测试目标
15.1.2协议逆向工程
15.2SPIKE 101
15.2.1模糊测试引擎
15.2.2通用的基于行的TCP模糊器
15.3基于块的协议建模
15.4SPIKE的额外特性
15.4.1特定于协议的模糊器
15.4.2特定于协议的模糊测试脚本
15.4.3通用的基于脚本的模糊器
15.5编写SPIKE NMAP模糊器脚本
15.6小结
第16章 网络协议模糊测试:Windows平台上的自动化测试
16.1ProtoFuzz的特性
16.1.1包结构
16.1.2捕获数据
16.1.3解析数据
16.1.4模糊变量
16.1.5发送数据
16.2必要的背景知识
16.2.1错误检测
16.2.2协议驱动程序
16.3ProtoFuzz的开发
16.3.1开发语言的选择
16.3.2包捕获库
16.3.3设计
16.4实例研究
16.5益处和改进的余地
16.6小结
第17章 Web浏览器模糊测试
17.1什么是Web浏览器模糊测试
17.2目标
17.3方法
17.3.1测试方法
17.3.2输入
17.4漏洞
17.5错误检测
17.6小结
第18章 Web浏览器的模糊测试:自动化
18.1组件对象模型的背景知识
18.1.1在Nutshell中的发展历史
18.1.2对象和接口
18.1.3ActiveX
18.2模糊器的开发
18.2.1枚举可加载的ActiveX控件
18.2.2属性、方法、参数和类型
18.2.3模糊测试和监视
18.3小结
第19章 内存数据的模糊测试
19.1内存数据模糊测试的概念及实施该测试的原因
19.2必需的背景知识
19.3究竟什么是内存数据模糊测试
19.4目标
19.5方法:变异循环插入
19.6方法:快照恢复变异
19.7测试速度和处理深度
19.8错误检测
19.9小结
第20章 内存数据的模糊测试:自动化
20.1所需要的特性集
20.2开发语言的选择
20.3Windows调试API
20.4将其整合在一起
20.4.1如何在特定点将“钩子”植入目标进程
20.4.2如何处理进程快照和恢复
20.4.3如何选择植入钩子的点
20.4.4如何对目标内存空间进行定位和变异
20.5一个最好的新工具PyDbg
20.6一个构想的示例
20.7小结
第三部分 高级模糊测试技术
第21章 模糊测试框架
21.1模糊测试框架的概念
21.2现有框架
21.2.1antiparser
21.2.2Dfuz
21.2.3SPIKE
21.2.4Peach
21.2.5通用模糊器
21.2.6Autodafe
21.3定制模糊器的实例研究:Shockwave Flash
21.3.1SWF文件的建模
21.3.2生成有效的数据
21.3.3对环境进行模糊测试
21.3.4测试方法
21.4模糊测试框架Sulley
21.4.1Sulley目录结构
21.4.2数据表示
21.4.3会话
21.4.4事后验证阶段
21.4.5一个完整的实例分析
21.5小结
第22章 自动化协议解析
22.1模糊测试存在的问题是什么
22.2启发式技术
22.2.1代理模糊测试
22.2.2改进的代理模糊测试
22.2.3反汇编启发式规则
22.3生物信息学
22.4遗传算法
22.5小结
第23章 模糊器跟踪
23.1我们究竟想要跟踪什么
23.2二进制代码可视化和基本块
23.2.1CFG
23.2.2CFG示例
23.3构造一个模糊器跟踪器
23.3.1刻画目标特征
23.3.2跟踪
23.3.3交叉引用
23.4对一个代码覆盖工具的分析
23.4.1PStalker设计概览
23.4.2数据源
23.4.3数据探查
23.4.4数据捕获
23.4.5局限性
23.4.6数据存储
23.5实例研究
23.5.1测试策略
23.5.2测试方法
23.6益处和改进的余地
23.7小结
第24章 智能故障检测
24.1基本的错误检测方法
24.2我们所要搜索的内容
24.3选择模糊值时的注意事项
24.4自动化的调试器监视
24.4.1一个基本的调试器监视器
24.4.2一个更加高级的调试器监视器
24.5调试器在应用程序前先看到的异常和调试器再次看到程序未捕获的异常的比较
24.6动态二进制插装
24.7小结
第四部分 展望
第25章 汲取的教训
25.1软件开发生命周期
25.1.1分析
25.1.2设计
25.1.3编码
25.1.4测试
25.1.5维护
25.1.6在SDLC中实现模糊测试
25.2开发者
25.3QA研究者
25.4安全问题研究者
25.5小结
第26章 展望
26.1商业工具
26.1.1安全性测试工具beSTORM
26.1.2BreakingPoint系统BPS-1000
26.1.3Codenomicon
26.1.4GLEG ProtoVer Professional
26.1.5安全性测试工具Mu-4000
26.1.6Security Innovation Holodeck
26.2发现漏洞的混合方法
26.3集成的测试平台
26.4小结
· · · · · · (
收起)