工控指令的时序模型生成方法、装置及其检测方法、装置
技术领域
本发明涉及工控网络安全技术领域,具体涉及一种工控指令时序模型的生成方法及工控指令异常检测方法。
背景技术
工控系统(industrial control system,ICS)指的是工业自动化控制系统,主要利用电子电气、机械、计算机软件组合实现,通过使用计算机技术、微电子技术、电气手段,可以使工厂的生产和制造过程更加自动化、效率化、精确化,并具有可控性及可视性。工控系统一般应用在轨道交通、发电厂、电网、智能制造、石油石化等领域,这些系统很多关系国计民生,属于关键基础设施,一旦出问题影响巨大。
工控系统在传统部署时一般独立组网,网络中的流量比较单一。现在随着TCP/IP占据主流,网络的独立性很难得到保障,加上WIFI、USB等技术的广泛应用,更难以保证工控网络的纯净无污染。
现有的工业防火墙、审计类产品,已经可以识别非法协议、非法报文,具有过滤作用,可以阻止这些非法的报文进入工控网。但是对于工控系统内员工的误操作、恶意操作现在还无法防范,因为实施这些操作的源和目的设备都是正确的合法设备,且下发的工控指令是报文格式、功能码和参数均正确的工控指令,这些操作一旦生效,可能带来极其可怕的后果。
发明内容
有鉴于此,本发明实施例提供了一种工控指令的时序模型生成方法、装置及其检测方法、装置,以解决现有的工业防火墙、审计类产品对于工控系统内员工的误操作、恶意操作无法防范的问题。
根据第一方面,本发明实施例提供了一种工控指令时序模型的生成方法,包括:获取多个工控指令数据,工控指令数据包括工控指令和工控指令到达的时间;根据预设的筛选条件统计以每个工控指令为首的指令序列,直到指令序列的长度达到第一预设阈值或不存在以工控指令为首的指令序列,生成指令序列集合;根据工控指令到达的时间确定指令序列中各工控指令之间的步长;根据指令序列集合和步长构建工控指令时序模型。
可选地,根据预设的筛选条件统计以每个工控指令为首的指令序列,直到指令序列的长度达到第一预设阈值或不存在以工控指令为首的指令序列,生成指令序列集合,包括:步骤1:根据数据统计每个工控指令出现的第一次数;步骤2:判断第一次数是否小于第一预设次数阈值;步骤3:如果小于第一预设次数阈值,则删除第一次数小于第一预设次数阈值的工控指令;步骤4:将第一次数大于或等于第一预设次数阈值的工控指令的长度加1,得到指令序列;步骤5:统计指令序列出现的第二次数;步骤6:判断第二次数是否大于第一预设次数阈值;步骤7:如果大于第一预设次数阈值,判断指令序列的长度是否达到第一预设阈值,或者,是否不存在以工控指令为首的指令序列;步骤8:如果指令序列的长度未达到第一预设阈值,或者,存在以工控指令为首的指令序列,将指令序列的长度加1,得到新的指令序列,返回步骤5,统计新的指令序列出现的第二次数,直至指令序列的长度达到第一预设阈值,或者,不存在以工控指令为首的指令序列,根据指令序列和新的指令序列构建指令序列集合。
可选地,如果指令序列的长度达到第一预设阈值,或者,不存在以工控指令为首的指令序列,则根据指令序列和/或新的指令序列构建指令序列集合。
可选地,在根据指令序列集合和步长生成构建工控指令时序模型之前,还包括:判断指令序列集合中的第一指令序列是否包括第二指令序列;如果第一指令序列包括第二指令序列,判断第一指令序列的次数是否大于或等于第二指令序列的次数;如果第一指令序列的次数大于或等于第二指令序列的次数,则删除第二指令序列。
可选地,如果第一指令序列的次数小于第二指令序列的次数,判断第二指令序列在第一指令序列中重复的次数与第一指令序列的次数的乘积是否等于第二指令序列的次数;如果相等,删除第二指令序列。
可选地,在根据指令序列和步长生成工控指令序列时序模型之前,还包括:判断长度相等的指令序列中的工控指令及工控指令出现的顺序是否相同;如果相同,只保留一个指令序列及其各工控指令之间的步长。
根据第二方面,本发明实施例提供了一种工控指令序列异常检测方法,包括:获取被测工控指令序列,被测工控指令序列包括多个被测工控指令数据,被测工控指令数据包括被测工控指令和被测工控指令到达的时间;根据第一方面或第一方面任意实施方式中的工控指令时序模型的生成方法生成的工控指令时序模型及各被测工控指令到达的时间对被测工控指令序列进行检测;根据检测结果判断被测工控指令序列是否异常。
可选地,根据第一方面或第一方面任意实施方式中的工控指令时序模型的生成方法生成的工控指令时序模型及各被测工控指令到达的时间对被测工控指令序列进行检测,包括:判断第一被测工控指令是否为工控指令时序模型中的指令序列的首个工控指令;如果第一被测工控指令为工控指令时序模型中的指令序列的首个工控指令,根据各被测工控指令到达的时间计算各被测工控指令之间的步长;判断各被测工控指令的顺序及各被测工控指令之间的步长是否与工控指令时序模型中的指令序列的各工控指令的顺序及各工控指令的步长是否相同;如果相同,则被测工控指令序列正常。
可选地,如果第一被测工控指令不为工控指令时序模型中的指令序列的首个工控指令,则忽略不处理第一被测工控指令,判断第二被测工控指令是否为工控指令时序模型中的指令序列的首个工控指令;如果第二被测工控指令为工控指令时序模型中的指令序列的首个工控指令,进入判断各被测工控指令的顺序及各被测工控指令之间的步长是否与工控指令时序模型中的指令序列的各工控指令的顺序及各工控指令的步长相同的步骤。
可选地,如果不相同,则报警提示被测工控指令序列异常。
根据第三方面,本发明实施例提供了一种工控指令时序模型的生成装置,包括:第一获取模块,用于获取多个工控指令数据,工控指令数据包括工控指令和工控指令到达的时间;统计模块,用于根据预设的筛选条件统计以每个工控指令为首的指令序列,直到指令序列的长度达到第一预设阈值或不存在以工控指令为首的指令序列,生成指令序列集合;确定模块,用于根据工控指令到达的时间确定指令序列中各工控指令之间的步长;构建模块,用于根据指令序列和步长构建工控指令时序模型。
根据第四方面,本发明实施例提供了一种工控指令序列异常检测装置,包括:第二获取模块,用于获取被测工控指令序列,被测工控指令序列包括多个被测工控指令数据,被测工控指令数据包括被测工控指令和被测工控指令到达的时间;检测模块,用于根据第一方面或者第一方面任意实施方式中的工控指令时序模型的生成方法生成的工控指令时序模型及各被测工控指令到达的时间对被测工控指令序列进行检测;判断模块,用于根据检测结果判断被测工控指令序列是否异常。
根据第五方面,本发明实施例提供了一种电子设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行如第一方面或第一方面任意实施方式中的工控指令时序模型的生成方法或如第二方面或第二方面任意实施方式中的工控指令序列异常检测方法。
根据第六方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令用于使计算机执行如第一方面或第一方面任意实施方式中的工控指令时序模型的生成方法或如第二方面或第二方面任意实施方式中的工控指令序列异常检测方法。
本发明具有如下有益效果:
(1)本发明实施例提供的工控指令时序模型的生成方法及装置,通过获取多个工控指令数据,根据预设的筛选条件统计以每个工控指令为首的指令序列,直到指令序列的长度达到第一预设阈值或不存在以工控指令为首的指令序列,生成指令序列集合,并根据工控指令到达的时间确定指令序列中各工控指令之间的步长,根据指令序列集合和步长构建工控指令时序模型,通过这种方法构建的工控指令时序模型,完全基于工控指令进行建模和分析,易于部署实施,可以从工业防火墙的日志进行建模分析,也可以通过工业流量审计设备对工控流量进行建模分析;该工控指令时序模型既包括了各工控指令序列,又包括各工控指令序列中各工控指令之间的步长,本质是工控指令的行为模型,在使用该工控指令时序模型对工控指令序列进行异常检查时,既可以发现异常的工控指令,又可以发现步长异常的工控指令,从而能更有效的发现异常的工控指令序列,防止工控系统内员工的误操作、恶意操作等。
(2)本发明实施提供的工控指令序列异常检测方法及装置,通过获取被测工控指令序列,被测工控指令序列包括多个被测工控指令数据,被测工控指令数据包括被测工控指令和被测工控指令到达的时间,根据工控指令时序模型及各被测工控指令到达的时间对被测工控指令序列进行检测,根据检测结果判断被测工控指令序列是否异常。通过这种检测方法,既可以发现异常的工控指令,又可以发现工控指令到达的时间异常的工控指令,从而能更有效的发现异常的工控指令序列,防止工控系统内员工的误操作、恶意操作等。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例的工控指令时序模型的生成方法的流程图;
图2示出了本发明实施例的生成指令序列集合的流程图;
图3示出了本发明实施例的工控指令序列异常检测方法的流程图;
图4示出了本发明实施例的指令时序树结构示意图;
图5示出了本发明实施例工控指令时序模型的生成装置结构示意图;
图6示出了本发明实施例的工控指令序列异常检测装置结构示意图;
图7示出了本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种工控指令时序模型的生成方法,主要针对具体的一个源IP和一个目的IP之间的工控指令进行建模分析,也就是针对一个上位机和一个下位机的通信进行建模分析,也适用于忽略源IP而只针对目的IP收到的工控指令进行建模分析,如图1所示,工控指令时序模型的生成方法包括:
S101.获取多个工控指令数据,工控指令数据包括工控指令和工控指令到达的时间;具体的,可以通过审计设备/工业防火墙对网络中的流量进行旁路镜像,采集分析,识别其中的工控指令数据,保存在数据库中。不同的工控系统使用不同的工控指令和协议,因此,不同的工控系统对工控指令数据结构的定义不一样。比如:OPC协议使用接口名和方法名来确定工控指令,Modbus使用功能码和起止地址来确定工控指令,S7则使用功能码、寄存器区、DB区等参数来确定指令。在本发明实施例中,为了简化描述,可以使用指令ID作为工控指令的唯一标识,这个指令ID可以在具体使用时映射为工控指令的多个参数。如表1所示,保存在数据中的工控指令数据主要包括工控指令到达时间、源IP、目的IP、指令ID和指令类型。有些零散的的工控指令,既不构成稳定的指令序列,也没有典型的时间特征,不属于本发明实施例的指令数据的范围,这种工控指令是否异常,可以由工业防火墙使用传统的工控协议深度解析技术来识别。
表1
标记工控指令类型是读还是写,主要是为后续的构建工控指令时序模型做准备。因为工控网络中,大部分的工控指令是读类型,即采集设备状态信息,而这类信息一般不是攻击信息,也不会对设备造成恶性影响。在很多场景下可以仅对写类型的工控指令进行构建工控指令时序模型就可以达到工控指令序列较好的异常检测效果。当然,如果服务器的资源足够、性能足够,也可以针对全部工控指令构建工控指令时序模型。
需要说明的是,本发明实施例主要针对固定的源和目的之间的工控指令进行建模分析,所以在后续的说明中,不再关注该表中的源IP和目的IP。在实际应用中,可以针对所有的源IP和目的IP进行建模应用,也可以针对典型的源IP和目的IP的通信行为建模,然后应用到其他源IP和目的IP的通信行为分析中。
S102.根据预设的筛选条件统计以每个工控指令为首的指令序列,直到指令序列的长度达到第一预设阈值或不存在以工控指令为首的指令序列,生成指令序列集合;具体的,因为工控指令都是按照一定的次序下发,而且对于一个具体的业务操作,工控指令序列的长度可控,一般数量级小于100,可以对工控指令数据做相关性分析,学习指令序列规律,使用数据挖掘和机器学习算法建立指令序列集合。算法包括但不限于改进的支持有向频繁项集挖掘的FP-Growth、LSTM和深度自编码神经网络等。
S103.根据工控指令到达的时间确定指令序列中各工控指令之间的步长;具体的,工控指令数据包括了工控指令达到的时间,根据工控指令序列中的每个工控指令到达的时间,可以计算指令序列中各工控指令之间的时间间隔,也即步长。
S104.根据指令序列集合和步长构建工控指令时序模型。
本发明实施例提供的工控指令时序模型的生成方法,通过获取多个工控指令数据,根据预设的筛选条件统计以每个工控指令为首的指令序列,直到指令序列的长度达到第一预设阈值或不存在以工控指令为首的指令序列,生成指令序列集合,并根据工控指令到达的时间确定指令序列中各工控指令之间的步长,根据指令序列集合和步长构建工控指令时序模型,通过这种方法构建的工控指令时序模型,完全基于工控指令进行建模和分析,易于部署实施,可以从工业防火墙的日志进行建模分析,也可以通过工业流量审计设备对工控流量进行建模分析;该工控指令时序模型既包括了各工控指令序列,又包括各工控指令序列中各工控指令之间的步长,本质是工控指令的行为模型,在使用该工控指令时序模型对工控指令序列进行异常检查时,既可以发现异常的工控指令,又可以发现步长异常的工控指令,从而能更有效的发现异常的工控指令序列,防止工控系统内员工的误操作、恶意操作等。
在可选的实施例中,步骤S102,根据预设的筛选条件统计以每个工控指令为首的指令序列,直到指令序列的长度达到第一预设阈值或不存在以工控指令为首的指令序列,生成指令序列集合,如图2所示,包括:
步骤1:根据数据统计每个工控指令出现的第一次数;
步骤2:判断第一次数是否小于第一预设次数阈值,如果小于第一预设次数阈值,则进入步骤3,如果大于第一预设次数阈值,则进入步骤4;
步骤3:删除第一次数小于第一预设次数阈值的工控指令;
步骤4:将第一次数大于或等于第一预设次数阈值的工控指令的长度加1,得到指令序列;
步骤5:统计指令序列出现的第二次数;
步骤6:判断第二次数是否大于第一预设次数阈值,如果大于第一预设次数阈值,则进入步骤7,如果小于第一次数阈值,则进入步骤9;
步骤7:判断指令序列的长度是否达到第一预设阈值,或者,是否不存在以工控指令为首的指令序列,如果指令序列的长度未达到第一预设阈值,或者,存在以工控指令为首的指令序列,则进入步骤8,如果指令序列的长度达到第一预设阈值,或者,不存在以工控指令为首的指令序列,则进入步骤10,根据指令序列构建指令序列集合;
步骤8:将指令序列的长度加1,得到新的指令序列,然后返回步骤5,统计新的指令序列出现的第二次数,直至指令序列的长度达到第一预设阈值,或者,不存在以工控指令为首的指令序列,然后进入步骤10,根据指令序列和新的指令序列构建指令序列集合;
步骤9:删除第二次数小于第一预设次数阈值的工控指令序列,然后进入步骤7;
步骤10:根据指令序列和/或新的指令序列构建指令序列集合。
具体的,本发明实施例以基于支持有向频繁项集的FP-Growth改进算法为例进行说明,可以把工控指令数据标记为:A=<C,t>,C∈E,其中C代表工控指令,即工控指令ID;E代表全体工控指令ID的集合;t代表该工控指令到达的时间。所有工控指令数据的原始数据集标记为:AD=(A1,A2,A3…An),Ai(0<i<=N)为不同时间的指令事件A,整个序列按时间从小到大次序排列,其中的工控指令可能相同,但是时间不同。我们要从原始数据集AD中挖掘工控指令的频繁序列,也就是频繁出现的工控指令组合,即指令序列,指令序列模型标记为:P=(P1,P2,P3…Pk),0<k<N,Pk∈P,其中Pk可以是单个指令C,也可以是一个序列集合,比如(Ci,Cj,Ck),也可以是通配符*,代表任何指令。例如,一个实际的序列模型可能是这样的:P=(C1,*,C4,C5)。工控指令步长标记为:T,代表指令之间的时间间隔。附加了步长的指令序列模型为:PT=(P1,T1,P2,T2,P3…,Tk-1,Pk),0<k<N,Pk∈P,。该表达式的含义为:P1指令后,经过T1,P2指令到达,在经过T2时间,P3指令到达,以此类推。步长抖动标记为:J=|t-T|/T,表示实际步长t与模型中的步长T的差值与标准时长T的占比。一般在网络中因为各种状况,可能是网络或主机CPU繁忙程度等因素,报文传输时间都会有一定的延迟和抖动,所以在学习建立模型的过程中,以及后面判断异常的过程中,都需要增加这个步长抖动J来增强算法的鲁棒性。
计算步骤如下:
1.可以设定指令序列的最小出现次数F,指令序列的最大长度L。
2.找出原始数据集中所有工控指令C,并逐个统计每个工控指令C出现的次数f。如果f小于F,将该指令从内存删除,后续不再统计该指令开头的序列。如果f大于等于F,则记录该工控指令C及其出现的次数f。单个指令可以认为是一个长度为1的指令序列。
3.根据所有满足出现次数F的工控指令序列,找出以该指令序列为首,并且长度加1的指令序列(注:指令序列按时间顺利排列,为有向序列),并统计其出现的次数f。在统计次数的过程中,同步计算指令之间的步长t,并缓存到一个列表中。如果f<F,将该指令序列及其步长列表从内存删除,后续不再统计该指令开头的序列。如果f>=F,则记录该指令序列及其出现的次数。递归重复步骤3,不断递增指令序列的长度,直到指令序列的长度达到预定的阈值L,或者不存在以指令序列开头的指令集合。至此,找出了所有出现次数符合要求的工控指令序列。
在可选的实施例中,在步骤S104,根据指令序列集合和步长生成构建工控指令时序模型之前,还包括:判断指令序列集合中的第一指令序列是否包括第二指令序列;如果第一指令序列包括第二指令序列,判断第一指令序列的次数是否大于或等于第二指令序列的次数;如果第一指令序列的次数大于或等于第二指令序列的次数,则删除第二指令序列。如果第一指令序列的次数小于第二指令序列的次数,判断第二指令序列在第一指令序列中重复的次数与第一指令序列的次数的乘积是否等于第二指令序列的次数;如果相等,删除第二指令序列。
例如,长指令序列合并短指令序列。如果长指令序列包含短指令序列,长指令序列的次数等于短指令序列的次数,则删除短序列。比如(C1)和(C1,C2)出现的次数一样,则后续算法不需要考虑(C1)。如果长指令序列和短指令序列的次数不一样,短指令序列出现的次数大于长指令序列出现的次数,则需要保留2个指令序列。由于时间序列是有向序列,一个长指令序列中可能重复出现相同的短指令序列,如果长指令序列的次数乘以短指令序列在该长指令序列中的重复次数等于短指令序列的出现次数,该短指令序列也进行删除。
在可选的实施例中,在步骤S104,根据指令序列和步长生成工控指令序列时序模型之前,还包括:判断长度相等的指令序列中的工控指令及工控指令出现的顺序是否相同;如果相同,只保留一个指令序列及其各工控指令之间的步长。例如,等长同类指令序列合并。如果两个指令序列等长,并且指令序列里面指令出现的顺序是一样的,只是起始工控指令不同,比如(C1,C2,C3)和(C2,C3,C1),这种序列本质是一个序列,因为循环开始指令不同导致生成了不同的指令序列,只需要保留一个即可。
本发明实施例还提供了一种工控指令序列异常检测方法,如图3所示,包括:
S201.获取被测工控指令序列,被测工控指令序列包括多个被测工控指令数据,被测工控指令数据包括被测工控指令和被测工控指令到达的时间;具体的,对于一个实际的工控指令序列,标记为CT=(C1,t1,C2,t2,C3…CK)。
S202.根据上述任意实施方式中的工控指令时序模型的生成方法生成的工控指令时序模型及各被测工控指令到达的时间对被测工控指令序列进行检测;具体的,对于一个工控指令序列模型,标记为PT=(P1,T1,P2,T2,P3…Pm),根据实际的工控指令序列Ct=(C1,t1,C2,t2,C3…Cm)中的各工控指令到达的时间t,可以计算得到实际的工控指令序列CT=(C1,T1,C2,T2,C3…CK),那么CT如果满足下面2点要求,就认为CT匹配了PT:
1)m=k,即CT序列的长度和PT的序列长度一样,并且对于任何位置i的C,都有Ci=Pi||Ci∈Pi。
2)CT指令之间的时间间隔TK和PT序列中的时间间隔T的误差抖动J,满足指令序列的时间抖动要求,那么就认为CT匹配了PT模式。
S203.根据检测结果判断被测工控指令序列是否异常。具体的,如果CT匹配PT,则工控指令序列正常,如果CT不匹配PT,则工控指令序列异常。
本发明实施提供的工控指令序列异常检测方法,通过获取被测工控指令序列,被测工控指令序列包括多个被测工控指令数据,被测工控指令数据包括被测工控指令和被测工控指令到达的时间,根据工控指令时序模型及各被测工控指令到达的时间对被测工控指令序列进行检测,根据检测结果判断被测工控指令序列是否异常。通过这种检测方法,既可以发现异常的工控指令,又可以发现工控指令到达的时间异常的工控指令,从而能更有效的发现异常的工控指令序列,防止工控系统内员工的误操作、恶意操作等。
在可选的实施例中,步骤S202,根据上述任意实施方式中的工控指令时序模型的生成方法生成的工控指令时序模型及各被测工控指令到达的时间对被测工控指令序列进行检测,包括:判断第一被测工控指令是否为工控指令时序模型中的指令序列的首个工控指令;如果第一被测工控指令为工控指令时序模型中的指令序列的首个工控指令,根据各被测工控指令到达的时间计算各被测工控指令之间的步长;判断各被测工控指令的顺序及各被测工控指令之间的步长是否与工控指令时序模型中的指令序列的各工控指令的顺序及各工控指令的步长是否相同;如果相同,则被测工控指令序列正常。如果不相同,则报警提示被测工控指令序列异常。如果第一被测工控指令不为工控指令时序模型中的指令序列的首个工控指令,则忽略不处理第一被测工控指令,判断第二被测工控指令是否为工控指令时序模型中的指令序列的首个工控指令;如果第二被测工控指令为工控指令时序模型中的指令序列的首个工控指令,进入判断各被测工控指令的顺序及各被测工控指令之间的步长是否与工控指令时序模型中的指令序列的各工控指令的顺序及各工控指令的步长相同的步骤。
具体的,1、加载工控指令的时序模型到内存,以树形结构存储时序模型,每个节点的数据包括单个指令及从树根到该节点的序列的时序模型。所有的树根存在一个Hash表中。所有指令序列的结尾指令节点标记结尾标志,说明指令序列到该指令允许结束。该标志用于后续判断序列异常结束,比如一个序列(A,B,C,D,E),在C和E时都允许结束,即(A,B,C)是合法的指令序列,(A,B,C,D,E)也是合法的指令序列,但是(A,B,C,D)就不是合法的指令序列。
2、初始化指令匹配缓存区,初始为空。
3、对第一个收到的指令进行序列模式匹配。从Hash表中查找匹配的树根,如果没有匹配的树根,说明该指令不属于指令序列,忽略不处理;如果匹配成功,标记当前匹配位置,并查找后续应该到来的指令PC、步长T、抖动阈值J。
4、如果经过T+T*J时间后没有收到任何指令,说明该指令序列步长异常,上报告警。
5、如果在小于T-T*J的时间内收到任何指令,说明该指令序列步长异常,上报告警。
6、如果在[(T-T*J),(T+T*J)]的时间区间收到工控指令C,进行序列模式匹配:1)C=PC:序列模式匹配成功,说明该指令序列正常;2)C!=PC:匹配模式匹配失败,说明该指令序列指令异常,上报告警。
7、模式匹配成功,记录当前状态,为新来的指令做准备。如果已经是序列的最后位置,清空缓存,后续工控指令从第3步开始匹配。
为了便于理解,本发明实施例以一简单例子进行说明。假设某一工控系统的指令集包括5个指令:{C1,C2,C3,C4,C5},实际的指令序列包括2个:1)指令序列为{C1,C3,C2,C5,C4},指令间隔时间为{3秒,1秒,2秒,1秒,2秒};2)指令序列为{C1,C5,C4},指令间隔时间为{1秒,1秒,1秒}。在训练阶段,学习的指令序列CT={(C1,3秒),(C3,1秒),(C2,2秒),(C5,1秒),(C4,2秒),(C1,1秒),(C5,1秒),(C4,1秒)……}。
基于有向频繁项集的Fp-growth改进算法,计算建模的过程描述如下:
1.设置初始参数,指令序列最小次数为5,最大长度为5,时间抖动阈值0.2。
2.数据预处理,将工控指令和指令间隔时间数值化,产生待挖掘的数值序列。
3.根据历史指令序列,挖掘计算后,产生工控指令时序模型,用指令时序树表示如图4所示。其中,C1为序列的起始指令,C4为序列的结束指令。
基于上述工控指令时序模型,进行异常检测的过程描述如下:
1.加载工控指令时序模型,进入初始状态,准备匹配第一个工控指令。
2.获取网络中的第1个实时工控指令。
3.如果该指令是C1,则进入模型匹配过程;否则,忽略不进行匹配。
4.获取网络中的第2个实时工控指令。
5.如果该指令是C3,并且和第1个指令的时间间隔是3秒(或者符合时间容忍度),则记录匹配位置,继续等待下一个指令C2。
6.如果该指令是C5,并且和第1个指令的时间间隔是1秒(或者符合时间容忍度),则记录匹配位置,继续等待下一个指令C4。
7.如果该指令不满足上面2条要求中的任何一条:指令要求和时间间隔要求,都算匹配失败,说明该工控指令序列出现异常,应产生告警,模式匹配恢复初始状态。
8.如果模式匹配直到工控指令序列的最后一个指令C4都匹配成功,则恢复初始状态,准备等待下一轮的指令匹配。
本发明实施例还提供了一种工控指令时序模型的生成装置,如图5所示,包括:第一获取模块41,用于获取多个工控指令数据,工控指令数据包括工控指令和工控指令到达的时间,详细内容参见上述方法实施例的步骤S101所述;统计模块42,用于根据预设的筛选条件统计以每个工控指令为首的指令序列,直到指令序列的长度达到第一预设阈值或不存在以工控指令为首的指令序列,生成指令序列集合,详细内容参见上述方法实施例的步骤S102所述;确定模块43,用于根据工控指令到达的时间确定指令序列中各工控指令之间的步长,详细内容参见上述方法实施例的步骤S103所述;构建模块44,用于根据指令序列和步长构建工控指令时序模型,详细内容参见上述方法实施例的步骤S104所述。
本发明实施例提供的工控指令时序模型的生成装置,通过获取多个工控指令数据,根据预设的筛选条件统计以每个工控指令为首的指令序列,直到指令序列的长度达到第一预设阈值或不存在以工控指令为首的指令序列,生成指令序列集合,并根据工控指令到达的时间确定指令序列中各工控指令之间的步长,根据指令序列集合和步长构建工控指令时序模型,通过这种方法构建的工控指令时序模型,完全基于工控指令进行建模和分析,易于部署实施,可以从工业防火墙的日志进行建模分析,也可以通过工业流量审计设备对工控流量进行建模分析;该工控指令时序模型既包括了各工控指令序列,又包括各工控指令序列中各工控指令之间的步长,本质是工控指令的行为模型,在使用该工控指令时序模型对工控指令序列进行异常检查时,既可以发现异常的工控指令,又可以发现步长异常的工控指令,从而能更有效的发现异常的工控指令序列,防止工控系统内员工的误操作、恶意操作等。
本发明实施例还提供了一种工控指令序列异常检测装置,如图6所示,包括:第二获取模块51,用于获取被测工控指令序列,被测工控指令序列包括多个被测工控指令数据,被测工控指令数据包括被测工控指令和被测工控指令到达的时间,详细内容参见上述方法实施例的步骤S201所述;检测模块52,用于根据第一方面或者第一方面任意实施方式中的工控指令时序模型的生成方法生成的工控指令时序模型及各被测工控指令到达的时间对被测工控指令序列进行检测,详细内容参见上述方法实施例的步骤S202所述;判断模块53,用于根据检测结果判断被测工控指令序列是否异常,详细内容参见上述方法实施例的步骤S203所述。
本发明实施提供的工控指令序列异常检测装置,通过获取被测工控指令序列,被测工控指令序列包括多个被测工控指令数据,被测工控指令数据包括被测工控指令和被测工控指令到达的时间,根据工控指令时序模型及各被测工控指令到达的时间对被测工控指令序列进行检测,根据检测结果判断被测工控指令序列是否异常。通过这种检测方法,既可以发现异常的工控指令,又可以发现工控指令到达的时间异常的工控指令,从而能更有效的发现异常的工控指令序列,防止工控系统内员工的误操作、恶意操作等。
本发明实施例还提供了一种电子设备,如图7所示,该电子设备可以包括处理器61和存储器62,其中处理器61和存储器62可以通过总线或者其他方式连接,图7中以通过总线连接为例。
处理器61可以为中央处理器(Central Processing Unit,CPU)。处理器61还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器62作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的工控指令时序模型的生成方法或工控指令序列异常检测方法对应的程序指令/模块。处理器61通过运行存储在存储器62中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的工控指令时序模型的生成方法或工控指令序列异常检测方法。
存储器62可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器61所创建的数据等。此外,存储器62可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器62可选包括相对于处理器61远程设置的存储器,这些远程存储器可以通过网络连接至处理器61。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器62中,当被所述处理器61执行时,执行如图1所示实施例中的工控指令时序模型的生成方法或如图3所示实施例中的工控指令序列异常检测方法。
上述电子设备具体细节可以对应参阅图1至图3所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random AccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。