潘 湛 馬 標(biāo) 唐 文 賈俊鋮* 張重豪 馬 浩
1(蘇州大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院 江蘇 蘇州 215006) 2(西門子有限公司 北京 100102)
隨著信息技術(shù)的發(fā)展和工業(yè)控制系統(tǒng)(ICS)的功能需求,ICS越來越多地連接到企業(yè)網(wǎng)絡(luò)和互聯(lián)網(wǎng),形成了開放的網(wǎng)絡(luò)環(huán)境。然而,傳統(tǒng)ICS基于物理隔離,主要關(guān)注系統(tǒng)的功能安全性,缺乏對網(wǎng)絡(luò)信息安全的考慮。因此,近年來發(fā)生了許多震驚世界的工業(yè)控制網(wǎng)絡(luò)安全事件。
監(jiān)督控制和數(shù)據(jù)采集(SCADA)系統(tǒng)是工業(yè)控制系統(tǒng)的一種重要類型,用于控制地理位置分散的控制系統(tǒng)并執(zhí)行集中數(shù)據(jù)收集。特別是用于關(guān)鍵基礎(chǔ)設(shè)施資產(chǎn),例如化工廠、發(fā)電、傳輸和分配系統(tǒng)、水分配網(wǎng)絡(luò)和廢水處理設(shè)施。由于安全問題的嚴(yán)重后果,保護(hù)SCADA系統(tǒng)的安全至關(guān)重要。
SCADA系統(tǒng)通常包括傳感器和執(zhí)行器,這些傳感器和執(zhí)行器由可編程邏輯控制器(PLC)控制,并由人機(jī)界面(HMI)進(jìn)行管理。SCADA系統(tǒng)最初是為串行通信而設(shè)計的,其前提是所有操作實(shí)體均合法且已正確安裝,執(zhí)行預(yù)期的邏輯并遵守協(xié)議。因此,許多SCADA系統(tǒng)幾乎沒有防御攻擊的措施。具體而言,SCADA網(wǎng)絡(luò)既沒有數(shù)據(jù)完整性檢查,也沒有通過加密保護(hù)機(jī)密性的手段。因此,有必要在SCADA網(wǎng)絡(luò)中部署入侵檢測系統(tǒng)(IDS)。
入侵檢測系統(tǒng)在入侵攻擊造成系統(tǒng)損壞之前就檢測到攻擊,并發(fā)出警報以啟動防御措施。目前,入侵檢測主要分為兩類:誤用檢測和異常檢測。誤用檢測是通過與已知的異常行為匹配來實(shí)現(xiàn)入侵檢測。通常也稱為基于先驗(yàn)知識的入侵檢測。異常檢測是通過建立正常行為模型來發(fā)現(xiàn)異常行為,也被稱為基于行為的入侵檢測。與誤用檢測相比,異常檢測的漏報率低,可以檢測到以前未發(fā)生的入侵行為,但誤報率很高。
本文研究了基于異常的入侵檢測方法,需要強(qiáng)調(diào)的是,研究目標(biāo)是檢測流量異常,即與流量正常周期性行為的偏差。這種偏差不一定是惡意的,例如,手動操作也可能會產(chǎn)生與正常行為不同的流量。研究所用的SCADA系統(tǒng)流量采用Siemens S7 0x32協(xié)議。西門子S7系列協(xié)議是SCADA系統(tǒng)中使用最廣泛的協(xié)議之一。本文結(jié)合SCADA系統(tǒng)流量的特性和領(lǐng)域知識,提出一種使用IO地址分離和頻譜分析來自動構(gòu)建SCADA異常檢測模型的方法。此外,嘗試在頻譜分析階段進(jìn)行了一些改進(jìn),以使新方法更加自動化。
本文的貢獻(xiàn)如下:
(1) 通過識別訪問PLC的報文的目標(biāo)IO地址來分離流量通道,使得后續(xù)步驟中建立的流量模型更加準(zhǔn)確和簡潔。
(2) 對于每個IO通道中各自的確定性有限自動機(jī)(DFA)的構(gòu)造,本文針對現(xiàn)有頻譜分析方法的采樣間隔選擇和頻率能量濾波的閾值設(shè)置提出了一些改進(jìn)。
(3) 使用真實(shí)的SCADA測試平臺產(chǎn)生的網(wǎng)絡(luò)流量進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,基于IO地址分離和頻譜分析的方法能夠更準(zhǔn)確地分離通道,擁有更高的建模精度,產(chǎn)生更少的人工干預(yù)。
Alcaraz等[1]開展了一項與關(guān)鍵控制系統(tǒng)中的異常學(xué)習(xí)和檢測有關(guān)的技術(shù)調(diào)查。當(dāng)前大多數(shù)商用網(wǎng)絡(luò)入侵檢測系統(tǒng)(NIDS)都是基于簽名的,即當(dāng)它們與先前定義的簽名匹配時會識別出攻擊,而基于異常的NIDS則基于Mukherjee等[2]提出的意見:與合法用戶不同,入侵者將受到嚴(yán)重影響。
最近的幾項研究[3-4]提到了使用馬爾科夫鏈對SCADA系統(tǒng)進(jìn)行異常檢測的方法。但是,Ye等[5]證明,盡管該方法的檢測精度很高,但由于對噪聲敏感,假陽性值的數(shù)量也很高。另外,Hadziosmanovic等[6]使用在HMI上運(yùn)行的控制應(yīng)用程序生成的日志來檢測過程控制應(yīng)用程序上用戶操作的異常模式。
文獻(xiàn)[7]提出了一種基于狀態(tài)的SCADA系統(tǒng)入侵檢測系統(tǒng)。該方法使用有關(guān)工業(yè)過程控制的詳細(xì)知識來生成系統(tǒng)虛擬映像。Song等[8]通過獲取ICS輸入輸出數(shù)據(jù)來建立系統(tǒng)行為模型,通過比較實(shí)際系統(tǒng)輸入輸出和模型的輸入輸出進(jìn)行異常判別。Kalech[9]通過SCADA系統(tǒng)輸入輸出信號的時間序列建立系統(tǒng)的行為模型,采用隱馬爾可夫模型和神經(jīng)網(wǎng)絡(luò)進(jìn)行異常行為判別。
Cheung等[10]針對SCADA系統(tǒng)流量,特別是針對使用Modbus協(xié)議的流量,提出了一種基于模型的異常檢測方法。作者設(shè)計了用于Modbus/TCP的多算法入侵檢測設(shè)備,具有異常模式識別,TCP報頭的貝葉斯分析和狀態(tài)協(xié)議監(jiān)視功能,并輔以文獻(xiàn)[11]中的自定義Snort規(guī)則。在隨后的工作中,Cheung等[12]將自適應(yīng)統(tǒng)計學(xué)習(xí)方法并入系統(tǒng)中,以檢測主機(jī)之間的通信模式和單個流中的流量模式。后來Briesemeister等[13]將這些入侵檢測方法集成到文獻(xiàn)[14]中的EMERALD事件關(guān)聯(lián)框架中。
另外,基于機(jī)器學(xué)習(xí)的異常檢測已經(jīng)有了大量的研究,但是一直缺乏此類系統(tǒng)的操作部署。針對這個方面,Sommer等[15]在研究中討論了它們之間的不平衡關(guān)系。文獻(xiàn)[16]則以網(wǎng)絡(luò)流量為特征,采用基于熵的動態(tài)半監(jiān)督K-means算法和單分類SVM進(jìn)行流量異常檢測。
Barbosa等[17]使用傅里葉分析方法來處理他們在兩個不同的水處理和分配設(shè)施收集的SCADA系統(tǒng)流量數(shù)據(jù)。他們得出結(jié)論:由于大多數(shù)流量源周期性地生成數(shù)據(jù),因此SCADA系統(tǒng)流量含有高度規(guī)律的時間序列。
在后續(xù)工作中,Barbosa等[18]證明了他們周期性學(xué)習(xí)的概念。然而,他們的分析只考慮了流量的傳輸級別,而沒有考慮SCADA系統(tǒng)所用協(xié)議的語義。此外,他們沒有考慮SCADA系統(tǒng)業(yè)務(wù)的本質(zhì)特征(即周期性分組序列的正確消息順序)。Kleinmann等[19]對此提供了一種解釋,即在請求-響應(yīng)循環(huán)模式之外,周期性流量也可以以不同的方式形成。
Goldenberg等[20]開發(fā)了一種基于模型的方法(GW模型),該方法針對SCADA網(wǎng)絡(luò)流量使用確定性有限自動機(jī)(Deterministic Finite Automaton,DFA)表示周期性流量,從而進(jìn)行網(wǎng)絡(luò)異常檢測。遵循此方法,SCADA系統(tǒng)消息將被單獨(dú)隔離并按其順序用于建模。隨后,Kleinmann等[21]證明了類似的方法在使用西門子S7協(xié)議的SCADA系統(tǒng)流量建模中也是有效的。
Caselli等[22]提出了一種將SCADA系統(tǒng)流量消息序列建模為離散時間馬爾可夫鏈(DTMC)的方法。他們構(gòu)建了一個狀態(tài)機(jī),其狀態(tài)用于對可能的消息進(jìn)行建模,同時其狀態(tài)轉(zhuǎn)換關(guān)系用于表示兩個狀態(tài)之間的“前后”關(guān)系。
Caselli等[22]還針對多路復(fù)用的SCADA系統(tǒng)流量進(jìn)行建模的研究,他們發(fā)現(xiàn)使用DFA進(jìn)行異常檢測通常會產(chǎn)生非常大的DFA和高誤報率。而Kleinmann等引入了一種針對此類SCADA流量的基于狀態(tài)圖的建模方法:狀態(tài)圖包含多個DFA,每個循環(huán)模式一個。每個DFA都是根據(jù)GW模型的學(xué)習(xí)階段構(gòu)建的[19]。
Kleinmann等[23]在研究中首次嘗試自動地構(gòu)造狀態(tài)圖。他們使用了無監(jiān)督學(xué)習(xí)算法,該算法從數(shù)據(jù)流中構(gòu)建了DTMC。這種組合方法在人工合成的網(wǎng)絡(luò)流量上效果很好,但是誤報率仍然過高。
根據(jù)之前的研究,雖然DFA可用于以簡單的周期性模式對流量進(jìn)行建模,但在使用多路復(fù)用進(jìn)行流量建模時效果不佳[20]。除了每秒發(fā)生多次的頻繁掃描周期外,多路復(fù)用流量中還存在更多周期性模式。嘗試使用單個DFA為兩個以上的周期模式建模會產(chǎn)生一個非常大的模型:其正常模式包括數(shù)百次不同快速掃描周期的迭代,并且可能會重復(fù)長周期。因此,僅使用DFA的建模方法是不準(zhǔn)確的,因?yàn)殚L周期循環(huán)并不總是在同一點(diǎn)中斷快速循環(huán),并且當(dāng)它們處于活動狀態(tài)時,兩種模式的符號可能會交錯。基于狀態(tài)圖的離散馬爾可夫鏈建模方法在一定程度上利用了統(tǒng)計方法,提高了復(fù)雜多周期流量的識別能力,但誤差較大。此外,Kleinmann等[24]提出了一種通過頻譜分析自動構(gòu)建狀態(tài)圖的建模方法,從而增強(qiáng)了識別和分離復(fù)雜多周期流量的能力。然而,由于兩個或多個不同生產(chǎn)操作所產(chǎn)生的流量具有高度相似的周期,因此這種情況在頻譜分析中也很難被準(zhǔn)確識別。另一個需要關(guān)注的問題是頻譜分析建模方法中的主要周期檢測中的閾值設(shè)置問題。
Caselli等[22]假設(shè)現(xiàn)代人機(jī)交互界面(Human Machine Interface,HMI)采用基于線程的體系結(jié)構(gòu),每個線程都負(fù)責(zé)某些任務(wù),比如控制對可編程邏輯控制器(Programmable Logic Controller,PLC)上一系列寄存器的訪問,多個線程以不同的調(diào)度頻率并發(fā)運(yùn)行,并共享相同的網(wǎng)絡(luò)連接。
以前的研究一般只對周期性進(jìn)行建模,而沒有深入解釋工業(yè)控制系統(tǒng)協(xié)議的語義,因此存在一定的局限性。鑒于上述缺陷,本文提出了一種新的建模方法,該方法結(jié)合領(lǐng)域知識對多路復(fù)用流量進(jìn)行準(zhǔn)確的分離和頻譜分析,并自動構(gòu)建出狀態(tài)圖模型。另外,本文嘗試自動選擇采樣間隔以及使用統(tǒng)計方法在檢測主導(dǎo)階段自動設(shè)置頻率能量閾值。整個建模過程如圖1所示。
圖1 基于IO地址分離和頻譜分析的建模結(jié)構(gòu)
首先,獲取HMI與PLC間的通信流量,并對流量數(shù)據(jù)包進(jìn)行深入解析。然后將解析的流量數(shù)據(jù)符號化(轉(zhuǎn)換為哈希值)。接下來,根據(jù)流量報文的IO地址進(jìn)行通道分離,從而產(chǎn)生若干個IO通道。最后,分別對每個IO通道中的周期模式進(jìn)行建模,其中可根據(jù)IO通道內(nèi)周期模式情況設(shè)置DFA選擇器。
1) IO通道。
實(shí)際上,在與PLC通信期間,HMI使用特定的報文來訪問特定的IO點(diǎn)。例如,假設(shè)PLC具有三個IO點(diǎn),HMI將以指定的時間間隔訪問這三個IO地址來讀取和寫入數(shù)據(jù)。在讀取和寫入數(shù)據(jù)時,三個通道的時間間隔可能相同,也可能不同,但實(shí)際上,它們?nèi)匀皇?個不同的IO通道。因此,流量數(shù)據(jù)中呈現(xiàn)出的不同周期模式的混合現(xiàn)象,其物理表現(xiàn)是上位機(jī)HMI對PLC中不同IO地址的周期性輪詢。在這種情況下,可以根據(jù)IO地址分離流量數(shù)據(jù)來獲取每個IO通道的流量,使得多路復(fù)用流量中存在的復(fù)雜混合周期模式能夠被初步準(zhǔn)確地分離。
S7報文中協(xié)議數(shù)據(jù)單元(Protocol Data Unit,PDU)的最大長度在112到960字節(jié)之間。圖2是S7 0x32 PDU的結(jié)構(gòu)圖[18],分為兩部分:報文頭部和參數(shù)。PDU包含報文頭部的9個字段和參數(shù)的8個字段,其中我們著重關(guān)注以下幾個字段:
? Protocol Data Unit Reference(Request Id)字段用于請求數(shù)據(jù)包和響應(yīng)數(shù)據(jù)包之間的同步。
? Area字段,它是PLC存儲區(qū)的8位標(biāo)識符。
? Address字段,它是數(shù)據(jù)項的24位地址。
圖2 S7 0x32 PDU結(jié)構(gòu):讀/寫請求報文的頭部和參數(shù)
Protocol Data Unit Reference、Area和Address三個字段是流量分離的關(guān)鍵。由于響應(yīng)報文中沒有Area和Address字段,因此需要使用Protocol Data Unit Reference字段將請求消息和響應(yīng)消息配對,以此來正確地將響應(yīng)報文放入對應(yīng)的IO通道中。
2) 流量分離與數(shù)據(jù)處理。
(1) 數(shù)據(jù)提取和流量分離。根據(jù)不同的<源IP,協(xié)議(TCP 102),目標(biāo)IP>從原始PCAP中提取不同的S7Comm報文流。在此基礎(chǔ)上,本文分析了S7Comm有效負(fù)載,確定了所有不同的IO點(diǎn),分離并提取了每個IO通道中所有報文的關(guān)鍵字段。
(2) 報文流量的符號化構(gòu)造。將從每個報文數(shù)據(jù)中提取到的關(guān)鍵字段拼接為一個字符串,并使用SHA-1進(jìn)行哈希計算以獲得與報文記錄對應(yīng)的哈希字符串作為輸入符號。
完成上述流量分離后,根據(jù)每個IO通道中的流量生成二進(jìn)制符號序列。然后使用頻譜分析方法進(jìn)行建模[24]。頻譜分析不僅可以識別每個IO通道的流量周期,還可以確定通道是否存在多種周期模式。
1) 輸入序列構(gòu)建。
將每個通道收集到的數(shù)據(jù)劃分為特定持續(xù)時間的時間段Δtμs,令采樣的頻率FAS=1/Δt和學(xué)習(xí)窗口中的采樣數(shù)為N=T/Δt。當(dāng)然,Δt應(yīng)大于報文傳輸所需的時間。
將HMI-PLC通道中每個IO通道的通信流量處理為二進(jìn)制值信號x[i]:對于每個采樣間隔Δti,如果存在至少一個流量符號,則設(shè)置x[i]=1,否則x[i]=0。
考慮建模過程實(shí)現(xiàn)自動化需要適應(yīng)不同的數(shù)據(jù)集的情況,本文加入一個采樣間隔時間的自適應(yīng)方法。構(gòu)造多個不同采樣間隔Δt的二進(jìn)制符號序列,分別計算不同采樣時間間隔下序列中的符號占比,即二進(jìn)制序列中1的數(shù)量占序列總長度的比值,用r表示。設(shè)兩種采樣間隔Δt1、Δt2,分別構(gòu)造對應(yīng)的二進(jìn)制序列并計算各自的符號占比r1、r2,如果|r1×(Δt2/Δt1)/r2-1|小于等于一個閾值t(理論上可為一個較小的常數(shù)值,如0.1%),則選用Δt2。
2) 頻譜分析。
在獲得適當(dāng)?shù)牟蓸娱g隔和相應(yīng)的二進(jìn)制序列后,使用周期圖法自動提取主導(dǎo)周期(峰值)[22]。首先,找到周期圖中的頻率能量局部最大值(局部峰值)。然后,使用頻率能量閾值(TFE)過濾掉值低于其局部峰值。
一旦過濾掉低于TFE的頻率能量峰值,將得到一個主導(dǎo)周期對應(yīng)頻率的候選列表。接下來,由于只需要保留原始周期,所以需要濾除高次諧波(頻率是原始周期頻率的正整數(shù)倍的周期)。例如,對于一對周期,假設(shè)它們的頻率為f1、f2,并且f1>f2,如果(或幾乎)f1是f2的整數(shù)倍,則將f1丟棄。為此,本文定義了頻率統(tǒng)一閾值(TFU),我們設(shè)置k=f1/f2并在本文研究工作中將TFU值設(shè)置為4%。如果|k-?k?| 圖3 檢測主導(dǎo)周期過程的示例 在返回與每個IO通道的主導(dǎo)周期相對應(yīng)的一組頻率值后,需要在不同通道中找到每種模式的符號。對于已完成分離的IO通道,執(zhí)行以下操作: (1) 通過檢查每個IO通道的符號流找到另一個符號集σ。 (2) 對于每個IO通道的每個不同符號s∈σ,首先創(chuàng)建一個二進(jìn)制信號序列,表示不同通道內(nèi)s的出現(xiàn)情況。然后,計算IO通道每個主導(dǎo)周期中s的頻率能量值。 (3) 對于每個主導(dǎo)周期,找到其符號的最大頻率能量值,并為頻率能量設(shè)置一個可配置的閾值。然后濾除頻率能量低于閾值的符號。 (4) 請注意,符號s在周期中可以出現(xiàn)多次。對于每種循環(huán)模式,希望找到每個符號的出現(xiàn)次數(shù)。 (5) 根據(jù)上面找到的符號,包含該符號的字典對應(yīng)于時間戳,獲得圖案符號的順序,最后返回周期性圖案符號的有序列表,以用于下一個DFA建模。 3) 頻率能量閾值的自動設(shè)置方法。 在主導(dǎo)周期檢測部分,本文根據(jù)Vlachos等[25]提出的方法定義閾值。他們假設(shè)一個非周期時間序列的規(guī)范模型。離散傅里葉變換系數(shù)的大小根據(jù)指數(shù)分布進(jìn)行分配,其中λ是峰值的平均功率的倒數(shù)(以μ表示)。令TFE為代表μ百分比的可配置值,低于該值的周期圖頻率可以丟棄。令X為模型的周期圖,其累積分布函數(shù)如下: (1) 令P′=1-P,P′表示返回的時段是重要的置信概率。在這種情況下,Vlachos等建議將P設(shè)置為較低的值并按照計算相應(yīng)的TFE: TFE=-μ·ln(P) (2) 然而,對于不同的數(shù)據(jù)集,很難通過設(shè)置P來確定TFE。在Barbosa等[18]的研究中,他們是通過人工觀察周期圖來確定一個類似本文中頻率能量閾值(TFE)的值完成頻率過濾的。Vlachos等[25]的研究也沒有涉及能夠適應(yīng)不同數(shù)據(jù)集的自動設(shè)置閾值的方法。另外,考慮到在分離流數(shù)據(jù)之后每個IO通道的循環(huán)模式將變得相對簡潔,因此嘗試使用統(tǒng)計方法來自動設(shè)置TFE。 分離后每個IO通道的周期模式相對簡單。進(jìn)一步統(tǒng)計了通道中輸入符號的周期圖分析結(jié)果,發(fā)現(xiàn)在主導(dǎo)周期檢測過程中,大于TFE的頻率能量峰值數(shù)量較少。因此,可以根據(jù)頻率能量峰值數(shù)目的變化程度來自動設(shè)置TFE: (1) 將頻率能量值分成固定長度的段(在本文的工作中,設(shè)置10個單位的頻率能量為一個段)。 (2) 計算每個頻率能量段中的峰值數(shù)量,并繪制其數(shù)量統(tǒng)計分布圖。 (3) 使用斜率法來判斷數(shù)量分布的變化。當(dāng)頻率能量峰值數(shù)量的變化程度(即數(shù)量統(tǒng)計曲線的斜率)大于或等于(最大峰值數(shù)量/頻率能量的最大值)時,可以得到當(dāng)前的頻率能量段并計算原始頻率能量峰值。將滿足條件的該頻率能量峰值設(shè)置為頻率能量閾值TFE。 (4) 為了避免各段頻率能量值波動的影響,對定量統(tǒng)計曲線進(jìn)行高階多項式擬合處理: (3) 本文所使用的訓(xùn)練數(shù)據(jù)集來自SCADA系統(tǒng)的真實(shí)測試平臺。從控制層網(wǎng)絡(luò)(環(huán)網(wǎng))中的多個交換機(jī)中獲取了所需的實(shí)驗(yàn)流量。網(wǎng)絡(luò)拓?fù)淙鐖D4所示。 圖4 SCADA系統(tǒng)測試平臺網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu) 此外,為了模擬不同的異常情況,合成了三種用于檢測實(shí)驗(yàn)的含噪聲數(shù)據(jù):(1) 隨機(jī)插入未知的周期模式符號;(2) 在通道中隨機(jī)插入已知的周期模式符號;(3) 為其他IO通道隨機(jī)插入完整周期的周期模式符號。 實(shí)驗(yàn)應(yīng)用了最新的IO地址分離和頻譜分析方法,并調(diào)整了自適應(yīng)算法的參數(shù),并且將它與先前的4種建模方法進(jìn)行比較,基準(zhǔn)是已知的理想模型(由于流量數(shù)據(jù)是從測試平臺捕獲的,因此其輪詢周期是已知的,并通過人工手段確定了正確的狀態(tài)圖模型以及每個IO通道中正確DFA): (1) 使用單個簡單的DFA構(gòu)建模型。 (2) 使用兩個DFA串聯(lián)進(jìn)行模型構(gòu)建。 (3) 使用DTMC來構(gòu)建用于模型構(gòu)建的狀態(tài)圖。 (4) 使用頻譜分析方法建模。 (5) 使用IO地址分離和頻譜分析方法建模。 (6) 理想模型。 圖5、圖6分別顯示了每種方法在實(shí)驗(yàn)數(shù)據(jù)上的平均建模精度對比,以及在復(fù)雜周期條件下對數(shù)據(jù)的建模精度對比。可以看出,本文方法與其他方法相比具有更好的建模精度。具體地,在流量周期復(fù)雜的情況下(即周期模式多且相互夾雜混合),簡單的DFA和2-DFA方法基本上不能在多路復(fù)用的流量數(shù)據(jù)上構(gòu)建準(zhǔn)確的模型。離散時間馬爾可夫鏈的組合方法可以生成部分正確的狀態(tài)圖模型,而頻譜方法可以生成相對而言更好的狀態(tài)圖模型。IO地址分離和頻譜分析相結(jié)合的方法具有最高的準(zhǔn)確性。圖7顯示了對所有數(shù)據(jù)進(jìn)行建模時每種方法的誤報率。可以看出,基于IO地址分離的新方法具有更好的建模效果。 圖5 實(shí)驗(yàn)數(shù)據(jù)集上的平均建模精度對比 圖6 周期復(fù)雜數(shù)據(jù)集上的建模精度對比 圖7 不同建模方法的誤報率對比 圖8比較了以不同置信度進(jìn)行主導(dǎo)周期檢測進(jìn)而構(gòu)建模型的頻譜分析方法的建模精度和使用自動配置符號頻率能量閾值的新方法的建模精度。其中星型折線表示人工設(shè)置不同置信概率結(jié)果,折線表示自動配置符號頻率能量閾值的結(jié)果。實(shí)驗(yàn)結(jié)果表明,新方法與符號頻率能量閾值的自動配置相結(jié)合,在一定程度上減少了建模時的人工干預(yù),具有一定的效果。 圖8 自適應(yīng)頻率能量閾值方法測試 本文針對SCADA系統(tǒng)多路復(fù)用流量提出了一種基于IO地址分離和頻譜分析的自動構(gòu)建狀態(tài)圖模型的新方法。首先,本文算法深度解析流量報文的語義,根據(jù)IO地址屬性分離流量通道,然后分別為每個子通道建立DFA模型,并且不需要事先知道流量數(shù)據(jù)總共有多少個子通道。應(yīng)用新方法可以降低流量復(fù)雜度從而對子通道進(jìn)行更準(zhǔn)確的建模,這將大大提高建模精度。另外,在頻譜分析部分嘗試優(yōu)化了采樣間隔的選擇以及在檢測主導(dǎo)周期階段使用統(tǒng)計方法來探索關(guān)鍵閾值的自動化設(shè)置。本文使用從SCADA系統(tǒng)測試平臺上捕獲的數(shù)據(jù)以及合成數(shù)據(jù)評估了新的解決方案,流量協(xié)議使用Siemens S7- 0x32協(xié)議。對比實(shí)驗(yàn)表明,本文方法在建模精度方面優(yōu)于其他方法,并且在保證建模效果的前提下減少了人工干預(yù)。未來將繼續(xù)測試新建模算法的性能,提高檢測模型在真實(shí)數(shù)據(jù)場景下的適應(yīng)性,并繼續(xù)探索模型的自動化構(gòu)建。3 實(shí)驗(yàn)分析
3.1 數(shù)據(jù)集
3.2 實(shí)驗(yàn)結(jié)果及分析
4 結(jié) 語