一种主被动相结合的私有工控协议逆向分析方法技术

技术编号:34966554 阅读:15 留言:0更新日期:2022-09-17 12:47
本发明专利技术公开了一种主被动相结合的私有工控协议逆向分析方法,包括采集工控设备正常通信过程中的报文,对所述报文进行逆向分析,获得逆向分析结果;构造错误的报文格式,产生报文与工控设备进行通信交互;确定接收到错误数据后工控设备的响应方式;对所述逆向分析结果中的字段属性进行验证;构建待验证报文结构格式集合,构造报文并发送至工控设备,根据与工控设备通信交互的响应结果确定该报文结构是否为符合所述工控协议规范的正确报文格式;对逆向分析结果中的状态机信息进行扩展分析,获得最终的逆向分析结果。该方法能够对协议格式、字段属性和状态机的分析结果进行更深入的挖掘,归纳出能够更加真实反映出工控协议全局信息的逆向结果。信息的逆向结果。信息的逆向结果。

【技术实现步骤摘要】
一种主被动相结合的私有工控协议逆向分析方法


[0001]本专利技术涉及工控协议安全
,具体涉及一种主被动相结合的私有工控协议逆向分析方法。

技术介绍

[0002]工业控制系统是由计算机设备与工业过程控制部件组成的自动控制系统,广泛应用于电力、水处理、石油与天然气、化工、交通运输、制造业等行业,是国家关键基础设施运行的“大脑”和“中枢”。随着工业互联网的发展,越来越多的工控系统开始连接到网络中,并通过网络实现工控设备的远程操控,这种运行方式在极大推动工业生产效率的同时,也给网络攻击者带来了可乘之机。近年来,有很多起网络安全事件都是攻击者利用协议的漏洞,从而实现对工控设施的入侵和破坏。因此,需要针对工控设备进行相应的协议测试,从而挖掘出设备自身潜在的安全漏洞。
[0003]目前典型的协议测试方法是模糊测试技术,该技术使用大量半有效的数据作为目标程序的输入,通过监控程序出现的异常来发现潜在的漏洞。然而,许多工控设备采用了非公开的协议进行通信,这就对模糊测试带来了技术挑战,因为协议中的部分关键字段如果填充错误,输入会被设备作为错误报文直接丢弃,降低模糊测试的效果。为了避免输入数据中有特殊语义的部分错误导致测试用例失效,需要提前得到工控机和客户机之间的通信协议知识,并利用这一知识来提高输入数据的正确性和测试用例的有效性,而推断工控协议的具体规范需要依靠协议逆向技术,因此,协议逆向技术对于工控设备的模糊测试和漏洞挖掘具有基础性作用。
[0004]协议逆向分析技术的主要目标是获取未知协议的协议规范,包括协议语法、语义以及同步信息,其中协议语法体现为数据报文中的控制信息和控制报文的结构、格式,定义了协议中每一个字段的关键词、数据类型、长度等,协议语义则描述了各个字段所代表的含义及作用,并对字段内容进行了相应的约束,同步信息则反映了在报文在交互过程中应当如何进行交互和反馈。当前较为常用的协议逆向分析方法是基于网络流量的,该方法通过对通信双方交互的流量信息进行分析,从而推断出协议的格式、状态机等信息,具有较强的通用性。
[0005]然而,这种方法也有明显的缺点,最典型的就是对流量样本的依赖性较强,如果流量样本无法充分表现出各个字段的特征或涵盖所定义的各个状态,会导致许多字段无法准确解析出其语义特征,甚至会出现字段划分错误的情况。此外,工控系统在运行过程中,一些不常用的功能在很长时间可能都不会执行,因此流量样本往往无法包括工控协议所有的状态。在这种情况下,仅仅对流量样本进行分析,往往无法实现完整和准确的协议逆向结果。

技术实现思路

[0006]本专利技术的目的是提供一种主被动相结合的私有工控协议逆向分析方法,其能有效
解决单纯依靠对流量进行逆向分析得到的结果不够准确和完善的问题,并且可以通过与工控设备的交互,实现对逆向分析结果的验证和扩展。
[0007]为解决上述技术问题,本专利技术提出了一种主被动相结合的私有工控协议逆向分析方法,包括以下步骤。
[0008]步骤1,采集工控设备正常通信过程中的报文,基于静态分析对所述报文进行逆向分析,获得逆向分析结果,所述逆向分析结果包括所述工控协议的报文格式、字段属性和状态机信息。
[0009]步骤2,构造错误的报文格式,并产生相应的报文与工控设备进行通信交互;根据是否响应以及响应报文的内容,确定接收到错误数据后工控设备的响应方式。
[0010]步骤3,对所述逆向分析结果中的字段属性进行验证。
[0011]步骤4,构建待验证报文结构格式集合,根据所述待验证报文结构格式集合中的报文结构格式构造报文,将构造的报文发送至工控设备,根据与工控设备通信交互的响应结果确定该报文结构是否为符合所述工控协议规范的正确报文格式。
[0012]步骤5,对所述逆向分析结果中的状态机信息进行扩展分析,获得最终的逆向分析结果。
[0013]进一步地,步骤1所述逆向分析结果中的每种报文格式都是由若干不同类型的字段按序组成,具体的表达形式为Q={f1, f2,..., f
n
},其中f
i
表示报文格式Q中的第i个字段,n为报文格式所包含的字段数,n ≥ 1,1 ≤ i ≤ n。
[0014]每个字段的属性信息包括字段类型、最大长度、最小长度、字段语义、字段取值和字段关联的其他字段,具体的表达形式为F=<type, maxlen, minlen, semantic, value, reference>,其中:type表示字段的类型,字段类型包括定长定值、定长变值、变长变值3种;maxlen表示字段的最大长度,minlen表示字段的最小长度,当字段类型为定长定值或定长变值时,maxlen和minlen相等;semantic表示字段的语义,包含了在工控协议中的典型语义字段,包括协议标识、序号、长度、CRC(Cyclic redundancy check,循环冗余校验)、分隔、时间戳、功能码、报文结构、设备标识、协议代码等;value表示字段可能的取值,当字段类型为定长定值或定长变值时有效;reference表示字段所关联的其他字段,当字段语义为长度或CRC等形式时,该字段的值根据所关联的其他字段计算得到。
[0015]进一步地,状态机表示状态与状态之间的转移过程,包含状态和状态转移两类元素,具体的表达形式为S={<s
i
, q
i
, q
o
, s
o
>},其中s
i
表示输入的状态,在初始状态下,工控协议的状态为s0,q
i
表示在状态s
i
时接收到的输入报文格式,q
o
表示在状态s
i
接收到输入报文q
i
后所产生的响应报文格式,s
o
表示在状态s
i
接收到输入报文q
i
后工控协议的输出状态,为了对状态机进行简化,当两个输出状态的输入报文格式相同,且输出报文也相同时,这两个输出状态为等价状态,对这两个输出状态进行合并。
[0016]进一步地,步骤2包括:在静态分析结果的基础上,根据报文格式、字段属性和状态机信息构造完全错误的数据报文,并将产生的报文发送给工控设备,然后对工控设备的响应情况进行监视,如果工控设备没有返回任何报文,则该工控协议在应对错误报文时,采用丢弃的方式来处理,否则记录相应的报文,并与步骤1中通过静态分析获得的所有报文格式进行匹配。
[0017]进一步地,步骤2中所述与步骤1中通过静态分析获得的所有报文格式进行匹配,
包括:如果响应报文与某种报文格式Q相匹配,则查询响应报文格式{f1, f2,..., f
n
}中语义为协议代码的字段,如果存在,则与正确的响应报文协议代码进行比对,若正确的响应报文协议代码为0,则协议代码非0时,表示构造并发送给工控设备的报文为错误报文或者报文格式违反了本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种主被动相结合的私有工控协议逆向分析方法,其特征在于,包括:步骤1,采集工控设备正常通信过程中的报文,基于静态分析对所述报文进行逆向分析,获得逆向分析结果,所述逆向分析结果包括所述工控协议的报文格式、字段属性和状态机信息;步骤2,构造错误的报文格式,并产生相应的报文与工控设备进行通信交互;根据是否响应以及响应报文的内容,确定接收到错误数据后工控设备的响应方式;步骤3,对所述逆向分析结果中的字段属性进行验证;步骤4,构建待验证报文结构格式集合,根据所述待验证报文结构格式集合中的报文结构格式构造报文,将构造的报文发送至工控设备,根据与工控设备通信交互的响应结果确定该报文结构是否为符合所述工控协议规范的正确报文格式;步骤5,对所述逆向分析结果中的状态机信息进行扩展分析,获得最终的逆向分析结果。2.根据权利要求1所述的一种主被动相结合的私有工控协议逆向分析方法,其特征在于,步骤1所述逆向分析结果中的每种报文格式都是由不同类型的字段按序组成,记所述报文格式的表达形式为Q={f1, f2,..., f
n
},其中f
i
表示报文格式Q中的第i个字段,n为报文格式所包含的字段数,n ≥ 1,1 ≤ i ≤ n;每个字段属性信息包括字段类型、最大长度、最小长度、字段语义、字段取值和字段关联的其他字段,记字段属性的表达形式为F=<type, maxlen, minlen, semantic, value, reference>,其中:type表示字段类型,包括定长定值、定长变值和变长变值3种;maxlen表示字段的最大长度,minlen表示字段的最小长度,当字段类型为定长定值或定长变值时,maxlen和minlen相等;semantic表示字段语义,包含了在工控协议中的典型语义字段,包括协议标识、序号、长度、CRC、分隔、时间戳、功能码、报文结构、设备标识和协议代码;value表示字段取值,当字段类型为定长定值或定长变值时有效;reference表示字段所关联的其他字段,当字段语义为长度或CRC形式时,该字段的值根据所关联的其他字段计算得到。3.根据权利要求2所述的一种主被动相结合的私有工控协议逆向分析方法,其特征在于,步骤1所述逆向分析结果中的状态机表示状态与状态之间的转移过程,包含状态和状态转移两类元素,记状态机的表达形式为S={<s
i
, q
i
, q
o
, s
o
>},其中s
i
表示输入的状态,在初始状态下,工控协议的状态为s0,q
i
表示在状态s
i
时接收到的输入报文格式,q
o
表示在状态s
i
接收到输入报文q
i
后所产生的响应报文格式,s
o
表示在状态s
i
接收到输入报文q
i
后工控协议的输出状态,为了对状态机进行简化,当两个输出状态的输入报文格式相同,且输出报文也相同时,这两个输出状态为等价状态,对这两个输出状态进行合并。4.根据权利要求3所述的一种主被动相结合的私有工控协议逆向分析方法,其特征在于,步骤2包括:根据所述报文格式、字段属性和状态机信息构造错误的数据报文,并将产生的报文发送给工控设备,然后对工控设备的响应情况进行监视,如果工控设备没有返回任何报文,则该工控协议在应对错误报文时,采用丢弃的方式来处理,否则记录相应的报文,并与步骤1中通过静态分析获得的所有报文格式进行匹配。5.根据权利要求4所述的一种主被动相结合的私有工控协议逆向分析方法,其特征在于,步骤2中所述与步骤1中通过静态分析获得的所有报文格式进行匹配,包括:如果响应报文与某种报文格式Q相匹配,则查询响应报文格式{f1, f2,..., f
n
}中语义
为协议代码的字段,如果存在,则与正确的响应报文协议代码进行比对,若正确的响应报文协议代码为0,则协议代码非0时,表示构造并发送给工控设备的报文为错误报文或者报文格式违反了协议的状态机,若正确的响应报文协议代码不为0,则协议代码为0时,表示构造并发送给工控设备的报文为错误报文或者报文格式违反了协议的状态机;如果响应报文格式中不存在语义为协议代码的字段,则查询响应报文格式中语义为功能码的字段,并记录该功能码字段值,该字段值表示构造并发送给工控设备的报文为错误报文或者报文格式违反了协议的状态机;如果响应报文格式中即不存在协议代码字段,也不存在功能码字段,则记录响应报文全部内容,在后续收到该报文时,表示...

【专利技术属性】
技术研发人员:蔡冰邢欣嵇程邱凌志袁艺
申请(专利权)人:国家计算机网络与信息安全管理中心江苏分中心
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1