本發(fā)明涉及工業(yè)控制網(wǎng)絡安全漏洞檢測領域,尤其涉及一種對工業(yè)控制網(wǎng)絡的安全漏洞進行檢測用的工控網(wǎng)絡安全檢測系統(tǒng)及方法。
背景技術(shù):
近年來,工業(yè)控制系統(tǒng)強調(diào)開放性,在工控網(wǎng)絡中大量引入通用的IT產(chǎn)品,如Windows操作系統(tǒng)、關系數(shù)據(jù)庫等,并廣泛使用以太網(wǎng)和TCP/IP協(xié)議,從而導致大量的IT漏洞被引入到工控網(wǎng)絡中。另外,大部分的工控網(wǎng)絡的應用層協(xié)議和現(xiàn)場總線協(xié)議使用MODBUS/TCP、CAN等明碼傳輸協(xié)議,存在沒有嚴格的身份識別、報文很容易被偽造等無法避免的脆弱性。因此,工控網(wǎng)絡很容易受到攻擊者利用漏洞進行的攻擊,嚴重的攻擊后果甚至可以使工控網(wǎng)絡完全癱瘓,導致工業(yè)過程失控或裝置停機。
目前,對工控網(wǎng)絡安全漏洞進行檢測時,端口服務掃描、漏洞特征掃描等技術(shù)對工控網(wǎng)絡安全漏洞庫的依賴較大,而公開的工控網(wǎng)絡安全漏洞庫中的安全漏洞信息很少,導致工控網(wǎng)絡安全漏洞深入全面的檢測無法實現(xiàn);基于公開漏洞的掃描技術(shù)和機制,無法有效發(fā)現(xiàn)未知安全漏洞,且在時間上永遠滯后于攻擊者利用的未知安全漏洞。由此可見,目前在對工控網(wǎng)絡安全漏洞進行檢測時,既無法對工控網(wǎng)絡安全漏洞進行深入檢測,又無法有效發(fā)現(xiàn)未知安全漏洞,更無法獲知工控網(wǎng)絡安全漏洞產(chǎn)生的根本原因,進而導致工控網(wǎng)絡安全防護困難。
技術(shù)實現(xiàn)要素:
為實現(xiàn)對工控網(wǎng)絡安全漏洞的深入全面檢測,有效發(fā)現(xiàn)未知安全漏洞,找出工控網(wǎng)絡安全漏洞產(chǎn)生的根源,提高工控網(wǎng)絡的安全防護性能,本發(fā)明提出一種工控網(wǎng)絡安全檢測系統(tǒng),該工控網(wǎng)絡安全檢測系統(tǒng)包括測試用例模塊、模糊測試引擎、監(jiān)視器、根源分析模塊和報告生成引擎;
所述測試用例模塊與所述模糊測試引擎連接,并根據(jù)檢測目標的工控協(xié)議向所述模糊測試引擎提供安全檢測所需的測試用例;
所述模糊測試引擎根據(jù)所述測試用例模塊提供的測試用例生成測試數(shù)據(jù)包并發(fā)送到所述檢測目標中對所述檢測目標進行安全檢測,當所述監(jiān)視器監(jiān)測到所述檢測目標的狀態(tài)正常時,測試結(jié)果為“正?!?;當所述檢測目標的狀態(tài)異常時,所述模糊測試引擎抓取可能使所述檢測目標的狀態(tài)異常的測試數(shù)據(jù)包并保存為驗證數(shù)據(jù)包,并將所述驗證數(shù)據(jù)包發(fā)送給所述檢測目標進行攻擊重放,當所述檢測目標的狀態(tài)正常時,測試結(jié)果為“其他”;當所述檢測目標的狀態(tài)異常時,測試結(jié)果為“疑似漏洞”;
所述監(jiān)視器與所述模糊測試引擎連接,用于在所述模糊測試引擎將所述測試數(shù)據(jù)包或所述驗證數(shù)據(jù)包發(fā)送給所述檢測目標后對所述檢測目標的狀態(tài)進行實時監(jiān)測,并將監(jiān)測到的監(jiān)視數(shù)據(jù)實時傳輸?shù)剿瞿:郎y試引擎中;
所述根源分析模塊與所述模糊測試引擎和所述報告生成引擎連接,當所述監(jiān)視器監(jiān)測到所述檢測目標的狀態(tài)異常時,所述根源分析模塊驅(qū)動所述模糊測試引擎對所述檢測目標進行攻擊重放,驗證漏洞,當所述檢測目標的狀態(tài)正常時,漏洞驗證失?。划斔鰴z測目標的狀態(tài)異常時,漏洞驗證成功;在漏洞驗證成功后,所述根源分析模塊將所述驗證數(shù)據(jù)包保存為異常數(shù)據(jù)包并對所述異常數(shù)據(jù)包進行異常分析,找出所述異常數(shù)據(jù)包中的異常部分,得出安全漏洞產(chǎn)生的根源;
所述報告生成引擎與所述根源分析模塊連接并根據(jù)所述測試結(jié)果生成測試報告。
使用該工控網(wǎng)絡安全檢測系統(tǒng)對檢測目標的安全漏洞進行檢測時,根據(jù)檢測目標的工控協(xié)議生成檢測所需的測試用例,可提高測試用例的適用性;利用監(jiān)視器對檢測目標的狀態(tài)進行監(jiān)測,可及時抓取使用檢測目標的狀態(tài)異常的測試數(shù)據(jù)包并保存為驗證數(shù)據(jù)包,且在利用驗證數(shù)據(jù)包對檢測目標進行攻擊重放時可準確判斷出檢測目標是否存在安全漏洞;通過根源分析模塊對攻擊重放結(jié)果進行分析驗證漏洞,從而找出工控網(wǎng)絡中存在的安全漏洞,尤其是工控網(wǎng)絡中的未知安全漏洞;根源分析模塊在漏洞驗證成功后將驗證數(shù)據(jù)包保存為異常數(shù)據(jù)包并對該異常數(shù)據(jù)包進行異常分析,從而找出異常數(shù)據(jù)包中的異常部分,進而得出安全漏洞產(chǎn)生的根本原因。由此可見,使用該工控網(wǎng)絡安全檢測系統(tǒng)對檢測目標的安全漏洞進行檢測時,檢測深入全面,且能夠有效發(fā)現(xiàn)工控網(wǎng)絡中的未知安全漏洞,得出安全漏洞產(chǎn)生的根本原因。這樣,工控網(wǎng)絡安全防護人員在對工控網(wǎng)絡進行安全防護時,可根據(jù)工控網(wǎng)絡中的安全漏洞尤其是未知安全漏洞以及安全漏洞產(chǎn)生的根源采用有針對性的安全防護措施進行安全防護,進而提高工控網(wǎng)絡的安全防護性能。
優(yōu)選地,所述測試用例模塊包括數(shù)據(jù)模型子模塊、狀態(tài)模型子模塊和測試參數(shù)子模塊,所述數(shù)據(jù)模型子模塊用于構(gòu)造各字段符合所述檢測目標的工控協(xié)議的數(shù)據(jù)模型;所述狀態(tài)模型子模塊對所述工控協(xié)議的交互狀態(tài)進行控制;所述測試參數(shù)子模塊用于指定測試參數(shù)。進一步地,所述測試參數(shù)包括用于補充所述數(shù)據(jù)模型中空缺字段的測試參數(shù)、用于指定通信參數(shù)的測試參數(shù)以及用于指定數(shù)據(jù)變形方式的測試參數(shù)。這樣,測試用例模塊提供的測試用例的適用性更廣,采用該測試用例對于檢測目標進行安全檢測時,檢測的覆蓋率更高、深入度更好。
優(yōu)選地,所述模糊測試引擎包括數(shù)據(jù)生成模塊、數(shù)據(jù)變形模塊和攻擊重放模塊,所述數(shù)據(jù)生成模塊根據(jù)所述測試用例模塊提供的測試用例生成正常測試數(shù)據(jù);所述數(shù)據(jù)變形模塊對所述正常測試數(shù)據(jù)的特定字段進行變形,并將變形后重組生成的測試數(shù)據(jù)發(fā)送給所述檢測目標;所述攻擊重放模塊在所述檢測目標的狀態(tài)異常時抓取可能使所述檢測目標的狀態(tài)異常的測試數(shù)據(jù)包并保存為驗證數(shù)據(jù)包,并將所述驗證數(shù)據(jù)包重新發(fā)送給所述檢測目標進行攻擊重放。這樣,模糊測試引擎在生成的測試數(shù)據(jù)時,先由數(shù)據(jù)生成模塊根據(jù)測試用例生成正常的測試數(shù)據(jù),再通過數(shù)據(jù)變形模塊對正常測試數(shù)據(jù)的特定字段變形重組形成測試數(shù)據(jù),測試數(shù)據(jù)的針對性更強,采用這種測試數(shù)據(jù)對檢測目標進行測試時,測試精度更高。
優(yōu)選地,所述監(jiān)視器的監(jiān)測方式包括針對所述檢測目標的存活狀態(tài)的監(jiān)測,針對所述檢測目標的服務端口的狀態(tài)的監(jiān)測,針對所述檢測目標的工控協(xié)議的應用層的監(jiān)測,以及針對所述檢測目標的實時性和數(shù)字模擬輸入輸出信號的監(jiān)測。這樣,監(jiān)視器在對檢測目標進行監(jiān)測時,監(jiān)測數(shù)據(jù)較為全面,監(jiān)測到的檢測目標的狀態(tài)更準確。
優(yōu)選地,所述根源分析模塊包括漏洞驗證子模塊和異常分析子模塊;所述漏洞驗證子模塊驅(qū)動所述模糊測試引擎將抓取到的所述驗證數(shù)據(jù)包重新發(fā)送給所述檢測目標進行攻擊重放,驗證漏洞,并在漏洞驗證成功后將所述驗證數(shù)據(jù)包保存為異常數(shù)據(jù)包;所述異常分析子模塊在漏洞驗證成功后對所述異常數(shù)據(jù)包進行協(xié)議分析,并標注出所述異常數(shù)據(jù)包中不符合所述檢測目標的工控協(xié)議的部分。進一步地,所述異常數(shù)據(jù)包中不符合所述檢測目標的工控協(xié)議的部分包括:單個數(shù)據(jù)包報文格式異常,單個數(shù)據(jù)包狀態(tài)轉(zhuǎn)移異常,組合數(shù)據(jù)包的亂序行為及組合數(shù)據(jù)包的類型異常。這樣,根源分析模塊通過漏洞驗證子模塊在驗證數(shù)據(jù)包對檢測目標進行攻擊重放時驗證漏洞,從而根據(jù)驗證結(jié)果確定檢測目標狀態(tài)異常的原因,并在確定檢測目標是因為存在安全漏洞而出現(xiàn)狀態(tài)異常時,漏洞驗證子模塊將導致檢測目標狀態(tài)異常的驗證數(shù)據(jù)保存為異常數(shù)據(jù)包,并利用異常分析子模塊對異常數(shù)據(jù)包進行異常分析,從而找出異常數(shù)據(jù)包中存在的異常部分,進而得出導致檢測目標出現(xiàn)安全漏洞的根本原因。
優(yōu)選地,所述工控網(wǎng)絡安全檢測系統(tǒng)還包括中間繼電模塊,該中間繼電模塊與所述模糊測試引擎連接,并根據(jù)所述模糊測試引擎發(fā)來的控制信號控制所述檢測目標的供電電源與所述檢測目標之間的電路的通斷。這樣,在對檢測目標進行攻擊重放時,可通過模糊測試引擎驅(qū)動中間繼電模塊對檢測目標進行重啟,使檢測目標自動復位并恢復至正??蓽y試狀態(tài),從而利用剩余的測試用例繼續(xù)對檢測目標6進行安全檢測。
本發(fā)明還提出一種工控網(wǎng)絡安全檢測方法,該工控網(wǎng)絡安全檢測方法利用上述任意一種工控網(wǎng)絡安全檢測系統(tǒng)對檢測目標進行安全檢測,且安全檢測步驟如下:
S1、利用所述測試用例模塊根據(jù)所述檢測目標的工控協(xié)議向所述模糊測試引擎提供安全檢測所需的測試用例;
S2、所述模糊測試引擎根據(jù)所述測試用例模塊提供的測試用例生成測試數(shù)據(jù)包,并將所述測試數(shù)據(jù)包發(fā)送到所述檢測目標中對所述檢測目標進行安全檢測,同時利用監(jiān)視器對所述檢測目標的狀態(tài)進行實時監(jiān)測,當所述檢測目標的狀態(tài)正常時,得出所述檢測目標的測試結(jié)果為“正?!?;當所述檢測目標的狀態(tài)異常時,所述根源分析模塊驅(qū)動所述模糊測試引擎抓取可能使所述檢測目標的狀態(tài)異常的測試數(shù)據(jù)包并保存為驗證數(shù)據(jù)包;
S3、所述模糊測試引擎將所述驗證數(shù)據(jù)包重新發(fā)送到所述檢測目標中進行攻擊重放,驗證漏洞,同時使用所述監(jiān)視器對所述檢測目標的狀態(tài)進行監(jiān)測;當所述檢測目標正常時,漏洞驗證失敗,得出所述檢測目標的測試結(jié)果為“其他”;當所述檢測目標的狀態(tài)異常時,漏洞驗證成功,得出所述檢測目標的測試結(jié)果為“疑似漏洞”;
S4、在漏洞驗證成功后,所述根源分析模塊將所述驗證數(shù)據(jù)包保存為異常數(shù)據(jù)包,并對所述異常數(shù)據(jù)包進行異常分析,找出所述異常數(shù)據(jù)包中的異常部分,得出安全漏洞產(chǎn)生的根源;
S5、在安全檢測完成后,利用所述報告生成引擎根據(jù)所述測試結(jié)果生成測試報告。
優(yōu)選地,在所述步驟S5中,所述報告生成引擎在生成測試報告時,對所述測試結(jié)果中的“疑似漏洞”進行漏洞標識,并關聯(lián)該“疑似漏洞”的所有相關信息,并對所述“疑似漏洞”的漏洞名稱、危險等級和描述進行編輯并保存至所述工控網(wǎng)絡安全檢測系統(tǒng)的本機漏洞庫中。
附圖說明
圖1為本發(fā)明工控網(wǎng)絡安全檢測系統(tǒng)與檢測目標連接時的結(jié)構(gòu)框圖;
圖2為采用本發(fā)明工控網(wǎng)絡安全檢測系統(tǒng)中的根源分析模塊異常數(shù)據(jù)包進行協(xié)議分析得到的分析結(jié)果展示圖;
圖3為本發(fā)明工控網(wǎng)絡安全檢測方法的流程圖。
具體實施方式
下面,結(jié)合圖1對本發(fā)明工控網(wǎng)絡安全檢測系統(tǒng)以及利用該工控網(wǎng)絡安全檢測系統(tǒng)對檢測目標(待檢測的設備或系統(tǒng))進行檢測的方法進行詳細說明。
如圖1所示,本發(fā)明工控網(wǎng)絡安全檢測系統(tǒng)包括測試用例模塊1、模糊測試引擎2、監(jiān)視器3、根源分析模塊4、報告生成引擎5和中間繼電模塊(圖中未示出)。
測試用例模塊1與模糊測試引擎2連接,并根據(jù)檢測目標6的工控協(xié)議向模糊測試引擎2提供對檢測目標6進行安全檢測用的測試用例。優(yōu)選地,測試用例模塊1包括數(shù)據(jù)模型子模塊11、狀態(tài)模型子模塊12和測試參數(shù)子模塊13。其中,數(shù)據(jù)模型子模塊11用于構(gòu)造各字段符合檢測目標6的工控協(xié)議的數(shù)據(jù)模型。狀態(tài)模型子模塊12對工控協(xié)議的交互狀態(tài)進行控制。由于工控協(xié)議側(cè)重于控制,客戶端和服務器之間的交互狀態(tài)較多,通常需要多個有序的報文交互才能完成其功能。例如,多數(shù)協(xié)議都存在初始化建立連接的交互過程,因為只有在建立初始化連接后才能進行后續(xù)的交互過程,如果測試用例模塊不考慮狀態(tài)的轉(zhuǎn)換,那么在進行測試時被測試的僅僅是客戶端和服務器之間的第一個交互狀態(tài),而測試很難進入到后續(xù)交互狀態(tài)中,即很難對后續(xù)的交互狀態(tài)進行測試,導致測試的覆蓋率較低、測試深入度較差。本發(fā)明工控網(wǎng)絡安全檢測系統(tǒng)中的狀態(tài)模型子模塊12通過對交互狀態(tài)進行控制,能夠?qū)崿F(xiàn)較高的測試覆蓋率和較好地測試深度。測試參數(shù)子模塊13用于指定測試參數(shù),該測試參數(shù)包括用于補充數(shù)據(jù)模型中空缺字段的測試參數(shù)、用于指定通信參數(shù)的測試參數(shù)以及用于指定數(shù)據(jù)變形方式的測試參數(shù)。這樣,測試參數(shù)子模塊13通過對測試參數(shù)的指定,使得測試用例模提供的測試用例的適用性更廣。
模糊測試引擎2根據(jù)測試用例模塊1提供的測試用例生成安全檢測所需的測試數(shù)據(jù)包并將該測試數(shù)據(jù)包發(fā)送到檢測目標6中對檢測目標6進行安全檢測,在檢測目標6的狀態(tài)異常時,抓取可能使檢測目標6的狀態(tài)異常的單個或組合的測試數(shù)據(jù)包并保存為驗證數(shù)據(jù)包,并將該驗證數(shù)據(jù)包重新發(fā)送給檢測目標6進行攻擊重放,以便于準確判斷出檢測目標6是否存在安全漏洞。優(yōu)選地,模糊測試引擎2包括數(shù)據(jù)生成模塊21、數(shù)據(jù)變形模塊22和攻擊重放模塊23。其中,數(shù)據(jù)生成模塊21根據(jù)測試用例模塊1提供的測試用例生成正常測試數(shù)據(jù)。數(shù)據(jù)變形模塊22對數(shù)據(jù)生成模塊21生成的正常測試數(shù)據(jù)的特定字段進行變形,并將變形后重組生成的測試數(shù)據(jù)發(fā)送給檢測目標6對檢測目標6進行安全檢測。這樣生成的測試數(shù)據(jù)通過數(shù)據(jù)變形模塊對正常測試數(shù)據(jù)的特定字段變形重組形成,相對于正常測試數(shù)據(jù)針對性更強,測試精度更高。在利用測試數(shù)據(jù)包對檢測目標6進行安全檢測時,當檢測目標6的狀態(tài)正常時,安全檢測的測試結(jié)果為“正?!保划敊z測目標6的狀態(tài)異常時,攻擊重放模塊23抓取可能使檢測目標6的狀態(tài)異常的單個或組合的測試數(shù)據(jù)包,將該測試數(shù)據(jù)包保存為驗證數(shù)據(jù)包,并將該驗證數(shù)據(jù)包重新發(fā)送給檢測目標6進行攻擊重放。這樣,可對攻擊重放產(chǎn)生的結(jié)果進行分析驗證漏洞,并根據(jù)漏洞驗證結(jié)果確認檢測目標6是否存在安全漏洞。在模糊測試引擎2將驗證數(shù)據(jù)包發(fā)送到檢測目標6中進行攻擊重放時,當檢測目標6的狀態(tài)正常時,表明檢測目標6在安全檢測過程中出現(xiàn)的異常狀態(tài)可能由非安全漏洞的其他因素引起,例如網(wǎng)絡異常,設備接口松動等,故安全檢測的測試結(jié)果為“其他”;當檢測目標6的狀態(tài)異常時,表明檢測目標6在安全檢測過程中出現(xiàn)的異常狀態(tài)可能是由于存在安全漏洞引起的,故安全檢測的測試結(jié)果為“疑似漏洞”。
監(jiān)視器3與模糊測試引擎2連接,在模糊測試引擎2將測試數(shù)據(jù)包或驗證數(shù)據(jù)包發(fā)送給檢測目標6后,監(jiān)視器3對檢測目標6的狀態(tài)進行實時監(jiān)測并將監(jiān)測到的監(jiān)視數(shù)據(jù)實時傳輸?shù)侥:郎y試引擎2中。這樣,無論是在進行正常的安全檢測時,還是在進行漏洞驗證時,模糊測試引擎2均可及時準確地獲取檢測目標6的狀態(tài)信息,以便于模糊測試引擎2中的攻擊重放子模塊23能夠在檢測目標6的狀態(tài)異常時及時準確地抓取可能使檢測目標6狀態(tài)異常的測試數(shù)據(jù)包,進而可避免因抓取時機錯誤而導致抓取到錯誤的測試數(shù)據(jù)包,從而避免使用抓取到的錯誤的測試數(shù)據(jù)包對檢測目標6進行攻擊重放,縮短安全檢測耗時,提高安全檢測效率。優(yōu)選地,監(jiān)視器3的監(jiān)測方式包括針對檢測目標6的存活狀態(tài)(上電狀態(tài))的監(jiān)測(ARP,ICMP),針對檢測目標6的服務端口的狀態(tài)的監(jiān)測(TCP,UDP),針對檢測目標6的工控協(xié)議的應用層的監(jiān)測(返回值,協(xié)議狀態(tài)機),以及針對檢測目標6的實時性和數(shù)字模擬輸入輸出信號的監(jiān)測。這樣,監(jiān)視器3在對檢測目標6進行檢測時,監(jiān)測到的監(jiān)測數(shù)據(jù)較為全面,從而可提高檢測目標6的狀態(tài)的監(jiān)測準確性。
根源分析模塊4與模糊測試引擎2和報告生成引擎5連接,并在監(jiān)視器3實時監(jiān)測到檢測目標6的狀態(tài)異常時驅(qū)動模糊測試引擎2中的攻擊重放子模塊23對檢測目標6中進行攻擊重放,并對攻擊重放結(jié)果進行分析驗證漏洞,并在漏洞驗證成功后將驗證數(shù)據(jù)包保存為異常數(shù)據(jù)包,并對異常數(shù)據(jù)包進行異常分析,從而得出安全漏洞產(chǎn)生的根源。優(yōu)選地,根源分析模塊4包括漏洞驗證子模塊41和異常分析子模塊42。其中,漏洞驗證子模塊41驅(qū)動模糊測試引擎2中的攻擊重放模塊23將抓取到的驗證數(shù)據(jù)包重新發(fā)送到檢測目標6中進行攻擊重放,并啟動監(jiān)視器3對檢測目標6的狀態(tài)進行實時監(jiān)測,以驗證漏洞。在攻擊重放的過程中,當檢測目標6的狀態(tài)正常時,漏洞驗證失?。划敊z測目標6的狀態(tài)異常時,漏洞驗證成功。在漏洞驗證成功后,根源分析模塊4將驗證數(shù)據(jù)包保存為異常數(shù)據(jù)包,同時對“疑似漏洞”的相關信息比如監(jiān)測器3的異常狀態(tài)和工控協(xié)議名稱進行保存。異常分析子模塊42在漏洞驗證成功后對異常數(shù)據(jù)包進行協(xié)議解析,并標注出異常數(shù)據(jù)包中不符合檢測目標6的工控協(xié)議的部分。其中,異常數(shù)據(jù)包中不符合檢測目標6的工控協(xié)議的部分包括但不限于:單個數(shù)據(jù)包報文格式異常,單個數(shù)據(jù)包狀態(tài)轉(zhuǎn)移異常,組合數(shù)據(jù)包的亂序行為及組合數(shù)據(jù)包的類型異常。以單個數(shù)據(jù)包報文格式異常為例,異常的類型通常包括:單個數(shù)據(jù)包中某個字段的溢出;單個數(shù)據(jù)包中某個字段非法;單個數(shù)據(jù)包整體長度過長等。
以Modbus/TCP協(xié)議異常數(shù)據(jù)包為例,按照開放系統(tǒng)互聯(lián)(Open System Interconnection,簡稱OSI)模型對Modbus/TCP協(xié)議異常數(shù)據(jù)包進行解析并按照鏈路層、網(wǎng)絡層、傳輸層和應用層的結(jié)構(gòu)展現(xiàn)出來,如圖2所示。其中,由Modbus/TCP協(xié)議規(guī)約可知,圖2中Length字段的意義是該字段之后其余字段的字節(jié)數(shù);由數(shù)據(jù)包可知,Length字段之后還有6個字節(jié)“ff 06 00 8a ff ff”,而Length字段值為5是非法長度字段,故應用層Modbus/TCP的單個數(shù)據(jù)包報文格式異常,出現(xiàn)了非法長度字段,即長度字段非法。由此可見,對檢測目標6(目標設備或系統(tǒng))出現(xiàn)的異常狀況進行根源分析時,使用可能導致檢測目標6狀態(tài)異常的驗證數(shù)據(jù)包對檢測目標6進行攻擊重放和驗證,能夠精確定位導致檢測目標6狀態(tài)異常的輸入,對驗證成功的異常數(shù)據(jù)進行解析和呈現(xiàn),找出安全漏洞產(chǎn)生的根源,進而可為工控網(wǎng)絡的安全防護工作提供技術(shù)支撐,提高工控網(wǎng)絡的安全防護性能。
報告生成引擎5與根源分析模塊4連接并根據(jù)測試結(jié)果生成測試報告,其中,測試結(jié)果包括“正?!?、“疑似漏洞”和“其他”。優(yōu)選地,報告生成引擎5在生成測試報告時,可對測試結(jié)果中的“疑似漏洞”進行漏洞標識,關聯(lián)該“疑似漏洞”所有相關信息,并對漏洞名稱、危險等級和描述等信息進行編輯并保存至安全檢測所使用的工控網(wǎng)絡安全檢測系統(tǒng)的本機漏洞庫中,作為漏洞分析的依據(jù)。優(yōu)選地,報告生成引擎5中存儲有多種報告模板,比如檢測報告模板、漏洞挖掘報告模板等,以便于根據(jù)需要生成不同的測試報告。另外,用戶在對報告生成引擎5生成的測試報告進行導出時,可導出為RTF模式,以便于用戶根據(jù)需要對測試報告進行修改。
中間繼電模塊與模糊測試引擎2連接,并根據(jù)模糊測試引擎2發(fā)來的控制信號控制檢測目標6的供電電源與檢測目標6之間的電路的通斷。具體地,當檢測目標6的狀態(tài)異常時,模糊測試引擎2先向中間繼電模塊發(fā)送斷電控制信號,使中間繼電模塊斷開檢測目標6的供電電源與檢測目標6之間的電路,即使檢測目標6斷電;再向中間繼電模塊發(fā)送供電控制信號,使中間繼電模塊導通檢測目標6的供電電源與檢測目標6之間的電路,即使檢測目標6上電,從而完成檢測目標6的重啟操作。這樣,在使用本發(fā)明工控網(wǎng)絡安全檢測系統(tǒng)對檢測目標6進行安全檢測的過程中,可通過模糊測試引擎2驅(qū)動中間繼電模塊對檢測目標6進行重啟,并使檢測目標6自動復位至正??蓽y試狀態(tài),從而利用剩余的測試用例繼續(xù)對檢測目標6進行安全檢測。
下面,結(jié)合圖1和3對利用上述工控網(wǎng)絡安全檢測系統(tǒng)對檢測目標6進行安全檢測的具體步驟進行詳細說明。
S1、利用測試用例模塊1根據(jù)檢測目標6的工控協(xié)議向模糊測試引擎2提供安全檢測所需的測試用例。由于測試用例模塊1利用數(shù)據(jù)模塊子模塊11構(gòu)造出各字段符合檢測目標6的工控協(xié)議的數(shù)據(jù)模型,并利用狀態(tài)模型子模塊12對工控協(xié)議的交互狀態(tài)進行控制,并利用測試參數(shù)子模塊13對測試參數(shù)進行指定,使得提供給模糊測試引擎2的測試用例的適用性廣,進而可提高測試覆蓋率和測試深入度。
S2、模糊測試引擎2根據(jù)測試用例模塊1提供的測試用例生成測試數(shù)據(jù)包,并將測試數(shù)據(jù)包發(fā)送到檢測目標6中對檢測目標6進行安全檢測,同時利用監(jiān)視器3對檢測目標6的狀態(tài)進行實時監(jiān)測,當檢測目標6的狀態(tài)正常時,檢測目標6的測試結(jié)果為“正常”;當檢測目標6的狀態(tài)異常時,根源分析模塊4驅(qū)動模糊測試引擎2抓取可能使檢測目標6的狀態(tài)異常的測試數(shù)據(jù)包并保存為驗證數(shù)據(jù)包。在利用模糊測試引擎2生成測試數(shù)據(jù)包時,先利用數(shù)據(jù)生成模塊21根據(jù)測試用例模塊1提供的測試用例生成正常測試數(shù)據(jù),再利用數(shù)據(jù)變形模塊22對數(shù)據(jù)生成模塊21生成的正常測試數(shù)據(jù)的特定字段進行變形重組形成測試數(shù)據(jù)。
S3、模糊測試引擎2將驗證數(shù)據(jù)包重新發(fā)送到檢測目標6中進行攻擊重放以驗證漏洞,同時使用監(jiān)視器3對檢測目標6的狀態(tài)進行實時監(jiān)測;當檢測目標6的狀態(tài)正常時,漏洞驗證失敗,則檢測目標6在進行安全檢測時的狀態(tài)異常是由非安全漏洞的其他因素比如網(wǎng)絡異常,設備接口松動等引起的,檢測目標6的測試結(jié)果為“其他”;當檢測目標6的狀態(tài)異常時,漏洞驗證成功,檢測目標6的異常狀態(tài)可能是由于存在安全漏洞引起的,檢測目標6的測試結(jié)果為“疑似漏洞”。在對檢測目標6中的安全漏洞進行驗證時,根源分析模塊4中的漏洞驗證子模塊41驅(qū)動模糊測試引擎2中的攻擊重放模塊23進行攻擊重放,將抓取到的驗證數(shù)據(jù)包重新發(fā)送到檢測目標6中進行漏洞驗證,并啟動監(jiān)視器3對檢測目標6的狀態(tài)進行實時監(jiān)測,當檢測目標6的狀態(tài)正常時,漏洞驗證失?。划敊z測目標6的狀態(tài)異常時,漏洞驗證成功。
S4、在漏洞驗證成功后,根源分析模塊4將驗證數(shù)據(jù)包保存為異常數(shù)據(jù)包并對異常數(shù)據(jù)包進行異常分析,找出異常數(shù)據(jù)包中的異常部分,得出安全漏洞產(chǎn)生的根源。根源分析模塊4對異常數(shù)據(jù)包進行異常分析時,可對異常數(shù)據(jù)包進行協(xié)議分析,并在分析結(jié)果上標注出異常數(shù)據(jù)包中不符合檢測目標的工控協(xié)議的部分,即異常部分,從而得出檢測目標的安全漏洞產(chǎn)生的根源。
S5、在檢測完成后,利用報告生成引擎5根據(jù)測試結(jié)果生成測試報告。報告生成引擎5在生成的測試報告時,對測試結(jié)果中的“疑似漏洞”進行漏洞標識,并關聯(lián)該“疑似漏洞”的所有相關信息,并對“疑似漏洞”的漏洞名稱、危險等級和描述進行編輯并保存至安全檢測所使用的工控網(wǎng)絡安全檢測系統(tǒng)的本機漏洞庫中,作為漏洞分析的依據(jù)。