基于工业协议传输流量异常攻击的检测方法与流程

未命名 08-17 阅读:101 评论:0


1.本发明涉及工控系统网络异常检测技术领域,尤其涉及基于工业协议传输流量异常攻击的检测方法。


背景技术:

2.工业控制系统(industrial control system, ics)是一类用于工业生产的控制系统的统称,它包含监视控制与数据采集系统(supervisory control and data acquisition,scada)、分布式控制系统和其它一些常见于工业部门与关键基础设施的小型控制系统(如可编程逻辑控制器等)。近年,工业控制系统网络中入侵攻击技术越来越多,从而针对工业控制网络中的攻击数据报文的发现告警技术也越来越得到行业的关注。
3.现在普遍应用的技术为基于白名单机制的入侵检测模型。该技术分为工业控制系统操作白名单生成和工业控制系统操作异常检测两个阶段。在生成阶段,从历史网络流量的数据包中筛选出工业控制系统数据包,从数据包的应用层载荷中提取出工业控制系统协议的操作码、访问地址等信息。并且,假设历史网络流量不包含有异常数据,将工业控制系统数据包中出现的操作码和访问地址作为合法的工业控制系统操作,并生成工业控制系统操作白名单规则集合。在异常检测阶段,根据生成阶段生成的白名单规则,对未能匹配这些白名单规则的非法格式报文、非法操作码以及非法地址访问进行告警或抑制处理。
4.上述基于白名单机制的入侵检测技术具体实现上主要使用深度报文检测(deep packet inspection,dpi)技术,基于预先分析出来的“特征字”来先识别工业控制系统数据包中使用的工业控制系统协议,再进一步根据“特征字”识别每一个工业控制系统数据包钟携带的载荷(操作码和访问地址等信息)。但是因为每种不同的工业控制系统数据协议都有其独特的格式,因此针对每一种协议都要人工事先分析并弄清楚其报文格式,人工预先定制不同的“特征字”,从而识别出工业控制系统数据包中的操作码和访问地址。其缺陷有三:一是由人工进行协议分析和“特征字”提取,工作效率低下。二是对于非公开的私有协议无法分析和提取准确的格式,影响后续的异常检测准确度。三是在应用中一旦发生工业控制系统协议版本升级,上述基于白名单的检测系统也必须对升级后的工业控制系统协议重新进行人工分析,并对上述检测系统进行软件版本升级,才能有效支持。


技术实现要素:

5.本发明提供了一种于工业协议传输流量异常攻击的检测方法,在对工控系统中历史数据报文的应用层载荷进行学习后,进行自适应建模,建模过程不依赖预先人工对工业控制系统协议进行分析和“特征字”制定,基于建模结果进行工控系统网络异常检测。
6.为了实现本发明的目的,所采用的技术方案是:基于工业协议传输流量异常攻击的检测方法,检测方法包括在线建模和异常检测,在在线建模阶段对工业控制系统中传输的数据报文镜像的有效载荷进行捕获,然后进行自动分析和学习正常数据报文载荷中的内在规律,作为正常行为模型或基线,建模阶段完成后停止学习并保存模型;在异常检测阶
段,异常检测器捕捉该工业控制系统中传输的数据报文的有效载荷,将其与在线建模阶段建立的正常行为模型进行比较,根据比较结果判断数据报文是否异常。
7.作为本发明的优化方案,进行自动分析和学习正常数据报文载荷中的内在规律时,根据单个请求数据报文的有效载荷长度进行划分到1472个不同的长度模型中,在每个长度模型中,根据有效载荷的相似性进行更进一步的划分,划分的方法是基于无监督聚类方法,聚类的相似度衡量需要根据报文载荷样本的距离进行计算。
8.作为本发明的优化方案,对报文载荷之间相似度计算方法采用字符串距离进行计算,计算时,先求出两个字符串s1和s2的最长公共子序列s3,然后计算distance=(l-len(s3))/l,则相似度是similarity=1-distance,其中:l为字符串s1和s2的长度,len(s3)为最长公共子序列s3的长度。
9.作为本发明的优化方案,无监督聚类方法的具体步骤为:1)初始化一个最终类簇链表,初始为空;2)初始化一个载荷相似度阈值,相似度超过阈值的载荷即属于一个类簇,其最长公共子序列认为是该类簇的中心点;3)提供一个新的载荷样本,新的载荷与类簇链表中每个最终类簇的最长公共子序列求相似度,如果超过相似度阈值,则认为该新的载荷属于该类簇,更新该类簇的最长公共子序列并丢弃该新的载荷;4)如果不属于任何一个已有类簇,则归入一个新类簇,将该新的载荷当作新类簇的最长公共子序列;5)直到一段时间阈值内所有最终类簇不再发生变化,则重复以下步骤:(a)计算两两类簇最长公共子序列之间的相似度,找到距离最小的两个类簇c1和c2;(b)合并类簇c1和c2为一个类簇;6)计算聚类评估系数;7)计算聚类评估系数,直至聚类评估系数达到最高并开始下降为止。
10.作为本发明的优化方案,对于每个类簇,假设a是与它同类簇中除自身以外样本的平均距离,b是与它距离最近的不同类簇中的样本的平均距离,那么针对该样本的聚类评估系数为:s=(b-a)/max(a,b)对于样本整体,所有样本评估系数的平均值作为总评估系数。
11.作为本发明的优化方案,执行完聚类后,针对每个聚类,得到该聚类中样本的最大公共子序列并存储,对该类簇的可变载荷字段计算熵值,如果熵值小于预设阈值entropy,则对其值域范围进行归纳,形成正则表达式并存储。
12.作为本发明的优化方案,在在线建模过程中,根据试检测的统计率来停止建模过程,保存并部署模型开始异常检测。
13.作为本发明的优化方案,在异常检测阶段,对到来的请求报文有效载荷首先进行长度匹配,找到对应的长度模型;然后根据之前存储的每个聚类的最大公共子序列进行匹配,找到符合的聚类;最后根据该聚类存储的正则表达式进行匹配,如果不能匹配任何一个聚类,则判定为异常报文,进行告警或进一步响应。
14.本发明具有积极的效果:1)本发明可对工控系统中历史数据报文的应用层载荷进行学习后,进行自适应建模,建模过程不依赖预先人工对工业控制系统协议进行分析和“特征字”制定,从而基于建模的结果进行异常检测;2)本发明聚类的过程简单,效率高,结果准确,适应高速网络报文的在线建模,从而有效的检测工业协议传输流量异常攻击,同时自适应建模还可防止被恶意流量污染。
附图说明
15.下面结合附图和具体实施方式对本发明作进一步详细的说明。
16.图1是本发明方法的流程示意图。
具体实施方式
17.如图1所示,本发明公开了基于工业协议传输流量异常攻击的检测方法,检测方法包括在线建模和异常检测,在在线建模阶段对工业控制系统中传输的数据报文镜像的有效载荷进行捕获,然后进行自动分析和学习正常数据报文载荷中的内在规律,作为正常行为模型或基线,建模阶段完成后停止学习并保存模型;在异常检测阶段,异常检测器捕捉该工业控制系统中传输的数据报文的有效载荷,将其与在线建模阶段建立的正常行为模型进行比较,根据比较结果判断数据报文是否异常。其中,任何与模型相差太远(根据实际情况制定标准)的数据报文都被当做异常,并触发告警,以及触发其它可能的措施来应对。
18.对工业控制系统网络中传输的数据报文进行建模采用在线实时建模和在线实时异常检测方式。包含基于工业协议传输流量异常攻击的检测方法的系统通过串联在运行的工业控制系统网络中,对传输的数据报文进行流量中继建模;包含基于工业协议传输流量异常攻击的检测方法的系统通过并联在运行的工业控制系统网络中,对传输的数据报文进行流量镜像建模。
19.根据用户选择的安全策略,可以对工业控制系统网络中传输的数据报文的全部,或者是根据acl规则过滤策略,根据网络层信息(ip、端口等)或应用层信息(域名,url信息,应用类型等)对网络中的一部分服务或应用的数据报文进行建模和异常检测。
20.为了避免建模过程受恶意攻击影响而影响异常检测的准确度,可以与防火墙,入侵防御系统(ips)等技术或设备进行集成,以避免建模的时候恰好受到恶意攻击报文载荷影响。
21.网络中传输的每个数据报文的有效载荷实质上只是一连串的字节,不同应用的载荷有其不同的格式规律。在建模阶段,首先根据l34层信息(如ip信息,端口信息,tcp/udp协议信息等)和l7层信息(如modbus协议,opc协议等)把数据报文划分到不同的模型,再针对每个划分单独建模,学习载荷的内在规律。只针对报文的有效载荷进行学习,忽略没有有效载荷的信令报文(如ack报文)以及响应报文。
22.从工业控制系统网络中的报文传输看,不同长度的报文,内容和用途差异较大。可以首先根据有效载荷的长度进行划分。如果传输层协议是基于tcp,单个网络报文的有效载荷长度范围是1~1460。如果传输层协议是基于udp,单个网络报文的有效载荷长度范围是1~1472。本检测方法首先根据单个请求报文的有效载荷长度进行划分到1472个不同的长度模型中。
23.在每个长度模型中,系统根据有效载荷的相似性进行更进一步的划分。划分方法可以是基于无监督聚类方法,如层次聚类、基于划分的聚类和基于密度的聚类等。聚类的相似度衡量需要根据载荷样本的距离进行计算。现有对报文载荷异常检测通常的方法是采用字符的分布频率,n-gram(基于统计语言模型的算法)的频率统计,或者先将字符转换成数值向量(如使用work2vec(将word转为向量)进行转换),再采用欧式距离或者马氏距离进行计算。以上方法不够准确,本文对报文载荷之间的相似度计算方法采用字符串距离进行计算。两个字符串(s1,s2,长度为l)之间的距离,就是求出最长公共子序列(lcs)s3,然后计算distance=(l-len(s3))/l。例如字符串acdfg与aedfc的最长公共子序列为adf,它们之间的距离是(5-3)/5=0.4,相似度是similarity=(1-distance)= 0.6。
24.聚类的过程,现有的技术通常使用k-means,层次聚类等,报文样本需要两两计算距离,效率低下,不适应高速网络报文的在线建模。以下对本检测方法使用的聚类方法进行说明:初始将每个样本点当作一个类簇,所以原始类簇的大小等于样本点的个数,然后依据某种准则合并这些初始的类簇,直到达到某种条件或者达到设定的分类数目。用算法描述:输入:样本集合d,聚类数目或者某个条件(一般是样本距离的阈值,这样就可不设置聚类数目)输出:聚类结果;初始化一个最终类簇链表,初始为空;初始化一个载荷相似度阈值,相似度超过阈值的载荷即属于一个类簇,其lcs(最长公共子序列)认为是该类簇的中心点;提供一个新的载荷样本,新的载荷与类簇链表中每个最终类簇的lcs求相似度,如果超过相似度阈值,则认为该新的载荷属于该类簇,更新该类簇的lcs并丢弃该新的载荷;如果不属于任何一个已有类簇,则归入一个新类簇,将该新的载荷样本当作新类簇的最长公共子序列lcs;直到一段时间阈值内所有最终类簇不再发生变化,则重复以下步骤:(a)计算两两类簇lcs之间的相似度,找到距离最小的两个类簇c1和c2;(b)合并类簇c1和c2为一个类簇;计算聚类评估系数;计算聚类评估系数,直至聚类评估系数达到最高并开始下降为止。
25.对于每个类簇,假设a是与他同类簇中其他样本的平均距离,b是与他距离最近的不同类簇中的样本的平均距离,那么针对该样本的聚类评估系数为:s=(b-a)/max(a,b)对于样本整体,所有样本评估系数的平均值作为总评估系数。聚类完成后,针对每个聚类,得到该聚类中样本的最大公共子序列并存储,其本质上是该类簇的固定有效载荷字段。最大公共子序列的其他位置,其本质上是该类簇的可变载荷字段,对可变载荷字段计算其熵值。如果熵值小于预设阈值entropy(熵值),则对其值域范围进行归纳(上限,下限,可能类型是字母/数字等),形成正则表达式并存储。
26.自适应建模过程为了防止被恶意流量污染,因此需要在建模完成后,停止并存储
建模结果。目前已有实现大多需要人工停止该过程,或者预先设定好一定建模时间,定时停止自适应建模过程。本检测方法在建模的过程中同步进行“试检测”机制,并根据该“试检测”结果自动停止建模过程。通过设置一个误报率,表示每24小时允许出现多少次误报,如允许最多出现2次误报。那么系统统计天(24小时)出现的报文试检测数,如10000个报文。如果一段时间阈值(可配置该阈值远小于24小时)内发现99.98%的数据请求都能符合学习模型,则自动停止建模过程,并储存建模结果。也可以根据试检测的统计率来停止建模过程,保存并部署模型开始异常检测。
27.异常检测阶段,系统对到来的请求报文有效载荷首先进行长度匹配,找到对应的长度模型。然后根据之前存储的每个聚类的最大公共子序列进行匹配,找到符合的聚类。最后根据该聚类存储的正则表达式进行匹配。如果不能匹配任何一个聚类,则判定为异常报文,进行告警或进一步响应。
28.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术特征:
1.基于工业协议传输流量异常攻击的检测方法,其特征在于:检测方法包括在线建模和异常检测,在在线建模阶段对工业控制系统中传输的数据报文镜像的有效载荷进行捕获,然后进行自动分析和学习正常数据报文载荷中的内在规律,作为正常行为模型或基线,建模阶段完成后停止学习并保存模型;在异常检测阶段,异常检测器捕捉该工业控制系统中传输的数据报文的有效载荷,将其与在线建模阶段建立的正常行为模型进行比较,根据比较结果判断数据报文是否异常。2.根据权利要求1所述的基于工业协议传输流量异常攻击的检测方法,其特征在于:进行自动分析和学习正常数据报文载荷中的内在规律时,根据单个请求数据报文的有效载荷长度进行划分到1472个不同的长度模型中,在每个长度模型中,根据有效载荷的相似性进行更进一步的划分,划分的方法是基于无监督聚类方法,聚类的相似度衡量需要根据报文载荷样本的距离进行计算。3.根据权利要求2所述的基于工业协议传输流量异常攻击的检测方法,其特征在于:对报文载荷之间相似度计算方法采用字符串距离进行计算,计算时,先求出两个字符串s1和s2的最长公共子序列s3,然后计算distance=(l-len(s3))/l,则相似度是similarity=1-distance,其中:l为字符串s1和s2的长度,len(s3)为最长公共子序列s3的长度,distance为字符串距离。4.根据权利要求3所述的基于工业协议传输流量异常攻击的检测方法,其特征在于:无监督聚类方法的具体步骤为:1)初始化一个最终类簇链表,初始为空;2)初始化一个载荷相似度阈值,相似度超过阈值的载荷即属于一个类簇,其最长公共子序列认为是该类簇的中心点;3)提供一个新的载荷样本,新的载荷与类簇链表中每个最终类簇的最长公共子序列求相似度,如果超过相似度阈值,则认为该新的载荷属于该类簇,更新该类簇的最长公共子序列并丢弃该新的载荷;4)如果不属于任何一个已有类簇,则归入一个新类簇,将该新的载荷当作新类簇的最长公共子序列;5)直到一段时间阈值内所有最终类簇不再发生变化,则重复以下步骤:(a)计算两两类簇最长公共子序列之间的相似度,找到距离最小的两个类簇c1和c2;(b)合并类簇c1和c2为一个类簇;6)计算聚类评估系数;7)计算聚类评估系数,直至聚类评估系数达到最高并开始下降为止。5.根据权利要求4所述的基于工业协议传输流量异常攻击的检测方法,其特征在于:对于每个类簇,假设a是与它同类簇中除自身以外样本的平均距离,b是与它距离最近的不同类簇中的样本的平均距离,那么针对该样本的聚类评估系数为:s=(b-a)/max(a,b)对于样本整体,所有样本评估系数的平均值作为总评估系数。6.根据权利要求5所述的基于工业协议传输流量异常攻击的检测方法,其特征在于:执行完聚类后,针对每个聚类,得到该聚类中样本的最大公共子序列并存储,对该类簇的可变载荷字段计算熵值,如果熵值小于预设阈值entropy,则对其值域范围进行归纳,形成正则
表达式并存储。7.根据权利要求6所述的基于工业协议传输流量异常攻击的检测方法,其特征在于:在在线建模过程中,根据试检测的统计率来停止建模过程,保存并部署模型开始异常检测。8.根据权利要求7所述的基于工业协议传输流量异常攻击的检测方法,其特征在于:在异常检测阶段,对到来的请求报文有效载荷首先进行长度匹配,找到对应的长度模型;然后根据之前存储的每个聚类的最大公共子序列进行匹配,找到符合的聚类;最后根据该聚类存储的正则表达式进行匹配,如果不能匹配任何一个聚类,则判定为异常报文,进行告警或进一步响应。

技术总结
本发明涉及工控系统网络异常检测技术领域,尤其涉及基于工业协议传输流量异常攻击的检测方法,检测方法包括在线建模和异常检测,在在线建模阶段对工业控制系统中传输的数据报文镜像的有效载荷进行捕获,然后进行自动分析和学习正常数据报文载荷中的内在规律,作为正常行为模型或基线,建模阶段完成后停止学习并保存模型;在异常检测阶段,异常检测器捕捉该工业控制系统中传输的数据报文的有效载荷,将其与在线建模阶段建立的正常行为模型进行比较。本发明本发明可对工控系统中历史数据报文的应用层载荷进行学习后,进行自适应建模,建模过程不依赖预先人工对工业控制系统协议进行分析和“特征字”制定,从而基于建模的结果进行异常检测。进行异常检测。进行异常检测。


技术研发人员:张亮 周劼英 詹雄 张晓 葛敏辉 屈刚 金皓纯 彭佳伟 徐杰
受保护的技术使用者:国家电网有限公司华东分部
技术研发日:2023.07.12
技术公布日:2023/8/14
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐