基于IO地址分离和频谱分析的SCADA系统异常检测模型自动化构建

2022-06-24 10:02贾俊铖张重豪
计算机应用与软件 2022年4期
关键词:频谱阈值频率

潘 湛 马 标 唐 文 贾俊铖* 张重豪 马 浩

1(苏州大学计算机科学与技术学院 江苏 苏州 215006) 2(西门子有限公司 北京 100102)

0 引 言

随着信息技术的发展和工业控制系统(ICS)的功能需求,ICS越来越多地连接到企业网络和互联网,形成了开放的网络环境。然而,传统ICS基于物理隔离,主要关注系统的功能安全性,缺乏对网络信息安全的考虑。因此,近年来发生了许多震惊世界的工业控制网络安全事件。

监督控制和数据采集(SCADA)系统是工业控制系统的一种重要类型,用于控制地理位置分散的控制系统并执行集中数据收集。特别是用于关键基础设施资产,例如化工厂、发电、传输和分配系统、水分配网络和废水处理设施。由于安全问题的严重后果,保护SCADA系统的安全至关重要。

SCADA系统通常包括传感器和执行器,这些传感器和执行器由可编程逻辑控制器(PLC)控制,并由人机界面(HMI)进行管理。SCADA系统最初是为串行通信而设计的,其前提是所有操作实体均合法且已正确安装,执行预期的逻辑并遵守协议。因此,许多SCADA系统几乎没有防御攻击的措施。具体而言,SCADA网络既没有数据完整性检查,也没有通过加密保护机密性的手段。因此,有必要在SCADA网络中部署入侵检测系统(IDS)。

入侵检测系统在入侵攻击造成系统损坏之前就检测到攻击,并发出警报以启动防御措施。目前,入侵检测主要分为两类:误用检测和异常检测。误用检测是通过与已知的异常行为匹配来实现入侵检测。通常也称为基于先验知识的入侵检测。异常检测是通过建立正常行为模型来发现异常行为,也被称为基于行为的入侵检测。与误用检测相比,异常检测的漏报率低,可以检测到以前未发生的入侵行为,但误报率很高。

本文研究了基于异常的入侵检测方法,需要强调的是,研究目标是检测流量异常,即与流量正常周期性行为的偏差。这种偏差不一定是恶意的,例如,手动操作也可能会产生与正常行为不同的流量。研究所用的SCADA系统流量采用Siemens S7 0x32协议。西门子S7系列协议是SCADA系统中使用最广泛的协议之一。本文结合SCADA系统流量的特性和领域知识,提出一种使用IO地址分离和频谱分析来自动构建SCADA异常检测模型的方法。此外,尝试在频谱分析阶段进行了一些改进,以使新方法更加自动化。

本文的贡献如下:

(1) 通过识别访问PLC的报文的目标IO地址来分离流量通道,使得后续步骤中建立的流量模型更加准确和简洁。

(2) 对于每个IO通道中各自的确定性有限自动机(DFA)的构造,本文针对现有频谱分析方法的采样间隔选择和频率能量滤波的阈值设置提出了一些改进。

(3) 使用真实的SCADA测试平台产生的网络流量进行实验。实验结果表明,基于IO地址分离和频谱分析的方法能够更准确地分离通道,拥有更高的建模精度,产生更少的人工干预。

1 相关工作

1.1 异常检测

Alcaraz等[1]开展了一项与关键控制系统中的异常学习和检测有关的技术调查。当前大多数商用网络入侵检测系统(NIDS)都是基于签名的,即当它们与先前定义的签名匹配时会识别出攻击,而基于异常的NIDS则基于Mukherjee等[2]提出的意见:与合法用户不同,入侵者将受到严重影响。

最近的几项研究[3-4]提到了使用马尔科夫链对SCADA系统进行异常检测的方法。但是,Ye等[5]证明,尽管该方法的检测精度很高,但由于对噪声敏感,假阳性值的数量也很高。另外,Hadziosmanovic等[6]使用在HMI上运行的控制应用程序生成的日志来检测过程控制应用程序上用户操作的异常模式。

文献[7]提出了一种基于状态的SCADA系统入侵检测系统。该方法使用有关工业过程控制的详细知识来生成系统虚拟映像。Song等[8]通过获取ICS输入输出数据来建立系统行为模型,通过比较实际系统输入输出和模型的输入输出进行异常判别。Kalech[9]通过SCADA系统输入输出信号的时间序列建立系统的行为模型,采用隐马尔可夫模型和神经网络进行异常行为判别。

Cheung等[10]针对SCADA系统流量,特别是针对使用Modbus协议的流量,提出了一种基于模型的异常检测方法。作者设计了用于Modbus/TCP的多算法入侵检测设备,具有异常模式识别,TCP报头的贝叶斯分析和状态协议监视功能,并辅以文献[11]中的自定义Snort规则。在随后的工作中,Cheung等[12]将自适应统计学习方法并入系统中,以检测主机之间的通信模式和单个流中的流量模式。后来Briesemeister等[13]将这些入侵检测方法集成到文献[14]中的EMERALD事件关联框架中。

另外,基于机器学习的异常检测已经有了大量的研究,但是一直缺乏此类系统的操作部署。针对这个方面,Sommer等[15]在研究中讨论了它们之间的不平衡关系。文献[16]则以网络流量为特征,采用基于熵的动态半监督K-means算法和单分类SVM进行流量异常检测。

1.2 周期性

Barbosa等[17]使用傅里叶分析方法来处理他们在两个不同的水处理和分配设施收集的SCADA系统流量数据。他们得出结论:由于大多数流量源周期性地生成数据,因此SCADA系统流量含有高度规律的时间序列。

在后续工作中,Barbosa等[18]证明了他们周期性学习的概念。然而,他们的分析只考虑了流量的传输级别,而没有考虑SCADA系统所用协议的语义。此外,他们没有考虑SCADA系统业务的本质特征(即周期性分组序列的正确消息顺序)。Kleinmann等[19]对此提供了一种解释,即在请求-响应循环模式之外,周期性流量也可以以不同的方式形成。

1.3 基于自动机的模型

Goldenberg等[20]开发了一种基于模型的方法(GW模型),该方法针对SCADA网络流量使用确定性有限自动机(Deterministic Finite Automaton,DFA)表示周期性流量,从而进行网络异常检测。遵循此方法,SCADA系统消息将被单独隔离并按其顺序用于建模。随后,Kleinmann等[21]证明了类似的方法在使用西门子S7协议的SCADA系统流量建模中也是有效的。

Caselli等[22]提出了一种将SCADA系统流量消息序列建模为离散时间马尔可夫链(DTMC)的方法。他们构建了一个状态机,其状态用于对可能的消息进行建模,同时其状态转换关系用于表示两个状态之间的“前后”关系。

Caselli等[22]还针对多路复用的SCADA系统流量进行建模的研究,他们发现使用DFA进行异常检测通常会产生非常大的DFA和高误报率。而Kleinmann等引入了一种针对此类SCADA流量的基于状态图的建模方法:状态图包含多个DFA,每个循环模式一个。每个DFA都是根据GW模型的学习阶段构建的[19]。

Kleinmann等[23]在研究中首次尝试自动地构造状态图。他们使用了无监督学习算法,该算法从数据流中构建了DTMC。这种组合方法在人工合成的网络流量上效果很好,但是误报率仍然过高。

根据之前的研究,虽然DFA可用于以简单的周期性模式对流量进行建模,但在使用多路复用进行流量建模时效果不佳[20]。除了每秒发生多次的频繁扫描周期外,多路复用流量中还存在更多周期性模式。尝试使用单个DFA为两个以上的周期模式建模会产生一个非常大的模型:其正常模式包括数百次不同快速扫描周期的迭代,并且可能会重复长周期。因此,仅使用DFA的建模方法是不准确的,因为长周期循环并不总是在同一点中断快速循环,并且当它们处于活动状态时,两种模式的符号可能会交错。基于状态图的离散马尔可夫链建模方法在一定程度上利用了统计方法,提高了复杂多周期流量的识别能力,但误差较大。此外,Kleinmann等[24]提出了一种通过频谱分析自动构建状态图的建模方法,从而增强了识别和分离复杂多周期流量的能力。然而,由于两个或多个不同生产操作所产生的流量具有高度相似的周期,因此这种情况在频谱分析中也很难被准确识别。另一个需要关注的问题是频谱分析建模方法中的主要周期检测中的阈值设置问题。

2 基于IO地址分离和频谱分析的自动化建模

2.1 方法流程

Caselli等[22]假设现代人机交互界面(Human Machine Interface,HMI)采用基于线程的体系结构,每个线程都负责某些任务,比如控制对可编程逻辑控制器(Programmable Logic Controller,PLC)上一系列寄存器的访问,多个线程以不同的调度频率并发运行,并共享相同的网络连接。

以前的研究一般只对周期性进行建模,而没有深入解释工业控制系统协议的语义,因此存在一定的局限性。鉴于上述缺陷,本文提出了一种新的建模方法,该方法结合领域知识对多路复用流量进行准确的分离和频谱分析,并自动构建出状态图模型。另外,本文尝试自动选择采样间隔以及使用统计方法在检测主导阶段自动设置频率能量阈值。整个建模过程如图1所示。

图1 基于IO地址分离和频谱分析的建模结构

首先,获取HMI与PLC间的通信流量,并对流量数据包进行深入解析。然后将解析的流量数据符号化(转换为哈希值)。接下来,根据流量报文的IO地址进行通道分离,从而产生若干个IO通道。最后,分别对每个IO通道中的周期模式进行建模,其中可根据IO通道内周期模式情况设置DFA选择器。

2.2 IO通道分离

1) IO通道。

实际上,在与PLC通信期间,HMI使用特定的报文来访问特定的IO点。例如,假设PLC具有三个IO点,HMI将以指定的时间间隔访问这三个IO地址来读取和写入数据。在读取和写入数据时,三个通道的时间间隔可能相同,也可能不同,但实际上,它们仍然是3个不同的IO通道。因此,流量数据中呈现出的不同周期模式的混合现象,其物理表现是上位机HMI对PLC中不同IO地址的周期性轮询。在这种情况下,可以根据IO地址分离流量数据来获取每个IO通道的流量,使得多路复用流量中存在的复杂混合周期模式能够被初步准确地分离。

S7报文中协议数据单元(Protocol Data Unit,PDU)的最大长度在112到960字节之间。图2是S7 0x32 PDU的结构图[18],分为两部分:报文头部和参数。PDU包含报文头部的9个字段和参数的8个字段,其中我们着重关注以下几个字段:

• Protocol Data Unit Reference(Request Id)字段用于请求数据包和响应数据包之间的同步。

• Area字段,它是PLC存储区的8位标识符。

• Address字段,它是数据项的24位地址。

图2 S7 0x32 PDU结构:读/写请求报文的头部和参数

Protocol Data Unit Reference、Area和Address三个字段是流量分离的关键。由于响应报文中没有Area和Address字段,因此需要使用Protocol Data Unit Reference字段将请求消息和响应消息配对,以此来正确地将响应报文放入对应的IO通道中。

2) 流量分离与数据处理。

(1) 数据提取和流量分离。根据不同的<源IP,协议(TCP 102),目标IP>从原始PCAP中提取不同的S7Comm报文流。在此基础上,本文分析了S7Comm有效负载,确定了所有不同的IO点,分离并提取了每个IO通道中所有报文的关键字段。

(2) 报文流量的符号化构造。将从每个报文数据中提取到的关键字段拼接为一个字符串,并使用SHA-1进行哈希计算以获得与报文记录对应的哈希字符串作为输入符号。

2.3 频谱分析建模

完成上述流量分离后,根据每个IO通道中的流量生成二进制符号序列。然后使用频谱分析方法进行建模[24]。频谱分析不仅可以识别每个IO通道的流量周期,还可以确定通道是否存在多种周期模式。

1) 输入序列构建。

将每个通道收集到的数据划分为特定持续时间的时间段Δtμs,令采样的频率FAS=1/Δt和学习窗口中的采样数为N=T/Δt。当然,Δt应大于报文传输所需的时间。

将HMI-PLC通道中每个IO通道的通信流量处理为二进制值信号x[i]:对于每个采样间隔Δti,如果存在至少一个流量符号,则设置x[i]=1,否则x[i]=0。

考虑建模过程实现自动化需要适应不同的数据集的情况,本文加入一个采样间隔时间的自适应方法。构造多个不同采样间隔Δt的二进制符号序列,分别计算不同采样时间间隔下序列中的符号占比,即二进制序列中1的数量占序列总长度的比值,用r表示。设两种采样间隔Δt1、Δt2,分别构造对应的二进制序列并计算各自的符号占比r1、r2,如果|r1×(Δt2/Δt1)/r2-1|小于等于一个阈值t(理论上可为一个较小的常数值,如0.1%),则选用Δt2。

2) 频谱分析。

在获得适当的采样间隔和相应的二进制序列后,使用周期图法自动提取主导周期(峰值)[22]。首先,找到周期图中的频率能量局部最大值(局部峰值)。然后,使用频率能量阈值(TFE)过滤掉值低于其局部峰值。

一旦过滤掉低于TFE的频率能量峰值,将得到一个主导周期对应频率的候选列表。接下来,由于只需要保留原始周期,所以需要滤除高次谐波(频率是原始周期频率的正整数倍的周期)。例如,对于一对周期,假设它们的频率为f1、f2,并且f1>f2,如果(或几乎)f1是f2的整数倍,则将f1丢弃。为此,本文定义了频率统一阈值(TFU),我们设置k=f1/f2并在本文研究工作中将TFU值设置为4%。如果|k-⎣k⎤|

图3 检测主导周期过程的示例

在返回与每个IO通道的主导周期相对应的一组频率值后,需要在不同通道中找到每种模式的符号。对于已完成分离的IO通道,执行以下操作:

(1) 通过检查每个IO通道的符号流找到另一个符号集σ。

(2) 对于每个IO通道的每个不同符号s∈σ,首先创建一个二进制信号序列,表示不同通道内s的出现情况。然后,计算IO通道每个主导周期中s的频率能量值。

(3) 对于每个主导周期,找到其符号的最大频率能量值,并为频率能量设置一个可配置的阈值。然后滤除频率能量低于阈值的符号。

(4) 请注意,符号s在周期中可以出现多次。对于每种循环模式,希望找到每个符号的出现次数。

(5) 根据上面找到的符号,包含该符号的字典对应于时间戳,获得图案符号的顺序,最后返回周期性图案符号的有序列表,以用于下一个DFA建模。

3) 频率能量阈值的自动设置方法。

在主导周期检测部分,本文根据Vlachos等[25]提出的方法定义阈值。他们假设一个非周期时间序列的规范模型。离散傅里叶变换系数的大小根据指数分布进行分配,其中λ是峰值的平均功率的倒数(以μ表示)。令TFE为代表μ百分比的可配置值,低于该值的周期图频率可以丢弃。令X为模型的周期图,其累积分布函数如下:

(1)

令P′=1-P,P′表示返回的时段是重要的置信概率。在这种情况下,Vlachos等建议将P设置为较低的值并按照计算相应的TFE:

TFE=-μ·ln(P)

(2)

然而,对于不同的数据集,很难通过设置P来确定TFE。在Barbosa等[18]的研究中,他们是通过人工观察周期图来确定一个类似本文中频率能量阈值(TFE)的值完成频率过滤的。Vlachos等[25]的研究也没有涉及能够适应不同数据集的自动设置阈值的方法。另外,考虑到在分离流数据之后每个IO通道的循环模式将变得相对简洁,因此尝试使用统计方法来自动设置TFE。

分离后每个IO通道的周期模式相对简单。进一步统计了通道中输入符号的周期图分析结果,发现在主导周期检测过程中,大于TFE的频率能量峰值数量较少。因此,可以根据频率能量峰值数目的变化程度来自动设置TFE:

(1) 将频率能量值分成固定长度的段(在本文的工作中,设置10个单位的频率能量为一个段)。

(2) 计算每个频率能量段中的峰值数量,并绘制其数量统计分布图。

(3) 使用斜率法来判断数量分布的变化。当频率能量峰值数量的变化程度(即数量统计曲线的斜率)大于或等于(最大峰值数量/频率能量的最大值)时,可以得到当前的频率能量段并计算原始频率能量峰值。将满足条件的该频率能量峰值设置为频率能量阈值TFE。

(4) 为了避免各段频率能量值波动的影响,对定量统计曲线进行高阶多项式拟合处理:

(3)

3 实验分析

3.1 数据集

本文所使用的训练数据集来自SCADA系统的真实测试平台。从控制层网络(环网)中的多个交换机中获取了所需的实验流量。网络拓扑如图4所示。

图4 SCADA系统测试平台网络拓扑结构

此外,为了模拟不同的异常情况,合成了三种用于检测实验的含噪声数据:(1) 随机插入未知的周期模式符号;(2) 在通道中随机插入已知的周期模式符号;(3) 为其他IO通道随机插入完整周期的周期模式符号。

3.2 实验结果及分析

实验应用了最新的IO地址分离和频谱分析方法,并调整了自适应算法的参数,并且将它与先前的4种建模方法进行比较,基准是已知的理想模型(由于流量数据是从测试平台捕获的,因此其轮询周期是已知的,并通过人工手段确定了正确的状态图模型以及每个IO通道中正确DFA):

(1) 使用单个简单的DFA构建模型。

(2) 使用两个DFA串联进行模型构建。

(3) 使用DTMC来构建用于模型构建的状态图。

(4) 使用频谱分析方法建模。

(5) 使用IO地址分离和频谱分析方法建模。

(6) 理想模型。

图5、图6分别显示了每种方法在实验数据上的平均建模精度对比,以及在复杂周期条件下对数据的建模精度对比。可以看出,本文方法与其他方法相比具有更好的建模精度。具体地,在流量周期复杂的情况下(即周期模式多且相互夹杂混合),简单的DFA和2-DFA方法基本上不能在多路复用的流量数据上构建准确的模型。离散时间马尔可夫链的组合方法可以生成部分正确的状态图模型,而频谱方法可以生成相对而言更好的状态图模型。IO地址分离和频谱分析相结合的方法具有最高的准确性。图7显示了对所有数据进行建模时每种方法的误报率。可以看出,基于IO地址分离的新方法具有更好的建模效果。

图5 实验数据集上的平均建模精度对比

图6 周期复杂数据集上的建模精度对比

图7 不同建模方法的误报率对比

图8比较了以不同置信度进行主导周期检测进而构建模型的频谱分析方法的建模精度和使用自动配置符号频率能量阈值的新方法的建模精度。其中星型折线表示人工设置不同置信概率结果,折线表示自动配置符号频率能量阈值的结果。实验结果表明,新方法与符号频率能量阈值的自动配置相结合,在一定程度上减少了建模时的人工干预,具有一定的效果。

图8 自适应频率能量阈值方法测试

4 结 语

本文针对SCADA系统多路复用流量提出了一种基于IO地址分离和频谱分析的自动构建状态图模型的新方法。首先,本文算法深度解析流量报文的语义,根据IO地址属性分离流量通道,然后分别为每个子通道建立DFA模型,并且不需要事先知道流量数据总共有多少个子通道。应用新方法可以降低流量复杂度从而对子通道进行更准确的建模,这将大大提高建模精度。另外,在频谱分析部分尝试优化了采样间隔的选择以及在检测主导周期阶段使用统计方法来探索关键阈值的自动化设置。本文使用从SCADA系统测试平台上捕获的数据以及合成数据评估了新的解决方案,流量协议使用Siemens S7- 0x32协议。对比实验表明,本文方法在建模精度方面优于其他方法,并且在保证建模效果的前提下减少了人工干预。未来将继续测试新建模算法的性能,提高检测模型在真实数据场景下的适应性,并继续探索模型的自动化构建。

猜你喜欢
频谱阈值频率
非平稳声信号下的小波变换去噪方法研究
土石坝坝体失稳破坏降水阈值的确定方法
处理器频率天梯
一种改进小波阈值去噪法及其仿真
一种小波阈值函数构建的图像去噪算法研究
振动与频率
中国向左走,向右走?
FCC启动 首次高频段5G频谱拍卖
动态频谱共享简述
一类非线性离散动力系统的频率收敛性