首先说明,本周活动有效时间为2016年9月26日到2016年10月9日。本周为大家送出的书是由电子工业出版社出版,段念,赵勇翻译的《模糊测试-强制发掘安全漏洞的利器》。
目在介绍这本书之前,首先要感谢微信号为:631682315(FEIYU)同学赠送给玄魂工作室的内容读者的。
前言/序言
在图上可以看到,FEIYU同学正在招聘代码审计,感兴趣的读者可以直接加他的微信号,了解招聘需求。
下面我们来看看,这本书的简介。
《模糊测试:强制发掘安全漏洞的利器》是一本系统性描述模糊测试的专著,介绍了主要操作系统和主流应用类型的模糊测试方法,系统地描述了方法和工具,并使用实际案例帮助读者建立直观的认识。随着软件安全性问题变得越来越关键,传统的仅由组织内的少数安全专家负责安全的模式正受到越来越多的挑战。模糊测试是一种能够降低安全性测试门槛的方法,它通过高度自动化的手段让组织的开发和测试团队都能参与到安全性测试中,并能够通过启发式等方法不断积累安全测试的经验,帮助组织建立更有效的面向安全性的开发流程。
作者简介
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平台上
模糊测试是发现未知漏洞的艺术,是安全测试的进阶技术,是必知必会的知识。
下面关键来了,如果你心动了,如何得到本书呢?
1.在本篇文章下面留言,谈谈你对模糊测试的认识,理解,感悟或者有趣的故事和想法
2.让你的朋友帮助给你的留言点赞
3.如果你的感悟或者故事很精彩,可以投稿给我们。
评选标准:
1.点赞数最高的留言者,会获得本书
2.如果你有和本书内容相关的投稿,如果被采纳,在订阅号发布,本书优先奖励给你。
3.同时有多人投稿的话,回到第1条。
微信扫描下发二维码,关注订阅号,回复“每周一书”,了解最新的运行情况,最近的送书小活动,获取书籍的方法都在文章里面。
每周一书,总有一本是你喜欢的。
玄魂工作室-只关注程序员