一种针对协议特性分解及分解模糊测试方法与流程

文档序号:14010444阅读:230来源:国知局
一种针对协议特性分解及分解模糊测试方法与流程

本发明涉及一种针对协议特性分解及分解模糊测试方法,涉及基于tcp/ip协议或者工控协议,用于根据协议的特性对协议进行特性拆分,然后根据协议特性进行模糊测试数据生成的一种模糊测试方法,属于工控技术领域。



背景技术:

目前,随着工业化与信息化进程的不断交叉融合,越来越多的信息技术应用到了工业领域。与此同时,由于工业控制系统广泛采用通用软硬件和网络设施,以及与企业管理信息系统的集成,导致工业控制系统越来越开放,并且与企业内网,甚至是与互联网产生了数据交换。所以针对工业控制设备开启了工控漏洞挖掘,针对工业控制设备的漏洞挖掘全球上比较权威的就是wurldtech的achilles,是针对工业控制设备对工控协议实现进行漏洞挖掘,在测试过程中,可能针对某个设备创建很多测试数据,为了提高测试数据的高可用性。并针对具体的协议特性进行有针对性的测试,提出了一种数据的生成方法。

专利申请公开号为cn107241226a的专利公开了基于工控私有协议的模糊测试方法,通过在正常工控网络环境中捕获的私有协议数据流量,通过私有协议树构造算法,构造一个针对该私有协议的协议树,对请求报文和响应报文进行有效的分类。学习基本的协议信息,通过统计个体类的数据序列,使用概率统计,长度域识别算法,apriori关联规则算法和needleman/wunsch双序列比对算法,对协议特征进行学习。使用变异规则对不同协议特征进行变异,生成测试用例。在测试的过程中监控与被测设备的连接情况,使用请求与响应特征检测被测设备响应数据情况。

专利申请公开号为cn201710331793.9的专利公开了提高模糊测试覆盖率的测试用例控制变异生成方法,属于信息安全的漏洞挖掘领域。本发明针对目前优化模糊测试覆盖率方法时间代价高、测试范围不完整和自动化程度低等问题,提出一种控制变异生成测试用例的方法。本方法利用插桩技术对测试用例生成过程进行反馈,结合随机变异和控制变异方式优化测试用例生成。实验结果表明,相比于未优化的模糊测试方法,方法使代码覆盖率提高了35%~47%,相同代码覆盖率下所需测试用例数减少了48%以上。

综上所述,传统的模糊测试数据的生成往往针对于整个数据包进行变异,这样的测试存在如下缺点。

1、测试效率低下,由于盲目的变异会产生状态空间爆炸问题,导致大部分测试数据无效。

2、测试不够专注,无论是tcp/ip协议,还是工控协议,很多协议都是分层的,而在每一层里面又会分为很多特性,所以把所有的层次和特性混在一起进行测试会导致测出现问题后不容易定位。

3、由于传统的测试数据生成方法不针对协议特性进行抽象,导致测试用例的可用性较差,面对不同厂商不同型号的设备进行测试的时候,测试用例的有效性大打折扣。



技术实现要素:

为解决以上技术问题,本发明提出了一种针对协议特性分解及分解模糊测试方法;本发明所述方法为了解决传统的模糊测试的测试数据生成的盲目性问题,针对不同的协议进行特性的分解,包括对不同分层及每层的不同特性进行分解,设计出高度抽象并且针对性强的测试用例。

本发明的针对协议特性分解方法包括以下步骤:

1、首先对要生成的数据帧进行分层处理,针对osi定义的七层模型,每一层都能够进行单独测试,除了osi模型外的应用层的协议也能够进行特性分解。

2、对分层后的数据帧进行特性分解,在osi的第四层,有tcp和udp两种协议,针对tcp头部,能够针对不同的字段进行特性分析,针对三次握手特性能够设计针对建立连接相关的若干个测试用例。

3、针对特性进行测试用例的设计,针对步骤2中所述的三次握手特性,能够设计出tcp最大连接数这样的测试用例,来测试设备对于大量连接建立是否能够正确处理。

4、针对设计好的测试用例进行数据包的生成并发送到被测设备。

5、捕获异常来确定测试用例的有效性。如果测试过程中设备异常,那么说明测试数据是有效的,由于测试数据设计师针对某一个特性进行的,所以能够很快确定问题的原因。

本发明的针对协议特性分解的模糊测试方法包括以下步骤:

1、tcp最大连接数测试:

1)首先确定要测试的数据在osi的哪一个层次,所测试的层次在osi模型的传输层。

2)确定要测试的协议类型,针对tcp协议进行测试。

3)确定要测试的协议特性,针对tcp的syn+ack进行三次握手特性的测试。

4)填充传输层以下的数据,保证数据填充的正确性。

5)构造三次握手的syn报文,并发送到被测设备。

6)接收被测设备发送的syn+ack报文,并提取序列号。

7)构造ack报文,并发送到被测设备。

8)重复步骤4)到步骤7)。

2、tcp初始序列号随机度测试:

1)首先确定要测试的数据在osi的哪一个层次,所测试的层次在osi模型的传输层。

2)确定要测试的协议类型,针对tcp协议进行测试。

3)确定要测试的协议特性,针对tcp的初始序列号进行捕获和随机度检测。

4)填充传输层以下的数据,保证数据填充的正确性。

5)构造三次握手的syn报文,并发送到被测设备。

6)接收被测设备发送的syn+ack报文,并提取序列号。

7)保存提取到的序列号。

8)重复步骤4)到步骤7)n次。

9)把存储的n个序列号进行随机度分析,如果随机度超过阈值,说明序列号是随机的,否则就说明序列号随机度不够,增加了被预测的可能性,存在风险。

本发明的优越效果是:解决了传统的模糊测试对于测试用例生成的盲目性问题,针对不同的协议进行特性的分解,包括对不同分层及每层的不同特性进行分解,设计出高度抽象并且针对性强的测试用例,能够实现测试用例的高可用性及高有效性,并解决了在测试出现问题的时候能够快速定位的问题。

附图说明

图1是osi七层模型示意图;

图2是tcp的头部信息示意图;

图3是syn图;

图4是syn+ack图;

图5是ack图。

具体实施方式

下面结合附图对本发明的实施方式进行详细描述。本发明的针对协议特性分解方法包括以下步骤:

1、首先对要生成的数据帧进行分层处理,针对osi定义的七层模型,每一层都能够进行单独测试,除了osi模型外的应用层的协议也能够进行特性分解。

2、对分层后的数据帧进行特性分解,在osi的第四层,有tcp和udp两种协议,针对tcp头部,能够针对不同的字段进行特性分析,针对三次握手特性能够设计针对建立连接相关的若干个测试用例。

3、针对特性进行测试用例的设计,针对步骤2中所述的三次握手特性,能够设计出tcp最大连接数这样的测试用例,来测试设备对于大量连接建立是否能够正确处理。

4、针对设计好的测试用例进行数据包的生成并发送到被测设备。

5、捕获异常来确定测试用例的有效性,当测试过程中设备出现异常,表明测试数据是有效的,由于测试数据设计系针对某一个特性进行,能够确定设备出现异常的原因。

本发明的针对协议特性分解的模糊测试方法包括以下步骤:

1、tcp最大连接数测试:

1)首先确定要测试的数据在osi的哪一个层次,所测试的层次在osi模型的传输层。

2)确定要测试的协议类型,针对tcp协议进行测试。

3)确定要测试的协议特性,针对tcp的syn+ack进行三次握手特性的测试。

4)填充传输层以下的数据,保证数据填充的正确性。

5)构造三次握手的syn报文,并发送到被测设备。

6)接收被测设备发送的syn+ack报文,并提取序列号。

7)构造ack报文,并发送到被测设备。

8)重复步骤4)到步骤7)。

2、tcp初始序列号随机度测试:

1)首先确定要测试的数据在osi的哪一个层次,所测试的层次在osi模型的传输层。

2)确定要测试的协议类型,针对tcp协议进行测试。

3)确定要测试的协议特性,针对tcp的初始序列号进行捕获和随机度检测。

4)填充传输层以下的数据,保证数据填充的正确性。

5)构造三次握手的syn报文,并发送到被测设备。

6)接收被测设备发送的syn+ack报文,并提取序列号。

7)保存提取到的序列号。

8)重复步骤4)到步骤7)n次。

9)把存储的n个序列号进行随机度分析,当随机度超过阈值,说明序列号是随机的,否则就说明序列号随机度不够,增加了被预测的可能性,存在风险。

图1为osi七层模型,是国际标准化组织(iso)制定的一个用于计算机或通信系统间互联的标准体系,称为osi参考模型或七层模型。如图1所示:所述osi七层模型包括:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

所述物理层并不是物理媒体本身,所述物理层是开放系统中利用物理媒体实现物理连接的功能描述和执行连接的规程。物理层提供用于建立、保持和断开物理连接的机械的、电气的、功能的和过程的条件。物理层提供有关同步和全双工比特流在物理媒体上的传输手段,典型的协议有rs232c、rs449/422/423、v.24和x.21、x.21bis。

所述数据链路层为数据通道。物理层要为终端设备间的数据通信提供传输介质及其连接。介质是长期的,连接是有生存期的,在连接生存期内,收发两端能够进行不等的一次或多次数据通信。每次通信都要经过建立通信联络和拆除通信联络两个过程。这种建立起来的数据收发关系就叫做数据链路。而在物理媒体上传输的数据难免受到各种不可靠因素的影响而产生差错,为了弥补物理层上的不足,为上层提供无差错的数据传输,就要能对数据进行检错和纠错。数据链路的建立,拆除,对数据的检错,纠错是数据链路层的基本任务。

在联机系统和线路交换的环境中,当数据终端增多时。数据终端之间有中继设备相连,此时会出现一台终端要求不只是与唯一的一台终端而是能和多台终端通信的情况,这就产生了把任意两台数据终端设备的数据链接起来的问题,也就是路由或者称为寻径。另外,当一条物理信道建立之后,被一对用户使用,往往有许多空闲时间被浪费掉,会希望让多对用户共用一条链路,为解决这一问题就出现了逻辑信道技术和虚拟电路技术。

所述传输层是两台计算机经过网络进行数据通信时,第一个端到端的层次,具有缓冲作用。当网络层服务质量不能满足要求时将服务提高,以符合高层的要求;当网络层服务质量好时,它只用很少的工作。传输层还能进行复用,即在一个网络连接上创建多个逻辑连接。传输层也称为运输层。传输层只存在于端开放系统中,是介于低3层通信子网系统和高3层之间的一层,传输层是很重要的一层。因为传输层是源端到目的端对数据传送进行控制从低到高的最后一层。

所述会话单位的控制层的功能是按照在应用进程之间约定的要求按照正确的顺序收、发数据,进行各种形态的对话。会话层规定了会话服务用户间会话连接的建立和拆除规程以及数据传送规程。

所述表示层是数据表示形式的控制层,所述表示层的功能是把应用层提供的信息变换为能够共同理解的形式,提供字符代码、数据格式、控制信息格式、加密的统一表示。表示层的作用之一是为异种机通信提供一种公共语言,以便能进行互操作,这是因为不同的计算机体系结构使用的数据表示法不同。例如,ibm主机使用ebcdic编码,而大部分pc机使用的是ascii码。在这种情况下,便需要表示层来完成这种转换。会话层以下5层完成了端到端的数据传送,并且是可靠的、无差错的传送。但是数据传送只是手段而不是目的,最终是要实现对数据的使用。由于各种系统对数据的定义并不相同,如:键盘上的某些键的含义在许多系统中都有差异。这自然给利用其它系统的数据造成了障碍。所述表示层和应用层就用于消除这种障碍。

所述应用层是osi参考模型的最高层。所述应用层的功能是实现应用进程之间的信息交换,所述应用进程包括用户程序、终端操作员。同时,还具有一系列业务处理所需要的服务功能。应用层包括公共应用服务要素(case)和特定应用服务要素(sase)。其中case提供应用进程中最基本的服务,向应用进程提供信息传送所必需的、但又独立于应用进程通信的能力。sase实质上是各种应用进程在应用层中的映射,每一个sase都针对某一类具体应用,例如文件传送、访问和管理(ftam)、虚拟终端(vt)、消息处理系统(mhs)、电子数据互换(edi)和目录查询。

如图2所示是tcp的头部信息,位于osi模型的传输层,在传输层里面能够根据tcp的具体特性进行分解,能够通过syn标志问进行syn风暴测试,能够根据syn+ack进行三次握手测试。

端口是16位源端口号和16位目的端口号。

序列号是32位序号:一次tcp通信过程中某一个传输方向上的字节流的每个字节的编号,通过这个来确认发送的数据有序,比如现在序列号为1000,发送了1000,下一个序列号就是2000。

确认号是32位确认号:用来响应tcp报文段,给收到的tcp报文段的序号加1,三握时还要携带自己的序号。

头部长度是4位头部长度:标识该tcp头部有多少个4字节,共表示最长15*4=60字节,同ip头部。

保留字段为6位保留。

标志字段如下:

urg:紧急指针是否有效。

ack:表示确认号是否有效。

psh:提示接收端应用程序应该立即从tcp接收缓冲区读走数据。

rst:表示要求对方重新建立连接。

syn:表示请求建立一个连接。

fin:表示通知对方本端要关闭连接。

16位窗口大小是tcp流量控制的一个手段,用来通知对端tcp缓冲区还能容纳多少字节。

16位校验和是由发送端填充,接收端对报文段执行crc算法以检验tcp报文段在传输中是否损坏。

16位紧急指针是一个正的偏移量,它和序号段的值相加表示最后一个紧急数据的下一字节的序号。

如图3所示:syn数据包是tcp建立连接的第一个数据包,flags=0x002代表这个数据包是syn包,由于是第一个包sequencenumber为0acknownumber为0。

如图4所示:syn+ack数据包是tcp建立连接的第二个数据包,flags=0x012代表这个数据包是syn+ack数据包,sequencenumber为0acknownumber为1。

如图5所示:ack数据包是tcp建立连接的第三个数据包,flags=0x010代表这个数据包是ack数据包,sequencenumber为1acknownumber为1。在经历上面三个数据包的交互后,两台电脑或者说两个进程就已经建立了一个tcp的可靠连接,接下来,就能够通过这个建立的tcp通道进行数据传输工作了。

以上方法同样能够应用到应用层协议,例如电力行业的mms协议也能够在不同的分层,针对每一层的不同的特性进行模糊测试用例的构造。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的范围内,能够轻易想到的变化或替换,都应涵盖在本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1