本發明實施例涉及計算機網絡安全技術領域,具體涉及一種工控網絡漏洞挖掘方法、裝置及系統。
背景技術:
工業控制網絡(以下簡稱“工控網絡”)安全漏洞是在其生命周期的各個階段(設計、實現、運維等過程)中引入的某類問題,比如設計階段引入的一個設計的非常容易被破解的加密算法,實現階段引入的一個代碼緩沖區溢出問題,運維階段的一個錯誤的安全配置,這些都有可能最終成為工控網絡安全漏洞,這些漏洞會對工控網絡的安全(可用性、完整性、機密性)產生嚴重影響。
近年來,工控系統強調開放性,在網絡中大量引入通用的IT產品,如Windows操作系統、關系數據庫等,并廣泛使用以太網和TCP/IP協議,在降低成本和簡化集成的同時將大量IT漏洞引入了工控網絡。同時,大部分的工控網絡應用層協議和現場總線協議,廣泛使用MODBUS/TCP、CAN等明碼傳輸協議,存在沒有嚴格的身份識別,報文很容易被偽造等無法避免的脆弱性。因此,由相對封閉的專用計算機和網絡體系發展而來的工控網絡系統,安全的薄弱的環節幾乎來自于各方各面,特別對于大型SCADA系統,設備分散安裝,部分采用公網和無線網絡,更容易受到利用漏洞的攻擊,嚴重的攻擊后果可以使系統網絡完全癱瘓,造成工業過程失控或裝置停機。
工控網絡具有非常鮮明的特點,首先是封閉性,SCADA、DCS等控制系統和PLC等控制設備在設計之初就沒有考慮完善的安全機制;其次是復雜性,工控網絡常見的總線協議和應用層協議有幾十種,不但每種通信協議的數據接口不完全相同,這些協議的規約實現也不相同;最后是不可改變性,工控網絡很難進行改造和補丁升級。綜合以上,傳統信息安全的測試技術和設備不適合工控網絡。具體來說,當前我國相關機構對工控網絡安全漏洞進行檢測的手段是比較局限的,具體體現在:
現有的端口服務掃描、漏洞特征掃描等技術對漏洞庫的依賴較大,但公開的工控網絡安全漏洞庫信息很少,導致無法實現深入、全面的檢測;
基于公開漏洞的掃描技術和機制無法有效發現未知漏洞,同時在時間上永遠滯后于攻擊者利用的未知漏洞;
缺乏針對性檢測工具,無法有效證明工控設備上的潛在漏洞是否存在。
技術實現要素:
本發明實施例的一個目的是解決現有的漏洞檢測技術依賴于公開的漏洞庫,導致檢測范圍較小,而且無法檢測到未知、潛在的漏洞的問題。
本發明實施例提出了一種工控網絡漏洞挖掘方法,包括:
獲取工控網絡中待測設備的IP地址;
根據所述IP地址獲取所述待測設備的屬性信息;
根據所述屬性信息獲取至少一個測試用例;
發送所述至少一個測試用例至所述待測設備,并獲取所述待測設備響應所述至少一個測試用例生成的反應數據;
根據所述至少一個測試用例和所述反應數據判斷所述待測設備是否有異常。
可選的,在運行所述至少一個測試用例之前,所述方法還包括:
根據所述待測設備的屬性信息獲取測試口的IP地址;
通過所述測試口的IP地址與所述待測設備建立通信數據鏈。
可選的,所述根據所述IP地址獲取所述待測設備的屬性信息的步驟具體包括:
對所述待測設備的IP地址進行設備指紋識別處理,獲取所述待測設備的屬性信息。
可選的,所述根據所述屬性信息獲取至少一個測試用例的步驟具體包括:
根據所述基礎信息從預建立測試用例庫中獲取至少一個測試用例,所述預建立測試用例庫中存儲有待測設備的屬性信息與測試用例的對應關系。
可選的,所述至少一個測試用例中攜帶有測試輸入數據和期望輸出數據;所述反應數據為所述待測設備以所述測試輸入數據為輸入輸出的;
相應地,所述根據所述至少一個測試用例和所述反應數據判斷所述待測設備是否有異常的步驟具體包括:
對比所述期望輸出數據和所述反應數據,若對比獲知所述反應數據中未攜帶有所述期望輸出數據,則確認所述待測設備發生異常。
可選的,若判斷獲知所述待測設備發生異常,則根據對比結果生成測試報告。
可選的,在獲取工控網絡中待測設備的IP地址的步驟之前,所述方法還包括:
獲取所述工控網絡的歷史異常數據;
對所述歷史異常數據進行分析,獲取所述工控網絡中各工控設備發生異常的概率;
根據各工控設備發生異常的概率和預設篩選規則對各待測設備進行篩選,獲取待測設備組;
相應地,所述獲取工控網絡中待測設備的IP地址的步驟具體包括:
獲取所述待測設備組中的待測設備的IP地址。
本發明還提出了一種工控網絡漏洞挖掘裝置,包括:
獲取模塊,用于獲取工控網絡中待測設備的IP地址;
第一處理模塊,用于根據所述IP地址獲取所述待測設備的屬性信息;
第二處理模塊,用于根據所述屬性信息獲取至少一個測試用例;
發送接收模塊,用于發送所述至少一個測試用例至所述待測設備,并獲取所述待測設備發送的反應數據;
判斷模塊,用于根據所述至少一個測試用例和所述反應數據判斷所述待測設備是否有異常。
可選的,所述至少一個測試用例中攜帶有測試輸入數據和期望輸出數據;所述反應數據為所述待測設備以所述測試輸入數據為輸入輸出的;
相應地,所述判斷模塊,具體用于對比所述期望輸出數據和所述反應數據,若對比獲知所述反應數據中未攜帶有所述期望輸出數據,則確認所述待測設備發生異常。
本發明還提出了一種工控網絡漏洞挖掘系統,包括:數據輸入模塊、監視器、以及上述的工控網絡漏洞挖掘裝置;
所述數據輸入模塊,用于基于工控網絡的工控協議生成多個測試用例;
所述工控網絡漏洞挖掘裝置,用于根據工控網絡中待測設備的屬性信息選擇測試用例,并將選擇的測試用例輸入至待測設備;
所述監視器,用于監視所述待測設備的響應,生成反應數據,并將所述反應數據輸入至所述工控網絡漏洞挖掘裝置,由工控網絡漏洞挖掘裝置根據所述反應數據判斷所述待測設備是否有異常。
由上述技術方案可知,本發明實施例提出的一種工控網絡漏洞挖掘方法、裝置及系統基于待測設備的屬性信息向待測設備發送測試用例,以獲取待測設備反饋的反應數據,并根據反應數據檢測待測設備是否發生異常,實現對工控網絡中漏洞的深入檢測、以及未知漏洞的挖掘。。
附圖說明
通過參考附圖會更加清楚的理解本發明的特征和優點,附圖是示意性的而不應理解為對本發明進行任何限制,在附圖中:
圖1示出了本發明一實施例提供的一種工控網絡漏洞挖掘方法的流程示意圖;
圖2示出了本發明另一實施例提供的一種工控網絡漏洞挖掘方法的流程示意圖;
圖3示出了本發明一實施例提供的一種工控網絡漏洞挖掘裝置的結構示意圖;
圖4示出了本發明一實施例提供的一種工控網絡漏洞挖掘系統的結構示意圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明的一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
圖1示出了本發明一實施例提供的一種工控網絡漏洞挖掘方法的流程示意圖,參見圖1,所述方法可由漏洞挖掘檢測平臺或者處理器來實現,包括:
110、獲取工控網絡中待測設備的IP地址;
需要說明的是,在構建工控網絡時,工控網絡中的各設備均設置由唯一與之對應的IP地址,為了后續查找方便,可通過存庫和構建數據表格等方式將設備以及設備對應的IP地址進行保存。
進而,處理器可基于待測設備的名稱從存儲器或者數據表格中獲取到該設備的IP地址。
120、根據所述IP地址獲取所述待測設備的屬性信息,其中,屬性信息包括:待測設備的廠商、型號等信息;
130、根據所述屬性信息獲取至少一個測試用例;
需要說明的是,對于不同類型的待測設備,預先設置的測試用例也是不同的,由此,需要基于待測設備的屬性信息從預建立測試用例庫中獲取至少一個測試用例,其中,所述預建立測試用例庫中存儲有待測設備的屬性信息與測試用例的對應關系。
其中,測試用例為某個特殊目標而編制的一組測試輸入、執行條件以及預期結果,以便測試某個程序路徑或核實是否滿足某個特定需求的程序。
140、發送所述至少一個測試用例至所述待測設備,并獲取所述待測設備響應所述至少一個測試用例生成的反應數據;
150、根據所述至少一個測試用例和所述反應數據判斷所述待測設備是否有異常。
需要說明的是,對于不同待測設備,需要對其運行的測試用例不同,而對于不同的測試用例,其攜帶的測試輸入、執行條件以及預期結果均不同,由此,對待測設備的運行的測試用例中攜帶有測試輸入數據(測試輸入)和期望輸出數據(預期結果);
待測設備在接收待測試輸入數據后,將反饋相應的反應數據,對比所述期望輸出數據和所述反應數據,若對比獲知所述反應數據中未攜帶有所述期望輸出數據,則確認所述待測設備發生異常。
可見,本實施例基于待測設備的屬性信息向待測設備發送測試用例,以獲取待測設備反饋的反應數據,并根據反應數據檢測待測設備是否發生異常,實現對工控網絡中漏洞的深入檢測、以及未知漏洞的挖掘。
為了提高監測的效率和精確度,在上述步驟110之前所述方法還包括:
獲取所述工控網絡的歷史異常數據;
對所述歷史異常數據進行分析,獲取所述工控網絡中各工控設備發生異常的概率;
根據各工控設備發生異常的概率和預設篩選規則對各待測設備進行篩選,獲取待測設備組;
相應地,所述步驟110具體包括:獲取所述待測設備組中的待測設備的IP地址。
需要說明的是,本實施例基于歷史異常數據,結合大數據分析和人工智能算法,將監測的范圍集中在較為容易發生異常、故障的范圍內,并對該范圍內的待測設備進行檢測,實現提高監測效率和精確度的目的。
圖2示出了本發明一實施例提供的一種工控網絡漏洞挖掘方法的原理圖,參見圖2,該方法包括:
S21、根據待測設備的IP地址設置漏洞挖掘檢測平臺的測試口的IP地址,從而通過所述測試口的IP地址與所述待測設備建立通信數據鏈;
對所述待測設備的IP地址進行設備指紋識別處理,獲取所述待測設備的屬性信息,屬性信息包括:設備的廠商、型號等信息,從而根據待測設備的屬性信息推薦相關的測試用例。
S22、配置完成后,選擇測試用例庫中相應的測試用例,可設置測試用例的端口、變化次數等參數,并將設置完成后用例保存成測試腳本,方便調用。
S22、運行選中的測試腳本中的測試用例,進行工控未知漏洞智能挖掘,同時監視器實時監視被測設備的反應數據(如ARP響應、ICMP響應、TCP端口等)。查看挖掘過程中被測設備是否產生異常。
需要說明的是,為了進一步地提高監測效果,步驟S22綜合運用各種測試方法和腳本,向被測對象提供非預期的隨機或用戶自定義輸入測試用例,并監控待測設備輸出的反應數據中的異常來發現其潛在缺陷和故障。
S24、測試完成后,自動生成測試結果和測試報告,報告可下載導出。
對于方法實施方式,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明實施方式并不受所描述的動作順序的限制,因為依據本發明實施方式,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施方式均屬于優選實施方式,所涉及的動作并不一定是本發明實施方式所必須的。
圖3示出了本發明一實施例提供的一種工控網絡漏洞挖掘裝置的結構示意圖,參見圖3,該工控網絡漏洞挖掘裝置,包括:獲取模塊310、第一處理模塊320、第二處理模塊330、發送接收模塊350、以及判斷模塊360,其中;
獲取模塊310,用于獲取工控網絡中待測設備的IP地址;
第一處理模塊320,用于根據所述IP地址獲取所述待測設備的屬性信息;
第二處理模塊330,用于根據所述屬性信息獲取至少一個測試用例;
發送接收模塊340,用于發送所述至少一個測試用例至所述待測設備,并獲取所述待測設備發送的反應數據;
判斷模塊350,用于根據所述至少一個測試用例和所述反應數據判斷所述待測設備是否有異常。
需要說明的是,在被觸發啟動檢測是,獲取模塊310獲取待測設備的IP地址,并發送至第一處理模塊320;第一處理模塊320根據所述IP地址獲取所述待測設備的屬性信息,并將獲取到的屬性信息發送至第二處理模塊330,由第二處理模塊330根據所述屬性信息獲取至少一個測試用例,并通過發送接收模塊340將所述至少一個測試用例發送至所述待測設備、獲取所述待測設備發送的反應數據,發送接收模塊340將把獲取的反應數據發送至判斷模塊350,由判斷模塊350根據反應數據判斷所述待測設備是否有異常。
其中,判斷模塊350的判斷原理如下:
所述至少一個測試用例中攜帶有測試輸入數據和期望輸出數據;所述反應數據為所述待測設備以所述測試輸入數據為輸入輸出的;
由此,判斷模塊350對比所述期望輸出數據和所述反應數據,若對比獲知所述反應數據中未攜帶有所述期望輸出數據,則確認所述待測設備發生異常。
可見,本實施例基于待測設備的屬性信息向待測設備發送測試用例,以獲取待測設備反饋的反應數據,并根據反應數據檢測待測設備是否發生異常,實現對工控網絡中漏洞的深入檢測、以及未知漏洞的挖掘。
對于裝置實施方式而言,由于其與方法實施方式基本相似,所以描述的比較簡單,相關之處參見方法實施方式的部分說明即可。
在一可行實施例中,所述裝置還包括:篩選模塊;
所述篩選模塊,用于獲取所述工控網絡的歷史異常數據;對所述歷史異常數據進行分析,獲取所述工控網絡中各工控設備發生異常的概率;根據各工控設備發生異常的概率和預設篩選規則對各待測設備進行篩選,獲取待測設備組;
相應地,所述獲取模塊,具體用于獲取所述待測設備組中的待測設備的IP地址。
可見,本實施例基于歷史異常數據,結合大數據分析和人工智能算法,將監測的范圍集中在較為容易發生異常、故障的范圍內,并對該范圍內的待測設備進行檢測,實現提高監測效率和精確度的目的。
對于裝置實施方式而言,由于其與方法實施方式基本相似,所以描述的比較簡單,相關之處參見方法實施方式的部分說明即可。
應當注意的是,在本發明的裝置的各個部件中,根據其要實現的功能而對其中的部件進行了邏輯劃分,但是,本發明不受限于此,可以根據需要對各個部件進行重新劃分或者組合。
圖4示出了本發明一實施例提供的一種工控網絡漏洞挖掘系統的結構原理圖,下面參見圖4對本發明的原理進行詳細說明,包括:數據輸入模塊41、漏洞挖掘引擎42(工控網絡漏洞挖掘裝置)、被測工控設備43、監視器44、數據分析引擎45、以及報告生成引擎46,其中;
數據輸入模塊41,用于基于工控協議的語法、語義模糊測試中的測試用例模塊中的每一種類協議測試用例的開發,都需要對協議分檔進行研究,研究的內容不僅包括協議的數據包格式,還有協議的通信模式。通過對文檔或者私有協議數據包的大量的研究,會給出適用于漏洞挖掘檢測平臺的測試用例,為平臺提供數據。
漏洞挖掘引擎42,用于根據工控網絡中待測設備的屬性信息選擇測試用例,并將選擇的測試用例輸入至待測設備;具體地,基于工控協議的語法模糊測試:語法模糊測試基于工控協議實現(協議規范定義)的報文語法,測試數據生成模塊在給定變量初始化文件的前提下,生成遞歸定義的測試用例語法描述;測試報文變形模塊根據交互語義生成有序的一系列測試用例,有意將畸形的語法注入到測試報文,或者對合法的報文進行變異,并將測試用例輸出至被測工控設備43,從而試圖觸發協議實現中有缺陷的代碼,導致協議規范中定義的正常操作流程遭到干擾或破壞。
監視器44,用于監視所述待測設備的響應,生成反應數據,并將所述反應數據輸入至所述工控網絡漏洞挖掘裝置;具體地,監視器44的個數以及種類可視監測需求而定,本方案中采用能實現如下監視功能的監視器:設備存活,端口存活,服務響應等;
相應地,漏洞挖掘引擎42還用于通過解析模塊解析出監視器44傳輸的反應數據,并傳輸至數據分析引擎45;
由數據分析引擎45中的測試數據分析模塊對待測設備的反應數據進行分析,并將分析結果傳輸至報告生成引擎46;
由報告生成引擎46的定制報告模塊根據用戶選擇輸出對應的數據。
本系統基于工控協議的智能模糊測試:創新的智能模糊測試引擎基于各類工控協議的規約來構建模型,在深入理解各個工控協議規約特征的基礎上生成輸入數據和測試用例去遍歷協議實現的各個方面,包括在數據內容,結構,消息,序列中引入各種異常。同時,引入了大數據分析和人工智能算法,將初始的變形范圍主要集中在該廠商設備最容易發生故障的范圍內進行密集測試,測試中動態追蹤被測設備的異常反應,智能選擇更有效的輸入屬性構造新樣本進行測試,在迭代測試中不斷更新模型參數和優化樣本構造,使得同一類設備將來進行測試時能夠自動選擇更有效的樣本優先進行測試,這樣可以大大減少測試數據生成的盲目性和測試用例的無效性,提升關鍵代碼的覆蓋率和設備的異常檢測能力。
本發明的各個部件實施方式可以以硬件實現,或者以在一個或者多個處理器上運行的軟件模塊實現,或者以它們的組合實現。本裝置中,PC通過實現因特網對設備或者裝置遠程控制,精準的控制設備或者裝置每個操作的步驟。本發明還可以實現為用于執行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣實現本發明的程序可以存儲在計算機可讀介質上,并且程序產生的文件或文檔具有可統計性,產生數據報告和cpk報告等,能對功放進行批量測試并統計。應該注意的是上述實施方式對本發明進行說明而不是對本發明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施方式。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
雖然結合附圖描述了本發明的實施方式,但是本領域技術人員可以在不脫離本發明的精神和范圍的情況下做出各種修改和變型,這樣的修改和變型均落入由所附權利要求所限定的范圍之內。