APP下载

基于信息流和状态流融合的工控系统异常检测算法

2018-11-13郑为民石志强孙利民

计算机研究与发展 2018年11期
关键词:向量节点状态

杨 安 胡 堰 周 亮 郑为民 石志强 孙利民

1(物联网信息安全技术北京市重点实验室(中国科学院信息工程研究所) 北京 100093) 2(中国科学院大学网络空间安全学院 北京 100049) 3(北京科技大学计算机与通信工程学院 北京 100083) 4(中国电力科学研究院 北京 100192) 5 (中国科学院信息工程研究所 北京 100093) (yangan@iie.ac.cn)

工业控制系统(industrial control system, ICS)是一类用于工业生产的控制系统的统称,它包含监视控制与数据采集系统(supervisory control and data acquisition, SCADA)、分布式控制系统和其他一些常见于工业部门与关键基础设施的小型控制系统(如可编程逻辑控制器)等[1].ICS广泛应用社会的各行各业中,包括机械制造、石油石化等工业生产企业以及污水处理、核电系统等基础设施. 目前,内部恶意人员、敌对企业、国家级组织等攻击者日益增多,自动化工具、零日漏洞等攻击技术迅猛发展,ICS的安全直接关系到企业的正常运转和国家的安全稳定.

随着ICS的开放化和标准化,其与外部网络的联系越来越紧密,业务处理更加方便.然而其脆弱点也更多地暴露到互联网中,导致所受到的网络攻击也急剧增加.序列攻击是针对ICS的一种特殊攻击.该攻击依赖控制流程、被控物理设备的知识,试图对物理世界造成最大化的破坏.该攻击主要针对由写、执行等操作组成的周期性操作序列.它通过将正常操作以非正常次序出现,使目标设备出现问题.

目前针对序列攻击的主要检测算法是通过旁路监听ICS中的信息流,从中捕获、提取操作命令以形成操作命令序列,进而采用有限状态机、Markov模型等数学检测模型,正确构建多个操作之间正常合理的对应关系,从操作次序上识别异常操作.

然而上述检测模型严重依赖于数据的完整性和真实性.由于ICS在设计之初未考虑安全性,且与互联网紧密关联,易遭受攻击.攻击者可通过注入、阻断、篡改操作命令等方式,伪造虚假的操作序列,导致检测算法产生漏报,造成检测算法的失效.

为解决上述问题,本文引入设备状态流的思想.设备状态流是利用大量不同的感知信息表示系统设备的实时状态,其与信息流相互独立,可保证设备状态流不受数据篡改的影响,保证数据的真实性、独立性.

因此,本文根据ICS与物理环境的紧密关系,提出一种新型的序列攻击检测算法ADISF(anomaly detection based on information flow and state flow fusion),将信息流(控制系统)和设备状态流(设备状态)相融合,以实现对序列攻击的精确检测.该算法针对操作序列,以概率后缀树(probabilistic suffix tree, PST)的思想检测操作次序的异常;依据树中节点所携带的设备状态变化属性信息,采用阈值匹配方法判断该节点(操作)前、后设备状态取值及其变化差值的合法性,实现对操作时序异常的检测;依据树中节点所携带的设备状态发展趋势属性信息,采用阈值匹配和自回归(auto regressive, AR)模型方法,判断该节点与下个节点之间的设备状态取值变化形式,以及时发现操作间隔中的设备状态异常.

本文的主要贡献有3点:

1) 提出了信息流和设备状态流相融合的序列攻击检测算法,可防止虚假操作对检测结果的影响;

2) 提出了全操作周期的异常检测机制,在传统操作次序异常检测的基础上,利用设备状态流维度识别操作时序异常的操作,并增加对操作间隔中的异常检测,扩充了传统序列攻击检测的检测范围;

3) 依据该算法实现了双流检测方案,并在燃气管网系统测试床中验证了该检测算法的有效性.

1 相关工作

目前针对序列攻击检测的研究,大多是从工业控制网络中提取操作序列,采用确定性或概率性检测方法,检测操作次序.

确定性检测方式是基于训练数据构建唯一的、无随机成分的检测模型,如有限状态机. Sekar等人[2]将传统有限状态机扩展到传输层协议,实现对TCP和UDP等协议的检测;Krueger等人[3]针对会话序列,利用n-grams算法分析消息间的相似性以形成事件状态空间,并形成最小的确定性有限状态机(deterministic finite automaton, DFA),实现对正常网络通信行为规则的建模;此外,Goldenberg等人[4]将确定性有限状态机扩展到应用层,实现对高周期性的Modbus协议的检测.

概率性检测方法是采用概率统计的方法计算各个操作出现的概率,以构建ICS的操作概率模型,常用的有贝叶斯模型和Markov模型.Yoon等人[5]采用PST,针对Modbus协议的请求/应答序列进行建模,并根据实时计算结果与阈值的偏移程度识别异常;Caselli等人[6]针对工控协议(Modbus, IEC104)、日志文件和运行变量,分别采用离散Markov链进行建模,并采用带权重的距离公式计算实时偏移量以识别异常.

此外,部分研究者还依据网络数据,从其他角度检测攻击.Sommer等人[7]从网络通信中实时提取物理位置、传感器取值等可编程逻辑控制器(pro-grammable logic controller, PLC)的运行变量,采用自回归模型或变量取值范围匹配,对这些变量值进行监控.Xiao等人[8]提出一个位于SCADA系统之上的工作流层,采用模拟器检测下发的控制命令,识别已知攻击;监控物理层状态信息,利用系统健康检查识别潜在威胁.

本节所述方案均是在网络数据安全可靠的前提下提出的.目前工业控制网络较为脆弱,易受攻击,导致检测失效.本文提出了基于信息流和设备状态流相融合的序列攻击检测算法,将独立的设备状态流信息融入到信息流中,从次序和时序2个维度检测操作序列的异常.该方法在操作序列次序检测的基础上,实现了操作序列时序异常的检测,提升了对序列攻击的检测精度.

2 背 景

2.1 序列攻击

在实际工业生产中,存在明确的操作顺序以及严格的时限要求,用于确保系统正常的生产过程;一旦操作出现问题,会导致业务逻辑混乱,破坏生产流程的稳定,从而造成设备损害、资源浪费,甚至人员伤害.

序列攻击可分为2类:基于次序的攻击和基于时序的攻击.基于次序的攻击是将消息、命令以非法、恶意的次序发送;基于时序的攻击是将消息、命令在非法的时间内发送.

Carcano等人[9]列举了一个基于次序的序列攻击实例.他们选用一条输气管道,其压强由2个开关V1和V2控制.他们通过2条错位的合法控制消息,将系统置于危险状态.具体来讲,攻击者访问该网络并向PLC注入写消息,导致V2完全关闭且V1完全打开,迫使输气量及管道压强最大化.在此操作中,每条命令在独立检测时都是合法的,但将它们以特定顺序发送会导致系统进入临界状态.

美国总统关键基础设施保护委员会的报告中提及了一个基于时序的攻击实例.该攻击场景是一个配水部门,其输水管道由大量阀门进行控制.一旦这些阀门快速开关,则会形成水锤效应,导致大量管道同时破裂.因此,攻击者可给PLC发送异常速率的合法写命令序列,命令这些阀门以异常速率进行开关操作,迫使水流在惯性等因素的作用下,对阀门和管道产生正常工作压强几十倍以上的瞬时压强,造成阀门损坏或管道破裂.

2.2 序列攻击检测

基于PST的检测算法是针对序列攻击的一种常用的、基于树的检测算法,其结构较为灵活,易于扩展,且便于进行故障诊断与排除.PST本质上是一个变阶的Markov模型[10],其假设当前操作仅与前多个操作有关.该算法在功能上避免了单阶Markov模型因跳转概率相同而产生的节点跳转误判问题,并避免了N阶Markov模型复杂的训练过程;在性能上,避免了因Markov模型的训练时间复杂度随阶次的增加呈指数形式增长而导致的内存爆炸问题,且其学习时间相对于隐马尔可夫模型(hidden Markov model, HMM)[11]有着显著的降低.

PST是一个非空的树,用于表示某个序列P=(P1P2…Pm…),Pm∈C的概率特征,其中C表示该序列的符号集.该树上的边为C中的某个符号标记,且某个节点发出的边的符号标记各不相同.该树上的节点表示一个符号串Q,其中根节点为ROOT,其余节点的Q是从该节点回溯到根节点所经过的边生成的.此外每个节点还存储一个概率向量,它是该节点符号串的下个符号出现的条件概率.图1是由“ABRAFAGABRA”序列生成的深度为2的PST.

Fig. 1 PST trained by “ABRAFAGABRA”图1 由“ABRAFAGABRA”训练生成的PST

在检测过程中,由于训练数据中可能存在噪音或少量异常数据,故PST主要采用阈值比较的方法,将周期性操作中出现概率较小的操作序列认为是异常.针对获取到的操作Pm,根据L长度的历史操作序列HP=(Pm-LPm-L+1…Pm-1),计算概率p(Pm|HP)并与预先给定的阈值θ(多为经验值)进行比较,若小于则认为异常,产生警报.

Fig. 2 ADISF tree structure图2 ADISF树形结构

3 ADISF模型

ADISF模型是借鉴了PST的理念,用于描述、存储操作序列、操作执行时的设备状态变化和操作之后的设备状态发展趋势的一个树形结构.该树中的边为操作集合中的某个操作,树上的节点表示由该节点到根节点所经过的边所组成的操作序列.此外,对每个节点构造了复杂的属性集合,用于存储操作序列信息、操作与设备状态之间的关联性以及设备状态自身的发展趋势,利于实现对序列攻击的检测.图2是由本算法生成的ADISF模型实例,其中仅以节点F为例显示其属性信息.

在本文中,我们以操作序列及其出现概率表示信息流数据.同时,我们采用由多个状态信息组成的状态向量表示设备状态,其值主要由传感器数值组成,分别表示液位、温度、流速等含义.

具体来说,本文树上各节点的属性集合由五大部分组成,包括了信息流相关的下一跳状态向量及其转移概率向量,以及设备状态流相关的状态集合、权重向量、特征变换对应集合,如图3所示.其中根据状态信息类型的不同,设备状态流相关的属性又可划分成离散和连续2个子属性.具体来说,属性集合包括:

1) 下一跳状态向量.表示所有可能的下一跳节点状态信息.

2) 下一跳的转移概率向量.表示从当前状态跳转到对应下一跳节点的发生概率,其每个向量元素取值为

p′=n′m′,

(1)

其中,m′为当前节点状态的出现次数,n′为对应下一跳节点状态的出现次数.

3) 状态信息集合.执行对应操作前、后的所有合法的状态信息集合.本文根据该状态信息的取值个数与阈值的比较,将其划分为离散和连续2个类型,以采用不同的分析方法:

① 离散状态信息集合.记录由操作前、后的离散状态信息向量sfdb,k=(fdb,1,fdb,2,…,fdb,z)和sfda,k=(fda,1,fda,2,…,fda,z)组成的前离散状态信息集合SFdb={sfdb,1,sfdb,2,…,sfdb,q}和后离散状态信息集合SFda={sfda,1,sfda,2,…,sfda,r},其中f表示某一离散状态信息,z表示离散状态信息的个数,q和r分别表示前、后离散状态信息向量的个数.此外,该操作执行后到下个操作执行前,对应的离散状态信息向量应保持不变,故无需记录离散状态信息在操作执行后的变化情况.

② 连续状态信息变化集合. 根据特征采集时间又可分为2类.Ⅰ)针对操作执行时的连续状态信息取值的变化情况,计算操作前、后连续状态信息向量的平均差值sfcb=(fc,1,fc,2,…,fc,v),其中v表示连续状态信息个数,fc,i表示第i个连续状态信息的平均差值;确定操作前、后连续状态信息向量的固定取值情况sfcbf=(fcbf,1,fcbf,2,…,fcbf,v)和sfcaf=(fcaf,1,fcaf,2,…,fcaf,v),其中fcbf,i和fcaf,i表示第i连续状态信息的前、后固定取值.Ⅱ)针对操作执行后的连续状态信息的变化情况,形成连续状态信息变化趋势向量Ca=(ca,1,ca,2,…,ca,v),其中ca,i表示该段时间对应的第i个连续状态信息值的变化趋势.

4) 权重向量.表示各状态信息取值的变化情况.对于离散状态信息集合,采用变量Wd表示离散状态信息向量在操作执行前后的数值变化情况,包括无变化、一一对应、一对多、多对一和多对多这5种情况.对应连续状态信息变化集合,采用Wc=(wc,1,wc,2,…,wc,v)表示各连续状态信息在该时间间隔中的数值变化情况,包括操作执行前后数值固定、操作执行前后无变化和操作执行前后有变化这3种情况;采用Wcl=(wcl,1,wcl,2,…,wcl,v)表示各连续状态信息在该操作执行后的数值变化趋势,包括操作执行后稳定、操作执行后特定波动、操作执行后随机波动这3种情况.

5) 信息变换对应集合.表示该时刻各状态信息的前后状态取值的对应情况.对于离散状态信息,表示操作执行前、后2个离散状态信息集合的对应情况CSF;对于连续状态信息,表示其后续变化趋势对应的AR模型参数集ARcl或者取值范围SCcl.

Fig. 3 Node attribute of ADISF图3 ADISF节点属性列表

4 基于信息流和状态流融合的ICS检测算法

ADISF检测算法首次将设备状态信息融入序列攻击检测中,在操作次序检测基础上,利用存储于ADISF模型的操作执行前后的设备状态数值的合法变化关系,检测操作时序的合理性.同时针对传统序列检测算法无法检测操作间隔中的异常问题,本算法在操作执行后实时跟踪检测设备状态的发展变化,结合ADISF模型存储的设备状态合法变化趋势数据,采用AR和阈值匹配方法及时发现设备异常,从整体上兼顾了ICS所有的运转时间,弥补了现有操作序列检测在检测范围上的不足,也缩短了序列攻击检测的异常识别时间.

如图4所示,该检测算法主要由2部分组成:模型的训练和实时数据检测.

Fig. 4 Overview of ADISF图4 ADISF算法架构图

4.1 ADISF模型训练

ADISF算法从训练数据中提取相应的操作序列以及实时设备状态信息,先根据操作序列采用信息熵确定ADISF树的深度,再构建ADISF.构建ADISF又可分为:1)根据操作序列,从根节点开始,构建ADISF树形结构;2)在树中各节点中添加状态信息以及对应的数值变化;3)提取该操作与下一个操作之间的状态向量集合,并采用阈值分析和AR模型确定该间隔中各状态信息取值的变化趋势.

4.1.1 ADISF深度确定

ADISF的深度是该树可匹配的最长序列长度,其值的设定很大程度上决定检测的准确性.若深度过深,导致计算和存储开销呈指数增长,且久远、无用的历史数据会消耗大量的检测时间,降低检测效率和实时性;若深度过浅,则需要匹配的序列段长度短,易造成误判,影响检测精度.

由于ICS的业务流程多存在周期性,故树的深度可设为对应业务流程的周期值.在缺少相关信息的情况下,操作员可通过分析多周期的操作命令序列获得周期值.除少量由于操作员临时操作调整等原因导致周期长短发生变化,绝大多数操作仍按照业务流程以固定周期的形式执行.因此,通过寻找对应操作变化最小的间隔长度,可较为精准地确定周期值.

信息熵是用来描述信源的不确定度,当信源的不确定性越大、越混乱,信息熵即越大;反之亦然.故本文依据信息熵的思想,针对不同长度间隔形成的多个操作集合,选取熵值最小的操作集合对应的长度间隔为周期值.具体计算过程如下所示:

1) 将采集到的、长度为lP的操作序列P按照不同的长度l=1,2,…,lP2划分成多个操作子集,其中每个子集SPl={Pl,P2×l,…,Po×l}是由间隔为l的操作组成的集合(算法1行②).

2) 针对各个SPl,分别计算其对应的信息熵El,形成向量EN=(E1,E2,…,ElP2)(算法1行③).

3) 选取EN中最小值El对应的固定长度l作为该序列的周期长度(算法1行⑤).

算法1. 序列周期长度计算算法.

为了准确全面地对滑坡位移特征进行研究,本次选取滑坡监测初始的约2.5个水文年作为代表性时间段(见图3)。分析该滑坡位移与库水及降雨间的相关性发现,该滑坡的位移明显增加现象并非发生在强降雨时期,而是库水位强烈波动时期。由此可知,该滑坡的主控外因是库水位波动,即在后续数值模拟研究中,忽略降雨对滑坡变形的影响是合理的。

输入:操作序列P、序列长度lP;

输出:周期长度L.

② 生成集合SPl;

③ 计算集合SPl的熵值;

④ end for

⑤ 确定周期长度L.

4.1.2 构建ADISF

1) 利用操作序列P,从根节点开始,依次计算各候选子节点的概率向量,逐层建立候选子节点,直到树的最大深度,并在各节点中记录下一跳状态向量Next_state和其转移概率向量Probability(算法2行①).

2) 根据设备状态信息序列OS,确定各设备状态信息的类型,生成状态类型向量TO(算法2行②);针对ADISF各节点,从设备状态信息序列OS中,提取该节点对应的操作执行前、后的状态集合Ob,Oa,以及该操作与下个操作之间的设备状态序列D(算法2行④);根据TO的取值将状态信息划分为2类并分别进行分析:

① 离散状态信息向量Od

从集合Ob和Oa中提取Od对应的Odb和Oda,计算SFdb和SFda及其之间的对应关系CSF,以此确定权重Wd(一对一、一对多、多对一、多对多)(算法2行⑤).

② 各连续状态信息Oci

Ⅰ) 从Ob,Oa,D中提取Oci对应的部分Ocb,i,Oca,i,Di;判断Ocb,i和Oca,i各自的取值个数,确定是否为定值;计算Oci对应的fc,i,并将其与对应的连续状态信息变化阈值向量τcm中的τcm,i进行比较,以确定wc,i(算法2行⑦).

Ⅱ) 计算Oci的变化趋势ca,i,并与其对应的连续状态信息趋势阈值向量τlm中的τlm,i进行比较,确定wcl,i(算法2行⑧).其中lc是Di的长度,d1,i是Di的第1个取值.

(2)

Ⅲ) 根据Di和wcl,i等信息判断Oci是否适用于AR模型,若适用则训练对应AR模型的参数集ARcl,i;否则记录SCcl,i用于阈值检测(算法2行⑨).

算法2. ADISF训练算法.

输入:操作序列P、操作序列长度lP、设备状态信息序列OS;

输出:生成的ADISF树ADISF-tree.

① 生成ADISF的树形结构ADISF-tree;

② 确定各状态信息的类型;

③ for每个树节点p_n

④ 提取节点前后状态信息集合;

⑤ 针对离散状态信息,生成状态信息集合、权重向量及信息变换对应集合;

⑥ for每个连续状态信息Oci

⑦ 判断节点前、后信息向量的相关取值及权重;

⑧ 确定其后续变化趋势及权重信息;

⑨ 确定后续变化趋势的对应关系;

⑩ end for

4.2 实时检测

当算法训练结束后,即可利用已构建出的ADISF模型,针对实时捕获的双流数据,判断是否存在序列攻击或设备状态的异常. 其核心思想是将实时捕获的操作和设备状态信息作为输入,判断ADISF中是否存在对应的跳转节点,以及跳转条件和变化趋势是否正确,若出现错误,即认为产生操作次序、时序或设备状态的异常,以此检测当前命令是否合乎业务流程.

本算法在刚开始检测或检测出异常时会清空历史操作序列,此时在捕获到第1个操作之前的设备状态信息均无法确定其对应的ADISF节点信息,只能将其过滤.因此在无历史操作序列情况下,只能简单地检测操作时序、次序的合法性;而在有历史操作序列情况下,可精确地检测操作次序、时序和设备状态的异常.故本算法根据历史操作序列是否为空,将检测流程分为起始检测、后续实时检测2部分.其具体流程如下:

判断历史操作序列的内容,若历史操作序列为空,执行起始检测;若存在历史操作序列,则执行后续实时检测.

起始检测:

1) 过滤捕获到的数据,直到获取到第1个操作P_T_C,在ADISF-tree中确定其对应的节点,判断是否为非法操作(算法3行②~⑤).

2) 当对应操作正常时,认为该操作P_T_C前一时刻的状态信息是正常的,故获取该操作前、后对应的状态信息向量OBb和OBa,判断各状态信息(操作时序)是否正确.

① 针对离散状态信息向量Od,根据其权重取值Wd在信息变换对应集合中提取对应集合CSF,并以此对应向量判断该离散状态信息Od在操作前后的变化是否合法.

② 针对连续状态信息Oci,根据其权重取值wc,i选取对应的fcbf,i,fcaf,i,fc,i,以此判断该连续状态信息Oci在操作前、后的取值和其差值是否合法(算法3行⑦~).

后续实时检测:

1) 根据当前时刻t获取到的数据类型判断检测对象(算法3行).若被检测对象是设备状态,则在ADISF中找到对应节点,针对各状态信息,执行步骤2;若被检测对象是具体操作,则执行步骤3.

2) 针对离散状态信息向量Od,判断其取值是否保持一致,若不一致则产生异常警报;针对连续状态信息Oci,根据对应的权重取值wcl,i及连续状态信息变化趋势ca,i,提取信息变换对应集合中的AR模型参数集ARcl,i或取值范围SCcl,i,并采用AR模型阈值匹配方法判断提取的连续状态信息是否合法.当所有状态信息均检测完毕后结束对该数据的检测(算法3行~).

3) 根据当前指令Pm,获取长度为L的历史指令序列HP=(Pm-L…Pm-2Pm-1)(算法3行),计算从历史序列跳转到当前操作的跳转概率βt,判断操作序列的次序是否合法.若βt>λmin(λmin为指令跳转概率阈值)则认为序列正常,否则产生序列异常警报(算法3行~).跳转概率可计算为

βt=p(Pm|HP).

(3)

4) 采用起始检测中的步骤2检测操作时序是否合法(算法3行~).

算法3. 实时检测算法.

输入:ADISF树ADISF-tree、实时操作序列P_T、设备状态信息序列O_T、当前检测节点p_n、检测时刻t;

输出:序列检测结果Result.

① ifp_n=∅

② 获取第1个操作P_T_C;

③ 检测首个操作的合法性;

④ if操作节点检测异常

⑤ 在Result中写入警报信息并结束检测;

⑥ else

⑦ 获取该操作执行前后状态信息;

⑧ 检测操作执行前后的状态信息;

⑨ if操作节点前后状态值变化异常

⑩ 在Result中写入警报信息并结束检测;

Fig. 5 Overview of GPNS testbed图5 燃气管网测试床的架构图

5 实验与结果

5.1 实验环境

本文中我们构建了一个燃气管网测试床(gas pipe network system, GPNS),如图5所示.该燃气管网系统的目标是将天然气从门站传送到居民住所中.其物理环境由1个模仿门站的气泵,一段压力管道,3个压力转换器,4个阀门,多个用于监测压力、流速和温度的传感器组成.其中,气泵为物理环境提供高压气体;气体管道分为3部分,分别为高压管道、中压管道和低压管道,每段管道通过1对压力转换器和开关来控制气体压强的降低;多个传感器负责收集管道的温度、流速和压力等状态信息.此外,该场景还利用2个PLC和1个操作员控制站来控制整个合法的业务流程.其业务流程由2个部分组成:

1) 正常情况.打开气泵生成高压;依次打开所有阀门,构建从门站到居民住所的气体管道输送路径;打开所有压力转换器使气体压强降低到居民可使用的范围.

2) 泄漏.当管道损坏(由泄漏阀模拟实现)后发生燃气泄漏,对应压力急剧下降,导致距该损坏处最近的2个阀门以及气泵立即关闭;当管道修复(同样由泄漏阀模拟实现)后,打开气泵,压力逐渐恢复正常,进而相继打开关闭的阀门,恢复管道的连通.

5.2 攻击数据生成及系统参数设置

为测试ADISF的检测效果,我们针对其检测对象,将序列攻击细分为3种:

1) 操作次序变更攻击.即改变合法操作序列,常见攻击方法包括增加新的操作、阻断正常操作的下发、改变部分操作的次序以及篡改操作指令的内容等.该攻击类型主要针对ADISF节点的次序检测.

2) 操作时序变更攻击.即调整操作指令的时序,在系统保持正常的情况下,使操作执行在合法时间段之外,导致操作执行时对应的设备状态不在合理范围内(例如应在100℃时停止加热的锅炉,且其温度允许范围为0~100℃.但因受到攻击,它在80℃时就停止了加热).该攻击类型主要针对ADISF节点的状态检测.

3) 操作滞后攻击(又称为操作间隔攻击).是操作时序变更攻击中的一个特例,它主要通过延误操作指令的下发,致使设备的状态在等待下个操作的过程中发生了异常.该攻击类型主要针对ADISF节点的操作间隔状态检测.

具体实现方面,本文在GPNS实际运行中,通过改变阀门开关顺序来实现操作次序变更攻击;通过调整阀门开关执行时的设备状态流信息来实现操作时序变更攻击和操作滞后攻击.

在实验中,我们采用基于HMM的检测算法、基于PST的检测算法和ADISF共3种检测方法进行对比实验. 其中,依据先验知识以及经验,PST和ADISF均采用以下参数进行训练:λc=10,τcm=(τcm,1,τcm,2,…,τcm,v)=(0.5,0.5,…,0.5),τlm=(τlm,1,τlm,2,…,τlm,v)=(0.6,0.6,…,0.6),λmin=0.7.基于HMM的检测算选取相关参数:隐状态个数Qh=4,连续观测量个数Ohc=6,离散观测量个数Ohd=11,正常匹配阈值βlog_min=-850.

5.3 度量标准

异常检测系统的性能主要采用误报率和漏报率2个指标进行分析.其中,误报率是将正常行为误判断为异常行为的概率;漏报率是将异常行为误判断为正常行为的概率[12].本文延续采用这2个指标评价ADISF的性能.

5.4 实验和结果

本节我们通过2个实验来验证ADISF的检测全面性和检测高效性.

5.4.1 序列周期判定

第1个实验用来验证利用信息熵计算序列周期长度的准确性.

根据对GPNS测试床设计、实现方案的分析,我们获知该测试床的理论周期长度Lt=10.在实际循环运行中,其周期长度在9~12之间波动.为此我们采用信息熵方法进行周期测量.表1是不同周期长度下的熵值,我们可以看到长度lt=10时对应熵值最小,即该间隔长度下的操作最为稳定、一致.故该方法确定的周期长度L=10与理论值吻合.

Table 1 Entropy Value of Different Length 表1 不同周期长度下的熵值

5.4.2 ADISF检测精度

第2个实验是通过对3种序列攻击的检测效果验证ADISF的检测精度.具体实验流程如下:

首先构建了3个攻击库分别对应3种序列攻击,每个攻击库包括20个不同的攻击实例;然后在测试床长达1 h、大约1 200条记录左右的正常运行中,选取前0.5 h作为训练数据,并在后0.5 h的不同时刻中注入上述所有攻击以产生测试数据;最终我们记录所有信息流和设备状态流的相关数据,形成实验数据.

表2是采用系统参数设置的3种检测算法在此实验数据中的识别率.表3和图6是这3种检测算法针对实验数据、通过调节系统参数形成的受试者工作特征曲线(receiver operating characteristic curve, ROC)及相关数据.

Table 2 Recognition Rate of Three Detection Algorithms Under Different Attacks

Table 3 Detection Results for Sequence Attack Detection表3 针对序列攻击的检测结果

从表2、表3和图6中我们可发现基于HMM的检测算法对3种攻击的识别能力较差.该算法可识别因异常、非法操作而导致的非法设备状态,但因受Markov特性的影响,不易根据历史操作序列,从多个合法状态跳转中选取正确的状态跳转对象,影响对序列攻击的识别.同时该算法需要对离散状态信息和连续状态信息分别构建HMM模型,其隐状态变化的一致性也影响对序列攻击的检测精度.

Fig. 6 ROC curves of different attack图6 针对不同攻击的ROC曲线

此外基于PST的检测算法主要针对操作序列的次序进行检测,与ADISF算法一样均能较高地检测出第1种攻击且二者无明显检测性能差异;然而后2种攻击中的操作序列次序未发生变化,故其无法识别这2种攻击,其检测性能与本文提出的ADISF算法有较大的差距.因此,本算法在序列攻击检测精度方面优于基于PST的检测算法和基于HMM的检测算法,能全面地检测序列攻击.

从图6中我们可发现本算法针对3种序列攻击,除对指令滞后攻击的检测效果较差外,其他2种攻击的检测精度较好.其主要原因分为2部分:1)当该算法检测到异常时,为保证对后续数据检测的准确性,舍弃其保存的历史数据,重新开始检测.这导致该时刻到下一个操作之间的数据被忽略,影响对指令滞后攻击的检测.2)生成的AR模型不精确,易产生误报和漏报,影响整体的检测准确率.

此外本算法主要用于识别与正常操作序列有异的序列,无法区分该异常产生的根本原因(内部人员故意为之、正常的业务调节或误操作等)以及具体的攻击类型(如重放攻击、命令注入攻击等).

6 总 结

本文聚焦ICS中特有的序列攻击,针对传统信息流检测算法易受虚假数据影响导致准确性下降的问题,创新性地引入设备状态流数据,形成信息流和状态流融合的ICS异常检测算法.该算法基于PST的思想,结合设备状态流数据,实现对操作序列的次序、时序以及操作间隔全流程的异常行为检测.实验结果表明:本算法可较好地检测出序列攻击以及部分的设备异常.

猜你喜欢

向量节点状态
向量的分解
聚焦“向量与三角”创新题
概念格的一种并行构造算法
结合概率路由的机会网络自私节点检测算法
采用贪婪启发式的异构WSNs 部分覆盖算法*
状态联想
Crosstalk between gut microbiota and antidiabetic drug action
生命的另一种状态
向量垂直在解析几何中的应用
坚持是成功前的状态