2. 珠海鸿瑞信息技术股份有限公司, 广东 珠海 519080
2. Zhuhai HR Information Technology Co. Ltd, Zhuhai 519080, China
0 引言
随着工业控制系统信息化技术日益发展,工业控制网络越来越多地与外界公用网络相连接,形成一个信息共享的开放网络[1],导致全球工业控制网络攻击事件逐渐增多.工业控制系统的风险根源主要有系统协议技术自身存在缺陷、工业软件漏洞、硬件设计先天不足等.并且工业网络流量具有平稳性、相关性、自相似性和网络协议技术与通用协议的差异性等特征,使传统网络的异常检测方案无法简单移植到工业网络中[2].工业入侵检测的方法主要是误用入侵检测技术和异常入侵检测技术[3].误用入侵检测技术是一种利用已知入侵行为数据建立的模型,然后对所有新访问的数据进行匹配,匹配相关的数据判定为具有入侵行为.因此误用入侵检测技术能准确地描述攻击行为的特征,降低了系统误报率但同时提高了漏报率.异常入侵检测技术是一种利用正常行为数据建立的模型,然后对所有新访问的技术进行匹配,匹配相关的数据判定为正常行为[4].因此异常入侵检测技术降低了漏报率但同时提高了误报率.
在工业入侵检测应用中,攻击类型层出不穷.目前国内外已有学者、科研院所针对入侵攻击和安全防护等方面进行了众多研究.使用的算法包含基于统计、规则推理和神经网络等方法.尚文利等[5]选取Modbus/TCP功能码作为研究对象,结合SVM(Support vector machine)提出了一种基于支持向量机的Modbus/TCP通讯功能码序列异常检测方法,实现了防火墙和入侵检测系统未能识别的攻击行为和异常行为的辨识.但该研究并未涉及针对后期新数据的学习,因此无法满足工业网络环境的复杂性.万明等[6]在不改变Modbus/TCP协议规约的基础上,基于深度包解析技术提出一种基于功能码深度检测的Modbus/TCP通信访问控制方法,不仅实现了传统的功能码、地址范围的检测,同时还实现了值域检测.但是该系统使用固定规约进行匹配,同样学习能力较差,无法满足工业网络的复杂性和扩展性. Stanislav等[7]设计的入侵检测系统通过分析工业控制网络中的遥测数据,利用REPTree决策树的算法,根据数据在网络中传播的跳数识别不同机器之间的通信,以区分网络内部的攻击者和工程师机器,此方法可以有效地识别网络内部的威胁. Morris等[8]将工控网络中Modbus RTU/ASCII数据转化为Modbus/TCP,再利用改进的snort软件进行威胁分析,可以有效地对拒绝服务、响应注入、命令注入和侦察攻击四种攻击进行有效防护,最后将检测后的数据再次转化到原始Modbus RTU/ASCII格式.但这种方法不能有效地解决工业网络中假数据注入的攻击. Xiao等[9]提出了利用两种OCSVM入侵检测算法应用在故障检测中,对高斯核函数参数寻优构的建模型分别为DFN和DTL.在故障诊断应用中可以有效地检测出多种类型故障,并提高了正确率.
综上,现有的工控网络安全防护方法主要从传输加密、安全策略、访问控制和协议分析等几个方面开展.但在SVM算法的入侵检测研究中,为了保证系统较低误报率和漏报率的同时,进一步提高系统的扩展性和学习速度是一个难点问题.基于此,本文首先通过分析Modbus/TCP协议信息,提取特征数据,利用OCSVM算法学习正常行为通信模式.随着新样本的继续增加,利用临近分类间隔和KKT条件对当前训练样本集进行约减,约减后的训练样本再次进行增量OCSVM训练.从而构建了一种基于增量OCSVM的工业控制系统异常入侵检测模型.最后在电力监控实验平台下通过对实验数据结果的比较分析,证明了该方法可以提高工业控制系统入侵检测的适应性、扩展性和学习速率.
1 协议分析与特征选择典型工业控制通信有MODBUS/TCP、DNP3.0、IEC60870- 104等诸多协议[10],其中Modbus/TCP是应用最为广泛的一种开放性协议.然而因为协议本身的简单性和易开发性,导致其存在的安全隐患逐渐暴露出来.
Modbus是基于应用层报文传输的协议,包括ASCII、RTU和TCP三种报文类型. Modbus/TCP是一种在以太网TCP协议基础之上的应用层传输协议,采用典型的主从式通信模式.其协议报文格式如图 1所示.
Modbus/TCP报文主要由MBAP(Modbus application protocol)报文头、功能码和数据组成.其中功能码是Modbus客户端向服务器端指定进行何种操作的标识字段,范围从1~255. MBAP报文头用于标识Modbus的应用数据单元,主要包括事务处理标识、协议标识、报文长度和单元标识.其中事务处理标识是双方事务处理匹配标识,在响应过程中,服务器对请求的事务处理标识进行复制.协议标识固定为0x0000,用于实现系统的多路复用.长度代表数据的总字节数.单元标识是用于识别远程从站中不同设备的地址.
特征向量的选择应遵循尽可能全面地描述工业控制网络行为特征且特征向量之间互不相关的特点.在本文中选择功能码、寄存器地址、报文长度、相同服务的连接数、窗口流量大小、连接时间六项特征属性代表原数据包的行为信息.为保证学习质量,通常在训练之前对样本数据进行归一化处理.
2 OCSVM算法OCSVM算法是Scholkopf在传统SVM算法的基础上发展而来,属于无监督学习算法[11].其原理是将原点作为异常样本点,其它所有输入样本作为正常样本,通过核函数将输入样本数据映射到高维空间中,使得存在一个最优超平面能够将原点和输入样本分隔开来且分隔最大化[12].由于OCSVM算法只需要一类样本就可以训练得到具有二分类的检测模型,而工业控制网络中异常数据通常难以获取[13],因此OCSVM算法被广泛地应用于工业控制网络入侵检测系统中. OCSVM原理如图 2所示[14].
OCSVM解决的主要问题[15]为
(1) |
其中,xi为训练样本,i=1,…,l,l为训练样本个数,ϕ(·)为原始空间到特征空间的映射,ω为分类超平面的法向量,ρ为分类面相对原点的距离,ν∈[0, 1]为控制总样本中错误样本比例的上界,ξi为松弛变量,用于惩罚背离超平面的点.
引入拉格朗日向量a=[ai,…,al]T,其转换为对偶形式:
(2) |
其中,Qij=K(xi,xj)=ϕT(xi)ϕ(xj),K(xi,x)为数据映射到高维空间的核函数;e=[1,…,1]T.
通过求解凸半正定二次规划,可以得到OCSVM分类器的决策函数为
(3) |
增量学习是指系统在保留已学习知识的情况下不断学习系统环境中新产生的数据,修正和巩固已学习的知识,且重新学习过程中不必学习全部数据[16].由于工业控制网络具有复杂性、可扩展性、实时性等特点[17],因此必须要求入侵检测系统能够对新扩展信息和更新的信息进行增量学习.随着新样本的持续增加,为了提高学习效率,在保证学习质量的同时需要对样本集进行有选择的约减,约减对象包含新增样本集和原始样本集.如何有效地约减样本是需要解决的关键问题.因此,本文提出了利用KKT条件和临近分类间隔约减样本数据.
3.1 KKT条件的简单增量学习在OCSVM算法中,最优超平面由支持向量(support vector,SV)集样本决定,且大多数情况下SV的数量只占训练样本集的很少一部分[18].而其它非SV样本并不影响分类超平面的形态.因此在重新学习过程中,首先保留原始样本中的支持向量.
当求解式(1)时,KKT条件是非线性规划问题有最优解的必要和充分条件,当且仅当对于每个x都满足KKT条件时,a才是超平面最优解[19]. KKT条件为
(4) |
当ai=0时,对应的样本位于OCSVM分类间隔外;当
在增量学习过程中,最优超平面的形态发生改变可能会导致原支持向量转变为非支持向量,而原非支持向量在新的训练中有可能转变为支持向量[20].因此如果仅仅选择原支持向量集和违背KKT条件的新增样本进行重新学习,将可能会导致最优超平面失真而不能正确分类数据.
临近分类间隔是利用违背KKT条件的新增样本与原最优超平面之间的最大间距为界,保留临近分类间隔区域内的样本.临近分类间隔映射到二维空间中,如图 3所示.其中圆点为原始样本;方形点为新增样本,其中白色为违背KKT条件的样本,黑色点为满足KKT条件的样本点.虚线矩形框为临近分类间隔区域.临近分类间隔区域通过2个方面建立:
1) 所有白色样本点到原最优超平面的最大间距.
2) 最大欧氏距离的白色样本点投影到最优超平面的范围.
白色样本点与原最优超平面最大间距为
(5) |
其中,xj为违背KKT条件的新增样本点.为违背KKT条件的新增样本点的个数. ω是原最优超平面法向量,||ω||为ω的二阶范数.
白色样本点之间的最大欧氏距离为
(6) |
其中,xs、xk为欧氏距离最大的两个白色样本点,最大欧氏距离的两个样本点映射至最优超平面为
(7) |
最大欧氏距离的白色样本点投影到最优超平面范围为(x′s,x′k).总的来说,临近分类间隔区域是一个在分类间隔(x′s,x′k)的范围内,以γ1为长绕分类间隔旋转的高维圆柱体.从图 3中可以看到,在临近分类间隔区域内不仅包含1个原支持向量和3个违背KKT条件的新增样本,还包含了2个原样本点和2个满足KKT条件的新增样本.在增量学习过程中,最优超平面发生改变的区域即为临近分类间隔区域,因此选择临近分类间隔区域内的所有样本可以提高分类精度,保证学习质量.
在增量学习系统中,训练样本集共包含原支持向量集、违背KKT条件的新增样本集和临近分类间隔区域内其他样本集.当原始样本集大于新增样本集时,通过临近分类间隔的方法约减样本集可以在保障分类准确率的同时使得重新学习的样本集大大减少,从而提高系统学习速度.
4 实验结果分析 4.1 实验环境为了验证以上算法在保证分类准确率的同时可以提高入侵检测增量学习速度,搭建了如图 4所示的电力控制实验环境.实验内容为市电电力的远程监视与控制.
实验中现场设备使用三相高精度多功能网络电力仪表、语音报警器、继电器等设备对市电电路进行监控.控制层选择西门子PLC s7-1200,CPU型号为1212C,采用Modbus/ TCP协议与上位机进行机通信.监控层利用组态王软件开发监控画面.入侵检测系统运行在数据采集网络层的工业控制安全网关中.工业控制安全网关CPU为Intel AtomD525,主频为1.8 GHz,内存型号为DDR-2,内存容量为2 GB,采用ubuntu 16.04操作系统,内核版本为4.4. 0-59,采用LIBSVM 3.22库函数接口实现OCSVM算法.由于操作系统内核带来的额外开销导致了数据转发性能降低,故使系统开发在DPDK(data plane development kit)平台上避免系统内核开销.
系统运行时,工业控制安全网关提取从监控层到控制层的Modbus/TCP协议数据,剔除重传、TCP三次握手等无关数据,将特征数据保存在文本文件中.正常运行时,所有数据均为正常样本.测试时,通过远程模拟攻击发送异常Modbus/TCP数据至控制层产生异常样本数据.工业安全网关检测出异常数据报警后由网络管理员处理.
4.2 数据分析在电力控制实验平台中,通过第1小节介绍的特征选择方法获取训练样本,训练样本为电力控制系统正常运行1周产生的正常数据.首次获取的721个训练样本进行OCSVM学习并生成原始检测模型,然后依次增加4组样本进行增量学习,分别为159、131、141、128个增量样本.测试集选取200个样本,其中正常样本121个,异常攻击样本79个,异常攻击样本占总样本的39.5%.异常样本通过远程设备模拟入侵产生,主要包括针对数据的浪涌攻击、几何攻击和异常停机三类数据.
OCSVM算法中错误样本比例上界参数为v,核函数采用径向基核函数参数为g,其中错误样本比例上界参数v和核函数参数g通过PSO(粒子群)算法寻优获得. PSO算法中以正常样本五折交叉验证后的值作为适应度,利用PSO算法寻优后的最优值建立OCSVM模型[21].由于正常样本在采样时,不可避免地出现数据延迟或系统引起的流量异常等变化带来的数据噪声,因此正常样本并不能保证是纯净样本数据,参数v通过PSO寻优后可有效地去除正常样本中的离群点,从而避免数据中存在的噪声.在后期的增量算法过程中,设定参数v为固定值0.05,这是由于核函数参数g通过初始训练后已经确定好映射关系,而在后期的增量学习过程中将不再对核函数参数g进行改变,因此PSO算法对参数v和参数g的寻优将不再适用.这里通过在多次增量训练过程中对比交叉验证后的结果确定了参数v=0.05时交叉验证结果较优.在实验中分别对标准OCSVM、简单增量OCSVM和改进增量OCSVM三种方法进行测试.其中标准OCSVM样本不做约减处理,保留所有样本进行再次学习.简单增量OCSVM是保留原始样本中的SV集和违背KKT条件的新增样本集.改进增量OCSVM是在简单增量OCSVM的基础上保留了临近分类间隔区域内样本. 表 1至表 3给出了经过以上3种方法约减后的样本总量、分类正确率和学习时间的测试结果.
增加样本 | 标准OCSVM | 简单增量OCSVM | 改进增量OCSVM |
721 | 721 | 721 | 721 |
159 | 880 | 29 | 241 |
131 | 1 011 | 140 | 583 |
141 | 1 152 | 135 | 330 |
128 | 1 280 | 43 | 202 |
增加样本 | 标准OCSVM/% | 简单增量OCSVM/% | 改进增量OCSVM/% |
721 | 81.639 | 81.649 | 81.594 |
159 | 88.567 | 85.534 | 89.634 |
131 | 87.872 | 66.406 | 88.414 |
141 | 90.331 | 54.268 | 79.978 |
128 | 94.444 | 53.049 | 94.951 |
增加样本 | 标准OCSVM/s | 简单增量OCSVM/s | 改进增量OCSVM/s |
721 | 85.033 | 80.004 | 73.024 |
159 | 123.355 | 2.031 | 15.367 |
131 | 183.909 | 9.022 4 | 69.162 |
141 | 173.531 | 9.408 1 | 8.045 |
128 | 242.386 | 1.127 | 62.013 |
每轮增量学习的样本总量如表 1所示.简单增量OCSVM和改进增量OCSVM约减后的样本数远低于标准OCSVM样本集.改进增量OCSVM约减后样本略高于简单增量OCSVM,这是由于改进增量OCSVM样本不仅包含了原支持向量集和违背KKT条件的新增样本集,还包含了临近分类间隔区域内其它样本.
分类正确率测试结果由表 2可以看到改进增量OCSVM正确率与标准OCSVM几乎相同,但简单增量OCSVM由于丢弃了原样本中可能在新一轮学习中转变为SV的样本,从而使得分类正确率逐渐下降,最终无法实现正确的分类能力.
由表 3学习时间测试结果表明标准OCSVM的学习时间远远大于简单增量OCSVM和改进增量OCSVM,这是由于标准OCSVM在增量学习中并没有对样本约减,导致计算量逐步增长.简单增量OCSVM的学习时间略微小于改进增量OCSVM,这是由于改进增量OCSVM需要增加了临近分类间隔区域样本,导致计算量有所增加.
综上,从全部测试结果可以分析得到改进增量OCSVM学习算法具有标准OCSVM学习算法的准确率和简单增量OCSVM的学习速率.也证明了该方法可以缩短工业控制系统入侵检测模型建立时间,并且可以减少由系统内存占用而导致的模型更新代价增高等问题,从而使系统运行更加稳定.
5 结束语为了实现对工业控制网络入侵检测系统的增量学习,本文对工业网络中的Modbus/TCP协议进行了分析.提取6项特征属性进行OCSVM学习.通过对OCSVM分类算法深入分析,并就OCSVM算法在增量学习中存在的学习速度慢、模型更新代价高占用系统内存较大等问题提出了改进.利用KKT条件和临近分类间隔区域对原始样本和新增样本进行约减.有选择地遗忘历史数据,从而提高增量学习速率.最后通过电力监控实验数据结果表明,本文提出的改进方法在保证分类正确率的同时降低了增量学习时间,提高了工业控制网络入侵检测系统的建立速度和稳定性.但本文提出的检测算法用来完成入侵检测系统还比较单一,未来的研究工作主要是实现入侵检测系统增量学习的半监督算法设计,将网络管理员对异常数据的处理结果进行有监督的学习,结合OCSVM算法可以进一步地提高系统正确识别率.
[1] |
彭勇, 江长清, 谢丰, 等.
工业控制系统信息安全研究进展[J]. 清华大学学报(自然科学版), 2012, 52(4): 1396–1408.
Peng Y, Jiang C Q, Xie F, et al. Industrial control system cyber security research[J]. Journal of Tsinghua University (Science & Technology), 2012, 52(4): 1396–1408. |
[2] |
邹春明, 郑志千, 刘智勇, 等.
电力二次安全防护技术在工业控制系统中的应用[J]. 电网技术, 2013, 37(11): 3227–3232.
Zou C M, Zheng Z Q, Liu Z Y, et al. Application of cyber security in industrial control systems based on security protection technology for electrical secondary system[J]. Power System Technology, 2013, 37(11): 3227–3232. |
[3] | Papa S M. A behavioral intrusion detection system for SCADA systems[D]. Dallas, TX, USA: Southern Methodist University, 2013. |
[4] |
赖英旭, 刘增辉, 蔡晓田, 等.
工业控制系统入侵检测研究综述[J]. 通信学报, 2017, 38(2): 143–156.
Lai Y X, Liu Z H, Cai X T, et al. Research on intrusion detection of industrial control system[J]. Journal on Communications, 2017, 38(2): 143–156. |
[5] |
尚文利, 张盛山, 万明, 等.
基于PSO-SVM的Modbus TCP通讯的异常检测方法[J]. 电子学报, 2014, 11(11): 2314–2320.
Shang W L, Zhang S S, Wan M, et al. Modbus/TCP communication anomaly detection algorithm based on PSO-SVM[J]. Acta Electronic Sinica, 2014, 11(11): 2314–2320. DOI:10.3969/j.issn.0372-2112.2014.11.029 |
[6] |
万明, 尚文利, 曾鹏, 等.
基于功能码深度检测的Modbus/TCP通信访问控制方法[J]. 信息与控制, 2016, 45(2): 248–256.
Wan M, Shang W L, Zeng P, et al. Modbus/TCP communication control method based on deep function code inspection[J]. Information and Control, 2016, 45(2): 248–256. |
[7] | Ponomarev S, Atkison T. Industrial control system network intrusion detection by telemetry analysis[J]. IEEE Transactions on Dependable and Secure Computing, 2016, 13(2): 252–260. DOI:10.1109/TDSC.2015.2443793 |
[8] | Morris T, Vaughn R, Danda Y. A retrofit network intrusion detection system for Modbus RTU and ASCⅡ industrial control systems[C]//Hawaii International Conference on System Science. Piscataway, NJ, USA: IEEE, 2012: 2338-2345. https://www.researchgate.net/publication/254051771_A_Retrofit_Network_Intrusion_Detection_System_for_MODBUS_RTU_and_ASCII_Industrial_Control_Systems |
[9] | Xiao Y C, Wang H G, Zhang L, et al. Two methods on selecting Gaussian kernel parameters for one-class SVM and their application to fault detection[J]. Knowledge-Based Systems, 2014, 59: 75–84. DOI:10.1016/j.knosys.2014.01.020 |
[10] |
张腾飞.基于支持向量机的SCADA系统入侵检测方法[D].上海: 上海交通大学, 2015. Zhang T F. A support vector machine method for intrusion detection in SCADA system[D]. Shanghai: Shanghai Jiao Tong University, 2015. http://cdmd.cnki.com.cn/Article/CDMD-10248-1016788497.htm |
[11] |
刘敬, 谷利泽, 钮心忻, 等.
基于单分类支持向量机和主动学习的网络异常检测研究[J]. 通信学报, 2015, 36(11): 136–146.
Liu J, Gu L Z, Niu X X, et al. Research on network anomaly detection based on one-class SVM and active learning[J]. Journal on Communications, 2015, 36(11): 136–146. DOI:10.11959/j.issn.1000-436x.2015252 |
[12] |
张瑜, 罗可.
基于OC-SVM的大型数据集分类方法[J]. 计算机工程与应用, 2011, 47(4): 131–133.
Zhang Y, Luo K. OC-SVM-based classification for large-scale data sets[J]. Computer Engineering and Applications, 2011, 47(4): 131–133. DOI:10.3778/j.issn.1002-8331.2011.04.036 |
[13] | Tian J, Gu H. Anomaly detection combining one-class SVMs and particle swarm optimization algorithms[J]. Nonlinear Dynamics, 2010, 61(1/2): 303–310. |
[14] | Maglaras M A, Jiang J M, Cruz T. Integrated OCSVM mechanism for intrusion detection in SCADA systems[J]. Electronics Letters, 2014, 50(25): 1935–1936. DOI:10.1049/el.2014.2897 |
[15] |
高华, 赵春霞, 韩光.
基于one-class SVM与融合多可视化特征的可通行区域检测[J]. 机器人, 2011, 33(6): 731–735.
Gao H, Zhao C X, Han G. Traversable region detection based on one-class SVM and multi-visual features fusion[J]. Robot, 2011, 33(6): 731–735. |
[16] |
杨雅辉, 黄海珍, 沈晴霓.
基于增量式GHSOM神经网络模型的入侵检测研究[J]. 计算机学报, 2014, 37(5): 1216–1224.
Yang Y H, Huang H Z, Shen Q N. Research on intrusion detection based on incremental GHSOM[J]. Chinese Journal of Computers, 2014, 37(5): 1216–1224. |
[17] | Maglaras L A, Jiang J M, Cruz T. Combining ensemble methods and social network metrics for improving accuracy of OCSVM on intrusion detection in SCADA systems[J]. Journal of Information Security and Applications, 2015, 30(16): 15–26. |
[18] | Krawczyk B, Woz'niak M. One-class classifiers with incremental learning and forgetting for data streams with concept drift[J]. Soft Computing, 2015, 19(12): 3387–3400. DOI:10.1007/s00500-014-1492-5 |
[19] |
吴崇明, 王晓丹, 白冬婴, 等.
利用KKT条件与类边界包向量的SVM增量学习算法[J]. 计算机工程与设计, 2010, 31(8): 1792–1794.
Wu C M, Wang X D, Bai D Y, et al. Fast SVM incremental learning algorithm using KKT conditions and between-class convex hull vectors[J]. Computer Engineering and Design, 2010, 31(8): 1792–1794. |
[20] |
萧嵘, 王继成, 孙正兴, 等.
一种SVM增量学习算法α-ISVM[J]. 软件学报, 2001, 12(12): 1818–1824.
Xiao R, Wang J C, Sun Z X, et al. An incremental SVM learning algorithm α-ISVM[J]. Journal of Software, 2001, 12(12): 1818–1824. |
[21] |
黄业宇.一种基于OCSVM-PSO的网络入侵检测技术[D].广州: 暨南大学, 2014. Huang Y Y. A network-intrusion detection technology based on OCSVM-PSO[D]. Guangzhou: Jinan University, 2014. http://www.wanfangdata.com.cn/details/detail.do?_type=degree&id=D526337 |