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