网站建设行业文章2
当前位置: 首页 -> 企业资讯 -> 行业文章 -> 漫谈Fuzz测试技术
鸿大千秋新闻顶部侧栏



漫谈Fuzz测试技术



我相信大家对测试不陌生,但是对安全测试可能有一些疑问。安全测试关心的问题是不一样的。这种测试也被人叫做工具测试、渗透测试、攻击测试、测试产品安全性。

这种测试需要首先知道各种各样的攻击的方式和原理,在攻击产生之前尽量多的找到产品的漏洞,尽量多的发现产品里面的问题,再努力把它解决掉。

What is the difference between security testing and traditional function based testing ?

这两个之间的差别我们可以用一个简单的东西来说明,Targeted towards making sure that the app does what it is supposed to do。

For Functionality testing:我设计这个产品是1、2、3、4、5,我得让它能干到1、2、3、4、5才行,不是说是1、2、3、4,少1份干不了。这是一般的出来的结果也是一二三四五。

For Security testing:是说我设计了1、2、3、4、5,我得确定你干出来的不是1、2、3、4、5、6、7,还多出来2个。大家都知道你用word去解析一个文件,看一个文档的时候,是一个代码,具体怎么发生大家可能比较清楚的。

一般来说,重点是通用的漏洞、Memory问题、堆溢出、栈溢出,还有各种各样的溢出,SQL、XSS和各种各样的validation。被黑客熟悉的 除了我们耳熟能详的漏洞之外,还要关注其他的一些东西,比如说Access Control、information、加密方面的问题、认证方面的问题。一些软件安全工程师经常用加密技术,但是用错或者是设计上有一些东西出现错误。

Security Testing一般的方法就是以下这几种:

(1)White BOX:我们一般会用静态的源码扫描工具。通过对源代码的扫描,我们可以把源代码的某一个函数,某一个文件,某一行用了哪些不安全的东西,有哪些漏洞,有 哪些缓存区域的漏洞等等,这些东西都能扫描出来。通过扫描把这些漏洞全部做出来以后,从源代码方面能够保证基本上保证常见的漏洞不会出现。

(2)Black BOX:首先要灵活,会有很多的方法,比较好的有Injection Fuzzer和Dumb Fuzzer,后面会介绍它们之间的区别。

(3)Gray BOX

Part 2 Smart Fuzz Test

Fuzz这个名词来自于Professor Barton Miller。在1989年一个风雨交加的夜晚,他登陆一台自己的主机,不知道怎么回事,信号通过猫传到主机上,雷电一闪,把里面的高位变低位,低位至高 位了,结果到了主机以后改变了。他突发奇想,把这种方式作为一种测试的方式来做。

1、到底什么是Fuzz Test?

Generally speaking fuzz is a brute force method which used to break software,就是用大量的测试用例一个一个试,尽可能多的找出有可能出问题的地方。

2、Fuzz怎么工作?

现在有无数有名的Fuzz工具,有很多人很多还在写,一般包括四个部分。

(1)Generate lots of malformed data as test cases,要生成大量的测试用例。这个测试用力是malformed的,一个软件首先要找到输入点,然后把数据丢进去,这个数据有可能是一个文件,有可 能是一个数据包,有可能是测试表里面的一个项,有可能是临时文件里面的一个东西,总之是一种数据,要定义malformed这种非正常的数据。

(2)Drop the test cases into product,把它丢进去,看这个产品怎么反应。

(3)Monitor and log any crash/exception triggered by malicious input.

(4)Review the test log, investigated deeply.

3、Injection Fuzzer和Dumb Fuzzer的区别

下面我们说一下Dumb Fuzzer和Intelligent Fuzzer之间的区别。

Dumb就是哑的,就是笨的意思。刚开始Fuzz的时候用的都是这种东西,直接把非法数据丢到软件里边去,这种东西很难真正测试出问题,因为很难把问题 放到缓冲区去。比如丢一个Word,不能随便写一个文件,这就很难测试到真正问题,必须基本符合Word本身的文件格式,才有可能测试到结果。要考虑到软 件本身执行的流程,你的case放进去,能够放到多深,逻辑放到多深,你要考虑这个问题。你要写这种程序的话,就要非常了解要测试的文档结构。

什么东西可以被Fuzzed?文件格式可能出问题,数据包也可能出问题。因为数据包在解析数据包的时候也是一个状态机,放进去以后再看下一步到哪里去。 抗组件这些东西也是相当容易出问题的。这么多东西,都是可以被Fuzz的。当然有一些东西也是可以被Fuzz的,我们现在说的集中是软件产品,硬件也可能 有。

4、几个Fuzz工具

简单介绍几个Fuzz工具,因为Fuzz的工具特别多,下面结合我在工作中的用到的一些东西,用最简单的方式介绍一下。

(1)Com Raidor

对于ActiveX,一般来说,我们用的都是Com Raidor,它是非常简单,而且是免费的,它是Idenfense的产品。你只要选中,它里面有很多的项目。因为很多问题是针对IE的,它就会生成测试 用例,会把脚本拿出来,一个一个的丢到IE里跑,接下来一直是这个状态。很简单,相信点几下鼠标就可以做。大家如果在测试的时候,其实跑一下也不费什么力。

(2)Fuzz网络协议——SPIKE

SPIKE第一个提出格式化Fuzz的概念,而且提供了免费的、开源的工具,它发现了很多著名的漏洞。如果我要用SPIKE Fuzz一个文件的话就不是很简单了。Fuzz的时候,你要保证数据结构基本是正确的,不用完全对,完全对的话就不用Fuzz了。改一些小的地方,一次改 一点点,一次改一点点,一次改一个地方或者几个地方,不要改太多,这样一丢,才能测试到东西。如果改的太多,最基本的条件没有满足,进去以后它就会走到其 他分值区。这是一个结构化的最基本的原理。是要注重数据之间的结构,在这种情况下才能比较准确的找到问题。

协议一般都有状态,第二个包 过来,第一个包回去,第三个包过来,第四个包回去,可能是第三次组合的东西某一项才会触发漏洞。但是如果你从第一个包就开始胡乱的发,也许根本进行不到第 三个包去了。所以说,协议Fuzz的文件要更麻烦一点。你要想把它送的深,送的远,送的逻辑远,覆盖的逻辑深,把东西丢到程序里面深一点,你得思考程序到 底是怎么样执行的,你得想它控制的东西不是一个重复的。我想它已经不是一个纯黑盒测试了,要考虑程序里面是怎么运行的,还要考虑到程序的具体逻辑。



鸿大千秋网站建设团队敬上







Copyright © hongdaChiaki. All Rights Reserved. 鸿大千秋 版权所有


联系方式:
地址: 深圳市南山区招商街道沿山社区沿山路43号创业壹号大楼A栋107室
邮箱:service@hongdaqianqiu.com
备案号:粤ICP备15078875号