一种测试方法及装置与流程

文档序号:17896263发布日期:2019-06-13 16:00阅读:122来源:国知局
一种测试方法及装置与流程
本申请涉及网络
技术领域
,具体涉及一种测试方法及装置。
背景技术
:随着网络技术的发展,基于互联网协议进行数据交互与通信,使得工业控制领域的设备与设备之间变得越来越紧密,其中,modbus/tcp协议是osi模型第七层的应用层报文传输协议,其能够应用在不同类型的总线和网络中,现已广泛运用于工业通信的场景中。由于modbus协议本身没有安全机制,因而在实际使用过程中往往存在因人为的误操作或攻击报文入侵所导致的风险问题。为在控制测试成本的基础上,实现对modbus协议安全防护功能的监测,在现有技术关于对工业控制安全设备的modbus防护功能的测试过程中,往往使用软件客户端modscan和服务器modsim对基于modbus协议的工业控制安全设备的安全防护功能进行测试。由于相关技术方案中仅可实现对功能码01、02、03、04、05、06进行测试,则区别于所述六种功能码类型之外的其他功能码则无法进行测试交互,并且由于软件服务器modsim缺乏对值范围的限制,因而在扫描探测过程中无法接收到值异常的响应报文,从而无法获得安全设备的防护情况,导致测试维度的缺失。此外,现有技术中需依赖于测试人员的手工调整,致使用工成本较高且测试效率低下。技术实现要素:有鉴于此,本申请提供一种测试方法及装置,在保证关于测试维度的完整性的情况下,实现在modbus防护功能的测试过程中自动调整测试报文的发包策略,减少用工成本且提高测试效率。为实现上述目的,本申请提供技术方案如下:根据本申请的第一方面,提出了一种测试方法,包括:基于modbus协议发送针对安全防护功能的第一探测报文;根据所述第一探测报文对应的响应报文的响应情况和所述第一探测报文的属性信息,重构并发送第二探测报文。根据本申请的第二方面,提出了一种测试装置,包括:发送单元,基于modbus协议发送针对安全防护功能的第一探测报文;重构单元,根据所述第一探测报文对应的响应报文的响应情况和所述第一探测报文的属性信息,重构并发送第二探测报文。根据本申请的第三方面,提出了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为实现如上述第一方面所述的方法。根据本申请的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,包括:该指令被处理器执行时实现如上述第一方面所述方法的步骤。由以上技术方案可见,本申请通过获得第一探测报文的属性信息和其对应的响应报文的响应情况,可重构并发送第二探测报文,从而实现了依据安全设备的防护情况自动调整发包策略,简化了测试人员的操作,提高测试效率。附图说明图1是根据本申请一示例性实施例中的测试方法的流程图;图2是根据本申请一示例性实施例中的另一种测试方法的流程图;图3是根据本申请一示例性实施例中的一种层次关系的示意图;图4是根据本申请一示例性实施例中的又一种测试方法的流程图;图5是根据本申请一示例性实施例中的一种电子设备的示意结构图;图6是根据本申请一示例性实施例中的一种测试装置的框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。在现有技术中,为了进行对工业控制安全设备的modbus防护功能的测试,通常由测试人员手动调整探测报文,以获取相应的测试结果。然而,在上述方式中,由于探测报文为测试人员手动设置,且待配置的探测报文量较多,则很有可能出现设置错误的情况,因而上述方式所得到的测试结果很有可能并不准确。为了解决上述技术问题,本申请提供一种测试方法及装置,通过该方法,可以实现在modbus防护功能的测试过程中自动调整测试报文的发包策略,提高测试效率,使得测试过程尽可能的高效、可靠。具体地,将从如下实施例具体描述本申请所提供的测试方法。请参见图1,为本申请一示例性的测试方法的流程图,该方法可以应用于安全设备,其可以包括以下步骤:步骤101,基于modbus协议发送针对安全防护功能的第一探测报文。步骤102,根据所述第一探测报文对应的响应报文的响应情况和所述第一探测报文的属性信息,重构并发送第二探测报文。在一实施例中,所述属性信息包括至少一类属性,且各个类别的属性之间呈层次关系。属性信息可只包括一类属性,例如仅针对设备的地址信息发送相应的探测报文,以确定该地址下的设备是否能够正常响应;当然属性信息可包括两项或者两项以上的信息,例如对不同地址下的设备针对各个协议功能的响应情况进行测试,再例如位于不同地址的设备对于各个协议功能的不同取值的响应情况,本申请对此不作限定。属性类别之间可呈现如树状结构的层次关系,其中各个结点为属性类别下的状态值,最高级结点具备多个属性分支,或称子级结点分支,而最低级结点则不含子级节点分支;各个层级的结点可包含同级结点,或者不包含同级结点,本申请对此不做限定。在一实施例中,属性信息可以包括:功能码、待测试模块的地址、功能值。相应的,属性类别则为功能码类型、待测试模块的地址、功能值,其中,可选择功能码的各个类型取值分别对应各个最高级结点;待测试模块的各个地址值分别对应各个次高级结点,即最高级结点的子级结点;而功能值的各个取值分别对应层次结构中的各个最低级结点。当然,当属性类型之间不具备严格的父级结点-子级结点关系时,亦可选择交换该属性类型对应的层级,例如可选择待测试模块的各个地址值对应层次结构的各个最高级结点,相应地,功能码的各个类型取值分别对应各个次高级结点,本申请对此不作限定。在一实施例中,上述中的功能码可指代modbus协议相关的任一功能码;待测试模块的地址指代待测试模块的具体地址,实际表现为plc上的开关或者寄存器的地址;功能值指代上述任一功能码对应的任一功能状态取值,本申请对功能码、待测试模块的地址、功能值的具体取值不做明确的限定。在一实施例中,当所述响应情况为响应正常时,可以确定所述第一探测报文的属性信息中的最低级节点的下一个同级结点,从而使用所述下一个同级结点所在的关系路径中的各个结点的状态值重写所述第一探测报文的属性信息对应的状态值,以得到重构的第二探测报文。在另一实施例中,当所述响应情况为响应异常时,可以根据所述响应报文的异常响应码,确定所述异常响应码对应结点的下一个同级结点,从而使用所述下一个同级结点所在的关系路径中的各个结点的状态值重写所述第一探测报文的属性信息对应的状态值,以得到重构的第二探测报文。在另一实施例中,当所述响应情况为响应异常时,可以记录所述响应报文的异常响应码,并确定含有所述异常响应码对应节点的各个关系路径,从而逐次使用所述关系路径中的各个结点的状态值,重写所述第一探测报文的属性信息对应的状态值以得到扫描报文。由上述实施例可见,通过根据第一探测报文的属性信息及该探测报文对应的响应报文的响应情况,重构并发送第二探测报文,从而实现了测试系统对安全设备的防护情况的智能分析,并依据该分析结果自动调整发包策略。为了便于理解,下面以探测报文中所含有的属性信息为modbus协议的功能码类型、待测试模块的地址、功能值为例,对本申请的具体实施方案进行详细阐述。下面结合图2对该测试过程进行描述;其中,图2是根据本申请一示例性实施例中的另一种测试方法的流程图,该方法可以应用于安全设备上,如图2所示,该方法可以包括以下步骤:步骤201,基于modbus协议发送针对安全防护功能的探测报文。modbus协议为应用层报文传输协议,主要应用于在不同类型的总线或网络连接下的客户机与服务器之间的通信。实现modbus通信需要建立测试系统与客户机之间的tcp连接,连接的建立可以由用户应用模块直接实现,也可以由tcp连接管理模块自动完成,本申请对比不做限定。在具体实现过程中,测试系统可用connect命令建立与目标设备的连接,并根据modbus协议规定构造基于modbus协议的探测报文,读取目标设备(诸如plc或者plc模拟器)的物理描述和功能描述相关的识别码和附加报文,其中modbus协议报文中的应用数据单元可以如下表1所示,应用数据单元(adu)可以由附加域和协议数据单元(pdu)组成,其中附加域可以为表1中mbapheader所示,协议数据单元(pdu)由功能码(functioncode)和数据域(data)。其中的功能码字段是用于当从测试系统向目标设备发送报文时,指示目标设备将执行哪种功能操作的字段,本申请中的功能码的取值可为modbus协议所支持的全部功能码,使得能够实现对modbus协议防护功能测试维度的完整性。此外,在所构造的基于modbus协议的探测报文中,可包含目的设备地址信息的地址码。mbapheaderfunctioncodedata表1通常在modbus报文传输服务过程中,选择在502端口上提供一个监听套接字,使得测试系统可接受到新的连接和与其他设备交换数据。数据交换过程中,可选择send命令发送探测报文且在同一连接下等待所发送的探测报文的响应报文。步骤202,获取所发送的探测报文的响应报文及其属性信息。步骤203,判断响应情况是否为正常响应,若是则进行步骤204,否则进行步骤206。测试系统可选择用recv命令读取报文,从而依据所读取的响应报文确定诸如目标设备地址、功能码类型等属性信息,此外,基于modbus请求/应答通信协议的响应报文中的数据域可用以指示正常响应(无差错)或者异常响应(出现某种差错),具体的可使用数据域中的异常码确定响应报文中的异常状态的原因。在一实施例中,假设a是一个modbus请求报文,code(a)表示a的功能码,add(a)表示a的地址值,data(a)表示a的功能值,req(a)表示a的回应报文。则相应的可依据所获取的异常响应码获知异常响应的报文类型,诸如当识别到req(a)_code_fail时,测试系统可获知所接收到的为探测报文a对应的功能码异常响应报文,而识别到req(a)_add_fail时,可确定所接收的为探测报文a对应的地址异常响应报文,类似的,识别到req(a)_data_fail时,则可确定所接收到的为探测报文a对应的值异常响应报文。在一实施例中,可选择根据响应报文的响应情况,将响应报文进行分类记录,诸如当识别到所接收的响应报文为正常响应时,将响应报文记录在permit允许列表中;而当识别到所接收的响应报文为异常响应报文时,相应地将响应报文记录在restrict限制列表中。因而在获取响应报文的响应情况的过程中,可直接对所接收的响应报文的响应情况进行识别,或者依据响应情况分类表,即permit列表或者restrict列表中所记录的报文以区分已接收的报文的响应情况,本申请对此不做限定。步骤204,确定所获取的属性信息中的最低级结点的下一个同级结点。确定测试系统待探测的属性信息,依据各属性信息之间的从属关系,可得到各个属性信息之间的层次关系。在一实施例中,以功能码类型、地址值、功能值三个属性信息为例对个属性信息之间组成的层次关系进行说明,请参考图3所示,图3是根据本申请一示例性实施例中的一种层次关系的示意图,在本实施例中,以属性信息中的功能码对应的各个类型值作为各个最高级结点,例如功能码对应n个待测试的功能类型,分别为功能码1、……、功能码n,则显示为图3中的n个最高级结点,且各个最高级结点对应的状态值分别为功能码1、……、功能码n;以属性信息中的各个地址值对应次高级结点,例如功能码1对应m1个待测试的地址,分别为地址值1、……、地址值m1,则相应地显示为图3中的功能码1对应的m1个次高级结点;功能码n对应m2个待测试的地址,分别为地址值a、……、地址值m2,则相应地显示为图3中的功能码n对应的m2个次高级结点;类似的,例如功能码1对应的x个待测试的值,则图3中地址值1、……、地址值m1对应的x个子级结点,即层次关系中的最低级结点所对应的功能值的状态值,分别为地址值1对应的功能值1_1_p1、……、功能值1_1_px;由于m1个地址值的父级结点同为功能码1,则地址值2直到地址值m1其分别对应的子级结点均为功能码1对应的x个功能值,例如地址值m1对应的功能值1_m1_p1、……、功能值1_m1_px;类似的,功能码n对应的y个功能值,则地址值a至地址值m2对应的功能值均为y个功能值,例如地址值a对应的功能值n_a_p1、……、功能值n_a_py……及地址值m2对应的功能值n_m2_p1、……、功能值n_m2_py,以此构成了功能码、地址值及功能值之间的层次关系。在图3所示的层次关系中,功能码1、……、功能码n之间互为同级结点,类似的,地址值1、……、地址值m1及地址值a、……、地址值m2之间互为统计结点,相应的各个地址值的子结点(即功能值1_1_p1、……、功能值1_1_px、功能值1_m1_p1、……、功能值1_m1_px、功能值n_a_p1、……、功能值n_a_py及功能值n_m2_p1、……、功能值n_m2_py)之间互为同级结点。例如当所确定的属性信息为功能码1、地址值1、功能值1_1_p1,则该属性信息中的最低级结点为功能值1_1_p1且其下一个同级结点为功能值1_1_p2。步骤205,使用所确定的同级结点所在的关系路径中的各个结点的状态值重写所述探测报文的属性信息对应的状态值。最低级结点的同级结点所在的关系路径即为各个最低级结点所在分支,例如当最低级结点为功能值1_m1_p1,其所在的关系路径为功能码1、地址值m1、功能值1_m1_p1,则使用功能码1、地址值m1、功能值1_m1_p1重写属性信息中的功能码类型、地址值信息及功能值所对应的状态值,以得到重构的探测报文。在一具体实施例中,对于记录在permit列表中的响应报文,则依次递增该响应报文对应属性信息功能值、地址值、功能码,直至遍历全部的功能值、地址值、功能码的全部组合,从而实现测试维度的完整。例如,基于预先设置的初始功能码code(a)为0x01,起始地址为0,起始地址个数为1的探测报文a开始,假设接收到该探测报文对应的响应报文记录在permit列表中,相应地,接下来发的报文从下一个功能值进行遍历;若功能值已经遍历结束,则从下一个地址值进行遍历;若地址值遍历结束,则从下一个功能码进行遍历,从而实现了所构造的测试报文的完整性。步骤206,根据所获取的响应报文的异常响应码,确定该异常响应码对应结点的下一个同级结点。步骤207,使用所确定的下一个同级结点所在的首条关系路径中的各个结点的状态值重写所述探测报文的属性信息对应的状态值。当所获取的响应报文的响应情况为异常时,根据异常响应码确定异常状态值对应结点的下一个同级结点,并根据该同级结点所在的关系路径中的各个结点的状态值重写探测报文。在一实施例中,当发送含有属性信息为功能码1、地址值1、功能值1_1_p1的探测报文对应的响应报文的响应情况为异常时,确定异常响应码对应的属性信息,例如地址值出现异常,则确定该地址值1的下一个同级结点,即属性信息中地址信息对应的状态值为地址值2的结点,相应的结点地址值a所在的首条关系路径为由功能码1结点、地址值2结点、功能值1_2_p1结点所组成的关系路径,从而使用该关系路径上各个结点的状态值信息,即功能码1、地址值2、功能值1_2_p1重写异常响应报文对应的探测报文,得到重写的探测报文。在一具体实施例中,类似的,对于记录在restrict列表中的响应报文,则依次递增该响应报文对应属性信息功能码、地址值、功能值,直至遍历全部的功能码、地址值、功能值的全部组合,从而实现测试维度的完整。例如,基于预先设置初始功能码code(a)为0x01,起始地址值为0,起始地址为1的探测报文a,当接收到该探测报文对应的响应报文记录在restrict列表时,根据异常响应报文对应的异常响应原因,确定下一个待发送的探测报文的重构方式,例如当识别到异常响应的原因是功能值异常,则在当前响应报文对应的功能值并非为最后一个功能值的情况下,构造遍历下一个功能值的探测报文;相应地,当识别到异常响应的原因为待测试模块的地址值异常,则在当前响应报文对应的待测试模块的地址值并非最后一个的情况下,构造遍历下一个待测试模块的地址值的探测报文;当识别到异常响应的原因为功能码异常时,则在当前响应报文对应的功能码并非最后一个的情况下,构造遍历下一个功能码的探测报文,从而实现了所构造的测试报文的完整性。步骤208,发送重写后的探测报文。步骤209,判断所发送的探测报文的属性信息中的最低级结点是否存在下一个同级结点。步骤210,若是,则返回步骤202,否则结束循环。当存在下一个同级结点时,例如当仅存在功能值n_m2_py对应的最低级结点未被测试时,则说明仅存在功能码n对应的功能值n_m2_py未在地址值为m2的设备上进行测试,则仍需重写探测报文,以实现测试维度的完整性。通过上述实施例可知,为了实现自动调整发包策略和测试维度的完整性,借助于探测报文中各属性信息之间的层次关系,根据对探测报文对应的响应报文的响应情况的分析结果,对探测报文的重构方式自动做出相应的调整,弥补了现有技术中无法自动调整的缺陷,相较于相关技术中黑盒测试技术或随机测试技术等模糊测试方法,上述实施例有效解决了由于发送经过随机重构的探测报文导致的测试报文重发、待测试属性信息对应的测试报文漏发等多种问题,提高了关于探测报文重构维度的完整性。测试系统在进行modbus协议安全的测试过程中,可监视目标程序执行过程中产生的任何异常,记录下导致异常响应的探测报文的属性信息,从而对目标程序中缺陷的位置进行重复测试。为了方便理解,下面结合图4对该测试过程进行描述;其中,图4是根据本申请一示例性实施例中的又一种测试方法的流程图,该方法可以应用于安全设备上,如图4所示,该方法可以包括以下步骤:步骤401,基于modbus协议发送针对安全防护功能的探测报文。步骤402,获取所发送的探测报文对应的响应报文的响应情况。步骤403,当响应情况为响应异常时,记录所发送的探测报文的异常响应码。步骤404,确定含有所述异常响应码对应结点的各个关系路径。在一实施例中,当发送含有属性信息为功能码1、地址值1、功能值1_1_p1的探测报文对应的响应报文的响应情况为异常时,确定异常响应码对应的属性信息,例如地址值出现异常,则对该异常响应码进行记录,并确定含有该异常响应码对应结点的各个关系路径,即由功能码1结点、地址值1结点、功能值1_1_p1结点所组成的关系路径和由功能码1结点、地址值1结点、功能值1_2_p1结点所组成的关系路径。步骤405,逐次使用所述关系路径中的各个结点的状态值,重写所述第一探测报文的属性信息对应的状态值以得到扫描报文。使用含有该异常响应码对应结点的各个关系路径,即由功能码1结点、地址值1结点、功能值1_1_p1结点所组成的关系路径和由功能码1结点、地址值1结点、功能值1_2_p1结点所组成的关系路径,分别重写探测报文的属性信息,以重构得到该异常响应码对应的扫描报文。步骤406,发送扫描报文达到一定的域值,得到目标设备的安全防护效果。通过上述实施例可知,依据异常响应码构造具有异常缺陷问题的扫描报文进行探测,即借鉴扫描攻击的方式以探测为手段对设备的安全防护功能进行测试,使得所构造的扫描报文具有较高的针对性,提高安全防护效果的测试效率。图5是根据本申请一示例性实施例中的一种电子设备的示意结构图。请参考图5,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成测试装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。请参考图6,在软件实施方式中,该测试装置可以包括:发送单元601,基于modbus协议发送针对安全防护功能的第一探测报文;重构单元602,根据所述第一探测报文对应的响应报文的响应情况和所述第一探测报文的属性信息,重构并发送第二探测报文。可选的,所述属性信息包括至少一类属性,且各个类别的属性之间呈层次关系。可选的,还包括:第一确定单元603,当所述响应情况为响应正常时,确定所述第一探测报文的属性信息中的最低级结点的下一个同级结点;第一重写单元604,使用所述下一个同级结点所在的关系路径中的各个结点的状态值重写所述第一探测报文的属性信息对应的状态值。可选的,还包括:第二确定单元605,当所述响应情况为响应异常时,根据所述响应报文的异常响应码,确定所述异常响应码对应结点的下一个同级结点;第二重写单元606,使用所述下一个同级结点所在的关系路径中的各个结点的状态值重写所述第一探测报文的属性信息对应的状态值。可选的,还包括:记录单元607,当所述响应情况为响应异常时,记录所述响应报文的异常响应码;第三确定单元608,确定含有所述异常响应码对应节点的各个关系路径;第三重写单元609,逐次使用所述关系路径中的各个结点的状态值,重写所述第一探测报文的属性信息对应的状态值以得到扫描报文。可选的,所述属性信息包括:功能码、待测试模块的地址、功能响应值。所述装置与上述方法相对应,更多相同的细节不再一一赘述。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1