书籍详情

模糊测试:强制发掘安全漏洞的利器

模糊测试:强制发掘安全漏洞的利器

作者:(美)Michael.Sutton,(美)Adam.Greene,(美)Pedram.Amini 著,段念,赵勇 译

出版社:电子工业出版社

出版时间:2013-10-01

ISBN:9787121210839

定价:¥89.00

购买这本书可以去
内容简介
  随着软件安全性问题变得越来越关键,传统的仅由组织内的少数安全专家负责安全的模式正受到越来越多的挑战。模糊测试是一种能够降低安全性测试门槛的方法,它通过高度自动化的手段让组织的开发和测试团队都能参与到安全性测试中,并能够通过启发式等方法不断积累安全测试的经验,帮助组织建立更有效的面向安全性的开发流程。本书是一本系统性描述模糊测试的专著,介绍了主要操作系统和主流应用类型的模糊测试方法,系统地描述了方法和工具,并使用实际案例帮助读者建立直观的认识。无论读者是否已有一定的安全性测试经验,本书都能够让你立即获得收益。
作者简介
  Micheal Sutton是SPI Dynamics的安全性专业顾问(Security Evangelist)。作为安全性专业顾问,Michael负责识别、研究及提出Web应用安全性历史上出现的问题。他经常在主要的信息安全会议上演讲,写作了大量文章,并在多种信息安全主题中被引用。Michael同时也是Web 应用安全性协会(Web Application Security Consortium,WASC)的会员,领导着Web应用安全性统计项目。在加入SPI Dynamics之前,Michael是iDefense/VeriSign的总监,领导iDefense Labs这个世界级的研究团队,该团队的目标是发现和研究安全性漏洞。Michael还在百慕大建立了为安永服务的信息系统保证和咨询服务(Information System Assurance and Advisory Services,ISAAS)。Michael拥有阿尔伯塔大学和乔治华盛顿大学的学位。Michael是一个骄傲的加拿大人,在他看来,曲棍球是一种信仰而不只是一种运动。在工作之外,Micheal还是Fairfax志愿救火部门的一名士官。Adam Greene是某大金融新闻公司的工程师,公司位于纽约。在加入这家公司之前,Adam是iDefense的工程师,iDefense是位于弗吉尼亚州雷斯顿城的一家智能公司。Adam在计算机安全性方面的兴趣主要在于可信利用(reliable exploitation)方法、模糊测试,以及开发基于UNIX系统的利用漏洞的工具。Pedram Amini目前领导着TippingPoint的安全研究和产品安全评估团队,在此之前,他是iDefense Labes的助理总监和创始人之一。顶着“助理总监”这个奇怪的头衔,Pedram在逆向工程的基础方面投入了相当多的时间——开发自动化工具、插件及脚本。他最近的项目(也叫“Babies”)包括PaiMei逆向工程框架和Sulley模糊测试框架。出于热情,Pedram创建了OpenRCE.org,一个专注于逆向工程的艺术和科学的社区网站。他在RECon、BlackHat、DefCon、ShmooCon和ToorCon上都进行过演讲,并教授了多次逆向工程课程。Pedram拥有杜兰大学的计算机科学学位。
目录
译者序
前言
原书序
致谢
关于作者
第一部分  基础知识
第1章  安全漏洞发现方法学
1.1  白盒测试
1.1.1  代码评审(Source Code Review)
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  多阶段安全漏洞(MuliStage Vulnerability)
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  简单文本协议(Plain Text Protocols)
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.1  ETHEREAL/WIRESHARK
6.2.2  LIBDASM和LIBDISASM
6.2.3  LIBNET/LIBNETNT
6.2.4  LIBPCAP
6.2.5  METRO PACKET LIBRARY
6.2.6  PTRACE
6.2.7  PYTHON扩展
6.3  编程语言的选择
6.4  数据生成与启发式模糊测试(Fuzz Heuristics)
6.4.1  整数值
6.4.2  字符串重复(String Repetitions)
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.3.1  UNIX文件权限释义
7.4  本地模糊测试方法
7.5  枚举环境变量
7.5.1  GNU调试器(GNU Debug,GDB)法
7.6  自动化的环境变量模糊测试
7.6.1  库预加载(Library Preloading)
7.7  检测问题
7.8  小结
第8章  自动化的环境变量与参数模糊测试
8.1  iFUZZ本地模糊测试器的功能
8.2  开发iFUZZ工具
8.2.1  开发方法
8.3  iFUZZ使用的编程语言
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.2  特性
10.2.1  请求
10.2.2  模糊变量
10.2.3  响应
10.3  必需的背景信息
10.3.1  识别请求
10.3.2  检测
10.4  开发
10.4.1  方法
10.4.2  选择编程语言
10.4.3  设计
10.5  案例研究
10.5.1  目录遍历(Directory Traversal)
10.5.2  溢出
10.5.3  SQL注入
10.5.4  XSS脚本
10.6  优点和可改进的空间
10.7  小结
第11章  文件格式模糊测试
11.1  目标
11.2  方法
11.2.1  强制或是基于变异的模糊测试
11.2.2  智能强制或基于生成的模糊测试
11.3  输入
11.4  安全漏洞
11.4.1  拒绝服务(Daniel of Service,DoS)
11.4.2  整数处理问题
11.4.3  简单的栈和堆溢出
11.4.4  逻辑错误
11.4.5  格式字符串
11.4.6  竞争条件(Race Condition)
11.5  检测
11.6  小结
第12章  UNIX平台上的文件格式自动化模糊测试
12.1  notSPIKEfile和SPIKEfile
12.1.1 不包含的功能
12.2  开发过程
12.2.1  异常监测引擎
12.2.2  异常报告(异常监测)
12.2.3  核心模糊测试引擎
12.3  有意义的代码片段
12.3.1  UNIX中常见的我们可能感兴趣的信号
12.3.2  不那么感兴趣的信号
12.4  僵尸进程(Zombie Process)
12.5  使用注意事项
12.5.1  Adobe Acrobat
12.5.2  RealNetworks RealPlayer
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  保存好的审计(audit)
13.3  必需的背景信息
13.3.1  识别目标应用
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.2  SPIKE必要知识
15.2.1  模糊引擎
15.2.2  基于行的通用TCP模糊测试器
15.3  基于块的协议模型
15.4  其他的SPIKE特性
15.4.1  针对协议的模糊测试器
15.4.2  针对协议的模糊测试脚本
15.4.3  基于脚本的通用模糊测试器
15.5  编写SPIKE NMAP模糊测试器脚本
15.6  小结
第16章  Windows平台上
猜您喜欢

读书导航