一种针对智能变电站GOOSE协议的模糊测试方法转让专利

申请号 : CN201910764565.X

文献号 : CN110677273B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 程鹏郭伟汪京培陈积明王文海孙优贤

申请人 : 浙江大学

摘要 :

本发明公开一种针对智能变电站GOOSE协议的模糊测试方法,该方法可以绕过智能变电站保护设备的GOOSE的安全机制,提高了测试用例的生成效率。并针对GOOSE二层发包给出了自己的实现机制。本发明通过线路保护装置所在的光口交换机抓取线路保护装置与母线保护装置发送给线路智能终端的心脏报文与校验码,通过python socket机制绑定网口发送GOOSE变异报文,GOOSE变异报文符合GOOSE协议的stNum字段、sqNum字段、UTC时间字段的安全机制,同时在母线保护装置交换机上发送正常三相信息的心脏报文对保护设备进行欺骗;模糊测试方法以心脏报文为种子报文进行变异、探索各种变异方式。

权利要求 :

1.一种针对智能变电站GOOSE协议的模糊测试方法,其特征在于,该方法包括:

(1)通过线路保护装置所在的光口交换机抓取线路保护装置与母线保护装置发送给线路智能终端的心脏报文与校验码;

(2)发送变异报文的PC端与线路智能终端通过母线直跳/线路直跳专线光口连接;

(3)发送变异报文的PC端通过python socket机制绑定网口,并发送GOOSE变异报文给线路智能终端;所述GOOSE变异报文的设计具体为:根据GOOSE协议的格式,若更改GOOSE-TL部分的payload数据,则在协议开始的stNum字段加1,sqNum字段变为0,UTC时间字段写入变异时间段的UTC时间;若更改非GOOSE-TL部分的数据,则sqNum字段加1,stNum字段不变,若sqNum、stNum的内容字段长度改变,则GOOSE协议的对应长度字段作相应的改变;

(4)PC端向线路智能终端发送符合GOOSE协议心脏报文发送机制的三相电路跳闸指令,如果相应的刀闸状态发生变化,则判断GOOSE变异报文发送成功,开始模糊测试,否则说明发送GOOSE变异报文的拓扑连接或者GOOSE变异报文不符合线路保护装置的安全机制,需要更改拓扑连接或重新设计GOOSE变异报文。

2.根据权利要求1所述的一种针对智能变电站GOOSE协议的模糊测试方法,其特征在于,所述GOOSE变异报文符合GOOSE协议的stNum字段、sqNum字段、UTC时间字段的安全机制。

3.根据权利要求1所述的一种针对智能变电站GOOSE协议的模糊测试方法,其特征在于,步骤(4)中的三相电路跳闸指令发送方式在于,所述GOOSE协议心脏报文发送机制为发送5帧近似相同的事件报文,当事件发出第一帧GOOSE T-L数据改变的报文之后,以T1为时间间隔先后发出第2帧与第3帧,以T2为时间间隔发出第4帧,以T3为时间间隔发出第5帧,其中T1<T2<T3<T,T为心跳时间;此后的时间间隔逐渐增加到与心跳时间相等后发送正常心脏报文。

4.根据权利要求1所述的一种针对智能变电站GOOSE协议的模糊测试方法,其特征在于,步骤(3)中的变异报文符合模糊测试机制的变异方法,模糊测试变异方法包括基于生成的模糊测试和基于变异的模糊测试;

基于生成的模糊测试:根据GOOSE协议的格式,将待变异的数据包拆分为若干字段,分别定义每个字段的值,同时以字段为最小单元进行变异,分别针对每个字段的所有可取值范围进行取值,组合成数据包进行发送,其中单个变异报文只有一个字段发生变异,其他字段的值均不变;

基于变异的模糊测试:通过定义典型的异常字段形成变异字段库,在获取的正常报文中,在每个字节遍历插入变异字段库中的变异字段,形成变异数据包发送;每个数据包只有一个字段插入变异字段库中的变异字段。

5.根据权利要求1所述的一种针对智能变电站GOOSE协议的模糊测试方法,其特征在于,步骤(3)中的变异报文符合模糊测试机制的变异方法,模糊测试变异方法以心脏报文为种子报文进行变异,包括以Sulley、SPIKE、Peach、AFL、GPF为框架设计相应模糊测试机制。

6.根据权利要求1所述的一种针对智能变电站GOOSE协议的模糊测试方法,其特征在于,为发送GOOSE协议报文,在PC端设计发送只有数据链路层和应用层的二层报文机制,其机制为采取python socket的PF_PACKET机制,通过该机制绑定网口,PC端采用Linux操作系统。

7.根据权利要求1所述的一种针对智能变电站GOOSE协议的模糊测试方法,其特征在于,在实施模糊测试的过程中,通过交换机给保护装置发送智能终端的正常心脏报文,告诉它们智能终端的各种信息状态正常,以欺骗线路保护装置和母线保护装置,防止保护装置给智能终端发送异常指令。

8.根据权利要求1所述的一种针对智能变电站GOOSE协议的模糊测试方法,其特征在于,通过智能变电站SCD配置文件中的智能终端GOOSE控制块地址与抓取数据包中的目的MAC地址的对应关系,筛选出线路保护装置与母线保护装置发送给线路智能终端的心脏报文与校验码;通过SCD配置文件中保护装置GOOSE数据集的具体信息获取三相电路跳闸指令与数据包中具体字节的对应关系。

说明书 :

一种针对智能变电站GOOSE协议的模糊测试方法

技术领域

[0001] 本发明涉及工业控制系统、智能电网信息安全领域,重点是智能变电站、智能终端、模糊测试、渗透测试。

背景技术

[0002] 近年来,智能电网领域安全事件频发,2015年12月,乌克兰大规模断电事件、2016年出现再次停电事件、2019年3月7日,委内瑞拉全国发生大规模停电事件。这些事件造成了广泛的影响与巨大的损失。智能电网的信息安全越来越重要。
[0003] 变电站是指电力系统中对电压和电流进行变换,接受电能及分配电能的场所。在发电厂内的变电站是升压变电站,其作用是将发电机发出的电能升压后馈送到高压电网中。在智能电网中,变电站输配电环节的核心部分。相比于传统变电站,智能变电站将一次设备的模拟信号均转换为数字信号,并对不同层级进行数值化、模块化传输。
[0004] 保护设备是智能变电站中的重要设备,控制着变压器部分的线路开合,是智能变电站信息传输的核心。
[0005] 随着变电站逐渐向数字化智能化的方向转变,越来越多的变电站采用智能设备。这也增加了变电站遭受网络攻击的的风险。
[0006] 智能终端是一种智能组件,与一次设备采用电连接,与保护、测控等二次设备采用光纤连接实现对一次设备(主要有断路器、刀闸、主变压器等)一次设备的测量、控制等功能,它由若干智能电子装置集合组成,承担宿主设备(高压一次设备)的测量、控制和监测等基本功能,在满足相关标准要求时,智能组件还可承担相关计量、保护等功能。可包括测量、控制、状态监测、计量、保护等全部或部分装置。由于保护设备、智能终端的数字化改造,网络攻击可以深入智能终端。而智能终端作为控制变压器的智能设备,很容易在遭受攻击之后产生巨大影响,因此智能终端的安全十分重要。
[0007] 模糊测试是指通过自动化生成并执行大量的随机测试用例来发现产品或协议的未知漏洞。它的核心的过程主要包括:解析输入规则、构造测试用例、确定对象发生异常。模糊测试的核心指标包括测试用例的有效率。
[0008] 模糊测试分类包括面向生成的模糊测试与面向变异的模糊测试。面向生成的模糊测试方式是指针对测试用例基于一定规则的数据自动生成,面向变异的模糊测试是指利用样本数据或文件插入畸形字节或者强制突变部分字段来获得半有效数据。现有的主流模糊测试框架包括主流模糊测试框架包括Sulley、SPIKE、Peach、AFL、GPF等等。

发明内容

[0009] 本发明的目的在于设计一种针对智能变电站GOOSE协议的模糊测试方法,该方式弥补了现有的模糊测试机制没有匹配智能终端GOOSE协议特有安全机制的弊端,有效提高了针对GOOSE协议模糊测试的测试用例的有效性;并针对GOOSE二层发包给出了自己的实现机制。
[0010] 本发明的目的是通过以下技术方案来实现的:一种针对智能变电站GOOSE协议的模糊测试方法,该方法包括:
[0011] (1)通过线路保护装置所在的光口交换机抓取线路保护装置与母线保护装置发送给线路智能终端的心脏报文与校验码;
[0012] (2)发送变异报文的PC端与线路智能终端通过母线直跳/线路直跳专线光口连接;
[0013] (3)发送变异报文的PC端通过python socket机制绑定网口,并发送GOOSE变异报文给线路智能终端;
[0014] (4)PC端向线路智能终端发送符合GOOSE协议心脏报文发送机制的三相电路跳闸指令,如果相应的刀闸状态发生变化,则判断GOOSE变异报文发送成功,开始模糊测试,否则说明发送GOOSE变异报文的拓扑连接或者GOOSE变异报文不符合线路保护装置的安全机制,需要更改拓扑连接或重新设计GOOSE变异报文。
[0015] 进一步地,所述GOOSE变异报文符合GOOSE协议的stNum字段、sqNum字段、UTC 时间字段的安全机制。
[0016] 进一步地,所述GOOSE变异报文的设计具体为:根据GOOSE协议的格式,若更改 GOOSE-TL部分的payload数据,则在协议开始的stNum字段加1,sqNum字段变为0,UTC 时间字段写入变异时间段的UTC时间;若更改非GOOSE-TL部分的数据,则sqNum字段加 1,stNum字段不变,若sqNum、stNum的内容字段长度改变,则GOOSE协议的对应长度字段作相应的改变。
[0017] 进一步地,步骤(4)中的三相电路跳闸指令发送方式在于,所述GOOSE协议心脏报文发送机制为发送5帧近似相同的事件报文,当事件发出第一帧GOOSE T-L数据改变的报文之后,以T1为时间间隔先后发出第2帧与第3帧,以T2为时间间隔发出第4帧,以T3为时间间隔发出第5帧,其中T1<T2<T3<T,T为心跳时间;此后的时间间隔逐渐增加到与心跳时间相等后发送正常心脏报文。
[0018] 进一步地,步骤(3)中的变异报文符合模糊测试机制的变异方法,模糊测试变异方法包括基于生成的模糊测试和基于变异的模糊测试。
[0019] 基于生成的模糊测试:根据GOOSE协议的格式,将待变异的数据包拆分为若干字段,分别定义每个字段的值,同时以字段为最小单元进行变异,分别针对每个字段的所有可取值范围进行取值,组合成数据包进行发送,其中单个变异报文只有一个字段发生变异,其他字段的值均不变。
[0020] 基于变异的模糊测试:通过定义典型的异常字段形成变异字段库,在获取的正常报文中,在每个字节遍历插入变异字段库中的变异字段,形成变异数据包发送;每个数据包只有一个字段插入变异字段库中的变异字段。
[0021] 进一步地,步骤(3)中的变异报文符合模糊测试机制的变异方法,模糊测试变异方法以心脏报文为种子报文进行变异,包括以Sulley、SPIKE、Peach、AFL、GPF为框架设计相应模糊测试机制。
[0022] 进一步地,为发送GOOSE协议报文,在PC端设计发送只有数据链路层和应用层的二层报文机制,其机制为采取python socket的PF_PACKET机制,通过该机制绑定网口,PC端采用Linux操作系统。
[0023] 进一步地,在实施模糊测试的过程中,通过交换机给保护装置发送智能终端的正常心脏报文,告诉它们智能终端的各种信息状态正常,以欺骗线路保护装置和母线保护装置,防止保护装置给智能终端发送异常指令。
[0024] 进一步地,通过智能变电站SCD配置文件中的智能终端GOOSE控制块地址与抓取数据包中的目的MAC地址的对应关系,筛选出线路保护装置与母线保护装置发送给线路智能终端的心脏报文与校验码;通过SCD配置文件中保护装置GOOSE数据集的具体信息获取三相电路跳闸指令与数据包中具体字节的对应关系。
[0025] 本发明的有益效果是:本发明方法通过模拟GOOSE协议安全机制去发送GOOSE异常数据包与发送对保护设备的欺骗数据包,使模糊测试的过程中发送的数据包可以绕过保护装置的异常告警。同时设计了的针对智能终端二层数据包发送机制,使二层数据包可以通过PC 端发送给智能终端。总的来说,结合上述方法的模糊测试机制可以使得生成的模糊测试用例符合GOOSE安全机制、绕过保护装置的异常告警,同时可以有效提高模糊测试用例的生成效率。

附图说明

[0026] 图1是智能变电站保护柜的结构示意图;
[0027] 图2是实验设备连接线路拓扑;
[0028] 图3是母线直跳专线模糊测试连接拓扑;
[0029] 图4是线路直跳专线模糊测试连接拓扑。

具体实施方式

[0030] 下面结合附图对本发明作进一步详细说明。
[0031] 本发明提出的一种针对智能变电站GOOSE协议的模糊测试方法,用于为智能变电站的保护装置/智能终端设计模糊测试机制,从而绕过保护设备/智能终端的安全机制,并使其能够接受测试者发送的变异报文,最终实现对保护设备/智能终端的模糊测试与漏洞挖掘;
[0032] 智能变电站的保护柜包括两种:线路保护柜和母线保护柜,如图1、2所示,每种保护柜均包括保护装置、采样单元、智能终端和光口交换机,连接方式有两种:通过母线保护装置与智能终端之间的直跳专线连接、通过线路保护装置与智能终端之间的直跳专线连接。在发送端主要的设备为一个UBUNTU系统的PC、光纤收发器(网口转光口转换装置)。
[0033] 如图2-4所示,该方法包括以下步骤:
[0034] (1)通过线路保护装置所在的光口交换机抓取线路保护装置与母线保护装置发送给线路智能终端的心脏报文与校验码;具体可通过以下实现方式但不限于此:
[0035] 通过智能变电站SCD配置文件中的智能终端GOOSE控制块地址与抓取数据包中的目的 MAC地址的对应关系,筛选出线路保护装置与母线保护装置发送给线路智能终端的心脏报文与校验码,其中SCD配置文件信息可以通过PCS-SCD软件进行读取,获取相应的信息。
[0036] (2)发送变异报文的PC端与线路智能终端通过母线直跳/线路直跳专线光口连接,具体拓扑见图3与图4;
[0037] (3)发送变异报文的PC端通过python socket机制绑定网口,并发送GOOSE变异报文给线路智能终端;
[0038] 为发送GOOSE协议报文,在PC端设计发送只有数据链路层和应用层这二层报文的机制,其机制为采取python socket的PF_PACKET机制,采用Linux操作系统(比如可以采用 UBUNTU系统,不适用MAC OS系统)。
[0039] 所述GOOSE变异报文符合GOOSE协议的stNum字段、sqNum字段、UTC时间字段的安全机制,具体为:
[0040] 根据GOOSE协议的格式,若更改GOOSE-TL部分的payload数据,则在协议开始的stNum 字段加1,sqNum字段变为0,UTC时间字段写入变异时间段的UTC时间;若更改非GOOSE-TL 部分的数据,则sqNum字段加1,stNum字段不变,若sqNum、stNum的内容字段长度改变,则GOOSE协议的对应长度字段作相应的改变;
[0041] (4)PC端向线路智能终端发送符合GOOSE协议心脏报文发送机制的三相电路跳闸指令(三相电路跳闸指令在数据包的具体位置根据SCD卡的GOOSE数据信息确定),如果相应的刀闸状态发生变化,则判断GOOSE变异报文发送成功,开始模糊测试,否则判断发送失败,说明发送GOOSE变异报文的拓扑连接或者GOOSE变异报文不符合线路保护装置的安全机制,需要更改拓扑连接或重新设计GOOSE变异报文;
[0042] 所述GOOSE协议心脏报文发送机制为发送5帧近似相同的事件报文(均满足stNum字段、sqNum字段、UTC时间字段的安全机制即可),当事件发出第一帧GOOSE T-L数据改变的报文之后,以T1(约为0.2秒)为时间间隔先后发出第2帧与第3帧,以T2(约为0.5秒) 为时间间隔发出第4帧,以T3(约为1秒)为时间间隔发出第5帧;此后的时间间隔逐渐增加到与心跳时间相等后发送正常心跳报文;
[0043] 模糊测试的测试用例生成方法可以采用基于生成的模糊测试测试用例生成方法、基于变异的模糊测试测试用例方法。
[0044] 基于生成的模糊测试方法:根据GOOSE协议的格式,将待变异的数据包拆分为若干字段,分别定义每个字段的值,同时以字段为最小单元进行变异,分别针对每个字段的所有可取值范围进行取值,组合成数据包进行发送,其中单个变异报文只有一个字段发生变异,其他字段的值均不变。
[0045] 基于变异的模糊测试方法:通过定义典型的异常字段形成变异字段库,在获取的正常报文中,在每个字节遍历插入变异字段库中的变异字段,形成变异数据包发送;每个数据包只有一个字段插入变异字段库中的变异字段。
[0046] 模糊测试的测试用例生成方法还可以以心脏报文为种子报文,利用其他方法进行变异,包括以利用Sulley、SPIKE、Peach、AFL、GPF为框架的模糊测试机制进行测试用例的生成。
[0047] 在实施模糊测试的过程中,通过交换机给保护装置发送智能终端的正常心跳报文,告诉它们智能终端的各种信息状态正常,以欺骗线路保护装置和母线保护装置,防止保护装置给智能终端发送异常指令。
[0048] 发送变异报文的端口为母差直跳/线路直跳专线光口,采包端口为线路保护装置或者母线保护装置的光口交换机,分别在对应的端口发送变异报文,同时根据心脏报文的发送时间差循环发送变异报文,消除断路告警。
[0049] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。