一种工业控制系统安全检测方法及装置转让专利

申请号 : CN201710667625.7

文献号 : CN107404487B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 冯冬芹许剑新

申请人 : 浙江国利网安科技有限公司

摘要 :

本发明实施例中公开了一种工业控制系统安全检测方法及装置,应用于对工业控制系统中的控制器进行安全检测,包括:将工业通信协议报文按照字节进行分段,得到工业通信协议报文的至少一组成字段;确定工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律;依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段;将变异取值后的各组成字段按照工业通信协议报文格式进行组合,得到变异测试报文;将变异测试报文与控制器进行通信交互,对控制器进行安全检测。本发明将工业通信协议报文转化成变异测试报文,利用变异测试报文与控制器进行通信交互,对控制器进行安全检测。

权利要求 :

1.一种工业控制系统安全检测方法,其特征在于,应用于对工业控制系统中的控制器进行安全检测,所述方法包括:将工业通信协议报文按照字节进行分段,得到所述工业通信协议报文的至少一组成字段;

确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律;

依据各组成字段各自对应的数值变化规律、长度以及取值范围特征,确定各组成字段的类型,所述各组成字段的类型至少包括:协议号、版本、命令、报文长度、会话句柄、序列号、状态字、条目数、条目地址、条目长度、条目数据以及校验码中的至少一种;

依据各组成字段各自对应的数值变化规律以及各组成字段的类型,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段;

将变异取值后的各组成字段按照工业通信协议报文格式进行组合,得到变异测试报文;

将所述变异测试报文与控制器进行通信交互,对控制器进行安全检测。

2.根据权利要求1所述的方法,其特征在于,所述确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律的过程包括:提取所述工业通信协议报文的至少一组成字段各自所包含的字段值;

判断所述字段值的变化规律;

如果对于一组成字段中所包含的任意两个字段值都相等,则确定该组成字段中所包含的字段值的数值变化规律为恒定值变化规律;

如果对于一组成字段中所包含的任意相邻的两个字段值,按照时间序列推移,满足字段值等差递增,则确定该组成字段中所包含的字段值的数值变化规律为递增变化规律;

如果对于一组成字段中所包含的任意一字段值,其所属工业通信协议报文的长度为与该字段值成线性关系,则确定该组成字段中所包含的字段值的数值变化规律为关联变化规律;

如果对于一组成字段中所包含的任意两个字段值的差值在预设范围内,则确定该组成字段中所包含的字段值的数值变化规律为波动变化规律;

如果对于一组成字段中所包含的所有字段值为有限数量的变化值,则确定该组成字段中所包含的字段值的数值变化规律为有限值变化规律;

如果对于一组成字段中所包含的所有字段值在字节位数最大值范围内,则确定该组成字段中所包含的字段值的数值变化规律为无规律变化规律。

3.根据权利要求1或2所述的方法,其特征在于,在确定该组成字段中所包含的字段值的数值变化规律为恒定值变化规律之后,还包括:不对该组成字段中所包含的字段值进行变异取值。

4.根据权利要求1或2所述的方法,其特征在于,所述依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段的过程包括:在各组成字段中的一组成字段中所包含的字段值的数值变化规律为递增变化规律的情况下,采用等价类和边界值的方法,将所述组成字段中所包含的字段值变异为:0、字段值中最大取值以及字段样本值中最大取值的一半,得到变异取值后的组成字段,其中,字段样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;

在各组成字段中的一组成字段中所包含的字段值的数值变化规律为关联变化规律的情况下,将所述组成字段中所包含的字段值变异为:以太网报文的最大长度1514,得到变异取值后的组成字段;

在各组成字段中的一组成字段中所包含的字段值的数值变化规律为波动变化规律的情况下,将所述组成字段中所包含的字段值变异为0;得到变异取值后的组成字段;

在各组成字段中的一组成字段中所包含的字段值的数值变化规律为有限值变化规律的情况下,确定样本值中最大取值,对从样本最大取值到字段最大取值范围的值进行全遍历,将所述组成字段中所包含的字段值变异为样本值中最大取值的相反数到0范围部分内的采样值,并将对0到样本值中最大取值范围的值作为其他字段变异正交测试的条件,得到变异取值后的组成字段,其中,样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;

在各组成字段中的一组成字段中所包含的字段值的数值变化规律为无规律变化规律的情况下,将所述组成字段中所包含的字段值变异为:随机选择的变异值,得到变异取值后的组成字段。

5.一种工业控制系统安全检测装置,其特征在于,应用于对工业控制系统中的控制器进行安全检测,所述装置包括:分段模块,用于将工业通信协议报文按照字节进行分段,得到所述工业通信协议报文的至少一组成字段;

数值变化规律确定模块,用于确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律;

组成字段类型确定模块,用于依据各组成字段各自对应的数值变化规律、长度以及取值范围特征,确定各组成字段的类型,所述各组成字段的类型至少包括:协议号、版本、命令、报文长度、会话句柄、序列号、状态字、条目数、条目地址、条目长度、条目数据以及校验码中的至少一种;

变异取值模块,用于依据各组成字段各自对应的数值变化规律以及各组成字段的类型,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段;

变异测试报文获取模块,用于将变异取值后的各组成字段按照工业通信协议报文格式进行组合,得到变异测试报文;

安全检测模块,用于将所述变异测试报文与控制器进行通信交互,对控制器进行安全检测。

6.根据权利要求5所述的装置,其特征在于,所述数值变化规律确定模块包括:

字段值提取模块,用于提取所述工业通信协议报文的至少一组成字段各自所包含的字段值;

变化规律判断模块,用于判断所述字段值的变化规律;

恒定值变化规律确定模块,用于如果对于一组成字段中所包含的任意两个字段值都相等,则确定该组成字段中所包含的字段值的数值变化规律为恒定值变化规律;

递增变化规律确定模块,用于如果对于一组成字段中所包含的任意相邻的两个字段值,按照时间序列推移,满足字段值等差递增,则确定该组成字段中所包含的字段值的数值变化规律为递增变化规律;

关联变化规律确定模块,用于如果对于一组成字段中所包含的任意一字段值,其所属工业通信协议报文的长度为与该字段值成线性关系,则确定该组成字段中所包含的字段值的数值变化规律为关联变化规律;

波动变化规律确定模块,用于如果对于一组成字段中所包含的任意两个字段值的差值在预设范围内,则确定该组成字段中所包含的字段值的数值变化规律为波动变化规律;

有限值变化规律确定模块,用于如果对于一组成字段中所包含的所有字段值为有限数量的变化值,则确定该组成字段中所包含的字段值的数值变化规律为有限值变化规律;

无规律变化规律确定模块,用于如果对于一组成字段中所包含的所有字段值在字节位数最大值范围内,则确定该组成字段中所包含的字段值的数值变化规律为无规律变化规律。

7.根据权利要求5或6所述的装置,其特征在于,所述变异取值模块包括:

第一变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为递增变化规律的情况下,采用等价类和边界值的方法,将所述组成字段中所包含的字段值变异为:0、字段值中最大取值以及字段样本值中最大取值的一半,得到变异取值后的组成字段,其中,字段样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;

第二变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为关联变化规律的情况下,将所述组成字段中所包含的字段值变异为:以太网报文的最大长度1514,得到变异取值后的组成字段;

第三变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为波动变化规律的情况下,将所述组成字段中所包含的字段值变异为0;得到变异取值后的组成字段;

第四变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为有限值变化规律的情况下,确定样本值中最大取值,对从样本最大取值到字段最大取值范围的值进行全遍历,将所述组成字段中所包含的字段值变异为样本值中最大取值的相反数到0范围部分内的采样值,并将对0到样本值中最大取值范围的值作为其他字段变异正交测试的条件,得到变异取值后的组成字段,其中,样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;

第五变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为无规律变化规律的情况下,将所述组成字段中所包含的字段值变异为:随机选择的变异值,得到变异取值后的组成字段。

说明书 :

一种工业控制系统安全检测方法及装置

技术领域

[0001] 本发明涉及工业控制系统信息安全技术领域,具体涉及一种工业控制系统安全检测方法及装置。

背景技术

[0002] 工业控制系统是一类安全关键系统,其中,最重要的组件是控制器,主要作用是完成对工业生产装置对象的自动控制,并将对象状态和控制结果通过工业控制网络发送到上位机,从而实现人机交互过程。
[0003] 近年来,针对工业控制系统的网络攻击逐渐成为信息安全的热点,其攻击形式已经不仅仅局限于针对工业控制系统上位机主机的攻击,而已经通过工业控制网络深入到直接对控制器的攻击,攻击形式也由传统的信息窃取、主机瘫痪等方式向直接利用控制器进而攻击物理实体的方向转变。
[0004] 因此工业控制系统中控制器的安全漏洞检测便成为了一种防护手段,即在攻击者实施攻击之前,能够及时有效地挖掘出所应用的控制器的漏洞,并根据漏洞特性进行及时的修补,以防止漏洞被攻击者利用。因此,如何对工业控制系统中的控制器进行安全检测,成为目前亟待解决的技术问题。

发明内容

[0005] 有鉴于此,本发明实施例提供一种工业控制系统安全检测方法及装置,能够对工业控制系统中的控制器进行安全检测。
[0006] 为实现上述目的,本发明实施例提供如下技术方案:
[0007] 一种工业控制系统安全检测方法,应用于对工业控制系统中的控制器进行安全检测,所述方法包括:
[0008] 将工业通信协议报文按照字节进行分段,得到所述工业通信协议报文的至少一组成字段;
[0009] 确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律;
[0010] 依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段;
[0011] 将变异取值后的各组成字段按照工业通信协议报文格式进行组合,得到变异测试报文;
[0012] 将所述变异测试报文与控制器进行通信交互,对控制器进行安全检测。
[0013] 优选的,所述确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律的过程包括:
[0014] 提取所述工业通信协议报文的至少一组成字段各自所包含的字段值;
[0015] 判断所述字段值的变化规律;
[0016] 如果对于一组成字段中所包含的任意两个字段值都相等,则确定该组成字段中所包含的字段值的数值变化规律为恒定值变化规律;
[0017] 如果对于一组成字段中所包含的任意相邻的两个字段值,按照时间序列推移,满足字段值等差递增,则确定该组成字段中所包含的字段值的数值变化规律为递增变化规律;
[0018] 如果对于一组成字段中所包含的任意一字段值,其所属工业通信协议报文的长度为与该字段值成线性关系,则确定该组成字段中所包含的字段值的数值变化规律为关联变化规律;
[0019] 如果对于一组成字段中所包含的任意两个字段值的差值在预设范围内,则确定该组成字段中所包含的字段值的数值变化规律为波动变化规律;
[0020] 如果对于一组成字段中所包含的所有字段值为有限数量的变化值,则确定该组成字段中所包含的字段值的数值变化规律为有限值变化规律;
[0021] 如果对于一组成字段中所包含的所有字段值在字节位数最大值范围内,则确定该组成字段中所包含的字段值的数值变化规律为无规律变化规律。
[0022] 优选的,在确定该组成字段中所包含的字段值的数值变化规律为恒定值变化规律之后,还包括:
[0023] 不对该组成字段中所包含的字段值进行变异取值。
[0024] 优选的,所述依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段的过程包括:
[0025] 在各组成字段中的一组成字段中所包含的字段值的数值变化规律为递增变化规律的情况下,采用等价类和边界值的方法,将所述组成字段中所包含的字段值变异为:0、字段值中最大取值以及字段样本值中最大取值的一半,得到变异取值后的组成字段,其中,字段样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;
[0026] 在各组成字段中的一组成字段中所包含的字段值的数值变化规律为关联变化规律的情况下,将所述组成字段中所包含的字段值变异为:以太网报文的最大长度1514,得到变异取值后的组成字段;
[0027] 在各组成字段中的一组成字段中所包含的字段值的数值变化规律为波动变化规律的情况下,将所述组成字段中所包含的字段值变异为0;得到变异取值后的组成字段;
[0028] 在各组成字段中的一组成字段中所包含的字段值的数值变化规律为有限值变化规律的情况下,确定样本值中最大取值,对从样本最大取值到字段最大取值范围的值进行全遍历,将所述组成字段中所包含的字段值变异为样本值中最大取值的相反数到0范围部分内的采样值,并将对0到样本值中最大取值范围的值作为其他字段变异正交测试的条件,得到变异取值后的组成字段,其中,样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;
[0029] 在各组成字段中的一组成字段中所包含的字段值的数值变化规律为无规律变化规律的情况下,将所述组成字段中所包含的字段值变异为:随机选择的变异值,得到变异取值后的组成字段。
[0030] 优选的,在依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段之前,还包括:
[0031] 依据各组成字段各自对应的数值变化规律、长度以及取值范围特征,确定各组成字段的类型,所述各组成字段的类型至少包括:协议号、版本、命令、报文长度、会话句柄、序列号、状态字、条目数、条目地址、条目长度、条目数据以及校验码中的至少一种;
[0032] 所述依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段的过程包括:
[0033] 依据各组成字段各自对应的数值变化规律以及各组成字段的类型,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段。
[0034] 一种工业控制系统安全检测装置,应用于对工业控制系统中的控制器进行安全检测,所述装置包括:
[0035] 分段模块,用于将工业通信协议报文按照字节进行分段,得到所述工业通信协议报文的至少一组成字段;
[0036] 数值变化规律确定模块,用于确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律;
[0037] 变异取值模块,用于依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段;
[0038] 变异测试报文获取模块,用于将变异取值后的各组成字段按照工业通信协议报文格式进行组合,得到变异测试报文;
[0039] 安全检测模块,用于将所述变异测试报文与控制器进行通信交互,对控制器进行安全检测。
[0040] 优选的,所述数值变化规律确定模块包括:
[0041] 字段值提取模块,用于提取所述工业通信协议报文的至少一组成字段各自所包含的字段值;
[0042] 变化规律判断模块,用于判断所述字段值的变化规律;
[0043] 恒定值变化规律确定模块,用于如果对于一组成字段中所包含的任意两个字段值都相等,则确定该组成字段中所包含的字段值的数值变化规律为恒定值变化规律;
[0044] 递增变化规律确定模块,用于如果对于一组成字段中所包含的任意相邻的两个字段值,按照时间序列推移,满足字段值等差递增,则确定该组成字段中所包含的字段值的数值变化规律为递增变化规律;
[0045] 关联变化规律确定模块,用于如果对于一组成字段中所包含的任意一字段值,其所属工业通信协议报文的长度为与该字段值成线性关系,则确定该组成字段中所包含的字段值的数值变化规律为关联变化规律;
[0046] 波动变化规律确定模块,用于如果对于一组成字段中所包含的任意两个字段值的差值在预设范围内,则确定该组成字段中所包含的字段值的数值变化规律为波动变化规律;
[0047] 有限值变化规律确定模块,用于如果对于一组成字段中所包含的所有字段值为有限数量的变化值,则确定该组成字段中所包含的字段值的数值变化规律为有限值变化规律;
[0048] 无规律变化规律确定模块,用于如果对于一组成字段中所包含的所有字段值在字节位数最大值范围内,则确定该组成字段中所包含的字段值的数值变化规律为无规律变化规律。
[0049] 优选的,所述变异取值模块包括:
[0050] 第一变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为递增变化规律的情况下,采用等价类和边界值的方法,将所述组成字段中所包含的字段值变异为:0、字段值中最大取值以及字段样本值中最大取值的一半,得到变异取值后的组成字段,其中,字段样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;
[0051] 第二变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为关联变化规律的情况下,将所述组成字段中所包含的字段值变异为:以太网报文的最大长度1514,得到变异取值后的组成字段;
[0052] 第三变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为波动变化规律的情况下,将所述组成字段中所包含的字段值变异为0;得到变异取值后的组成字段;
[0053] 第四变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为有限值变化规律的情况下,确定样本值中最大取值,对从样本最大取值到字段最大取值范围的值进行全遍历,将所述组成字段中所包含的字段值变异为样本值中最大取值的相反数到0范围部分内的采样值,并将对0到样本值中最大取值范围的值作为其他字段变异正交测试的条件,得到变异取值后的组成字段,其中,样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;
[0054] 第五变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为无规律变化规律的情况下,将所述组成字段中所包含的字段值变异为:随机选择的变异值,得到变异取值后的组成字段。
[0055] 优选的,还包括:
[0056] 组成字段类型确定模块,用于依据各组成字段各自对应的数值变化规律、长度以及取值范围特征,确定各组成字段的类型,所述各组成字段的类型至少包括:协议号、版本、命令、报文长度、会话句柄、序列号、状态字、条目数、条目地址、条目长度、条目数据以及校验码中的至少一种;
[0057] 优选的,所述变异取值模块具体用于:
[0058] 依据各组成字段各自对应的数值变化规律以及各组成字段的类型,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段。
[0059] 基于上述技术方案,本发明实施例公开了一种工业控制系统安全检测方法及装置,应用于对工业控制系统中的控制器进行安全检测,所述方法包括:将工业通信协议报文按照字节进行分段,得到所述工业通信协议报文的至少一组成字段;确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律;依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段;将变异取值后的各组成字段按照工业通信协议报文格式进行组合,得到变异测试报文;将所述变异测试报文与控制器进行通信交互,对控制器进行安全检测。由此可知,本发明实施例中可以将工业通信协议报文转化成变异测试报文,利用变异测试报文与控制器进行通信交互,进而对控制器进行安全检测。

附图说明

[0060] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0061] 图1为本发明实施例提供的一种工业控制系统安全检测方法的流程图;
[0062] 图2为本发明实施例提供的一种将工业通信协议报文按照字节进行分段的分段示意图;
[0063] 图3为本发明实施例提供的一种对工业通信协议报文按照字节进行分段的过程示意图;
[0064] 图4为本发明实施例提供的一种六种数值变化规律的变化状态示意图;
[0065] 图5为本发明实施例提供的一种确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律方法的流程图;
[0066] 图6为本发明实施例提供的工业控制系统安全检测装置的结构框图。

具体实施方式

[0067] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0068] 图1示出了一种工业控制系统安全检测方法的流程图,所述工业控制系统安全检测方法应用于对工业控制系统中的控制器进行安全检测,具体为一种工业通信协议模糊测试过程,参照图1,所述方法可以包括:
[0069] 步骤S100、将工业通信协议报文按照字节进行分段,得到所述工业通信协议报文的至少一组成字段;
[0070] 请参照图2所示的将工业通信协议报文按照字节进行分段的分段示意图,将B1:T报文序列中的各个字节进行分段,得到的至少一组成组成字段为:F1、F2....FN。
[0071] 步骤S110、确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律;
[0072] 需要说明的是,本发明实施例中结合图3所示的对工业通信协议报文按照字节进行分段的过程示意图,原始工业通信协议报文样本中,包含了开放系统互联(Open System Interconnection,OSI)层次类型、报文长度以及时间戳等信息,对工业通信协议报文按照字节进行分段之后,除了得到组成字段各自所包含的字段值的数值变化规律之外,还可以得到字段类型、字段长度、以及字段取值等内容,具体对工业通信协议报文按照字节进行分段的过程应用到了字段特征训练方法。
[0073] 需要说明的是,本发明实施例中公开的字段值的数值变化规律包括:恒定值变化规律、有限值变化规律、递增变化规律、波动变化规律、关联变化规律以及无规律变化规律等六种变化规律。
[0074] 其中,结合图4所示的六种数值变化规律的变化状态示意图,恒定值变化规律为:字段值在所有报文样本中始终为恒值;有限值变化规律为:字段的值在所有报文样本中仅限于有限数量的变化值;递增变化规律为:字段的值随报文样本时间序列推移而递增;波动变化规律为:字段的值在同类型报文样本中围绕某一恒值加减波动;无规律变化规律为:字段的值不规律变化;关联变化规律为:字段的值随报文的其他字段变化。
[0075] 需要说明的是,本发明实施例中在确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律之后,还包括:
[0076] 如果相邻的两个字段变化规律相同或相关联,则对两个字段进行归并,即两个字段合成为一个字段;如果进行一次字段合并后,仍然存在变化规律相同的相邻字段,则再次进行合并;如果前后两个字段,前者的变化规律为恒定值变化规律,后者的变化规律为递增变化规律,则两个字段可以合并为一个递增字段。
[0077] 步骤S120、依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段;
[0078] 需要说明的是,本发明实施例中依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段的过程具体包括:
[0079] 在各组成字段中的一组成字段中所包含的字段值的数值变化规律为递增变化规律的情况下,采用等价类和边界值的方法,将所述组成字段中所包含的字段值变异为:0、字段值中最大取值以及字段样本值中最大取值的一半,得到变异取值后的组成字段,其中,字段样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;
[0080] 在各组成字段中的一组成字段中所包含的字段值的数值变化规律为关联变化规律的情况下,将所述组成字段中所包含的字段值变异为:以太网报文的最大长度1514,得到变异取值后的组成字段;
[0081] 在各组成字段中的一组成字段中所包含的字段值的数值变化规律为波动变化规律的情况下,将所述组成字段中所包含的字段值变异为0;得到变异取值后的组成字段;
[0082] 在各组成字段中的一组成字段中所包含的字段值的数值变化规律为有限值变化规律的情况下,确定样本值中最大取值,对从样本最大取值到字段最大取值范围的值进行全遍历,将所述组成字段中所包含的字段值变异为样本值中最大取值的相反数到0范围部分内的采样值,并将对0到样本值中最大取值范围的值作为其他字段变异正交测试的条件,得到变异取值后的组成字段,其中,样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;
[0083] 在各组成字段中的一组成字段中所包含的字段值的数值变化规律为无规律变化规律的情况下,将所述组成字段中所包含的字段值变异为:随机选择的变异值,得到变异取值后的组成字段。
[0084] 需要说明的是,在确定该组成字段中所包含的字段值的数值变化规律为恒定值变化规律之后,不对该组成字段中所包含的字段值进行变异取值。
[0085] 可选的,本发明实施例中在依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段之前,还包括:
[0086] 依据各组成字段各自对应的数值变化规律、长度以及取值范围特征,确定各组成字段的类型,所述各组成字段的类型至少包括:协议号、版本、命令、报文长度、会话句柄、序列号、状态字、条目数、条目地址、条目长度、条目数据以及校验码中的至少一种;
[0087] 所述依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值的过程包括:
[0088] 依据各组成字段各自对应的数值变化规律以及各组成字段的类型,对各组成字段中所包含的字段值进行变异取值。
[0089] 具体的,不同类型的组成字段同时也具有不同的数值变化规律,具体来说:
[0090] 符合恒定值变化规律的字段类型包括协议号、版本、会话句柄、条目地址;
[0091] 符合有限值变化规律的字段类型包括命令、状态字;
[0092] 符合递增变化规律的字段类型包括序列号;
[0093] 符合波动变化规律的字段类型包括条目数据;
[0094] 符合无规律变化的字段类型包括校验码;
[0095] 符合关联变化规律的字段类型包括报文长度、条目数、条目长度。
[0096] 步骤S130、将变异取值后的各组成字段按照工业通信协议报文格式进行组合,得到变异测试报文;
[0097] 本发明实施例中分别按照已确定类型的各字段进行变异取值,并按照工业通信协议报文格式以及协议报文类型所包含的字段类型,进行变异测试报文构造;根据工业通信协议的报文交互序列,通过已构造的变异测试报文,构造报文序列。
[0098] 步骤S140、将所述变异测试报文与控制器进行通信交互,对控制器进行安全检测。
[0099] 本发明实施例中将所述变异测试报文与控制器进行通信交互,并监控控制器的运行状态,如果状态异常,则发现疑似漏洞,具体可以为:与控制器建立通信连接,并按照工业通信协议规范的通信过程与控制器进行通信交互;根据交互过程中所需报文,分别提取已构造的变异报文发送给控制器;如果控制器对接收到的变异报文及其后续报文无正常响应,则认定控制器状态异常,并记录所变异的报文,作为控制器疑似漏洞触发条件;对于已出现异常的控制器,需要使控制器复位后,方可以进行后续的报文变异交互。
[0100] 可选的,图5示出了一种确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律方法的流程图,参照图5,所述方法可以包括:
[0101] 步骤S200、提取所述工业通信协议报文的至少一组成字段各自所包含的字段值;
[0102] 步骤S210、判断所述字段值的变化规律;
[0103] 步骤S220、如果对于一组成字段中所包含的任意两个字段值都相等,则确定该组成字段中所包含的字段值的数值变化规律为恒定值变化规律;
[0104] 步骤S230、如果对于一组成字段中所包含的任意相邻的两个字段值,按照时间序列推移,满足字段值等差递增,则确定该组成字段中所包含的字段值的数值变化规律为递增变化规律;
[0105] 步骤S240、如果对于一组成字段中所包含的任意一字段值,其所属工业通信协议报文的长度为与该字段值成线性关系,则确定该组成字段中所包含的字段值的数值变化规律为关联变化规律;
[0106] 步骤S250、如果对于一组成字段中所包含的任意两个字段值的差值在预设范围内,则确定该组成字段中所包含的字段值的数值变化规律为波动变化规律;
[0107] 步骤S260、如果对于一组成字段中所包含的所有字段值为有限数量的变化值,则确定该组成字段中所包含的字段值的数值变化规律为有限值变化规律;
[0108] 步骤S270、如果对于一组成字段中所包含的所有字段值在字节位数最大值范围内,则确定该组成字段中所包含的字段值的数值变化规律为无规律变化规律。
[0109] 下面对本发明实施例提供的工业控制系统安全检测装置进行介绍,下文描述的工业控制系统安全检测装置,可与上文描述的工业控制系统安全检测方法相互对应参照。下文描述的工业控制系统安全检测装置,可以认为是为实现本发明实施例提供的工业控制系统安全检测方法,所需设置的功能模块架构。
[0110] 图6为本发明实施例提供的工业控制系统安全检测装置的结构框图,该装置应用于对工业控制系统中的控制器进行安全检测,参照图6,该装置可以包括:
[0111] 分段模块100,用于将工业通信协议报文按照字节进行分段,得到所述工业通信协议报文的至少一组成字段;
[0112] 数值变化规律确定模块110,用于确定所述工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律;
[0113] 变异取值模块120,用于依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段;
[0114] 变异测试报文获取模块130,用于将变异取值后的各组成字段按照工业通信协议报文格式进行组合,得到变异测试报文;
[0115] 安全检测模块140,用于将所述变异测试报文与控制器进行通信交互,对控制器进行安全检测。
[0116] 所述数值变化规律确定模块包括:
[0117] 字段值提取模块,用于提取所述工业通信协议报文的至少一组成字段各自所包含的字段值;
[0118] 变化规律判断模块,用于判断所述字段值的变化规律;
[0119] 恒定值变化规律确定模块,用于如果对于一组成字段中所包含的任意两个字段值都相等,则确定该组成字段中所包含的字段值的数值变化规律为恒定值变化规律;
[0120] 递增变化规律确定模块,用于如果对于一组成字段中所包含的任意相邻的两个字段值,按照时间序列推移,满足字段值等差递增,则确定该组成字段中所包含的字段值的数值变化规律为递增变化规律;
[0121] 关联变化规律确定模块,用于如果对于一组成字段中所包含的任意一字段值,其所属工业通信协议报文的长度为与该字段值成线性关系,则确定该组成字段中所包含的字段值的数值变化规律为关联变化规律;
[0122] 波动变化规律确定模块,用于如果对于一组成字段中所包含的任意两个字段值的差值在预设范围内,则确定该组成字段中所包含的字段值的数值变化规律为波动变化规律;
[0123] 有限值变化规律确定模块,用于如果对于一组成字段中所包含的所有字段值为有限数量的变化值,则确定该组成字段中所包含的字段值的数值变化规律为有限值变化规律;
[0124] 无规律变化规律确定模块,用于如果对于一组成字段中所包含的所有字段值在字节位数最大值范围内,则确定该组成字段中所包含的字段值的数值变化规律为无规律变化规律。
[0125] 所述变异取值模块包括:
[0126] 第一变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为递增变化规律的情况下,采用等价类和边界值的方法,将所述组成字段中所包含的字段值变异为:0、字段值中最大取值以及字段样本值中最大取值的一半,得到变异取值后的组成字段,其中,字段样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;
[0127] 第二变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为关联变化规律的情况下,将所述组成字段中所包含的字段值变异为:以太网报文的最大长度1514,得到变异取值后的组成字段;
[0128] 第三变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为波动变化规律的情况下,将所述组成字段中所包含的字段值变异为0;得到变异取值后的组成字段;
[0129] 第四变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为有限值变化规律的情况下,确定样本值中最大取值,对从样本最大取值到字段最大取值范围的值进行全遍历,将所述组成字段中所包含的字段值变异为样本值中最大取值的相反数到0范围部分内的采样值,并将对0到样本值中最大取值范围的值作为其他字段变异正交测试的条件,得到变异取值后的组成字段,其中,样本值为从所述组成字段中包含的字段值中按照预设规则选取的一组样本值;
[0130] 第五变异取值子模块,用于在各组成字段中的一组成字段中所包含的字段值的数值变化规律为无规律变化规律的情况下,将所述组成字段中所包含的字段值变异为:随机选择的变异值,得到变异取值后的组成字段。
[0131] 还包括:
[0132] 组成字段类型确定模块,用于依据各组成字段各自对应的数值变化规律、长度以及取值范围特征,确定各组成字段的类型,所述各组成字段的类型至少包括:协议号、版本、命令、报文长度、会话句柄、序列号、状态字、条目数、条目地址、条目长度、条目数据以及校验码中的至少一种;
[0133] 所述变异取值模块具体用于:
[0134] 依据各组成字段各自对应的数值变化规律以及各组成字段的类型,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段。
[0135] 综上所述:
[0136] 本发明实施例中公开了一种工业控制系统安全检测方法及装置,应用于对工业控制系统中的控制器进行安全检测,包括:将工业通信协议报文按照字节进行分段,得到工业通信协议报文的至少一组成字段;确定工业通信协议报文的至少一组成字段各自所包含的字段值的数值变化规律;依据各组成字段各自对应的数值变化规律,对各组成字段中所包含的字段值进行变异取值,得到变异取值后的各组成字段;将变异取值后的各组成字段按照工业通信协议报文格式进行组合,得到变异测试报文;将变异测试报文与控制器进行通信交互,对控制器进行安全检测。本发明将工业通信协议报文转化成变异测试报文,利用变异测试报文与控制器进行通信交互,对控制器进行安全检测。
[0137] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0138] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0139] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0140] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。