CN108874675A - 一种基于字段分类的fuzzing测试用例生成方法 - Google Patents

一种基于字段分类的fuzzing测试用例生成方法 Download PDF

Info

Publication number
CN108874675A
CN108874675A CN201810663457.9A CN201810663457A CN108874675A CN 108874675 A CN108874675 A CN 108874675A CN 201810663457 A CN201810663457 A CN 201810663457A CN 108874675 A CN108874675 A CN 108874675A
Authority
CN
China
Prior art keywords
test
test case
value
field
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810663457.9A
Other languages
English (en)
Inventor
范科峰
王勇
彭道刚
高志远
杨建军
刘贤刚
姚相振
李琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING SAIXI TECHNOLOGY DEVELOPMENT Co Ltd
Shanghai University of Electric Power
China Electronics Standardization Institute
University of Shanghai for Science and Technology
Original Assignee
BEIJING SAIXI TECHNOLOGY DEVELOPMENT Co Ltd
Shanghai University of Electric Power
China Electronics Standardization Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING SAIXI TECHNOLOGY DEVELOPMENT Co Ltd, Shanghai University of Electric Power, China Electronics Standardization Institute filed Critical BEIJING SAIXI TECHNOLOGY DEVELOPMENT Co Ltd
Priority to CN201810663457.9A priority Critical patent/CN108874675A/zh
Publication of CN108874675A publication Critical patent/CN108874675A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)

Abstract

本发明公开了一种基于字段分类的fuzzing测试用例生成方法,包括以下步骤:步骤A、基于工业协议特点进行分类,包括数据长度、数据内容和数据类型;步骤B、通过协议字段构造测试用例,包括三类测试用例,第一类包括边界测试、换位测试和任意值测试;第二类包括边界测试、无效输入测试和任意值测试;第三类包括边界测试和任意值测试,从而生成基于字段分类的fuzzing测试用例。本发明能够应用到一类协议当中去,而不是针对某一种协议,尤其是对于电网中的协议很有效。为了证明我们提出的方法的有效性,我们用此方法来对电网中典型协议进行测试并发现三个未知错误;此方法最大的特点就是减少了测试人员的负担,漏洞挖掘需要测试人员掌握太多的专业技能。

Description

一种基于字段分类的fuzzing测试用例生成方法
技术领域
本发明涉及一种测试用例生成方法,具体为一种基于字段分类的fuzzing测试用例生成方法,属于测试用例生成方法技术领域。
背景技术
Fuzzing模糊测试技术是一种利用程序随机生成输入的自动化软件,然后根据输出结果来进行漏洞分析。以下是流程图中每一步骤详细介绍:确认测试对象:确定哪种测试方法适合于被测对象;确认输入:确认有效输入的格式;生成测试样例:基于有效输入格式生成测试用例;监听:监听被测系统是否异常,若是,对输入的测试用例进行分析,找出漏洞,若否,继续进行模糊测试;分析样例,挖掘漏洞:通过对被测系统输出的监听,如果系统出现异常,说明很有可能测试用例触发了被测系统的漏洞;模糊测试漏洞挖掘整个过程都包含在以上步骤当中,每一步骤都是很重要,但是测试用例生成这一步骤决定了测试是否成功。
灰盒测试包含了黑盒测试和白盒测试的优点,即使在没有源码的情况下,也能生成有效的测试用例,正因为这一优势,该方法目前被广泛研究。R Ma在试探式算法中找到脆弱性算子,并生成了包含该算子的测试用例,正是利用了反向工程技术,并且他们也曾尝试利用分类树对协议字段进行分类,显然他们这种方法是有效的,美妙的,然而这种方法对测试者的要求太高,渗透人员必须具有很强大的专业技能,还需要有一些运气,最终才会成功。
模糊测试能够根据测试用例生成技术进行分类。一种是基于变异生成测试用例,通过对实时数据报的变异生成测试用例,这种方法很容易生成测试用例,但是生成测试用例的有效性取决于所捕获的数据包。模糊测试技术利用包分析技术能够识别出协议的格式,但是结果的好坏取决于所捕获的包,因此,针对上述问题提出一种基于字段分类的fuzzing测试用例生成方法。
发明内容
本发明的目的就在于为了解决上述问题而提供一种基于字段分类的fuzzing测试用例生成方法。
本发明通过以下技术方案来实现上述目的,一种基于字段分类的fuzzing测试用例生成方法,包括以下步骤:
步骤A、基于工业协议特点进行分类,包括数据长度、数据内容和数据类型;
步骤B、通过协议字段构造测试用例,包括三类测试用例,第一类包括边界测试、换位测试和任意值测试;第二类包括边界测试、无效输入测试和任意值测试;第三类包括边界测试和任意值测试,从而生成基于字段分类的fuzzing测试用例。
优选的,所述步骤A中的数据长度是数据长度字段,用于限制数据的长度;数据内容是数据字段,其中没有固定的值;数据类型有固定的值,为功能性字段。
优选的,所述步骤B中的第一类测试用例的边界测试是构造测试用例,某一些字段的值超越了边界值;换位测试是利用两个字段或多个字段换位构造不合法输入;任意值测试是构造任意输入,期望发现一些未知错误。
优选的,所述步骤B中的第二类测试用例的边界测试是构造测试用例,其一些字段的值超越了边界值;无效输入测试是通过设计一些用户可能输入但没有意义的数据来构造测试用例;任意值测试是构造任意输入,期望发现一些未知错误。
优选的,所述步骤B中的第三类测试用例的边界测试的边界测试是构造测试用例,其一些字段的值超越了边界值;任意值测试是构造任意输入,期望发现一些未知错误。
本发明的有益效果是:本发明提供了一种基于字段分类的fuzzing测试用例生成方法,这种方法能够应用到一类协议当中去,而不是针对某一种协议,尤其是对于电网中的协议很有效。最大的特点就是减少了测试人员的负担,漏洞挖掘需要测试人员掌握太多的专业技能。本发明对于模糊测试是很重要的。在传统的测试方法中,测试人员的专业技能,网络结构特点,目标协议特点等等有太多因素能够影响测试结果了,大大减少了不确定性,另外本文主要分析工业控制系统中协议,因此,此方法对于电网中协议更有针对性。
附图说明
图1为本发明流程图;
图2为本发明实施例MMMS协议的嵌套结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-2所示,一种基于字段分类的fuzzing测试用例生成方法,包括以下步骤:
步骤A、基于工业协议特点进行分类,包括数据长度、数据内容和数据类型;
步骤B、通过协议字段构造测试用例,包括三类测试用例,第一类包括边界测试、换位测试和任意值测试;第二类包括边界测试、无效输入测试和任意值测试;第三类包括边界测试和任意值测试,从而生成基于字段分类的fuzzing测试用例。
作为本发明的一种技术优化方案,所述步骤A中的数据长度是数据长度字段,用于限制数据的长度;数据内容是数据字段,其中没有固定的值;数据类型有固定的值,为功能性字段。
作为本发明的一种技术优化方案,所述步骤B中的第一类测试用例的边界测试是构造测试用例,某一些字段的值超越了边界值;换位测试是利用两个字段或多个字段换位构造不合法输入;任意值测试是构造任意输入,期望发现一些未知错误。
作为本发明的一种技术优化方案,所述步骤B中的第二类测试用例的边界测试是构造测试用例,其一些字段的值超越了边界值;无效输入测试是通过设计一些用户可能输入但没有意义的数据来构造测试用例;任意值测试是构造任意输入,期望发现一些未知错误。
作为本发明的一种技术优化方案,所述步骤B中的第三类测试用例的边界测试的边界测试是构造测试用例,其一些字段的值超越了边界值;任意值测试是构造任意输入,期望发现一些未知错误。
实施例一:
应用于电网中协议的作用功能包括传输传感器的测量数据,一些关键设备的状态,再有就是来自监视控制系统的控制信息,MMS是电网中非常典型的协议,非常具有代表性,主要用在IEC-61850和ICCP中。下面是MMS协议的一些主要特点。MMS使用著名的OSI七层结构。TPKT和COTP通常在TCP/IP层以上。在这一领域中的许多协议都有着比较简单的栈结构,然而由于MMS协议用于长距离传输数据,所以它的栈结构比较复杂。协议栈很重要,因为底层的漏洞是可以被继承的。MMS协议的特点和其他工业控制系统中的协议大致一样,主要用来传输测量数据,设备状态,控制指令。就网络流量而言,MMS中95%都是请求和应答,可以大致分为以下几类:测量量:整数,实数;状态量:位字符,开关量;控制指令:位字符;数据名字:ASCII码;由于采用ASN.1,所以MMS具有复杂的嵌套结构。MMS的数据帧格式由标签、数据长度、数据值构成,标记是一功能性字段,例如PDU类型,服务类型,等等;数据长度这一字段值是受标签这一字段值的影响的。数据字段主要用来表示数据,例如测量值、状态值或者下一个数据报文的标记或者数据长度。下面的图2表示了MMMS协议的嵌套结构。图中清晰地向我们展示了MMS数据报文的嵌套结构,主要有以下特点:出现在报文后边的标签和前边的标签是有联系的,不是独立的;数据字段的值也是有一定关系的,前边的值一定大于后边的值;其他协议的语法格式和MMS不完全相同,但它们大致都是由功能性字段,数据长度字段,数据值字段构成。通过上边对电网中协议特点的讨论,MMS协议中95%的数据都是请求和应答,例如测量值,状态值等,只需要考虑语法错误来生成测试用例即可,而不用考虑利用被测系统状态来生成测试用例了;需要产生各种变量类型的不合法输入,例如整数,实数,位字符等等,本发明来对电网中典型协议进行测试并发现三个未知错误。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

Claims (5)

1.一种基于字段分类的fuzzing测试用例生成方法,其特征在于:包括以下步骤:
步骤A、基于工业协议特点进行分类,包括数据长度、数据内容和数据类型;
步骤B、通过协议字段构造测试用例,包括三类测试用例,第一类包括边界测试、换位测试和任意值测试;第二类包括边界测试、无效输入测试和任意值测试;第三类包括边界测试和任意值测试,从而生成基于字段分类的fuzzing测试用例。
2.根据权利要求1所述的一种基于字段分类的fuzzing测试用例生成方法,其特征在于:所述步骤A中的数据长度是数据长度字段,用于限制数据的长度;数据内容是数据字段,其中没有固定的值;数据类型有固定的值,为功能性字段。
3.根据权利要求1所述的一种基于字段分类的fuzzing测试用例生成方法,其特征在于:所述步骤B中的第一类测试用例的边界测试是构造测试用例,某一些字段的值超越了边界值;换位测试是利用两个字段或多个字段换位构造不合法输入;任意值测试是构造任意输入,期望发现一些未知错误。
4.根据权利要求1所述的一种基于字段分类的fuzzing测试用例生成方法,其特征在于:所述步骤B中的第二类测试用例的边界测试是构造测试用例,其一些字段的值超越了边界值;无效输入测试是通过设计一些用户可能输入但没有意义的数据来构造测试用例;任意值测试是构造任意输入,期望发现一些未知错误。
5.根据权利要求1所述的一种基于字段分类的fuzzing测试用例生成方法,其特征在于:所述步骤B中的第三类测试用例的边界测试的边界测试是构造测试用例,其一些字段的值超越了边界值;任意值测试是构造任意输入,期望发现一些未知错误。
CN201810663457.9A 2018-06-25 2018-06-25 一种基于字段分类的fuzzing测试用例生成方法 Pending CN108874675A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810663457.9A CN108874675A (zh) 2018-06-25 2018-06-25 一种基于字段分类的fuzzing测试用例生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810663457.9A CN108874675A (zh) 2018-06-25 2018-06-25 一种基于字段分类的fuzzing测试用例生成方法

Publications (1)

Publication Number Publication Date
CN108874675A true CN108874675A (zh) 2018-11-23

Family

ID=64294719

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810663457.9A Pending CN108874675A (zh) 2018-06-25 2018-06-25 一种基于字段分类的fuzzing测试用例生成方法

Country Status (1)

Country Link
CN (1) CN108874675A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109922063A (zh) * 2019-03-05 2019-06-21 南方电网科学研究院有限责任公司 多功能电表通信协议模糊测试的污数据生成方法
CN110048960A (zh) * 2019-04-17 2019-07-23 北京理工大学 带报文应答的分布式流量生成系统
CN112532716A (zh) * 2020-11-25 2021-03-19 中国人民解放军陆军军事交通学院军事交通运输研究所 一种车辆ecu安全测试方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8336102B2 (en) * 2007-06-01 2012-12-18 Microsoft Corporation Delivering malformed data for fuzz testing to software applications
CN104168161A (zh) * 2014-08-18 2014-11-26 国家电网公司 一种基于节点克隆的数据构造变异算法
CN106506280A (zh) * 2016-11-24 2017-03-15 工业和信息化部电信研究院 智能家居设备的通信协议测试方法及系统
CN107832619A (zh) * 2017-10-10 2018-03-23 电子科技大学 Android平台下应用程序漏洞自动化挖掘系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8336102B2 (en) * 2007-06-01 2012-12-18 Microsoft Corporation Delivering malformed data for fuzz testing to software applications
CN104168161A (zh) * 2014-08-18 2014-11-26 国家电网公司 一种基于节点克隆的数据构造变异算法
CN106506280A (zh) * 2016-11-24 2017-03-15 工业和信息化部电信研究院 智能家居设备的通信协议测试方法及系统
CN107832619A (zh) * 2017-10-10 2018-03-23 电子科技大学 Android平台下应用程序漏洞自动化挖掘系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SUNGJIN KIM: "A novel vulnerability analysis approach to generate fuzzing test case in industrial control systems", 《2016 IEEE INFORMATION TECHNOLOGY,NETWORKING,ELECTRONIC AND AUTOMATION CONTROL CONFERENCE》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109922063A (zh) * 2019-03-05 2019-06-21 南方电网科学研究院有限责任公司 多功能电表通信协议模糊测试的污数据生成方法
CN110048960A (zh) * 2019-04-17 2019-07-23 北京理工大学 带报文应答的分布式流量生成系统
CN112532716A (zh) * 2020-11-25 2021-03-19 中国人民解放军陆军军事交通学院军事交通运输研究所 一种车辆ecu安全测试方法及装置

Similar Documents

Publication Publication Date Title
Ampatzoglou et al. The perception of technical debt in the embedded systems domain: an industrial case study
CN105164691B (zh) 一种用于测试计算机软件应用的方法和系统
US20070157286A1 (en) Analyzing security compliance within a network
JP2017506843A (ja) 可視化されたネットワーク運用及び保守のための方法及び装置
CN108874675A (zh) 一种基于字段分类的fuzzing测试用例生成方法
JP2015114833A (ja) 検査システム、機器情報取得装置、検査指示装置、検査実行装置、機器検査方法及びプログラム
CN108183838B (zh) 一种源nat功能测试的方法及装置
Simos et al. Combinatorial methods in security testing
KR20120025190A (ko) 서비스 기반 애플리케이션 통합 시험장치, 시스템 및 그 방법
CN110532779A (zh) 一种漏洞检测的方法、装置、终端及存储介质
CN106130830B (zh) 安全设备稳定性的测试方法和测试装置
CN108256322A (zh) 安全测试方法、装置、计算机设备和存储介质
Bell et al. On effectiveness of pairwise methodology for testing network-centric software
Yin et al. Extending the problem frames approach for capturing non-functional requirements
Schwab et al. Cybersecurity experimentation at program scale: Guidelines and principles for future testbeds
Bhurke et al. Methods of Formal Analysis for ICS Protocols and HART-IP CPN modelling
Hwang et al. Systematic structural testing of firewall policies
Wong et al. Smart debugging software architectural design in SDL
Shi et al. Analysis of web security comprehensive evaluation tools
Yu et al. Dynamic slicing of Petri nets based on structural dependency graph and its application in system analysis
Kundu et al. A UML model-based approach to detect infeasible paths
Eler et al. More testable service compositions by test metadata
CN103856373B (zh) 基于HTTP协议变异的Web系统健壮性测试方法
Tarhini et al. Regression testing web applications
US8732539B2 (en) Test system having a sub-system to sub-system bridge

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20181123