王敏, 王勇, 鄒春明, 田英杰, 郭乃網(wǎng)
(1.上海電力大學(xué), 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 上海 200090; 2.公安部第三研究所, 上海 200031; 3.國(guó)網(wǎng)上海市電力公司, 電力科學(xué)研究院, 上海 200120)
工業(yè)控制系統(tǒng)作為基礎(chǔ)設(shè)施中的重要組成部分,被廣泛應(yīng)用于生產(chǎn)、生活和交通等各個(gè)方面[1]。傳統(tǒng)的工控系統(tǒng)利用專有的通信協(xié)議和物理設(shè)施,確保了與外界網(wǎng)絡(luò)的隔離,較大程度上保障了系統(tǒng)的物理安全。但由于其在信息化和網(wǎng)絡(luò)化方面的不斷發(fā)展,使用了更多開(kāi)放的通信協(xié)議和操作系統(tǒng),也不可避免地帶來(lái)了新的針對(duì)工控系統(tǒng)的網(wǎng)絡(luò)安全問(wèn)題,由此出現(xiàn)過(guò)“震網(wǎng)”病毒、“Havex”病毒和烏克蘭大面積停電等嚴(yán)重事件。
入侵檢測(cè)技術(shù)作為常用的安全防護(hù)技術(shù)[1],其通過(guò)對(duì)控制系統(tǒng)的網(wǎng)絡(luò)信息特征和數(shù)據(jù)集進(jìn)行建模和分析,以此來(lái)檢測(cè)出可疑的攻擊行為。Beaver等[2]利用SCADA系統(tǒng)入侵檢測(cè)標(biāo)準(zhǔn)數(shù)據(jù)集,使用支持向量機(jī)、決策樹(shù)和隨機(jī)森林等算法,主要研討了數(shù)據(jù)集中的注入攻擊。張騰飛等[3]使用支持向量機(jī)建立攻擊檢測(cè)模型,并將該方法應(yīng)用于SCADA系統(tǒng)中的Modbus協(xié)議,實(shí)驗(yàn)結(jié)果表明其效果良好。尚文利等[4]使用粒子群優(yōu)化(particle swarm optimization,PSO)算法建立SVM異常檢測(cè)模型,實(shí)驗(yàn)以Modbus TCP 通信數(shù)據(jù)為數(shù)據(jù)來(lái)源,最終實(shí)現(xiàn)對(duì)Modbus 功能碼序列的檢測(cè)。李琳等[5]利用主成分分析(principal component analysis,PCA)法和單類支持向量機(jī)建立針對(duì)Modbus/TCP協(xié)議的入侵檢測(cè)模型。王華忠等[6]利用PCA法和粒子群優(yōu)化算法建立了基于SVM的入侵檢測(cè)模型,然而標(biāo)準(zhǔn)的粒子群算法易陷入局部極小問(wèn)題。上述算法沒(méi)有將工控系統(tǒng)內(nèi)網(wǎng)絡(luò)數(shù)據(jù)所具有的非線性、高維度和冗余數(shù)據(jù)多的特點(diǎn)考慮在內(nèi)。除此之外,在建立SVM攻擊檢測(cè)模型的過(guò)程中,懲罰常數(shù)和核函數(shù)參數(shù)的選擇也會(huì)對(duì)分類準(zhǔn)確率產(chǎn)生很大影響。
針對(duì)上述問(wèn)題,本文將Fisher分與核主成分分析法作為特征選擇和處理的主要方法;在攻擊檢測(cè)模型的建立方面,提出一種改進(jìn)的多新息擴(kuò)展卡爾曼粒子群優(yōu)化算法(multi-innovation extended Kalman particle swarm optimization,MIEKPSO)。采用多新息擴(kuò)展的卡爾曼濾波算法[7]與PSO相結(jié)合,使得在預(yù)測(cè)更新粒子位置時(shí)可以充分利用當(dāng)前和歷史多個(gè)時(shí)刻的新息,相較于Kalman粒子群算法只使用單一時(shí)刻進(jìn)行預(yù)測(cè)的方法,算法的精度有明顯的提升。
Modbus作為應(yīng)用層報(bào)文傳輸協(xié)議,采用主-從結(jié)構(gòu)進(jìn)行通信,數(shù)據(jù)傳輸方式包括ASCII模式、RTU模式和TCP模式[8]。當(dāng)在TCP模式下進(jìn)行數(shù)據(jù)傳輸時(shí),需采用502端口,使得數(shù)據(jù)可以在以太網(wǎng)上進(jìn)行正常傳輸。Modbus TCP幀模型如圖1所示,包括PDU和MBAP報(bào)文頭,去除了附加地址和校驗(yàn)部分。
圖1 Modbus TCP幀模型
Modbus協(xié)議存在的安全問(wèn)題主要是由協(xié)議本身存在的缺陷和協(xié)議的不正確實(shí)現(xiàn)所導(dǎo)致的。這些固有的安全問(wèn)題一旦被攻擊者加以利用就能對(duì)系統(tǒng)的安全性產(chǎn)生威脅,包括通信數(shù)據(jù)的泄露、非法用戶對(duì)系統(tǒng)的控制以及對(duì)系統(tǒng)進(jìn)行攻擊致使其癱瘓。Modbus協(xié)議存在的安全問(wèn)題[8]具體包括以下幾部分:
(1) Modbus協(xié)議在通信時(shí)無(wú)法對(duì)非法用戶進(jìn)行識(shí)別,缺少用戶認(rèn)證環(huán)節(jié)。因此,在主-從站的通信過(guò)程中,偽裝過(guò)的非法用戶所發(fā)送的控制信息也不會(huì)被識(shí)別出來(lái),從而對(duì)系統(tǒng)的運(yùn)行造成傷害。
(2) 由于Modbus 協(xié)議對(duì)用戶的權(quán)限授予不明確,導(dǎo)致非root用戶也可以具有root用戶相關(guān)權(quán)限,在這種情況下,攻擊者可以輕松地進(jìn)入系統(tǒng)內(nèi)部執(zhí)行不在其權(quán)限范圍內(nèi)的操作,嚴(yán)重威脅到系統(tǒng)內(nèi)部的安全性。
(3) Modbus 協(xié)議通信過(guò)程采用的是明文傳輸方式,沒(méi)有對(duì)地址和命令進(jìn)行加密,因此存在信息保密性和完整性的問(wèn)題。攻擊者在獲取數(shù)據(jù)的同時(shí),可以輕松對(duì)數(shù)據(jù)進(jìn)行解析和修改,實(shí)現(xiàn)其攻擊任務(wù)。
(4) 由于Modbus網(wǎng)絡(luò)缺少對(duì)數(shù)據(jù)的完整性和主從設(shè)備的驗(yàn)證,攻擊者通過(guò)利用這種自身的協(xié)議安全性問(wèn)題,在主-從站的通信過(guò)程中,將攔截的數(shù)據(jù)進(jìn)行篡改和偽造之后再發(fā)送,使其執(zhí)行錯(cuò)誤的操作,實(shí)現(xiàn)中間人攻擊,可能造成整個(gè)系統(tǒng)的通信障礙。
本實(shí)驗(yàn)系統(tǒng)通過(guò)虛擬機(jī)上的Kali Linux系統(tǒng)、路由器和終端電腦組成,硬件設(shè)備物理連接如圖2所示。 在完成物理連接之后,虛擬機(jī)上安裝Modbus Slave從站模擬軟件,在終端電腦上安裝并運(yùn)行Wireshark通信協(xié)議分析軟件及Modbus Poll主站模擬軟件。
圖2 實(shí)驗(yàn)硬件設(shè)備連接圖
本文通過(guò)使用Modbus主-從站仿真軟件和Wireshark來(lái)驗(yàn)證Modbus協(xié)議是通過(guò)明文傳輸,模擬主-從站之間的通信過(guò)程。 首先在軟件中對(duì)主從站的通信地址進(jìn)行配置,配置完成后就可以對(duì)主-從站進(jìn)行通信連接, 如圖3所示,主-從站鏈路連接成功便能進(jìn)行實(shí)時(shí)通信。
圖3 主-從站通信界面
通過(guò)圖4所示的Wireshark抓取的數(shù)據(jù)包可以發(fā)現(xiàn),Modbus協(xié)議確實(shí)是通過(guò)明文進(jìn)行數(shù)據(jù)傳輸?shù)?,沒(méi)有進(jìn)行任何加密,通信安全性受到很大威脅。
圖4 Wireshark捕獲的數(shù)據(jù)包
本實(shí)驗(yàn)網(wǎng)絡(luò)環(huán)境配置如下:
攻擊者 IP 地址 192.168.1.104
物理地址(MAC): 00:0c:29:53:df:13
目標(biāo)主機(jī) IP 地址: 192.168.1.106
路由(網(wǎng)關(guān))IP: 192.168.1.1
物理地址(MAC): 74:05:a5:49:1d:33
圖5 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
(1) 攻擊測(cè)試步驟
虛擬機(jī)系統(tǒng)與終端電腦成功連接之后,主-從站可互相通信表示通信功能正常,可通過(guò)Wireshark對(duì)通信數(shù)據(jù)進(jìn)行讀取。通信內(nèi)容如圖6所示。
圖6 通信數(shù)據(jù)讀取
在虛擬機(jī)內(nèi)使用命令行進(jìn)行ARP 欺騙并欺騙成功。欺騙過(guò)程如圖7所示。
圖7 使用命令行進(jìn)行ARP攻擊
ARP 欺騙成功前后,查看 ARP 緩存表,顯示結(jié)果如圖8所示。由圖8可以看出,欺騙發(fā)生之后,目標(biāo)主機(jī)的網(wǎng)關(guān)192.168.1.1 的MAC地址與攻擊者192.168.1.104的MAC地址相同,變00:0c:29:53:df:13 ,說(shuō)明攻擊者成功地在目標(biāo)主機(jī)和虛擬機(jī)的通信過(guò)程中扮演了中間人的角色。
圖8 ARP緩存表顯示結(jié)果
(2) 攻擊效果
在實(shí)現(xiàn)ARP欺騙后,Modbus協(xié)議通信被攻擊者劫持,主-從站設(shè)備無(wú)法再通過(guò)網(wǎng)關(guān)建立連接,不能進(jìn)行數(shù)據(jù)傳輸,如圖9所示。
圖9 攻擊后通信受阻
通常工控系統(tǒng)數(shù)據(jù)具備很多的系統(tǒng)特征,且數(shù)據(jù)多存在數(shù)據(jù)冗余的問(wèn)題。為了使建立的模型檢測(cè)效果更為準(zhǔn)確,首先要對(duì)原始數(shù)據(jù)集的所有特征進(jìn)行特征提取,得到最能體現(xiàn)系統(tǒng)特征的幾個(gè)特征及其數(shù)據(jù)形成新的數(shù)據(jù)集,并在此基礎(chǔ)之上完成攻擊檢測(cè)模型的建立。本文所采用的特征提取方法分為Fisher分和KPCA 2部分,所使用的標(biāo)準(zhǔn)數(shù)據(jù)集中包含26個(gè)數(shù)據(jù)特征,如表1所示。
表1 工業(yè)控制系統(tǒng)特征
利用Fisher分[9]可以對(duì)特征進(jìn)行有效選取和降低特征空間的維度,其方法是通過(guò)計(jì)算所有特征的類間距離Sb與類內(nèi)距離Sw的比值,即Fisher分的值f,f越大表明該特征的分類效果越好。經(jīng)過(guò)比較Fisher分值的大小對(duì)數(shù)據(jù)特征進(jìn)行選取之后,對(duì)數(shù)據(jù)的降維處理則使用核主成分的方法,形成最終要使用的數(shù)據(jù)集。
主成分分析法即特征所含的信息量與其方差大小成正比[10]。選取累計(jì)方差貢獻(xiàn)率V為80%作為判斷標(biāo)準(zhǔn),也就是說(shuō),當(dāng)前N維主成分的累計(jì)方差貢獻(xiàn)率V超過(guò)80%時(shí),即認(rèn)為前N維數(shù)據(jù)所包含信息可以代表原始M維數(shù)據(jù)所包含的信息,以此來(lái)實(shí)現(xiàn)數(shù)據(jù)的降維。
多新息擴(kuò)展的Kalman粒子群優(yōu)化算法是一種改進(jìn)的卡爾曼粒子群優(yōu)化算法,擴(kuò)展的Kalman濾波算法在標(biāo)準(zhǔn)Kalman濾波算法的基礎(chǔ)上將其擴(kuò)展到非線性系統(tǒng),又利用多新息辨識(shí)理論提高參數(shù)估計(jì)精度[11-12]。
懲罰常數(shù)C與核函數(shù)參數(shù)g的取值決定了SVM的分類能力,目前最常用的方法就是對(duì)C和g在規(guī)定的范圍內(nèi)取值,將訓(xùn)練樣本均分為多個(gè)部分驗(yàn)證C與g當(dāng)前取值下的訓(xùn)練集分類正確率,最終選擇得到最高分類正確率的一組C和g作為最優(yōu)參數(shù)。在一定的空間內(nèi),可以使用粒子群優(yōu)化算法搜索模型最優(yōu)參數(shù),以C和g的取值作為粒子在空間中的初始位置和速度,在迭代過(guò)程中,粒子速度和位置的更新要依據(jù)個(gè)體最優(yōu)位置pbest和群體最優(yōu)位置gbest來(lái)實(shí)現(xiàn)。
以Fisher分和KPCA方法預(yù)處理后的輸出數(shù)據(jù)作為入侵檢測(cè)模型的輸入,對(duì)SVM參數(shù)C和g進(jìn)行尋優(yōu),最后使用測(cè)試數(shù)據(jù)集對(duì)模型進(jìn)行檢測(cè),并得到各類評(píng)價(jià)指標(biāo)。入侵檢測(cè)模型算法流程如圖10所示,算法描述如下。
步驟1 對(duì)測(cè)試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)分別進(jìn)行標(biāo)準(zhǔn)化處理,特征提取采用Fisher 分和核主成分的方式進(jìn)行,處理后的數(shù)據(jù)形成新的數(shù)據(jù)集以供接下來(lái)的實(shí)驗(yàn)使用。
步驟2 由完成數(shù)據(jù)預(yù)處理后的訓(xùn)練集作為支持向量機(jī)的輸入數(shù)據(jù),在此階段還要完成對(duì)支持向量機(jī)的參數(shù)尋優(yōu)。設(shè)置合適的交叉驗(yàn)證方式,得到分類準(zhǔn)確率。以分類準(zhǔn)確率的相反數(shù)作為適應(yīng)度值,更新粒子的位置信息,找出粒子的個(gè)體最優(yōu)解pbest和種群最優(yōu)解gbest。
步驟3 最后,使用最優(yōu)參數(shù)建立SVM 分類器模型,使用經(jīng)步驟1處理的測(cè)試數(shù)據(jù)集進(jìn)行檢測(cè),最終得到攻擊檢測(cè)模型的測(cè)試集檢測(cè)準(zhǔn)確率。
圖10 MIEKPSO-SVM入侵檢測(cè)算法流程
使用密西西比州立大學(xué)關(guān)鍵基礎(chǔ)設(shè)施保護(hù)中心提供的基于Modbus協(xié)議的用于工控入侵檢測(cè)的天然氣管道控制系統(tǒng)數(shù)據(jù)集[13]。該數(shù)據(jù)集中包括8種不同的攻擊類型,數(shù)據(jù)集中含有的攻擊類型和標(biāo)簽值如表2所示。
表2 攻擊類型及標(biāo)簽值
為了確保實(shí)驗(yàn)的準(zhǔn)確性和數(shù)據(jù)的均勻分布,從原數(shù)據(jù)集中隨機(jī)抽取2 200組數(shù)據(jù)進(jìn)行實(shí)驗(yàn),并統(tǒng)一進(jìn)行歸一化。抽取1 500組數(shù)據(jù)構(gòu)成訓(xùn)練集,剩余700組構(gòu)成測(cè)試集,計(jì)算每個(gè)特征的f大小并按降序排列。
經(jīng)Fisher分值選擇特征形成新的數(shù)據(jù)集,采用KPCA算法對(duì)數(shù)據(jù)集進(jìn)行再次處理,按照降序選擇貢獻(xiàn)率超過(guò)80%的特征值對(duì)應(yīng)的特征向量作為高維空間中的坐標(biāo)軸。核主成分方法降維后的結(jié)果如圖11所示。從圖11可以看出,前7個(gè)主成分的累計(jì)方差貢獻(xiàn)率已經(jīng)超過(guò)80%,實(shí)現(xiàn)了特征提取的目的,即可用前7個(gè)主成分所具有的信息作為數(shù)據(jù)集進(jìn)行輸入。
圖11 KPCA降維結(jié)果
算法實(shí)現(xiàn)采用MATLAB編程完成,具體參數(shù)設(shè)置為:種群大小為20 ,最大迭代次數(shù)取100,c1=1.5、c2=1.7,慣性權(quán)重?=0.8。
在對(duì)參數(shù)C和g進(jìn)行迭代尋優(yōu)過(guò)程中的全體最優(yōu)適應(yīng)度曲線和測(cè)試集仿真結(jié)果分別如圖12、圖13所示。從實(shí)驗(yàn)結(jié)果可以看出:模型訓(xùn)練集的最優(yōu)分類準(zhǔn)確率高達(dá)98.75%,測(cè)試集的整體分類準(zhǔn)確率也達(dá)到了90%。以上數(shù)據(jù)表明,本文所提出的改進(jìn)方法對(duì)于工控系統(tǒng)上存在的不安全問(wèn)題,可以有效地進(jìn)行檢測(cè),且檢測(cè)準(zhǔn)確率較高。
圖12 適應(yīng)度曲線
圖13 MIEKPSO-SVM測(cè)試集仿真結(jié)果
為了更直觀地展現(xiàn)出算法的優(yōu)越性,選擇常用的入侵檢測(cè)評(píng)價(jià)標(biāo)準(zhǔn)對(duì)模型的檢測(cè)效果進(jìn)行評(píng)判。實(shí)驗(yàn)對(duì)比結(jié)果見(jiàn)表3。
表3 算法檢測(cè)效果對(duì)比
由表3可知,本文選擇3種常用的檢測(cè)方法與所提改進(jìn)方法進(jìn)行檢測(cè)效果對(duì)比,方法一使用了本文所提改進(jìn)方法、方法二使用了核主成分和改進(jìn)的PSO方法,方法三使用了PSO方法,方法四使用了遺傳算法。由表3可知:方法四在各方面的性能指標(biāo)上都不存在優(yōu)勢(shì);方法三和方法二在檢測(cè)時(shí)間存在明顯的優(yōu)勢(shì),但在其他指標(biāo)上方法二明顯要優(yōu)于方法三,在檢測(cè)的準(zhǔn)確率上提高了2.1個(gè)百分點(diǎn),在漏報(bào)率上下降了2.8個(gè)百分點(diǎn);方法一除了在檢測(cè)時(shí)間上有少許的增加之外,其他各項(xiàng)指標(biāo)均有明顯的提升,與方法二對(duì)比在檢測(cè)的準(zhǔn)確率上提高了1.15個(gè)百分點(diǎn),在漏報(bào)率上下降了1.29個(gè)百分點(diǎn)。通過(guò)上述分析可知,所提改進(jìn)方法存在檢測(cè)時(shí)間增加的問(wèn)題,但整體上各項(xiàng)指標(biāo)都有提升,能有效對(duì)工控系統(tǒng)存在的入侵問(wèn)題進(jìn)行準(zhǔn)確檢測(cè)。
本文選用了特征選擇方法、多新息理論和擴(kuò)展的卡爾曼算法建立入侵檢測(cè)模型。為了選取有效的數(shù)據(jù)特征、減少算法訓(xùn)練所需時(shí)間,使用了Fisher分值和KPCA組合的特征選擇方法。提出的多新息的方法解決了預(yù)測(cè)粒子位置時(shí)單個(gè)新息預(yù)測(cè)的局限性,提升了算法的優(yōu)化精度和全局優(yōu)化性能,但也因此增加了模型檢測(cè)過(guò)程的時(shí)間成本。最終仿真結(jié)果和檢測(cè)對(duì)比結(jié)果表明:本文所提出的方法與多種常用的模型相比,雖然增加了時(shí)間成本,但是在檢測(cè)準(zhǔn)確率和整體上都有明顯的進(jìn)步。