陳翊璐,孫 軍,程晟滔,張哲宇,王子博,王佰玲*
(1.哈爾濱工業(yè)大學(xué)(威海)計算機(jī)科學(xué)與技術(shù)學(xué)院,威海 264209;2.哈爾濱工業(yè)大學(xué)網(wǎng)絡(luò)空間安全研究院,哈爾濱 150001;3.國家工業(yè)信息安全發(fā)展研究中心,北京 100040)
工業(yè)控制系統(tǒng)(industrial control system,ICS)是電力、制造、石油、化工、交通運(yùn)行等國家關(guān)鍵基礎(chǔ)設(shè)施行業(yè)中的基礎(chǔ)信息物理系統(tǒng),其重要性不言而喻。近年來,ICS與互聯(lián)網(wǎng)融合程度逐漸加深,導(dǎo)致ICS中大量網(wǎng)絡(luò)安全漏洞暴露于互聯(lián)網(wǎng)中,ICS網(wǎng)絡(luò)安全事件頻發(fā)[1]。ICS在設(shè)計之初缺乏網(wǎng)絡(luò)安全層面的考慮,專有設(shè)備和軟件有諸多漏洞,同時系統(tǒng)設(shè)置也存在固有缺陷[2-3]。安全管理包括聯(lián)網(wǎng)設(shè)備探測、設(shè)備類型識別、漏洞掃描和漏洞管理等過程,能夠獲取工業(yè)控制系統(tǒng)聯(lián)網(wǎng)設(shè)備(以下簡稱工控聯(lián)網(wǎng)設(shè)備)的漏洞信息,提高ICS安全性,因此對工控聯(lián)網(wǎng)設(shè)備進(jìn)行有效安全管理研究有重要意義。
漏洞掃描技術(shù)是常用的網(wǎng)絡(luò)安全檢測技術(shù),主要分為基于主機(jī)的漏洞掃描和基于網(wǎng)絡(luò)的漏洞掃描。基于主機(jī)的漏洞掃描技術(shù)通常借助代理軟件對目標(biāo)進(jìn)行掃描。工控環(huán)境中存在大量的可編程邏輯控制器(programmable logic controller,PLC)、遠(yuǎn)程測控終端單元(remote terminal unit,RTU),但這類設(shè)備的計算和運(yùn)行資源不豐富,不適用安裝代理軟件的方式完成掃描任務(wù),同時代理軟件本身也可能引入漏洞,因此基于主機(jī)的漏洞掃描技術(shù)不適用于ICS。
基于網(wǎng)絡(luò)的漏洞掃描技術(shù)首先對系統(tǒng)進(jìn)行探測,盡可能識別出網(wǎng)絡(luò)中的所有設(shè)備。探測方式可分為主動探測、被動探測以及基于搜索引擎的非入侵式探測[4]。基于搜索引擎的非入侵式探測是一種間接探測方式,不適用于ICS。主動探測通?;诰W(wǎng)絡(luò)協(xié)議向網(wǎng)絡(luò)設(shè)備發(fā)送探測數(shù)據(jù)包[5],然后根據(jù)設(shè)備的返回數(shù)據(jù)包,分析設(shè)備詳細(xì)信息,例如系統(tǒng)、固件等[6]。ICS具有多種工控協(xié)議,于新銘等[7]針對Modbus、S7、DNP3和BACnet 這4種工控協(xié)議,提出了一種并發(fā)進(jìn)行資產(chǎn)探測的通用方法,有效優(yōu)化了資產(chǎn)探測的高效性和通用性。但該方法在探測工控聯(lián)網(wǎng)設(shè)備時,將在短時間內(nèi)向設(shè)備發(fā)送大量探測包,這會影響對實(shí)時性要求較高的工控聯(lián)網(wǎng)設(shè)備的運(yùn)行,甚至導(dǎo)致設(shè)備運(yùn)行錯誤[8],所以該方法在工控網(wǎng)絡(luò)中需謹(jǐn)慎使用。被動探測則不需要發(fā)送探測數(shù)據(jù)包,而是通過解析已得到的流量數(shù)據(jù)包,獲得網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、網(wǎng)絡(luò)中存在的設(shè)備及設(shè)備的一些信息。
對系統(tǒng)進(jìn)行網(wǎng)絡(luò)探測后,利用探測得到的信息進(jìn)行漏洞掃描。漏洞掃描器主要分為基于插件和基于漏洞數(shù)據(jù)庫兩類。基于插件的掃描方法通過調(diào)用插件來實(shí)現(xiàn)漏洞掃描,插件便于管理、更新和維護(hù),也具有良好的擴(kuò)展性?;诼┒磾?shù)據(jù)庫的掃描方法將探測及識別到的設(shè)備信息在漏洞數(shù)據(jù)庫中進(jìn)行匹配,檢索出該設(shè)備可能存在的漏洞[9]。根據(jù)類似思路,Gawron等[10]利用系統(tǒng)日志以及網(wǎng)絡(luò)服務(wù)網(wǎng)日志信息來獲取設(shè)備和應(yīng)用,再進(jìn)一步通過通用平臺枚舉項(xiàng)(common platform enumeration,CPE)編號檢索漏洞。該方法的關(guān)鍵是探測識別到的設(shè)備信息以及漏洞數(shù)據(jù)庫,探測得到的設(shè)備信息越詳細(xì),匹配到的漏洞越準(zhǔn)確,漏洞數(shù)據(jù)庫的完整性以及準(zhǔn)確性直接影響漏洞掃描結(jié)果的準(zhǔn)確性。這種掃描方式是靜態(tài)的,得到漏洞掃描結(jié)果后可以根據(jù)漏洞優(yōu)先級排序,或者采用其他漏洞管理方法。例如,F(xiàn)arris等[11]提出的一種漏洞優(yōu)先排序管理系統(tǒng) (vulnerability control,VULCON),可以篩選出一些易被利用或高危害的漏洞來進(jìn)行進(jìn)一步的漏洞利用驗(yàn)證。通過漏洞分析和利用研究,可以更深入地掌握漏洞的詳細(xì)成因[12]。這種靜態(tài)漏洞掃描方式對工控網(wǎng)絡(luò)影響較小,更適用于ICS。
聯(lián)網(wǎng)設(shè)備類型識別是后續(xù)獲取設(shè)備詳細(xì)信息和漏洞管理的關(guān)鍵。識別工控聯(lián)網(wǎng)設(shè)備需借助普渡模型,明確ICS的各個設(shè)備所屬層次,即管理層、過程層和控制層。Al Ghazo等[13]基于通信模式識別設(shè)備層次,利用從數(shù)據(jù)包提取的緩存時間(time to live,TTL)以及局域網(wǎng)地址(media access control,MAC)地址等信息識別各類設(shè)備的廠商和型號。而Shen等[14]驗(yàn)證了利用層次間響應(yīng)時間可區(qū)分不同類型的工控聯(lián)網(wǎng)設(shè)備。在設(shè)備類型識別方面,PLC、工控上位機(jī)以及數(shù)據(jù)庫服務(wù)器的識別較成熟,但對ICS中同樣常見的人機(jī)接口(human machine interface,HMI)設(shè)備的識別存在著不足。
現(xiàn)以獲悉工控聯(lián)網(wǎng)設(shè)備存在的漏洞信息為目的,研究工控聯(lián)網(wǎng)設(shè)備安全管理中聯(lián)網(wǎng)設(shè)備探測、設(shè)備類型識別、漏洞掃描和漏洞管理過程中的關(guān)鍵技術(shù)。首先,在對設(shè)備類型研究的基礎(chǔ)上[15],針對HMI無法準(zhǔn)確識別的問題,通過對其通信流量長度及周期性特征分析,實(shí)現(xiàn)在MAC地址信息不完備的情況下對HMI的識別。其次,考慮工控聯(lián)網(wǎng)設(shè)備的漏洞掃描需盡可能避免網(wǎng)絡(luò)波動,從而避免對業(yè)務(wù)連續(xù)性和實(shí)時性的影響,改進(jìn)工控聯(lián)網(wǎng)設(shè)備掃描的靜態(tài)信息匹配,即利用設(shè)備信息優(yōu)先在漏洞庫內(nèi)進(jìn)行查詢,根據(jù)漏洞等級,實(shí)現(xiàn)設(shè)定優(yōu)先級的動態(tài)漏洞掃描。為達(dá)到上述目的,同時針對工控漏洞庫規(guī)模逐步擴(kuò)大問題,提出一種多級索引信息匹配的漏洞檢索方法。最后,設(shè)計一套面向工控聯(lián)網(wǎng)設(shè)備的安全管理系統(tǒng)。
根據(jù)ICS的脆弱性特點(diǎn)和分層結(jié)構(gòu),采用主被動結(jié)合的漏洞掃描模型進(jìn)行分層掃描。該漏洞掃描模型的輸入為捕獲的工控流量,并將該流量輸入到層次識別模塊。
層次識別模塊能根據(jù)輸入的流量分析網(wǎng)絡(luò)中的存活設(shè)備,并通過設(shè)備層次識別算法獲得存活設(shè)備所在層次,即控制層、過程層和管理層。控制層設(shè)備多為PLC等工控網(wǎng)絡(luò)特有的掃描敏感性設(shè)備;管理層設(shè)備多為主機(jī);過程層中的設(shè)備雖本質(zhì)上屬于主機(jī),但其中的HMI設(shè)備、數(shù)據(jù)采集與監(jiān)視控制(supervisory control and data acquisition,SCADA)服務(wù)器、工程師站等都是工控網(wǎng)絡(luò)特有設(shè)備,其設(shè)備類型的確定將有利于進(jìn)行漏洞掃描。重點(diǎn)研究HMI識別方法。
工控漏洞掃描主要分兩個部分,一是主動探測,二是漏洞庫匹配。主動探測利用流量信息分析設(shè)備使用的協(xié)議,再根據(jù)協(xié)議構(gòu)造相應(yīng)的探測包,來獲得設(shè)備的詳細(xì)信息,例如,設(shè)備廠商、設(shè)備類型、設(shè)備型號、固件版本等。漏洞庫匹配主要將探測得到的設(shè)備信息與工控漏洞庫匹配以獲得漏洞信息。漏洞掃描系統(tǒng)的整體架構(gòu)由3個部分組成,分別是數(shù)據(jù)采集模塊、設(shè)備探測模塊和漏洞掃描模塊,如圖1所示。
1.1.1 數(shù)據(jù)采集模塊
在該模塊中,為了盡可能完整描述層次間的通信關(guān)系,流量鏡像交換機(jī)將部署于控制層,過程層和管理層之間,負(fù)責(zé)實(shí)時收集流量數(shù)據(jù)。
1.1.2 設(shè)備探測模塊
該模塊部署于服務(wù)器上,用于探測目標(biāo)網(wǎng)絡(luò)中設(shè)備的具體信息,包括過程層設(shè)備和管理層設(shè)備的端口、服務(wù)及操作系統(tǒng)信息,以及工控聯(lián)網(wǎng)設(shè)備的設(shè)備類型、設(shè)備廠商、設(shè)備型號等信息。設(shè)備探測模塊結(jié)構(gòu)圖如圖2所示。

圖2 設(shè)備探測模塊結(jié)構(gòu)圖Fig.2 The structure of device detection module
設(shè)備探測模塊主要包括被動探測和主動探測。離線識別采集到的工控網(wǎng)絡(luò)流量后,對得到的傳統(tǒng)網(wǎng)絡(luò)設(shè)備使用常用的資產(chǎn)探測工具,例如Nmap、Masscan等,進(jìn)行端口掃描、服務(wù)識別和操作系統(tǒng)識別。對工控聯(lián)網(wǎng)設(shè)備,構(gòu)造設(shè)備探測數(shù)據(jù)包,并對設(shè)備的返回數(shù)據(jù)包進(jìn)行解析以及匹配工控指紋庫獲得工控聯(lián)網(wǎng)設(shè)備的詳細(xì)信息。這種主被動結(jié)合的方法旨在更全面準(zhǔn)確地識別資產(chǎn)。
1.1.3 漏洞掃描模塊
漏洞掃描模塊利用探測到的設(shè)備信息,包括工控聯(lián)網(wǎng)設(shè)備的設(shè)備類型、設(shè)備廠商、設(shè)備型號信息,以及傳統(tǒng)網(wǎng)絡(luò)設(shè)備的開放端口、操作系統(tǒng)等信息進(jìn)行漏洞掃描,獲得設(shè)備上可能存在的漏洞信息。該模塊與資產(chǎn)探測模塊共同部署,在資產(chǎn)探測獲得的信息分類處理后,將傳統(tǒng)網(wǎng)絡(luò)設(shè)備信息傳入傳統(tǒng)漏洞掃描工具進(jìn)行漏洞掃描,將工控聯(lián)網(wǎng)設(shè)備信息傳入工控漏洞庫進(jìn)行漏洞匹配。
1.2.1 HMI介紹
HMI指人機(jī)交互界面,包含HMI硬件和相應(yīng)的專用畫面組態(tài)軟件。HMI屬于ICS特有設(shè)備,并且使用工控協(xié)議與PLC通信,傳統(tǒng)的漏洞掃描工具無法完全探測出所有HMI的漏洞信息,因此需要先進(jìn)行HMI識別。識別HMI的關(guān)鍵在于過程層設(shè)備的區(qū)分。過程控制層中的歷史數(shù)據(jù)庫、工程師站和HMI等設(shè)備的功能不同造成了其通信特性的諸多不同。HMI設(shè)備可以顯示當(dāng)前的控制狀態(tài)、過程變量,包括數(shù)字量(開關(guān)量)和數(shù)值等數(shù)據(jù);可以顯示報警信息;可以通過硬件或可視化圖形按鍵輸入數(shù)字量、數(shù)值等控制參數(shù);可以通過內(nèi)置功能對PLC內(nèi)部進(jìn)行簡單的監(jiān)控、設(shè)置等。
HMI的交互具有周期性。大量實(shí)驗(yàn)發(fā)現(xiàn),其與歷史的通信長度最長,但與工程師站的交互特點(diǎn)并不明顯。因此,利用此特性,對HMI的通信長度和周期性展開研究。
(1)HMI的通信長度特征。HMI與SCADA服務(wù)器進(jìn)行連接時,在SCADA服務(wù)器與上層設(shè)備的交互過程中,同等時間內(nèi)與HMI之間的通信長度最長[16]?;谶@一結(jié)論開展研究,探索HMI與其他工控聯(lián)網(wǎng)設(shè)備之間是否也擁有最長通信長度。故統(tǒng)計HMI與PLC之間的通信長度,以及其他控制層設(shè)備與PLC設(shè)備的通信長度。由于根據(jù)通信長度識別HMI并不可靠,因此為實(shí)現(xiàn)HMI識別,還需考慮設(shè)備通信的周期性。
(2)HMI的通信周期性特征。HMI每隔固定時間向PLC設(shè)備發(fā)起一次數(shù)據(jù)讀取請求,其通信周期性高于工程師站和歷史數(shù)據(jù)庫。為測量HMI的通信周期性,對通信數(shù)據(jù)包的分組間隔intg進(jìn)行了統(tǒng)計實(shí)驗(yàn)與深入分析。
按照設(shè)定的分組間隔對數(shù)據(jù)包進(jìn)行劃分,對分組進(jìn)行整理,并設(shè)置五元組(源IP,源端口,目的IP,目的端口,分組間隔)。對每個通信四元組(源IP,源端口,目的IP,目的端口),采用分組間隔的標(biāo)準(zhǔn)差stdintg和分組間隔的平均值meanintg設(shè)定通信周期性參數(shù)Pc,即Pc=stdintg/meanintg,使用Pc衡量通信周期性,Pc越大代表通信周期性越差,反之,周期性越好。
1.2.2 HMI設(shè)備識別算法
ICS可劃分為3個層次:控制層(0層)、過程層(1層)、企業(yè)層(2層),各層次設(shè)備之間的通信關(guān)系如下:2層設(shè)備只與1層設(shè)備通信,1層可以與2層和0層設(shè)備通信,0層設(shè)備可以與0層和1層設(shè)備通信。通過捕獲網(wǎng)絡(luò)中的數(shù)據(jù)包,獲得每個源IP設(shè)備的目的IP集,利用目的IP集的關(guān)系判斷所有IP設(shè)備的所在層次。對過程層設(shè)備的流量數(shù)據(jù)進(jìn)行分析,重點(diǎn)解決過程層中HMI的識別混淆問題。
HMI識別過程主要包含數(shù)據(jù)包分組、通信長度統(tǒng)計及排序。首先,根據(jù)通信周期性按照分組間隔對數(shù)據(jù)包分組,然后計算每個分組內(nèi)的通信長度,最后根據(jù)通信長度進(jìn)行排序,通信長度最高的為HMI設(shè)備。HMI設(shè)備的識別過程如算法1所示。HMI算法輸入包括原始PCAP以及IP集合。原始PCAP用于提取通信關(guān)系,通信關(guān)系由六元組構(gòu)成,包括數(shù)據(jù)包的源IP、源端口、目的IP、目的端口、包長和時間戳。

算法1 HMI設(shè)備識別算法輸入 捕獲的工控流量包(PCAP) 控制層IP集合(CIPs) 設(shè)備層IP集合(DIPs)輸出 HMI對應(yīng)的IP1: forpktinpcapdo2: 提取數(shù)據(jù)包中源IP、源端口、目的IP、目的端口、包長、包時間;3: endfor4: 根據(jù)前四元組進(jìn)行聚合,形成流集合flows=(sip,sport,dip,dport):vul1,vul2,…,vul=(size,time);5: forflowinflowsdo6: forvulinflowdo7: ifvul[i+1].time-vul[i].time≥intgthen8: 計算前面小于0.78的間隔的數(shù)據(jù)包的長度之和,記作segsize;9: 將sigsize加入flowsegs,flowsegs=(sip,sport,dip,dport):segsize1,sigsize2,…;10: endif11: endfor12: endfor13: forflow1,flow2inflowsegsdo14: ifflow1.sip==flow2.sipthen15: 將兩條流中的segsize進(jìn)行加和,記為len;16: 加入IPlens,IPlens=sip:len,…;17: endif18: endfor19: 對IPlens中的元素按照值進(jìn)行由大到小排序;20: returnIPlens[0];
在分組時,根據(jù)六元組中的前四元組進(jìn)行流聚合,將設(shè)備層返回給控制層的數(shù)據(jù)包聚合到流中,然后根據(jù)流中數(shù)據(jù)包間的時間間隔進(jìn)行分組。其中,利用通信周期性,可排除歷史數(shù)據(jù)庫通信數(shù)據(jù)。然后計算每條流的總通信長度,并按照源IP求和,得到控制層IP與設(shè)備層IP通信的總通信長度,利用最大的通信長度這一特性識別HMI設(shè)備。由于PLC層和過程層設(shè)備與控制層設(shè)備交互周期性較弱,因此,在分組階段對誤判的IP具有一定的容錯性。
由于工控網(wǎng)絡(luò)對實(shí)時性要求較高,直接應(yīng)用主動掃描方法可能影響工控聯(lián)網(wǎng)設(shè)備運(yùn)行,甚至導(dǎo)致設(shè)備異常,所以ICS的漏洞掃描以靜態(tài)匹配方式為主。靜態(tài)匹配的漏洞掃描方式首先獲取系統(tǒng)的設(shè)備信息,例如設(shè)備類型、設(shè)備固件和固件版本。利用獲取到的設(shè)備詳細(xì)信息查詢工控漏洞數(shù)據(jù)庫,檢索該設(shè)備可能存在的漏洞,再對這些漏洞一一驗(yàn)證。主動探測獲得設(shè)備漏洞信息后,匹配漏洞庫中的設(shè)備索引,進(jìn)而確定設(shè)備上可能存在的漏洞信息。因此,構(gòu)建漏洞庫時除考慮漏洞庫全面性外,還需考慮匹配速率。
工控漏洞數(shù)據(jù)庫的規(guī)模不斷增大,對檢索算法提出了較高要求。提出使用廠商、設(shè)備類型和影響產(chǎn)品來建立工控漏洞數(shù)據(jù)庫的多級索引,并在此基礎(chǔ)上提出一種基于多級多索引信息匹配的工控漏洞檢索方法。產(chǎn)品記錄的總條數(shù)N遠(yuǎn)多于廠商數(shù)V和設(shè)備類型數(shù)D,因此直接搜索記錄即一級索引的算法用時顯著高于多級索引。選擇BM(Boyer-Moore)算法和KMP(Knuth-Morris-Pratt)算法作為候選基本算法。實(shí)驗(yàn)發(fā)現(xiàn)BM算法在三級索引條件下效率較高,同時在漏洞庫構(gòu)建中,將廠商作為一級索引,設(shè)備類型為二級索引、產(chǎn)品型號為三級索引,能快速有效匹配漏洞。
2.1.1 實(shí)驗(yàn)數(shù)據(jù)
HMI識別算法在新加坡的iTrust實(shí)驗(yàn)室的安全水處理測試床(secure water treatment testbed,SWaT testbed)實(shí)驗(yàn)數(shù)據(jù)集[17]上展開驗(yàn)證。安全水處理測試床網(wǎng)絡(luò)架構(gòu)如圖3所示。

圖3 安全水處理測試床網(wǎng)絡(luò)架構(gòu)Fig.3 Network architecture of secure water treatment testbed
該測試床有完整的三層網(wǎng)絡(luò)架構(gòu),即控制層、過程層和企業(yè)層,也有多種典型的工控聯(lián)網(wǎng)設(shè)備,例如,控制層的PLC,過程層的工程師站、歷史數(shù)據(jù)庫、HMI以及其他設(shè)備。通過分析通信數(shù)據(jù)包,可確定該實(shí)驗(yàn)數(shù)據(jù)的系統(tǒng)中HMI設(shè)備的IP為192.168.1.100。其中,HMI設(shè)備識別算法是在層次識別之后進(jìn)行的,因此,HMI識別結(jié)果在一定程度上依賴于層次識別結(jié)果。
2.1.2 數(shù)據(jù)處理
(1)HMI的通信長度。為探究HMI與工控聯(lián)網(wǎng)設(shè)備的通信長度特征,統(tǒng)計1 min之內(nèi)HMI與PLC的通信長度,以及其他過程層設(shè)備與PLC通信長度,結(jié)果如圖4所示。HMI與PLC的通信長度短于歷史數(shù)據(jù)庫,故僅根據(jù)通信長度來識別系統(tǒng)中的HMI設(shè)備并不可靠。因此,為實(shí)現(xiàn)HMI的識別,還需考慮設(shè)備的周期性。首先驗(yàn)證僅利用周期性是否可以識別HMI,若不能,則結(jié)合周期性以及通信長度來識別HMI,其中,先篩除不具有周期性的歷史數(shù)據(jù)庫,再根據(jù)通信長度進(jìn)行識別HMI設(shè)備。

圖4 1 min通信長度統(tǒng)計Fig.4 Statistics of communication length in 1 min
(2)HMI的周期性。計算設(shè)備通信周期性的第一步是對數(shù)據(jù)包進(jìn)行分組,組內(nèi)相鄰數(shù)據(jù)包通信間隔需小于分組時間間隔。HMI數(shù)據(jù)包間的通信間隔統(tǒng)計結(jié)果如圖5所示。HMI與PLC的通信具有明顯的周期性,且其組間間隔時長在0.6~1 s。基于對捕獲包的分析,將分組時間間隔定為0.78 s。根據(jù)各個設(shè)備間的通信數(shù)據(jù)包分組間隔計算不同設(shè)備的通信周期性參數(shù)。周期性參數(shù)計算結(jié)果如圖6所示,HMI設(shè)備的周期性參數(shù)較高,故其周期性較差,而設(shè)備192.168.1.201和192.168.1.207會周期性地發(fā)送保持連接的數(shù)據(jù)包,其定時更為嚴(yán)格,故參數(shù)值較低。而歷史數(shù)據(jù)庫192.168.1.200在此次周期性篩選中被排除。因此,只借助周期性來識別HMI設(shè)備并不可行,需要將HMI的周期性和通信長度進(jìn)行結(jié)合,進(jìn)而實(shí)現(xiàn)HMI的精確識別。

圖5 HMI與PLC之間通信數(shù)據(jù)包時間間隔Fig.5 Time interval of communication packets between HMI and PLC

圖6 數(shù)據(jù)流周期性參數(shù)Fig.6 Period parameters of the data flow
2.1.3 算法實(shí)驗(yàn)及其結(jié)果
實(shí)驗(yàn)數(shù)據(jù)輸入至算法1中,測試結(jié)果表明,該算法可以較準(zhǔn)確地識別HMI設(shè)備。算法主要由兩部分組成,對流進(jìn)行分組及統(tǒng)計數(shù)據(jù)長度并排序。
在流分組后,對長度不為零的流進(jìn)行分組長度加,結(jié)果如圖7所示。其中,數(shù)據(jù)流(192.168.1.100,49 163,192.168.1.20,44 818)的通信長度最長。

圖7 數(shù)據(jù)流通信長度Fig.7 Communication length of the data flow
獲取流長度之后,對源IP相同的流通信長度進(jìn)行進(jìn)一步加和,得到過程層設(shè)備中每個設(shè)備與下層設(shè)備的通信總量,計算結(jié)果如圖8所示,HMI設(shè)備192.168.1.100的通信長度最大,由此可以證明算法的有效性。

圖8 過程層設(shè)備數(shù)據(jù)長度Fig.8 Data length of the process-level devices
HMI識別模塊選取了1 min的通信數(shù)據(jù)實(shí)驗(yàn)結(jié)果,如表1所示,HMI設(shè)備的IP為192.168.1.100,其通信長度最長,這也可證明該算法能達(dá)到準(zhǔn)確識別HMI的目的。HMI識別在一定程度上依賴于層次識別,經(jīng)多次實(shí)驗(yàn)證明,在層次識別準(zhǔn)確率為92.86%時,該算法仍能準(zhǔn)確識別HMI設(shè)備。

表1 1 min通信數(shù)據(jù)實(shí)驗(yàn)結(jié)果Table 1 Experimental results of communication in 1 min
2.2.1 實(shí)驗(yàn)數(shù)據(jù)
工控漏洞庫來自國家信息安全漏洞庫(China National Vulnerability Database of Information Security,CNNVD)的工控行業(yè)漏洞庫。獲取的漏洞庫中廠商數(shù)量為293,設(shè)備類型共213種,產(chǎn)品總記錄條數(shù)為5 732。獲取的信息包括url、標(biāo)題、CNVD ID、公開日期、危害級別、影響產(chǎn)品、BUGTRAQ ID、CVE ID、漏洞描述、漏洞類型、參考鏈接、漏洞解決方案、廠商補(bǔ)丁、驗(yàn)證信息、報送時間、收錄時間、更新時間、漏洞附件等字段的信息。此外,為了拓展漏洞庫的字段索引,提取每條設(shè)備信息的廠商和設(shè)備類型,以輔助后續(xù)的漏洞匹配。用于實(shí)驗(yàn)的資產(chǎn)信息如表2所示。

表2 資產(chǎn)信息Table 2 Assets information
2.2.2 算法實(shí)驗(yàn)及其結(jié)果
在一級索引方面,直接以產(chǎn)品型號作為索引,對BM算法和KMP算法進(jìn)行了比較,算法結(jié)果如圖9所示。經(jīng)實(shí)驗(yàn)發(fā)現(xiàn),相比于KMP算法,BM算法的匹配速率更高。

圖9 KMP與BM算法比較Fig.9 Comparison of the KMP and BM algorithms
如圖10所示,對BM算法的一級和二級索引進(jìn)行了比較分析,分別進(jìn)行了以廠商作為一級索引、以產(chǎn)品作為二級索引和以類型作為一級索引以及以產(chǎn)品作為二級索引的實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,對于同一種產(chǎn)品,二級索引顯著提高了漏洞匹配速率。在索引順序方面,無論是廠商作為一級索引還是產(chǎn)品類型作為一級索引并無顯著差別。因此針對二級索引和三級索引進(jìn)行了研究,實(shí)驗(yàn)結(jié)果如圖11所示。

圖10 BM算法一級和二級索引對比Fig.10 Comparison of the first and second indexes in the BM algorithm

圖11 BM算法二級和三級索引對比Fig.11 Comparison of the second and third indexes in BM algorithm
經(jīng)實(shí)驗(yàn)分析發(fā)現(xiàn),在三級索引條件下,先進(jìn)行廠商匹配,再進(jìn)行類型和產(chǎn)品匹配的效率較高,且更為穩(wěn)定。因此,針在漏洞庫的索引構(gòu)建,提出將廠商作為一級索引、設(shè)備類型作為二級索引、產(chǎn)品型號作為三級索引的多級索引信息匹配的漏洞檢索方法。
結(jié)合工控聯(lián)網(wǎng)設(shè)備的網(wǎng)絡(luò)特性、業(yè)務(wù)特點(diǎn)及安全需求,提出了一種結(jié)合通信長度和周期性特征的HMI設(shè)備識別算法以及一種基于多級索引信息匹配的漏洞檢索方法,同時結(jié)合團(tuán)隊前期研究設(shè)計了一個面向工控聯(lián)網(wǎng)設(shè)備的安全管理系統(tǒng)。實(shí)驗(yàn)證明該系統(tǒng)可準(zhǔn)確識別工控系統(tǒng)中的聯(lián)網(wǎng)設(shè)備,并能根據(jù)識別到的工控聯(lián)網(wǎng)設(shè)備信息快速檢索到其可能存在的漏洞。