王敏, 王勇, 邹春明, 田英杰, 郭乃网
(1.上海电力大学, 计算机科学与技术学院, 上海 200090; 2.公安部第三研究所, 上海 200031; 3.国网上海市电力公司, 电力科学研究院, 上海 200120)
工业控制系统作为基础设施中的重要组成部分,被广泛应用于生产、生活和交通等各个方面[1]。传统的工控系统利用专有的通信协议和物理设施,确保了与外界网络的隔离,较大程度上保障了系统的物理安全。但由于其在信息化和网络化方面的不断发展,使用了更多开放的通信协议和操作系统,也不可避免地带来了新的针对工控系统的网络安全问题,由此出现过“震网”病毒、“Havex”病毒和乌克兰大面积停电等严重事件。
入侵检测技术作为常用的安全防护技术[1],其通过对控制系统的网络信息特征和数据集进行建模和分析,以此来检测出可疑的攻击行为。Beaver等[2]利用SCADA系统入侵检测标准数据集,使用支持向量机、决策树和随机森林等算法,主要研讨了数据集中的注入攻击。张腾飞等[3]使用支持向量机建立攻击检测模型,并将该方法应用于SCADA系统中的Modbus协议,实验结果表明其效果良好。尚文利等[4]使用粒子群优化(particle swarm optimization,PSO)算法建立SVM异常检测模型,实验以Modbus TCP 通信数据为数据来源,最终实现对Modbus 功能码序列的检测。李琳等[5]利用主成分分析(principal component analysis,PCA)法和单类支持向量机建立针对Modbus/TCP协议的入侵检测模型。王华忠等[6]利用PCA法和粒子群优化算法建立了基于SVM的入侵检测模型,然而标准的粒子群算法易陷入局部极小问题。上述算法没有将工控系统内网络数据所具有的非线性、高维度和冗余数据多的特点考虑在内。除此之外,在建立SVM攻击检测模型的过程中,惩罚常数和核函数参数的选择也会对分类准确率产生很大影响。
针对上述问题,本文将Fisher分与核主成分分析法作为特征选择和处理的主要方法;在攻击检测模型的建立方面,提出一种改进的多新息扩展卡尔曼粒子群优化算法(multi-innovation extended Kalman particle swarm optimization,MIEKPSO)。采用多新息扩展的卡尔曼滤波算法[7]与PSO相结合,使得在预测更新粒子位置时可以充分利用当前和历史多个时刻的新息,相较于Kalman粒子群算法只使用单一时刻进行预测的方法,算法的精度有明显的提升。
Modbus作为应用层报文传输协议,采用主-从结构进行通信,数据传输方式包括ASCII模式、RTU模式和TCP模式[8]。当在TCP模式下进行数据传输时,需采用502端口,使得数据可以在以太网上进行正常传输。Modbus TCP帧模型如图1所示,包括PDU和MBAP报文头,去除了附加地址和校验部分。
图1 Modbus TCP帧模型
Modbus协议存在的安全问题主要是由协议本身存在的缺陷和协议的不正确实现所导致的。这些固有的安全问题一旦被攻击者加以利用就能对系统的安全性产生威胁,包括通信数据的泄露、非法用户对系统的控制以及对系统进行攻击致使其瘫痪。Modbus协议存在的安全问题[8]具体包括以下几部分:
(1) Modbus协议在通信时无法对非法用户进行识别,缺少用户认证环节。因此,在主-从站的通信过程中,伪装过的非法用户所发送的控制信息也不会被识别出来,从而对系统的运行造成伤害。
(2) 由于Modbus 协议对用户的权限授予不明确,导致非root用户也可以具有root用户相关权限,在这种情况下,攻击者可以轻松地进入系统内部执行不在其权限范围内的操作,严重威胁到系统内部的安全性。
(3) Modbus 协议通信过程采用的是明文传输方式,没有对地址和命令进行加密,因此存在信息保密性和完整性的问题。攻击者在获取数据的同时,可以轻松对数据进行解析和修改,实现其攻击任务。
(4) 由于Modbus网络缺少对数据的完整性和主从设备的验证,攻击者通过利用这种自身的协议安全性问题,在主-从站的通信过程中,将拦截的数据进行篡改和伪造之后再发送,使其执行错误的操作,实现中间人攻击,可能造成整个系统的通信障碍。
本实验系统通过虚拟机上的Kali Linux系统、路由器和终端电脑组成,硬件设备物理连接如图2所示。 在完成物理连接之后,虚拟机上安装Modbus Slave从站模拟软件,在终端电脑上安装并运行Wireshark通信协议分析软件及Modbus Poll主站模拟软件。
图2 实验硬件设备连接图
本文通过使用Modbus主-从站仿真软件和Wireshark来验证Modbus协议是通过明文传输,模拟主-从站之间的通信过程。 首先在软件中对主从站的通信地址进行配置,配置完成后就可以对主-从站进行通信连接, 如图3所示,主-从站链路连接成功便能进行实时通信。
图3 主-从站通信界面
通过图4所示的Wireshark抓取的数据包可以发现,Modbus协议确实是通过明文进行数据传输的,没有进行任何加密,通信安全性受到很大威胁。
图4 Wireshark捕获的数据包
本实验网络环境配置如下:
攻击者 IP 地址 192.168.1.104
物理地址(MAC): 00:0c:29:53:df:13
目标主机 IP 地址: 192.168.1.106
路由(网关)IP: 192.168.1.1
物理地址(MAC): 74:05:a5:49:1d:33
图5 网络拓扑结构
(1) 攻击测试步骤
虚拟机系统与终端电脑成功连接之后,主-从站可互相通信表示通信功能正常,可通过Wireshark对通信数据进行读取。通信内容如图6所示。
图6 通信数据读取
在虚拟机内使用命令行进行ARP 欺骗并欺骗成功。欺骗过程如图7所示。
图7 使用命令行进行ARP攻击
ARP 欺骗成功前后,查看 ARP 缓存表,显示结果如图8所示。由图8可以看出,欺骗发生之后,目标主机的网关192.168.1.1 的MAC地址与攻击者192.168.1.104的MAC地址相同,变00:0c:29:53:df:13 ,说明攻击者成功地在目标主机和虚拟机的通信过程中扮演了中间人的角色。
图8 ARP缓存表显示结果
(2) 攻击效果
在实现ARP欺骗后,Modbus协议通信被攻击者劫持,主-从站设备无法再通过网关建立连接,不能进行数据传输,如图9所示。
图9 攻击后通信受阻
通常工控系统数据具备很多的系统特征,且数据多存在数据冗余的问题。为了使建立的模型检测效果更为准确,首先要对原始数据集的所有特征进行特征提取,得到最能体现系统特征的几个特征及其数据形成新的数据集,并在此基础之上完成攻击检测模型的建立。本文所采用的特征提取方法分为Fisher分和KPCA 2部分,所使用的标准数据集中包含26个数据特征,如表1所示。
表1 工业控制系统特征
利用Fisher分[9]可以对特征进行有效选取和降低特征空间的维度,其方法是通过计算所有特征的类间距离Sb与类内距离Sw的比值,即Fisher分的值f,f越大表明该特征的分类效果越好。经过比较Fisher分值的大小对数据特征进行选取之后,对数据的降维处理则使用核主成分的方法,形成最终要使用的数据集。
主成分分析法即特征所含的信息量与其方差大小成正比[10]。选取累计方差贡献率V为80%作为判断标准,也就是说,当前N维主成分的累计方差贡献率V超过80%时,即认为前N维数据所包含信息可以代表原始M维数据所包含的信息,以此来实现数据的降维。
多新息扩展的Kalman粒子群优化算法是一种改进的卡尔曼粒子群优化算法,扩展的Kalman滤波算法在标准Kalman滤波算法的基础上将其扩展到非线性系统,又利用多新息辨识理论提高参数估计精度[11-12]。
惩罚常数C与核函数参数g的取值决定了SVM的分类能力,目前最常用的方法就是对C和g在规定的范围内取值,将训练样本均分为多个部分验证C与g当前取值下的训练集分类正确率,最终选择得到最高分类正确率的一组C和g作为最优参数。在一定的空间内,可以使用粒子群优化算法搜索模型最优参数,以C和g的取值作为粒子在空间中的初始位置和速度,在迭代过程中,粒子速度和位置的更新要依据个体最优位置pbest和群体最优位置gbest来实现。
以Fisher分和KPCA方法预处理后的输出数据作为入侵检测模型的输入,对SVM参数C和g进行寻优,最后使用测试数据集对模型进行检测,并得到各类评价指标。入侵检测模型算法流程如图10所示,算法描述如下。
步骤1 对测试数据和训练数据分别进行标准化处理,特征提取采用Fisher 分和核主成分的方式进行,处理后的数据形成新的数据集以供接下来的实验使用。
步骤2 由完成数据预处理后的训练集作为支持向量机的输入数据,在此阶段还要完成对支持向量机的参数寻优。设置合适的交叉验证方式,得到分类准确率。以分类准确率的相反数作为适应度值,更新粒子的位置信息,找出粒子的个体最优解pbest和种群最优解gbest。
步骤3 最后,使用最优参数建立SVM 分类器模型,使用经步骤1处理的测试数据集进行检测,最终得到攻击检测模型的测试集检测准确率。
图10 MIEKPSO-SVM入侵检测算法流程
使用密西西比州立大学关键基础设施保护中心提供的基于Modbus协议的用于工控入侵检测的天然气管道控制系统数据集[13]。该数据集中包括8种不同的攻击类型,数据集中含有的攻击类型和标签值如表2所示。
表2 攻击类型及标签值
为了确保实验的准确性和数据的均匀分布,从原数据集中随机抽取2 200组数据进行实验,并统一进行归一化。抽取1 500组数据构成训练集,剩余700组构成测试集,计算每个特征的f大小并按降序排列。
经Fisher分值选择特征形成新的数据集,采用KPCA算法对数据集进行再次处理,按照降序选择贡献率超过80%的特征值对应的特征向量作为高维空间中的坐标轴。核主成分方法降维后的结果如图11所示。从图11可以看出,前7个主成分的累计方差贡献率已经超过80%,实现了特征提取的目的,即可用前7个主成分所具有的信息作为数据集进行输入。
图11 KPCA降维结果
算法实现采用MATLAB编程完成,具体参数设置为:种群大小为20 ,最大迭代次数取100,c1=1.5、c2=1.7,惯性权重ϖ=0.8。
在对参数C和g进行迭代寻优过程中的全体最优适应度曲线和测试集仿真结果分别如图12、图13所示。从实验结果可以看出:模型训练集的最优分类准确率高达98.75%,测试集的整体分类准确率也达到了90%。以上数据表明,本文所提出的改进方法对于工控系统上存在的不安全问题,可以有效地进行检测,且检测准确率较高。
图12 适应度曲线
图13 MIEKPSO-SVM测试集仿真结果
为了更直观地展现出算法的优越性,选择常用的入侵检测评价标准对模型的检测效果进行评判。实验对比结果见表3。
表3 算法检测效果对比
由表3可知,本文选择3种常用的检测方法与所提改进方法进行检测效果对比,方法一使用了本文所提改进方法、方法二使用了核主成分和改进的PSO方法,方法三使用了PSO方法,方法四使用了遗传算法。由表3可知:方法四在各方面的性能指标上都不存在优势;方法三和方法二在检测时间存在明显的优势,但在其他指标上方法二明显要优于方法三,在检测的准确率上提高了2.1个百分点,在漏报率上下降了2.8个百分点;方法一除了在检测时间上有少许的增加之外,其他各项指标均有明显的提升,与方法二对比在检测的准确率上提高了1.15个百分点,在漏报率上下降了1.29个百分点。通过上述分析可知,所提改进方法存在检测时间增加的问题,但整体上各项指标都有提升,能有效对工控系统存在的入侵问题进行准确检测。
本文选用了特征选择方法、多新息理论和扩展的卡尔曼算法建立入侵检测模型。为了选取有效的数据特征、减少算法训练所需时间,使用了Fisher分值和KPCA组合的特征选择方法。提出的多新息的方法解决了预测粒子位置时单个新息预测的局限性,提升了算法的优化精度和全局优化性能,但也因此增加了模型检测过程的时间成本。最终仿真结果和检测对比结果表明:本文所提出的方法与多种常用的模型相比,虽然增加了时间成本,但是在检测准确率和整体上都有明显的进步。