本發(fā)明涉及漏洞自動挖掘領域,尤其涉及一種基于BP神經(jīng)網(wǎng)絡的工業(yè)控制系統(tǒng)漏洞自動挖掘方法。
背景技術:
截止到2017年1月24日,國家新型安全漏洞共享平臺公布的工業(yè)控制系統(tǒng)漏洞有979條,期中西門子漏洞占據(jù)40.86%,研華科技漏洞占據(jù)19.43%,施耐德占據(jù)15.43,羅克韋爾占據(jù)12%,其余的是從事虛擬化的Parallels漏洞占據(jù)了12.29%。這些漏洞中高危漏洞占據(jù)了48.18%,中危占45.97%,低危占5.85%。
常見的工控系統(tǒng)漏洞有通訊傳輸協(xié)議漏洞、工控設備漏洞、工控軟件漏洞、配置錯誤漏洞等。通訊傳輸協(xié)議漏洞主要是TCP/IP、RPC、UDP等協(xié)議的漏洞。工控軟件漏洞主要由于工控軟件缺少統(tǒng)一的安全防護規(guī)范,普遍存在安全設計缺陷,因此工控軟件容易被攻擊者攻擊,取得設備的控制權,造成嚴重后果。
當前的漏洞掃描技術主要是模糊測試技術,模糊測試是一個自動或半自動的過程,主要屬于黑盒測試和灰盒測試領域。早期主要采用簡單的隨機測試技術到2002年首次把文件格式知識和協(xié)議知識融入到模糊測試技術之中,再到2007年一批開源和商業(yè)的模糊測試工具問世,隨后更多新思想、新方法的模糊測試不斷涌現(xiàn),如一種基于模糊測試的全局方法、有關網(wǎng)絡控制方面漏洞的測試模型、一種利用組合模型推理和進化的模糊方法都為漏洞挖掘技術提供了強有力的支撐。隨著模糊測試的發(fā)展,其所運到的工具也愈發(fā)多樣化,通用的模糊測試工具可以針對各種不同類型的目標進行測試,具有可重用性和使用范圍廣等優(yōu)點, 其中比較具有代表性的有Protos、SPIKE、Peach、Sulley、Dfuz和Bunny等。
當前工業(yè)控制系統(tǒng)漏洞檢測主要采用判定函數(shù)法、格蘊含推理法、漏洞規(guī)則匹配法、動態(tài)簽名法、通信數(shù)據(jù)解析法、哈希校驗法、漏洞特征匹配法、規(guī)則判定法、屬性推理法等。
綜上所述,當前工業(yè)控制系統(tǒng)漏洞檢測雖然采用了諸多方式,主要采用的是基于Fuzzy為基礎的異常數(shù)據(jù)探查法,特征值匹配法、規(guī)則判斷法幾類,BP(Back Propagation)神經(jīng)網(wǎng)絡這種按誤差逆?zhèn)鞑ニ惴ㄓ柧毜亩鄬忧梆伨W(wǎng)絡多用于模式識別,在工業(yè)控制系統(tǒng)漏洞挖掘領域還很少出現(xiàn)。由于工業(yè)控制系統(tǒng)的實時性運行,無法在線挖掘工業(yè)控制系統(tǒng)漏洞,沒有辦法去分析數(shù)據(jù)之間的關系,還存在自動學習能力不足的特點,為了解決當前問題,我們公布了一種基于BP神經(jīng)網(wǎng)絡的工業(yè)控制系統(tǒng)漏洞自動挖掘方法。
技術實現(xiàn)要素:
本發(fā)明公布了一種基于BP神經(jīng)網(wǎng)絡的工業(yè)控制系統(tǒng)漏洞自動挖掘方法,該方法包括工業(yè)控制系統(tǒng)數(shù)據(jù)采集模塊,神經(jīng)元設計模塊,神經(jīng)網(wǎng)絡結構設計模塊,算法實現(xiàn)模塊。
本發(fā)明的工業(yè)控制系統(tǒng)數(shù)據(jù)采集模塊:主要是采集數(shù)據(jù)和數(shù)據(jù)的歸一化處理。
本發(fā)明的神經(jīng)元設計模塊:主要是把工業(yè)控制系統(tǒng)的狀態(tài)信息作為輸入向量,把控制信息作為輸出向量。
本發(fā)明的設計網(wǎng)絡結構設計模塊:主要是包含輸入層、隱含層、和輸出層;輸入工業(yè)控制系統(tǒng)數(shù)據(jù)樣本,使用反向傳播方法對神經(jīng)網(wǎng)絡的權值和閾值調(diào)整訓練,使輸出的逼近目標向量。
本發(fā)明的算法實現(xiàn)模塊,是一種有監(jiān)督式的學習算法,其主要思想是:,其具體步驟如下:
步驟(1):工業(yè)控制系統(tǒng)原始數(shù)據(jù)采集,采集工業(yè)控制系統(tǒng)的傳感器數(shù)據(jù)包括溫度、壓力、濕度、轉速、開關狀態(tài)信息,如閥門狀態(tài)和控制命令等;
步驟(2):數(shù)據(jù)的歸一化處理,由于采集的數(shù)據(jù)類型不一樣,數(shù)據(jù)的表達范圍也有很大差異,不能直接用于BP神經(jīng)網(wǎng)絡的輸入向量,需要對數(shù)據(jù)進行歸一化處理,定義轉換方式,轉換成能被BP神經(jīng)網(wǎng)絡所接受的輸入數(shù)據(jù);
步驟(3):輸入工業(yè)控制系統(tǒng)訓練樣本:從數(shù)據(jù)中選取輸入向量和輸出向量作為訓練樣本,對設計的BP神經(jīng)網(wǎng)絡進行訓練,生成必要的權重和閥值;
步驟(4):計算隱含層單元輸出:根據(jù)隱含層到輸出層的連接權值、閾值進行計算,逐步確定隱含層的權值和閾值;
步驟(5):計算輸出單元輸出:根據(jù)BP神經(jīng)網(wǎng)絡的傳遞函數(shù)和閾值、全職計算輸出值;
步驟(6):結果比較:輸出值與目標值的之差是否小于設定誤差;
步驟(7):若步驟(6)判定條件為真,則輸出結果;
步驟(8):判定條件:輸出值與目標值之差不大于設定誤差并且循環(huán)次數(shù)大于設定值
步驟(9):若步驟(8)判定條件為真,則輸出可疑漏洞
步驟(10)若步驟(8)判定條件為假,調(diào)整神經(jīng)元的權值和閥值,轉向步驟(3)。
本發(fā)明方法采集了工業(yè)控制系統(tǒng)的狀態(tài)數(shù)據(jù)作為輸入,控制命令作為輸出,通過訓練形成了狀態(tài)與控制數(shù)據(jù)之間的關系,根據(jù)神經(jīng)網(wǎng)絡訓練結構圖,找出狀態(tài)與控制命令之間的關系,并以神經(jīng)網(wǎng)絡訓練結果為依據(jù),判斷工業(yè)控制系統(tǒng)可能存在的疑似漏洞。該方法不需要過濾數(shù)據(jù)包,不影響工業(yè)控制系統(tǒng)的實時運行,具有非常強實用價值。
附圖說明:
圖1是本發(fā)明的系統(tǒng)結構圖;
圖2是本發(fā)明的神經(jīng)元結構圖;
圖3是本發(fā)明的網(wǎng)絡結構圖;
圖4是本發(fā)明的算法流程圖。
圖1 是本發(fā)明的系統(tǒng)結構圖:一種基于BP神經(jīng)網(wǎng)絡的工業(yè)控制系統(tǒng)漏洞自動挖掘方法,該方法包括工業(yè)控制系統(tǒng)數(shù)據(jù)采集模塊,神經(jīng)元設計模塊,神經(jīng)網(wǎng)絡結構設計模塊,算法實現(xiàn)模塊。工業(yè)控制系統(tǒng)數(shù)據(jù)采集模塊:包括原始數(shù)據(jù)采集和數(shù)據(jù)的歸一化處理;工業(yè)控制系統(tǒng)原始數(shù)據(jù)采集,采集工業(yè)控制系統(tǒng)的傳感器數(shù)據(jù)包括溫度、壓力、濕度、轉速、開關狀態(tài)信息,如閥門狀態(tài)和控制命令等;數(shù)據(jù)的歸一化處理:由于采集的數(shù)據(jù)類型不一樣,數(shù)據(jù)的表達范圍也有很大差異,不能直接用于BP神經(jīng)網(wǎng)絡的輸入向量,需要對數(shù)據(jù)進行歸一化處理,定義轉換方式,轉換成能被BP神經(jīng)網(wǎng)絡所接受的輸入數(shù)據(jù)。
圖2是本發(fā)明的神經(jīng)元結構圖:通過輸入m個工業(yè)控制系統(tǒng)數(shù)據(jù),如溫度、壓力、濕度、轉速等通信數(shù)據(jù),設定若干對應的連接權值;歸一化后的工業(yè)控制系統(tǒng)數(shù)據(jù)和權重的乘積之和與閥值比較;若該值大于設定的閥值,則生成神經(jīng)元的輸出值,通過傳遞函數(shù),產(chǎn)生輸出;若該值小于或等于閥值,則不產(chǎn)生神經(jīng)元的輸出值。
圖3是本發(fā)明的BP神經(jīng)網(wǎng)絡結構圖,其包括輸入層,隱含層和輸出層;在輸入層里面有歸一化處理后的m個溫度、壓力、濕度、轉速等,這些數(shù)據(jù)形成輸入向量,隱含層中的節(jié)點個數(shù)為node個,形成node*m個的權值,經(jīng)過傳遞函數(shù)形成隱含層的輸出,然后再經(jīng)過輸出層轉換成輸出,數(shù)據(jù)正向傳遞的時候,數(shù)據(jù)經(jīng)過輸入層到隱含層,然后到輸出層;
若輸出結果與期望差距較大,誤差信號反向傳播作為BP神經(jīng)網(wǎng)絡的輸入,通過迭代,促進誤差降低,逼近期望值;也存在隱含層節(jié)點數(shù)選擇不恰當,導致循環(huán)次數(shù)結束時,誤差還比較大,達不到理想期望值的情況。
圖4:是本發(fā)明的算法的流程圖,BP神經(jīng)網(wǎng)絡算法工業(yè)控制系統(tǒng)漏洞自動挖掘算法,這是一種有監(jiān)督式的學習算法,其主要思想是:輸入工業(yè)控制系統(tǒng)數(shù)據(jù)樣本,使用反向傳播方法對神經(jīng)網(wǎng)絡的權值和偏差的調(diào)整訓練,使輸出的向量接近目標值,其具體步驟如下:
步驟(1):工業(yè)控制系統(tǒng)原始數(shù)據(jù)采集,采集工業(yè)控制系統(tǒng)的傳感器數(shù)據(jù)包括溫度、壓力、濕度、轉速、開關狀態(tài)信息,如閥門狀態(tài)和控制命令等;
步驟(2):數(shù)據(jù)的歸一化處理,由于采集的數(shù)據(jù)類型不一樣,數(shù)據(jù)的表達范圍也有很大差異,不能直接用于BP神經(jīng)網(wǎng)絡的輸入向量,需要對數(shù)據(jù)進行歸一化處理,定義轉換方式,轉換成能被BP神經(jīng)網(wǎng)絡所接受的輸入數(shù)據(jù);
步驟(3):輸入工業(yè)控制系統(tǒng)訓練樣本:從數(shù)據(jù)中選取輸入向量和輸出向量作為訓練樣本,對設計的BP神經(jīng)網(wǎng)絡進行訓練,生成必要的權重和閥值;
步驟(4):計算隱含層單元輸出:根據(jù)隱含層到輸出層的連接權值、閾值進行計算,逐步確定隱含層的權值和閾值;
步驟(5):計算輸出單元輸出:根據(jù)BP神經(jīng)網(wǎng)絡的傳遞函數(shù)和閾值、全職計算輸出值;
步驟(6):結果比較:輸出值與目標值的之差是否小于設定誤差;
步驟(7):若步驟(6)判定條件為真,則輸出結果;
步驟(8):判定條件:輸出值與目標值之差不大于設定誤差并且循環(huán)次數(shù)大于設定值
步驟(9):若步驟(8)判定條件為真,則輸出可疑漏洞
步驟(10)若步驟(8)判定條件為假,調(diào)整神經(jīng)元的權值和閥值,轉向步驟(3)。