模糊测试(Fuzz testing)
模糊测试(fuzz testing)是一种安全测试方法,他介于完全的手工测试和完全的自动化测试之间。为什么是介于那两者之间?首先完全的手工测试即是渗透测试,测试人员可以模拟黑客恶意进入系统、查找漏洞,这对测试人员的要求比较高。能力强的测试人员可以发现比较多或者高质量的安全性问题,但是如果测试人员的能力不够,可能就不能找到足够多、威胁大的安全漏洞。所有渗透测试对人员能力的依赖性强,成本高,难以大规模的实施。
但是想用完全的自动化来实现渗透测试也不可行,同一套测试用例和方法不可能不加修改的就用在不同的产品上,因为各个产品的需求、实现、功能等等都不一样。测试过程中还需要测试人员的介入来分析结果、判断漏洞等等。那么,这种情况下我们就可以引入模糊测试。
为了简单起见,假定我们要测试的应用是一个C/S应用的服务端程序。这个程序运行在Unix平台上,名字叫做Tserver。我们唯一知道的信息就是客户端和Tserver之间使用基于TCP/IP的自定义协议进行通讯。这种情况下,我们该如何尝试找到应用系统中可能的漏洞?
方法1:
如果我们手头上有Tserver的源代码,通过代码审查显然可以找到可能的漏洞。就算没有源代码,通过逆向工程方式,用代码审查的方式也可以达到找到漏洞的目的。当然,这必然要求审查者具有足够好的技能,而且,被测应用规模越大,需要付出的成本也就越高。
方法2:
我们可以在知道产品服务器端和客户端的通信协议后,根据协议的格式、定义,自己准备大量的测试数据,从客户端发送给服务器端,从而试图找到一些安全漏洞。
但是分析通信协议很难,而且自己准备数据成本太高,那么我们就可以用模糊测试的方式,让机器生成测试数据,病发送给服务器,最后测试人员再对测试结果进行分析。
模糊测试充分利用了机器的能力:随机生成和发送数据;同时,也尝试将安全专家在安全性方面的经验引入进来。从执行过程来说,模糊测试的执行过程非常简单:
- 测试工具通过随机或是半随机的方式生成大量数据;
- 测试工具将生成的数据发送给被测试的系统(输入);
- 测试工具检测被测系统的状态(如是否能够响应,响应是否正确等);
- 根据被测系统的状态判断是否存在潜在的安全漏洞。
比如我们知道一个Tserver和客户端的通信协议的定义和格式,我们就可以用一种模糊测试工具用模板方式把协议描述出来,然后工具根据模板生成大量的测试数据,然后把测试数据发送给Tserver。同时测试人员监控Tserver(可以通过其他工具),假如Tserver出现异常比如无响应、响应错误等等,测试人员就可以通过日志等资料分析问题,并报告异常。
可以阅读《模糊测试——强制发掘安全漏洞的利器》来了解更多模糊测试。
模糊测试工具:
一般有Spike,Bunny,teenage mutant ninja turtles,sulley等等,Cisco用Codenomicon。
参考:http://www.ibm.com/developerworks/cn/java/j-fuzztest.html
https://en.wikipedia.org/wiki/Fuzz_testing
模糊测试(Fuzz testing)的更多相关文章
- 模糊测试(fuzz testing)介绍(一)
模糊测试(fuzz testing)是一类安全性测试的方法.说起安全性测试,大部分人头脑中浮现出的可能是一个标准的“黑客”场景:某个不修边幅.脸色苍白的年轻人,坐在黑暗的房间中,正在熟练地使用各种工具 ...
- AFL Fuzz安装及完成一次简单的模糊测试
关于AFL fuzz AFL fuzz是一个模糊测试工具,它封装了一个GCC/CLang编译器,用于对被测代码重新编译的过程中进行插桩.插桩完毕后,AFL fuzz就可以给其编译过的代码输入不同的参数 ...
- 模糊测试(fuzzing)是什么
一.说明 大学时两个涉及“模糊”的概念自己感觉很模糊.一个是学数据库出现的“模糊查询”,后来逐渐明白是指sql的like语句:另一个是学专业课时出现的“模糊测试”. 概念是懂的,不外乎是“模糊测试是一 ...
- 【转】模糊测试(fuzzing)是什么
一.说明 大学时两个涉及“模糊”的概念自己感觉很模糊.一个是学数据库出现的“模糊查询”,后来逐渐明白是指sql的like语句:另一个是学专业课时出现的“模糊测试”. 概念是懂的,不外乎是“模糊测试是一 ...
- 模糊测试——强制发掘安全漏洞的利器(Jolt 大奖精选丛书)
模糊测试——强制发掘安全漏洞的利器(Jolt 大奖精选丛书) [美]Sutton, M.Greene, A.Amini, P. 著 段念赵勇译 ISBN 978-7-121-21083-9 2013年 ...
- 转:智能模糊测试工具 Winafl 的使用与分析
本文为 椒图科技 授权嘶吼发布,如若转载,请注明来源于嘶吼: http://www.4hou.com/technology/2800.html 注意: 函数的偏移地址计算方式是以IDA中出现的Imag ...
- Web模糊测试:WFuzz的坑和快速入门
转载自 FreeBuf.COM 首先说下我对wfuzz这个工具的简单介绍和理解.工具主要是做web模糊测试,最开始做fuzz我是自己写个脚本配合一些常用工具来测,后来看见这款工具因为是比较简单吧,学习 ...
- EPF:一种基于进化、协议感知和覆盖率引导的网络协议模糊测试框架
本文系原创,转载请说明出处:from 信安科研人 目录 实验 工具的安装 1.安装AFL++ 2.安装epf 对IEC104协议库进行fuzz 实验准备 使用AFL++中的编译器插桩 开始fuzz 原 ...
- 【读书笔记】iOS-对iOS应用进行模糊测试
一,模糊测试,是指通过反复向待测应用发送畸形的数据,对应用进行动态测试的过程. 二,模糊测试,也称动态分析,是一种构造非法输入并将其提供给应用,以期让应用暴露出某些安全问题的艺术和科学. 参考资料:& ...
随机推荐
- 进击的docker 二 : docker 快速入门
1.安装docker 1.1.安装环境 [root@docker ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@docke ...
- (windows)mongoDB3X+Robomongo的安装与基础配置
一开始安装的时候还觉得很简单真正装了时候发现网上的资料参差不齐再次整理一份安装方法 ---------------------------------------------------------- ...
- vs2010 sql server 2008数据库管理界面安装
http://jingyan.baidu.com/article/1e5468f928e106484961b7b0.html
- equals标准写法
@Overridepublic boolean equals(Object obj) { //为了提高效率 if(this == obj){ return true; } //为了提供程序的健壮性 / ...
- python selenium 操作chrome
1.下载chromedriver.exe 入在chrome 浏览器目录下 from selenium import webdriverimport os chromedriver = "C: ...
- Maven 笔记
maven DOS 打包命令:maven项目 cd 进入项目根目录执行 mav clean package;
- Linux内核分析——汇编代码执行及堆栈变化
张潇月<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验步骤 首先借助实验楼这个平台进入Linux ...
- Kafka server.properties配置说明(转)
原文:https://my.oschina.net/infiniteSpace/blog/312890?p=1 http://www.inter12.org/archives/842 broker.i ...
- [转]CSS 表单元素对齐详解
来源:http://blog.sina.com.cn/s/blog_655388ed0100lzyk.html 简单的设置input{vertical-align:middle}即可,完美的: lab ...
- jQuery 求页面加载等待特效
这个案例是最近写一些前端展示的案例出现的一个问题,特此记录,使用ajax的一些方法和使用的技巧: $.ajax({ url:"", type:"post", d ...