面向闭源电力工控系统的安全防御体系架构设计_第1页
面向闭源电力工控系统的安全防御体系架构设计_第2页
面向闭源电力工控系统的安全防御体系架构设计_第3页
面向闭源电力工控系统的安全防御体系架构设计_第4页
面向闭源电力工控系统的安全防御体系架构设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电力工控系统,特指应用于电力生产和供应过程的工业控制系统,如调度侧的智能电网调度技术支持系统、变电站侧的综合自动化系统以及发电厂侧的分散控制系统等,是关系到电网安全稳定运行的重要领域。电力工控系统一般不公开其内部函数逻辑调用关系及私有化通信协议,具有闭源特性。同时,由于缺少攻击数据样本,难以实现杀毒引擎的构建,导致传统基于特征库匹配的网络安全技术不适用于电力工控系统。数据采集与监视控制系统(SupervisoryControlAndDataAcquisition,SCADA)作为下发遥控指令的核心组件,是攻击者的主要目标。2010年,受“震网”病毒影响的系统包括SCADA和可编程逻辑控制器(ProgrammableLogicController,PLC)。介绍了SCADA和能量管理系统已有的具体漏洞。演示了一个攻击示例,攻击者可以通过修改GOOSE数据包来实现跳闸操作,触发一系列级联事件,从而导致灾难性的电网事故。针对SCADA系统的入侵防护,提出了基于异常行为检测的SCADA系统防护方法。Morris等人对远程终端单元(RemoteTerminalUnit,RTU)攻击类型进行分析,提取了通信协议的异常行为检测特征。面对电力系统自动化领域唯一的全球通用标准——IEC61850协议,开展了分析研究,并给出了IEC61850静态及动态特征检测方法。在安全防护异常检测方面,研究了工控系统异常行为发现方法。给出了一种面向工业控制网络的异常流量检测方法,该方法采用自回归移动平均模型(AutoregressiveIntegratedMovingAverageModel,ARIMA)对正常流量进行建模分析,并以此模型对网络正常流量进行预测,从而检测异常流量。密西西比州立大学针对电力系统,提出了基于K-means聚类的无监督学习异常检测方法。罗耀峰等人在模糊聚类算法中引入了异常检测方法,面向差异化多层网络,研究了深度异常检测方法。考虑工控系统网络的复杂性,单一的异常检测方法难以满足实际环境下的检测精度要求。对此,有研究者为提高工控系统异常行为检测能力,尝试将多种检测方法进行复合或加权组合。提出了一种SVM-KNN-PSO组合方法,利用粒子群优化算法(ParticleSwarmOptimization,PSO)进行权重优化,并结合支持向量机(SupportVectorMachine,SVM)和K近邻法(K-NearestNeighbor,KNN)的分类优势,用以开展系统异常检测,结果表明,与单一方法相比,组合方法的检测精度有一定程度的提高。本文基于国家电网公司建立的“安全分区、网络专用、横向隔离、纵向认证”安全防护体系,重点考虑工控系统底层数据及运行机制的封闭性(闭源性)特点,利用逆向分析技术,从系统底层运行状态学习方法、安全防御模型构建等方面,设计构造不依赖特征库比对的工控系统安全防御体系架构,解决未知恶意行为和恶意代码潜伏问题,为闭源电力工控系统安全防御问题提供技术解决路线。1闭源电力工控系统安全防御架构电力工控系统是一个有机整体,分析其安全防御模型,首先需要分析电力工控系统各业务场景及应用模式。充分考虑在系统封闭、代码非开源、协议私有化等闭源条件下,进行安全防护的技术难点。最终确定适用于电力工控系统安全防御业务的应用模式。本文所设计的安全防御架构如图1所示。图1闭源电力工控系统安全防御体系架构从站端监测、主站管控、云端分析3个方面增强安全防御体系。其中,站端监测是通过数据采集模块,采集工控系统的底层数据,感知闭源系统在多个阶段产生的数据信息,解析系统底层运行机理。主站管控是通过部署在网络安全管理平台的防御模型,对站端监测到的数据进行异常判断,并依据该判断结果进行告警及威胁处置。云端分析是利用调控云平台中的模型训练模块,增加算力并计算异常判断依据,训练完毕的结果反向下发至主站防御模型中。如图1所示,底层数据提取模块部署在厂站闭源电力工控系统中,实现系统程序进程中各模块、函数之间调用状态的实时采集,实现函数调用关系与关键参数提取。采集的底层数据通过Agent、网络安全监测装置,发送给网络安全管理平台防御模型。主站安全防御模型采用机器学习的方法对数据进行智能分析,生成模型判断依据的参数,形成安全稳定运行基线,实现对厂站终端底层信息的实时监测和告警。模型训练模块部署在调控云平台中,目的是为构建防御模型提供充足的计算资源,并实时分析、验证,不断完善防御模型。完成阶段性学习后,防御模型向厂站下发指令,实现对终端底层信息的实时监测和告警等处置方法。2厂站底层数据提取模块系统底层数据提取模块主要用于提取闭源电力工控系统底层运行数据,主要涉及内部函数调用逻辑及参数逆向技术。系统内部函数调用逻辑及参数逆向是用来分析闭源软件的技术,目的是获取一些难以获得的软件信息、算法、被隐藏的许可密码或是文件采用的加密方式等有用信息。具体包含两部分,即软件关键模块定位技术和函数执行轨迹特征提取技术。软件关键模块的获取可以使用动态插桩的方法,定位关键模块可有效减少冗余的函数执行轨迹,更利于分析计算。函数执行轨迹特征提取则针对关键模块实施动态链接库劫持,记录关键模块函数调用信息。2.1软件关键模块定位技术可执行程序在完成其功能的过程中,需要执行多个相应的程序代码,并且执行过程具有一定顺序,这种顺序即程序执行轨迹。依据不同的分析粒度,软件执行轨迹主要分为模块级执行轨迹和函数级执行轨迹(如图2、图3所示)。图2模块级执行轨迹图3函数级执行轨迹本文采用函数级执行轨迹覆盖度的方法进行关键模块定位。主要流程为:(1)确定所要分析的应用程序具体功能;(2)采集该功能在正常运行过程中的函数执行轨迹,采集执行过程中各个函数的调用次数和函数所属模块;(3)按模块逐一统计函数调用总量次数,得到各个模块的函数执行轨迹覆盖度;(4)根据覆盖度数值,从高到低选择部分模块,作为关键模块。2.2函数执行轨迹特征提取函数执行轨迹特征提取是关键模块定位的前提条件。其过程主要包含函数栈帧分析和动态连接库劫持两个部分。(1)函数栈帧分析。首先,需要对函数栈帧进行初步分析,确定相关函数参数。之后根据参数在相应函数中传递过程、计算量等信息,初步判断各参数在相应函数中的作用,进而判断相应函数的具体类型。其次,需要进行函数栈帧监控(可以使用具体的插桩工具开展)。通过监控,可以确定所分配的函数参数和变量大小,也可以通过识别pushebp/movebp,esp的使用情况,确定帧指针的使用情况以及栈帧参数和变量的内存引用情况。用WinCC50.dll举例说明,该DLL文件中的函数(CCGetWinCCIniPath)栈帧如图4所示。从图4中可知,黑色框线内的函数中包含arg_0和arg_4两个参数,对应的是ebp+8h和ebp+0Ch位置,其中,arg_0上面的相关参数为相应的局部变量。图4CCGetWinCCIniPath函数栈帧(2)动态连接库劫持。关键模块定位之后,为了获取模块相关函数调用过程,需要采用动态链接库劫持技术(又称为动态链接库Hooking)。动态链接库劫持技术可以有选择性地劫持动态链接库内用户自定义的函数。其过程如图5所示,在软件和目标DLL文件之间,设置同名的伪装DLL文件。每当程序调用关键DLL文件中的具体函数时,会被伪装的同名DLL文件劫持,由于该伪装DLL文件是被修改过的,因此可以将程序调用的具体函数记录下来,进而截获相关函数调用过程。图5动态链接库Hooking过程3主站安全防御模型安全防御模型构建过程可分为数据集构建和卷积神经网络(ConvolutionalNeuralNetwork,CNN)训练过程。原始数据主要从厂站工控系统或装置中采集提取,并对每条数据标记时间戳,对采集到的原始数据进行数据处理,生成机器学习可识别的训练数据。训练数据应包含正常样例和异常样例,但是异常样例难以获取,因此需要采用主动触发设备异常的方式生成数据。数据收集完成后采用随机抽样的方法将训练数据划分为训练集和测试集,训练集用于调整模型,测试集用于测试模型效果。主站安全防御模型可采用CNN构建。CNN主要包含网络结构设计和反向传播算法设计两个部分。3.1网络结构设计CNN主要由卷积层、池化层和全连接层构成,分别设计各层,然后将各层叠加,即可构建完整的CNN。(1)卷积层。卷积层是CNN的核心层,大部分计算工作是在该层完成。在卷积层,处理后的训练数据经过相关卷积计算,利用激活函数将输入数据映射到输出端,即可得到相应的输出特征,多个输出特征再次进行卷积,即可得到多个特征的组合值,定义为第l卷积层的第个特征输出值:其中,f()down为激活函数,是在CNN神经元上运行的函数,负责将神经元的输入映射到输出端。为第l层第i个输出的激活值,其是将上层特征输出值与核矩阵的卷积结果进行累加,再叠加特征偏置量得到的,如式(2)所示:(2)池化层。在连续的卷积层之间,需插入一个池化层,以有效控制过拟合情况的发生,并且可以降低数据空间的大小,减少网络参数数量,降低计算资源消耗,定义为池化层第l层第

个输出的激活值,如式(3)所示:其中,down()定义为池化函数,将上层特征值输出值 划分为多个n×n块,取该n×n块中的平均特征值作为输出,即有效降低了数据空间维度。β为权重系数,为特征偏置量。(3)全连接层。全连接层在CNN中起着“分类器”的作用,将学习到的所有特征值映射到“分类器”上。该全连接层的权重w是一个巨大的矩阵,除特定块外,其他部分都是零。在该层,二维特征值将会转化为一维特征值并作为该层的输入。对输入进行加权求和,经过激活后得到第l卷积层的输出为:其中,为权重系数,为特征偏置量。对于“分类器”的多分类问题,可将输出期望与实际输出做负对数似然,得到训练总误差:其中,为样本n的真值,为网络输出值。3.2反向传播算法设计反向传播算法主要用于计算梯度下降,是训练神经网络的常用算法。其思想是:训练数据经神经网络输出侧输出结果,是前向传播过程,计算前向传播输出结果与实际结果误差,并将该误差从输出侧向输入侧反向传播,在反向传播过程中,根据误差,调整各参数值,不断迭代直至收敛。定义为卷积层l的灵敏度,其表示总误差E随第

l层激活值变化的程度:卷积层灵敏度大于池化层灵敏度,因此为计算第l层的灵敏度,需要利用上采样方法,对l+1池化层灵敏度进行提升,以达到和第l卷积层灵敏度同量级的程度,通过链式求导可得第l层第j个通道灵敏度为:其中,,up()表示一个上采样操作,将每个特征值在二维方向上进行n次复制n×n,即可提升l+1层灵敏度。总误差E对偏移量的偏导,可通过累加l层所有节点灵敏度得到:总误差E对卷积核参数的偏导,可通过累加所有特征元素得到:其中,是在计算时,与逐元素相乘的元素。其中,全连接层的权重w是一个巨大的矩阵,在l层,定义η为学习率,若其过小,则CNN整体训练速度会过慢;若其过大,则系统运行将不可收敛。通过调整学习率,调整整体训练时间;通过调整CNN各项参数,不断迭代直至收敛后,可以得到CNN运行收敛的具体参数。整个训练过程是:对数据进行上述处理,产生的特征向量作为输入数据对CNN进行训练。在CNN训练过程中采用若干个卷积核对特征向量拼接成的矩阵进行扫描、池化和全连接。训练过程则是使用BP算法修改神经网络中每条链接的权值。训练的过程实际上是对模型的极大似然估计,即最大化,其中,X为样本,y是样本标签,θ为模型参数,因此训练过程就是已知X和y的情况下,通过优化θ,使得L最大化。4安全防御模型构建及架构示例在安全防御模型构建中,训练数据应包含正常样例和异常样例,但是异常样例难以获取,因此做出如下定义:正常运行是指通过软件提供的修改方法正常修改变量数据;非正常运行则是指除正常运行外任何可能的行为。模型训练过程可视为将模型拟合数据的过程,定义为机器学习模型,其中,x为输入数据,θ为模型参数,为模型对输入数据x的预测结果。定义损失函数表示模型预测的误差,其中y为样本标签,即当x为正常数据时,y=0;当x为异常数据时,y=1。模型的训练过程:通过寻找合适的模型参数θ,使得预测误差最小。因此训练过程是解决优化问题,如式(11)所示:本文采用卷积神经网络模型,损失函数可导,可利用随机梯度下降技术解决该优化问题,完成对神经网络模型的训练。在训练结束后,模型参数θ可作为工控系统是否存在异常的依据,从而获得安全稳定运行基线。在训练过程中,从训练集中随机抽取部分数据,定期检验预测正确率,验

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论