景 峰,張雪芹
(國網(wǎng)山西省電力公司,山西太原 030021)
隨著工業(yè)互聯(lián)網(wǎng)的深入建設(shè),各類采集設(shè)備、自動(dòng)化系統(tǒng)的數(shù)量和種類不斷增加,但由于固件更新不及時(shí),缺少統(tǒng)一標(biāo)準(zhǔn),未進(jìn)行安全性和可靠性驗(yàn)證,存在各類安全漏洞,導(dǎo)致系統(tǒng)自身的漏洞和系統(tǒng)的暴露面日益增大。對于工業(yè)控制設(shè)備的漏洞研究以及脆弱性分析成為當(dāng)前工業(yè)控制系統(tǒng)安全風(fēng)險(xiǎn)評估的重點(diǎn)。
借鑒多特征融合的細(xì)粒度圖像檢索算法,通過設(shè)備標(biāo)語信息中含有豐富的與設(shè)備屬性相關(guān)的信息進(jìn)行設(shè)備識(shí)別,設(shè)備標(biāo)語信息通常包括設(shè)備類型、品牌以及型號信息或者其中一種信息。根據(jù)不同的服務(wù)協(xié)議,通過主動(dòng)探測技術(shù)獲得多種協(xié)議標(biāo)語,進(jìn)而綜合考慮設(shè)備多協(xié)議標(biāo)語的關(guān)聯(lián)特征,提高識(shí)別精度和時(shí)間效率。
目前基于標(biāo)語的設(shè)備識(shí)別過程大致分為標(biāo)語數(shù)據(jù)采集、標(biāo)語信息處理以及匹配識(shí)別,該方法的技術(shù)難點(diǎn)在于彌補(bǔ)基于標(biāo)語進(jìn)行設(shè)備識(shí)別的不足,如發(fā)送協(xié)議探測報(bào)文之后,設(shè)備未能返回對應(yīng)的協(xié)議標(biāo)語;協(xié)議標(biāo)語信息所含的設(shè)備屬性信息量不完整,甚至不包含任何設(shè)備信息。若采用設(shè)備支持的所有協(xié)議標(biāo)語來進(jìn)行設(shè)備識(shí)別,會(huì)造成巨大的通信和時(shí)間開銷,而發(fā)送過多探測數(shù)據(jù)包還可能會(huì)被認(rèn)為是一種入侵行為。
層次分析法AHP(analytic hierarchy process)在運(yùn)籌學(xué)的研究中屬于比較強(qiáng)大的網(wǎng)絡(luò)分析法,該方法在解決綜合評價(jià)、多因素趨勢預(yù)測、多標(biāo)準(zhǔn)和多用戶程序等問題中,表現(xiàn)出良好的適用性和有效性[2]。AHP需要決策者提供每個(gè)標(biāo)準(zhǔn)的相對重要性,采用每一個(gè)標(biāo)準(zhǔn)制定每個(gè)決策優(yōu)先權(quán)。首先分析具體的問題,然后構(gòu)建影響該問題的因素并構(gòu)建矩陣。通過比較矩陣元素的重要性,量化矩陣元素的定性權(quán)重,根據(jù)結(jié)果的實(shí)際可行性和客觀性,實(shí)現(xiàn)定性分析與定量分析的結(jié)合。
模糊理論(Fuzzy set theory)是古典集合論的擴(kuò)展。在古典集合論中,集合中的元素屬于或者不屬于該集合,元素間的關(guān)聯(lián)程度較弱。而在模糊理論中,元素間的關(guān)聯(lián)程度不斷地變化。數(shù)學(xué)上,模糊集(也稱為隸屬度函數(shù))是從論域到閉區(qū)間[0,1]的一個(gè)映射。通常,隸屬度函數(shù)的設(shè)計(jì)需要考慮問題的需求和約束?;谀:兞康氖褂?,系統(tǒng)可以理解為一個(gè)非專業(yè)的系統(tǒng)。通過這種方式,模糊邏輯可以用作一種通用的方法將知識(shí)、試探法或理論合并到控制和決策的過程中[3]。
為了實(shí)現(xiàn)對工業(yè)控制系統(tǒng)低干擾在線風(fēng)險(xiǎn)評估,提出以下技術(shù)方案:首先構(gòu)建工業(yè)控制系統(tǒng)識(shí)別標(biāo)語庫、漏洞—型號映射庫,然后根據(jù)設(shè)備標(biāo)語庫進(jìn)行特征提取和識(shí)別,在設(shè)備工作的情況下,使用細(xì)粒度設(shè)備識(shí)別技術(shù)識(shí)別該設(shè)備的品牌、型號等信息,構(gòu)建一個(gè)設(shè)備自動(dòng)識(shí)別模型,最后通過模糊比對構(gòu)建的漏洞庫來進(jìn)行脆弱性分析,對存在漏洞的設(shè)備提供風(fēng)險(xiǎn)評級。
電力工業(yè)互聯(lián)網(wǎng)設(shè)備低干擾在線漏洞分析技術(shù)研究流程如下:使用工具探測設(shè)備,收集標(biāo)語,構(gòu)建工業(yè)互聯(lián)網(wǎng)設(shè)備識(shí)別標(biāo)語庫;爬取“漏洞編號”“危害等級”“漏洞類型”“供應(yīng)商”“型號”“設(shè)備類型”等信息,構(gòu)建漏洞—型號映射庫;爬取工業(yè)控制系統(tǒng)的相關(guān)信息,獲得“廠商”“設(shè)備型號”“設(shè)備類型”等信息,構(gòu)建工業(yè)控制系統(tǒng)設(shè)備指紋庫;對工業(yè)控制系統(tǒng)設(shè)備識(shí)別標(biāo)語庫進(jìn)行自然語言處理,利用機(jī)器學(xué)習(xí)等技術(shù)自動(dòng)提取設(shè)備識(shí)別標(biāo)語庫的特征和屬性,利用提取的特征和屬性與設(shè)備指紋庫進(jìn)行指紋匹配;在設(shè)備工作狀態(tài)下,利用細(xì)粒度設(shè)備識(shí)別技術(shù)實(shí)現(xiàn)設(shè)備型號信息的自動(dòng)識(shí)別;最后使用模糊比對漏洞—型號映射庫,實(shí)現(xiàn)免驗(yàn)證的工業(yè)互聯(lián)網(wǎng)設(shè)備脆弱性分析,并對存在漏洞的設(shè)備提供風(fēng)險(xiǎn)評級。
首先,對大量目標(biāo)類型的設(shè)備發(fā)送由協(xié)議和端口組合構(gòu)成的協(xié)議探測數(shù)據(jù)包,獲取相應(yīng)的協(xié)議標(biāo)語信息,并進(jìn)行基于標(biāo)語的設(shè)備識(shí)別,將每種協(xié)議標(biāo)語的識(shí)別結(jié)果存入數(shù)據(jù)庫。其次,統(tǒng)計(jì)計(jì)算目標(biāo)設(shè)備類型下每種協(xié)議標(biāo)語的標(biāo)語獲取率(Pbanner1,Pbanner2,…),以及4種識(shí)別概率(Pnull,Pbrand,Pmodel,Pall),分別表示標(biāo)語信息中不包含任何信息(null)、僅品牌(only brand)、僅型號(only model)以及品牌和型號(all)的概率。最后,采用強(qiáng)化學(xué)習(xí)的方法,將基于標(biāo)語的設(shè)備識(shí)別過程建模為馬爾科夫決策過程,通過改進(jìn)價(jià)值迭代算法,為已知類型的設(shè)備生成最優(yōu)協(xié)議探測序列,然后基于識(shí)別精度的增益閾值提取最優(yōu)的協(xié)議探測組合。
針對多協(xié)議探測組合難以解決協(xié)議探測開銷與設(shè)備識(shí)別精度之間平衡問題的實(shí)際情況,引入價(jià)值迭代算法,分步驟生成目標(biāo)設(shè)備類型的最優(yōu)協(xié)議探測組合。詳情如圖1所示。
圖1 多協(xié)議標(biāo)語融合的細(xì)粒度設(shè)備識(shí)別模型
技術(shù)實(shí)現(xiàn)步驟如下:
步驟1:基于Python的Scrapy架構(gòu),使用異步網(wǎng)絡(luò)框架Twisted,以爬蟲的技術(shù)方式實(shí)現(xiàn)對物聯(lián)網(wǎng)設(shè)備品牌和型號屬性的自動(dòng)化收集工作,構(gòu)建物聯(lián)網(wǎng)設(shè)備指紋庫。
步驟2:通過調(diào)用Censys提供的API接口,過濾出目標(biāo)類型的大量真實(shí)的物聯(lián)網(wǎng)設(shè)備IP,并保存。
步驟3:掃描步驟1獲得的物聯(lián)網(wǎng)設(shè)備IP,如果探測到IP對應(yīng)的主機(jī)處于活躍狀態(tài),則將該活躍主機(jī)IP地址存入數(shù)據(jù)庫。
步驟4:使用標(biāo)語抓取工具來抓取每個(gè)活躍物聯(lián)網(wǎng)設(shè)備的多種協(xié)議標(biāo)語。
步驟5:結(jié)合由步驟1獲得的物聯(lián)網(wǎng)設(shè)備指紋庫,進(jìn)行基于標(biāo)語的物聯(lián)網(wǎng)設(shè)備識(shí)別,得到目標(biāo)物聯(lián)網(wǎng)設(shè)備類型基于不同協(xié)議標(biāo)語的品牌、型號識(shí)別結(jié)果,分別計(jì)算基于每種協(xié)議標(biāo)語的標(biāo)語獲取率、不包含任何設(shè)備屬性信息的概率、只包含品牌信息的概率、只包含型號信息的概率以及同時(shí)包含品牌和型號的概率。
步驟6:基于馬爾可夫決策過程對整個(gè)設(shè)備識(shí)別過程進(jìn)行形式化分析,通過Agent感知識(shí)別過程中存在的狀態(tài)集合、動(dòng)作集合以及不同識(shí)別狀態(tài)下采取不同動(dòng)作獲得的回報(bào),并計(jì)算基于每種協(xié)議標(biāo)語的識(shí)別狀態(tài)轉(zhuǎn)移概率矩陣。
步驟7:采用價(jià)值迭代算法,通過迭代,不斷計(jì)算更新每個(gè)識(shí)別狀態(tài)s下每個(gè)動(dòng)作a的動(dòng)作—價(jià)值函數(shù)Q(s,a),由此得到狀態(tài)s下的最優(yōu)動(dòng)作a,從而生成一個(gè)最優(yōu)協(xié)議探測序列,最后根據(jù)設(shè)置的增益閾值獲得最優(yōu)協(xié)議探測組合。
采用Delphi法構(gòu)建電力設(shè)備脆弱性風(fēng)險(xiǎn)評估指標(biāo)集,并采用層次分析法構(gòu)建指標(biāo)集的層次結(jié)構(gòu),采用模糊理論方法計(jì)算安全風(fēng)險(xiǎn)值。應(yīng)用模糊理論解決實(shí)際問題的步驟如下。
a)建立模糊一致判斷矩陣,并進(jìn)行排序,確定權(quán)重,根據(jù)0.1~0.9標(biāo)度法,比較指標(biāo)間的相對重要性并給出比較值,所得的矩陣為模糊互補(bǔ)判斷矩陣,最后求出各指標(biāo)的權(quán)重系數(shù)。
b)確定隸屬度矩陣,將工業(yè)控制系統(tǒng)設(shè)備安全風(fēng)險(xiǎn)的評語等級劃分為5級,通過計(jì)算即可得到隸屬度矩陣。
c)采用加權(quán)平均法對不同等級的評語集規(guī)定安全等級并賦值。
針對工業(yè)控制系統(tǒng)設(shè)備固件及協(xié)議存在的各類安全漏洞,本文提出了低干擾的脆弱性分析方法;實(shí)現(xiàn)了一個(gè)多協(xié)議標(biāo)語融合的細(xì)粒度設(shè)備識(shí)別模型,利用該模型自動(dòng)提取設(shè)備多維屬性特征并對其識(shí)別,提高細(xì)粒度設(shè)備識(shí)別的準(zhǔn)確率和時(shí)間效率,完成設(shè)備細(xì)粒度信息的快速自動(dòng)識(shí)別;最終通過設(shè)備信息與漏洞庫的模糊匹配,實(shí)現(xiàn)工業(yè)互聯(lián)網(wǎng)設(shè)備的低干擾脆弱性分析原型系統(tǒng)。