張耀方,張哲宇,曲海闊,張格,王子博,王佰玲
(1. 哈爾濱工業(yè)大學(xué)(威海)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山東 威海 264209;2. 國(guó)家工業(yè)信息安全發(fā)展研究中心,北京 100040;3. 哈爾濱工業(yè)大學(xué)網(wǎng)絡(luò)空間安全研究院,黑龍江 哈爾濱 150006)
隨著傳統(tǒng)工業(yè)網(wǎng)絡(luò)與互聯(lián)網(wǎng)的融合發(fā)展,工業(yè)網(wǎng)絡(luò)被攻擊的風(fēng)險(xiǎn)大大增加。尤其在工業(yè)控制(下文簡(jiǎn)稱(chēng)為工控)系統(tǒng)中,各種潛在風(fēng)險(xiǎn)導(dǎo)致系統(tǒng)安全性難以維護(hù),造成巨大財(cái)產(chǎn)損失,甚至危害生命。近10年,工控事件頻發(fā),如Stuxnet事件[1]、烏克蘭電網(wǎng)事件[2]以及WannaCry勒索病毒事件[3]。越來(lái)越多的工控攻擊事件引起人們的關(guān)注[4],提高大眾對(duì)工控網(wǎng)絡(luò)安全的整體認(rèn)知能夠?qū)Π踩烙鸬椒e極作用,因此對(duì)工控網(wǎng)絡(luò)的風(fēng)險(xiǎn)分析迫在眉睫。
由于工控攻擊呈現(xiàn)多步攻擊趨勢(shì),常見(jiàn)的基于模糊測(cè)試、層次分析法、博弈論思想的風(fēng)險(xiǎn)評(píng)估方法無(wú)法全面分析多步攻擊[5]。Swiler等[6]提出攻擊圖這一概念,并將攻擊圖應(yīng)用于網(wǎng)絡(luò)威脅分析中。攻擊圖通過(guò)枚舉可能攻擊路徑來(lái)預(yù)判攻擊者對(duì)目標(biāo)網(wǎng)絡(luò)的攻擊過(guò)程,定性地指導(dǎo)防御方加強(qiáng)網(wǎng)絡(luò)中脆弱節(jié)點(diǎn)的防御。同時(shí),將攻擊圖結(jié)合定量計(jì)算,可精準(zhǔn)分析薄弱節(jié)點(diǎn),以對(duì)其采取針對(duì)性防御措施,提高網(wǎng)絡(luò)安全性[7]。因此,對(duì)攻擊圖的量化計(jì)算及安全分析成為研究熱點(diǎn)。
攻擊圖中關(guān)鍵路徑的量化分析,是攻擊者與防御者共同關(guān)心的問(wèn)題。關(guān)鍵路徑指在攻擊圖中對(duì)于成功到達(dá)某一節(jié)點(diǎn)完成攻擊目標(biāo)的概率最大的路徑。受工控網(wǎng)絡(luò)操作流程帶來(lái)的級(jí)聯(lián)效應(yīng)的影響,滿(mǎn)足工控網(wǎng)絡(luò)的安全性需求要求攻擊圖中關(guān)鍵路徑的分析有著更高的效率。同時(shí),關(guān)鍵路徑分析速度的提升意味著防御的提前。在實(shí)際工控環(huán)境中,底層數(shù)據(jù)采集、中樞邏輯控制以及頂層系統(tǒng)管理等工控網(wǎng)絡(luò)的多種功能要求,導(dǎo)致攻擊圖中節(jié)點(diǎn)數(shù)較多且關(guān)系復(fù)雜。尤其是包含更多信息的動(dòng)態(tài)更新的大規(guī)模攻擊圖,其量化計(jì)算中存在耗時(shí)長(zhǎng)、占用資源多、動(dòng)態(tài)更新效率低的問(wèn)題。
在關(guān)鍵攻擊路徑的分析中,其計(jì)算效率取決于路徑中節(jié)點(diǎn)概率、更新概率、累計(jì)概率的計(jì)算效率。而對(duì)于關(guān)鍵節(jié)點(diǎn)的分析可以在動(dòng)態(tài)更新時(shí)提前削減更新節(jié)點(diǎn)數(shù)量。目前對(duì)于節(jié)點(diǎn)關(guān)鍵性的量化多從圖論方面考慮,但在工控環(huán)境中,節(jié)點(diǎn)關(guān)鍵性還受多種環(huán)境因素影響,不同漏洞節(jié)點(diǎn)的利用價(jià)值均不相等,因此還需結(jié)合工控環(huán)境因素對(duì)節(jié)點(diǎn)關(guān)鍵性進(jìn)行度量。
針對(duì)以上問(wèn)題,本文提出了一種利用計(jì)算貝葉斯攻擊圖關(guān)鍵節(jié)點(diǎn)集合進(jìn)行部分節(jié)點(diǎn)概率更新,以計(jì)算關(guān)鍵攻擊路徑的方法。該方法考慮多種工控環(huán)境影響因素計(jì)算攻擊圖關(guān)鍵節(jié)點(diǎn)割集,并對(duì)割集中節(jié)點(diǎn)的概率進(jìn)行更新計(jì)算,量化當(dāng)前攻擊圖路徑的被攻擊概率。本文的主要貢獻(xiàn)有以下兩方面。
1) 在考慮圖結(jié)構(gòu)的節(jié)點(diǎn)關(guān)鍵性的基礎(chǔ)上,為節(jié)點(diǎn)附加攻擊收益指標(biāo),提出一種計(jì)算攻擊圖關(guān)鍵節(jié)點(diǎn)集合的算法。
2) 提出針對(duì)攻擊圖中關(guān)鍵節(jié)點(diǎn)進(jìn)行攻擊概率動(dòng)態(tài)更新的策略,并在不同規(guī)模的工控網(wǎng)絡(luò)下進(jìn)行驗(yàn)證。
實(shí)驗(yàn)結(jié)果表明本文的方法能夠高效計(jì)算工控網(wǎng)絡(luò)攻擊圖的關(guān)鍵路徑攻擊概率,并可用于大規(guī)模工控網(wǎng)絡(luò)的量化計(jì)算,為攻擊圖實(shí)時(shí)分析提供依據(jù),為工控網(wǎng)絡(luò)提前防御策略的制定提供直觀的數(shù)據(jù)支撐。
攻擊圖以圖的形式將目標(biāo)網(wǎng)絡(luò)中的原子攻擊關(guān)聯(lián)起來(lái),展示多步驟攻擊路徑,是進(jìn)行定性安全分析的有效技術(shù)。攻擊圖安全分析領(lǐng)域中的研究熱點(diǎn)包括基于攻擊圖的量化計(jì)算,將攻擊圖與貝葉斯網(wǎng)絡(luò)等技術(shù)結(jié)合,在定性分析的基礎(chǔ)上實(shí)現(xiàn)圖節(jié)點(diǎn)以及攻擊路徑定量的準(zhǔn)確分析。
在攻擊圖量化計(jì)算方面,Poolsappasit等[8]使用貝葉斯攻擊圖(BAG)量化網(wǎng)絡(luò)遭到不同等級(jí)損害的風(fēng)險(xiǎn)。BAG模型考慮常用的網(wǎng)絡(luò)狀態(tài)之間因果關(guān)系及其被利用的可能性,采用貝葉斯信念網(wǎng)絡(luò)的概念,對(duì)不同安全條件下的損害進(jìn)行評(píng)估。此模型適用于對(duì)環(huán)境動(dòng)態(tài)分析的網(wǎng)絡(luò)部署階段,在單目標(biāo)分析的基礎(chǔ)上,增加了多目標(biāo)優(yōu)化的決策權(quán)衡,但該方法的可擴(kuò)展性和效率仍需提高。Gonzalez等[9]針對(duì)貝葉斯攻擊圖的靜態(tài)和動(dòng)態(tài)分析提出了一種有效的精確推斷技術(shù)。經(jīng)大量實(shí)驗(yàn)評(píng)估,該方法顯示出在時(shí)間復(fù)雜度和空間復(fù)雜度方面的優(yōu)勢(shì)。楊英杰等[10]對(duì)于屬性攻擊圖模型中的轉(zhuǎn)移概率度量問(wèn)題,給出了單步威脅轉(zhuǎn)移概率和綜合威脅轉(zhuǎn)移概率的度量算法,并解決了攻擊圖傳遞環(huán)路問(wèn)題。
王輝等[11]在攻擊路徑預(yù)測(cè)的研究中,改進(jìn)了基于貝葉斯推理的似然加權(quán)法,并對(duì)子路徑進(jìn)行成本收益分析。該方法給出了攻擊收益的數(shù)學(xué)模型,但其參數(shù)只能憑專(zhuān)家經(jīng)驗(yàn)獲得。張少俊等[12]同樣對(duì)似然加權(quán)法進(jìn)行改進(jìn),并提出一種支持攻擊證據(jù)之間時(shí)間偏序關(guān)系的攻擊圖節(jié)點(diǎn)置信度計(jì)算方法。該方法可有效提高置信度的準(zhǔn)確性,同時(shí)算法復(fù)雜度低,適用于處理大規(guī)模攻擊圖量化分析問(wèn)題。其與陳小軍等[13]提出的思想不同之處在于在攻擊圖模型中引入轉(zhuǎn)移概率表來(lái)刻畫(huà)單步攻擊的不確定性,利用節(jié)點(diǎn)置信度推斷攻擊概率,計(jì)算最大攻擊概率路徑。該方法在小規(guī)模網(wǎng)絡(luò)攻擊圖中可有效減少不可信報(bào)警,但由于其模型構(gòu)建依賴(lài)專(zhuān)家知識(shí)庫(kù),不適用于大規(guī)模網(wǎng)絡(luò)攻擊圖的意圖推斷和最大概率路徑計(jì)算。
在量化計(jì)算指標(biāo)方面,黃家輝等[14]對(duì)工控系統(tǒng)脆弱性量化進(jìn)行研究,考慮攻防強(qiáng)度、物理?yè)p失、信息損失因素,對(duì)漏洞等級(jí)進(jìn)行劃分。量化攻擊過(guò)程中原子攻擊的脆弱性,得到總攻擊期望最大的路徑。羅志勇等[15]在計(jì)算原子攻擊概率時(shí),結(jié)合漏洞價(jià)值、攻擊成本以及攻擊收益等因素,對(duì)貝葉斯攻擊圖進(jìn)行量化,并引入入侵意圖更新評(píng)估模型,實(shí)現(xiàn)攻擊圖風(fēng)險(xiǎn)的動(dòng)態(tài)評(píng)估。
但目前關(guān)于攻擊圖量化計(jì)算的研究中,大部分指標(biāo)仍依靠專(zhuān)家經(jīng)驗(yàn)獲得。馬春光等[16]針對(duì)攻擊圖評(píng)估過(guò)于依賴(lài)專(zhuān)家知識(shí)庫(kù),無(wú)法考慮攻擊者意愿的問(wèn)題,提出了一個(gè)動(dòng)態(tài)評(píng)估模型。其將攻擊者意愿與原子攻擊性質(zhì)融入貝葉斯攻擊圖的動(dòng)態(tài)推理中,提升了風(fēng)險(xiǎn)評(píng)估中攻擊估算的合理性,適用于實(shí)際網(wǎng)絡(luò)環(huán)境下的動(dòng)態(tài)風(fēng)險(xiǎn)評(píng)估。高夢(mèng)州等[17]建立了基于專(zhuān)家知識(shí)庫(kù)、脆弱性庫(kù)的脆弱性利用規(guī)則庫(kù)。利用參數(shù)的初級(jí)量化和矩陣判斷法計(jì)算攻擊收益,對(duì)工控網(wǎng)絡(luò)安全風(fēng)險(xiǎn)進(jìn)行評(píng)估。
葉云等[18]對(duì)于大規(guī)模攻擊圖的節(jié)點(diǎn)概率計(jì)算的耗時(shí)問(wèn)題,提出了節(jié)點(diǎn)概率的近似計(jì)算方法,以犧牲概率精確度的策略提升計(jì)算效率,該方法適用于復(fù)雜的大規(guī)模攻擊圖。本文方法與其提升計(jì)算效率的目的相同,但葉云等的方法是針對(duì)攻擊圖全局節(jié)點(diǎn)進(jìn)行近似計(jì)算,而本文針對(duì)耗時(shí)問(wèn)題的優(yōu)化思想在于利用節(jié)點(diǎn)概率計(jì)算方法,只針對(duì)部分節(jié)點(diǎn)概率進(jìn)行動(dòng)態(tài)更新。
在攻擊圖割集計(jì)算方面,劉貞宇等[19]基于攻擊圖的幾何性質(zhì),在保留攻擊圖基本網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上對(duì)其進(jìn)行分割,將大型攻擊圖劃分成多個(gè)子攻擊圖進(jìn)行分析。吳金宇等[20]將最優(yōu)原子攻擊修復(fù)集問(wèn)題歸結(jié)于攻擊圖中的最小S-T割集問(wèn)題。利用原子攻擊拆分加權(quán)重構(gòu)攻擊圖,并采用最大流算法,對(duì)攻擊圖的最優(yōu)原子集進(jìn)行求解。其利用最優(yōu)集思想解決問(wèn)題的思路與本文類(lèi)似,該方法計(jì)算效率高、可擴(kuò)展性較好,但該方法僅對(duì)攻擊圖進(jìn)行最優(yōu)節(jié)點(diǎn)集合層面的分析,沒(méi)有進(jìn)行量化計(jì)算。彭武等[21]利用最小割集思想對(duì)入侵意圖進(jìn)行阻斷。該方法計(jì)算可達(dá)到攻擊意圖的所有攻擊路徑及其攻擊概率,結(jié)合最小頂點(diǎn)割集思想,實(shí)現(xiàn)防護(hù)最小數(shù)目節(jié)點(diǎn)來(lái)達(dá)到阻斷攻擊意圖的目的。與彭武等計(jì)算出路徑概率,再利用最小割算法進(jìn)行防御的思想相反,本文利用關(guān)鍵節(jié)點(diǎn)割集對(duì)攻擊路徑概率進(jìn)行計(jì)算以實(shí)現(xiàn)風(fēng)險(xiǎn)量化。并且,彭武等提出的方法中最小頂點(diǎn)割集僅在圖結(jié)構(gòu)方面實(shí)現(xiàn)最小數(shù)目,沒(méi)有考慮節(jié)點(diǎn)附加價(jià)值。
攻擊圖是一種利用可獲取資源進(jìn)行多步攻擊過(guò)程展示的建模方法。對(duì)于從初始節(jié)點(diǎn)開(kāi)始,到達(dá)某一目的節(jié)點(diǎn)的攻擊路徑,可拆分為多步攻擊行為。每一步攻擊作為原子動(dòng)作,完成攻擊動(dòng)作后可獲得相應(yīng)權(quán)限,以此條件進(jìn)行下一步攻擊動(dòng)作,多步攻擊行為級(jí)聯(lián)達(dá)到最終攻擊目標(biāo)。攻擊圖通過(guò)定性分析,展示了目標(biāo)網(wǎng)絡(luò)中的多種威脅途徑,結(jié)合量化計(jì)算可對(duì)威脅程度進(jìn)行精確評(píng)估。
定義1攻擊圖為一個(gè)有向無(wú)環(huán)圖,可表示為AG= {S,E,Pr},其中,S表示攻擊圖中節(jié)點(diǎn)集合,S= {A,D},A表示原子攻擊,D表示設(shè)備路徑二元組,表示為D={src,dst}。其中,src表示動(dòng)作起始設(shè)備,dst表示動(dòng)作目標(biāo)設(shè)備。N表示漏洞利用節(jié)點(diǎn),每進(jìn)行一次攻擊動(dòng)作后,可獲取的設(shè)備權(quán)限。對(duì)于漏洞利用節(jié)點(diǎn),其包含3種類(lèi)型,即N=Nb∪Nm∪Nt。其中,N b為初始節(jié)點(diǎn)集合,定 義 為Nb={nb?Nb|■n j?N,nj?Pa(nb)}。Pa(nb)表示nb的父節(jié)點(diǎn)集合, 定義某節(jié)點(diǎn)的父節(jié)點(diǎn)為指向該點(diǎn)的所有節(jié)點(diǎn)集合。Nm為中間節(jié)點(diǎn)集合,定義為Nm= {nm?Nm|?nm?Nm,Pa(nm)?N? Ch(nm) ?N}。其中,Ch(nm)表示nm的子節(jié)點(diǎn)集合,定義其子節(jié)點(diǎn)為該點(diǎn)指向的所有節(jié)點(diǎn)集合。Nt為目標(biāo)設(shè)備資源節(jié)點(diǎn)集合,定義為Nt={nt?N t|■n j?N,nj?Ch(nt)}。E表示連接節(jié)點(diǎn)的有向邊集合,其含義是只有達(dá)到攻擊行為前置條件后,才可觸發(fā)某一攻擊行為;同時(shí),某一攻擊行為發(fā)生后,導(dǎo)致的設(shè)備權(quán)限的改變(稱(chēng)為后置條件),滿(mǎn)足下一步原子攻擊的條件的狀態(tài)后,可執(zhí)行下一步攻擊。Pr為攻擊行為發(fā)生的概率,Pr∈[0,1]。
本文貝葉斯攻擊圖中每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)漏洞利用,取值為0或1。取值為0表示對(duì)應(yīng)的漏洞未被利用,取值為1表示對(duì)應(yīng)的漏洞被利用。該節(jié)點(diǎn)被利用的概率為其中,xi是貝葉斯攻擊圖節(jié)點(diǎn)對(duì)應(yīng)的漏洞,Pr(xi=1)表示該節(jié)點(diǎn)被利用的概率,p是概率值,取值范圍為0到1。
定義在已知節(jié)點(diǎn)的父節(jié)點(diǎn)的狀態(tài)下,節(jié)點(diǎn)被利用的條件概率為p(xi|Pa(xi))。如果該節(jié)點(diǎn)被利用的前提條件是其所有父節(jié)點(diǎn)都被利用,則條件概率計(jì)算如式(2)所示。
其中,pij是從父節(jié)點(diǎn)xj利用子節(jié)點(diǎn)ix的概率。
當(dāng)存在一個(gè)父節(jié)點(diǎn)沒(méi)有被利用,則該節(jié)點(diǎn)就不可能被利用,因此條件概率為0。否則,條件概率為從所有父節(jié)點(diǎn)利用該節(jié)點(diǎn)的概率乘積。
如果該節(jié)點(diǎn)被利用的前提條件是至少有一個(gè)父節(jié)點(diǎn)被利用,則條件概率的計(jì)算公式如下:
當(dāng)該節(jié)點(diǎn)的所有父節(jié)點(diǎn)都沒(méi)有被利用,該節(jié)點(diǎn)才不可能被利用,條件概率為0。否則,條件概率為父節(jié)點(diǎn)未能利用該節(jié)點(diǎn)的概率乘積的補(bǔ)。
貝葉斯攻擊圖中多個(gè)漏洞利用同時(shí)發(fā)生的概率為該攻擊的漏洞利用組合的聯(lián)合概率。被定義為在節(jié)點(diǎn)的父節(jié)點(diǎn)被攻擊者利用后,該節(jié)點(diǎn)被利用的條件概率的乘積:
其中,X= {x1,x2,…,xn}對(duì)應(yīng)貝葉斯攻擊圖中一組漏洞利用。
利用貝葉斯攻擊圖的條件概率以及全概率公式推導(dǎo)出節(jié)點(diǎn)的邊概率,即攻擊者成功攻擊節(jié)點(diǎn)的概率,如式(5)所示。其中,X表示攻擊圖中所有節(jié)點(diǎn)對(duì)應(yīng)的漏洞利用的集合,X-xi表示除去漏洞利用xi的集合。
本文假設(shè)所有漏洞節(jié)點(diǎn)獨(dú)立利用,即只要存在成功利用的父節(jié)點(diǎn),子節(jié)點(diǎn)即滿(mǎn)足利用條件。在實(shí)際情況中,對(duì)于同一設(shè)備,其利用某一漏洞取得權(quán)限后,權(quán)限不會(huì)丟失。因此,當(dāng)某一漏洞成功利用后,攻擊者即可獲得該設(shè)備相應(yīng)的權(quán)限,而不需要其余漏洞作為輔助;當(dāng)多個(gè)漏洞均可利用時(shí),選取該設(shè)備所有漏洞中攻擊影響最大的漏洞,即攻擊者在該設(shè)備上獲取的權(quán)限。
對(duì)于靜態(tài)攻擊圖概率的計(jì)算,無(wú)法考慮到網(wǎng)絡(luò)環(huán)境的更新以及確定意向攻擊對(duì)攻擊圖概率的影響。因此,目前有針對(duì)此問(wèn)題提出的動(dòng)態(tài)貝葉斯攻擊圖的解決辦法,但其存在計(jì)算效率較低的問(wèn)題。
經(jīng)研究分析發(fā)現(xiàn),工控環(huán)境中并非所有節(jié)點(diǎn)都屬于關(guān)鍵節(jié)點(diǎn)。實(shí)際情況中,無(wú)論是攻擊者還是防御者,都主要關(guān)注幾個(gè)關(guān)鍵節(jié)點(diǎn),對(duì)其進(jìn)行攻擊或重點(diǎn)防護(hù)。因此,本文利用動(dòng)態(tài)更新思想結(jié)合關(guān)鍵節(jié)點(diǎn)集計(jì)算,改進(jìn)靜態(tài)攻擊圖的一次性計(jì)算問(wèn)題。一般攻擊圖靜態(tài)概率計(jì)算根據(jù)節(jié)點(diǎn)概率來(lái)單向計(jì)算節(jié)點(diǎn)關(guān)鍵性,本文考慮到全局網(wǎng)絡(luò)對(duì)單一節(jié)點(diǎn)的影響,利用原始節(jié)點(diǎn)概率計(jì)算節(jié)點(diǎn)關(guān)鍵性,獲得攻擊圖關(guān)鍵節(jié)點(diǎn)集合,并根據(jù)節(jié)點(diǎn)關(guān)鍵性反向更新原始節(jié)點(diǎn)概率。同時(shí),針對(duì)確定意向的攻擊行為,重新量化意向可達(dá)節(jié)點(diǎn)的節(jié)點(diǎn)概率。攻擊圖關(guān)鍵節(jié)點(diǎn)選取算法如算法1所示。
算法1攻擊圖關(guān)鍵節(jié)點(diǎn)選取算法
輸入貝葉斯攻擊圖的點(diǎn)和邊、初始節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)、漏洞利用節(jié)點(diǎn)概率
輸出攻擊圖關(guān)鍵節(jié)點(diǎn)集合
算法1的2)~3)為初始化變量,首先遍歷貝葉斯攻擊圖獲得所有路徑和每個(gè)節(jié)點(diǎn)在路徑中出現(xiàn)的頻率(4)),然后去除攻擊圖的開(kāi)始和目標(biāo)節(jié)點(diǎn)(5))。對(duì)所有節(jié)點(diǎn)進(jìn)行統(tǒng)計(jì),創(chuàng)建字典freqDict,其鍵為頻率,值為所有具有相同頻率的節(jié)點(diǎn)(6)~9))。接下來(lái)10)~20)對(duì)具有相同頻率的節(jié)點(diǎn)計(jì)算攻擊收益(14))替換頻率(15)),根據(jù)攻擊收益進(jìn)行排序(17)~18)),確定要選取的順序。節(jié)點(diǎn)出現(xiàn)頻率不同,則選取頻率較大節(jié)點(diǎn),最后變量nodesSorted的每個(gè)元素是根據(jù)原始的頻率進(jìn)行排序,每個(gè)元素又是一組頻率相同的節(jié)點(diǎn),其根據(jù)攻擊收益進(jìn)行排序。21)~31)是根據(jù)之前的排序從高到低選取節(jié)點(diǎn),刪除具有該節(jié)點(diǎn)的路徑并將其添加到關(guān)鍵節(jié)點(diǎn)集(27)~31)),直到所有路徑被刪除(24)~25))最后更新關(guān)鍵節(jié)點(diǎn)的概率(32))。
利用頻率相同的節(jié)點(diǎn)在路徑覆蓋度層面關(guān)鍵程度相同,需要進(jìn)一步判斷節(jié)點(diǎn)本身的重要性。本文參考最小頂點(diǎn)割集思想,對(duì)關(guān)鍵節(jié)點(diǎn)進(jìn)行選取。攻擊圖的最小頂點(diǎn)割集是指將一個(gè)連通圖變成兩個(gè)連通分量所需刪除的最少的點(diǎn)的集合。該思想僅在圖的路徑層面對(duì)割集進(jìn)行選取,其假設(shè)所有點(diǎn)的權(quán)重價(jià)值均相等。
本文采取比較攻擊收益方式進(jìn)行割集節(jié)點(diǎn)選取。攻擊收益的定義如下。
定義2攻擊收益指攻擊者在利用漏洞完成對(duì)某一節(jié)點(diǎn)的攻擊后,所能獲得的收益。可表示為:Inc(xi)= Pr(xi)? Sc(xi)。其中,Inc(xi)表示節(jié)點(diǎn)xi的攻擊收益,Pr(xi)表示該節(jié)點(diǎn)的漏洞攻擊概率,Sc(xi)表示漏洞危害得分。對(duì)于攻擊收益的量化,本文采用貝葉斯攻擊圖的原始漏洞攻擊概率與通用漏洞評(píng)分系統(tǒng)(CVSS)漏洞危害最終評(píng)分進(jìn)行計(jì)算。在漏洞危害相同的情況下,漏洞攻擊概率增大,其攻擊收益隨之增加;在漏洞攻擊概率相同情況下,漏洞危害越大,其攻擊收益越大。
CVSS漏洞評(píng)分的基礎(chǔ)評(píng)分為普適性評(píng)分,然而環(huán)境對(duì)漏洞危害性的影響不可忽略。尤其在安全程度越來(lái)越高的工控網(wǎng)絡(luò)中,其漏洞的利用環(huán)境以及影響程度不同于傳統(tǒng)網(wǎng)絡(luò)。本文對(duì)3.3節(jié)算法計(jì)算出的攻擊圖關(guān)鍵節(jié)點(diǎn)集合,參考文獻(xiàn)[14]中使用的量化方法,對(duì)影響指標(biāo)的選取以及客觀性進(jìn)行優(yōu)化。利用灰色關(guān)聯(lián)度分析法對(duì)關(guān)鍵漏洞節(jié)點(diǎn)的概率進(jìn)行重新計(jì)算,考慮工控關(guān)鍵影響因素之間的聯(lián)系,以及各種因素對(duì)漏洞利用節(jié)點(diǎn)的影響,精確量化關(guān)鍵漏洞節(jié)點(diǎn)在工控環(huán)境下的概率變化。
3.4.1計(jì)算指標(biāo)
文獻(xiàn)[14]中防御強(qiáng)度、攻擊強(qiáng)度等量化指標(biāo)需要參考大量專(zhuān)家經(jīng)驗(yàn)作為計(jì)算依據(jù),本文采用CVSS中各項(xiàng)漏洞指標(biāo)對(duì)關(guān)鍵漏洞節(jié)點(diǎn)的概率進(jìn)行更新計(jì)算,漏洞攻擊概率定義如下。
定義3漏洞攻擊概率通常受漏洞可利用性以及漏洞影響程度兩個(gè)指標(biāo)影響(詳細(xì)指標(biāo)度量如表1所示),可表示為Prnew(xi)=Ex(xi)?Im(xi)。其中,Prnew(xi)表示節(jié)點(diǎn)xi的更新攻擊概率,Ex(xi)表示該節(jié)點(diǎn)的漏洞可利用性,Im(xi)表示漏洞影響程度(Impact)。
(1)漏洞可利用性
漏洞可利用性指某一漏洞被攻擊者利用從而進(jìn)行攻擊的可能性,是漏洞的固有屬性。當(dāng)漏洞可利用性增大時(shí),該漏洞的攻擊概率也會(huì)增大,漏洞可利用性與漏洞攻擊概率呈正相關(guān)。
漏洞可利用性根據(jù)CVSS中的基本指標(biāo)進(jìn)行量化計(jì)算。CVSS中對(duì)漏洞可利用性的評(píng)分分為3個(gè)方面:訪問(wèn)向量(AV)、訪問(wèn)復(fù)雜度(AC)、身份認(rèn)證(AU)[22]。
(2)漏洞影響程度
漏洞影響程度指當(dāng)某一漏洞被成功利用后,其對(duì)漏洞所在環(huán)境造成的破壞或影響。當(dāng)漏洞影響程度增大時(shí),該漏洞的攻擊概率同樣也會(huì)增大,漏洞影響程度與漏洞攻擊概率成正相關(guān)。
漏洞影響程度由系統(tǒng)性能影響與工控設(shè)備資產(chǎn)價(jià)值兩方面進(jìn)行量化。系統(tǒng)性能影響分為3個(gè)方面:機(jī)密性影響(C)、完整性影響(I)、可用性影響(E)(如表1所示)[22]。資產(chǎn)價(jià)值(DV)則根據(jù)設(shè)備所在的不同層次,以及每種設(shè)備的執(zhí)行功能、控制范圍、與其余設(shè)備關(guān)聯(lián)程度的不同情況所決定。設(shè)備對(duì)系統(tǒng)影響程度越大,該設(shè)備價(jià)值越高。本文列出了常見(jiàn)工控設(shè)備的影響程度,如表2所示。
表1 漏洞概率影響因素Table 1 Vulnerability probability influencing factors
表2 工控設(shè)備的影響程度Table 2 Industrial control equipment impact
3.4.2灰色關(guān)聯(lián)度分析法
兩個(gè)因素隨時(shí)間或不同對(duì)象而變化的關(guān)聯(lián)性大小的量度,被稱(chēng)為關(guān)聯(lián)度?;疑P(guān)聯(lián)度分析法作為衡量因素間關(guān)聯(lián)程度的一種方法,可對(duì)上述多種影響工控環(huán)境的因素進(jìn)行關(guān)聯(lián)度量化,以此作為考慮多方面因素對(duì)關(guān)鍵漏洞節(jié)點(diǎn)進(jìn)行概率更新計(jì)算的依據(jù)。灰色關(guān)聯(lián)度分析法計(jì)算過(guò)程如下。
首先,設(shè)有n個(gè)被評(píng)價(jià)目標(biāo),每個(gè)被評(píng)價(jià)目標(biāo)有p個(gè)評(píng)價(jià)指標(biāo)。則第i個(gè)對(duì)象描述為
在各項(xiàng)指標(biāo)中選出最優(yōu)值組成參考序列0x:
關(guān)聯(lián)系數(shù)iζ表示第i個(gè)評(píng)價(jià)目標(biāo)與參考序列間的關(guān)系:
其中,ρ為分辨系數(shù)。
然后計(jì)算關(guān)聯(lián)度γ0i,γ0i表示各指標(biāo)與參考序列間的關(guān)聯(lián)關(guān)系,計(jì)算如下:
其中,Wk為權(quán)重,Wk? (0,1)。
最后,利用定義3計(jì)算出更新后節(jié)點(diǎn)的漏洞利用概率。
動(dòng)態(tài)貝葉斯攻擊圖考慮全局節(jié)點(diǎn)環(huán)境的實(shí)時(shí)變化情況,并對(duì)其進(jìn)行概率更新。由于工控網(wǎng)絡(luò)節(jié)點(diǎn)較多,且節(jié)點(diǎn)間關(guān)聯(lián)關(guān)系較為復(fù)雜,全局節(jié)點(diǎn)動(dòng)態(tài)更新效率較低。
本文針對(duì)3.3節(jié)算法獲得的關(guān)鍵節(jié)點(diǎn)集合,利用3.4節(jié)的概率計(jì)算方法,只更新關(guān)鍵節(jié)點(diǎn)的漏洞利用概率。遍歷攻擊圖中全部攻擊路徑,重新計(jì)算得出每條攻擊路徑概率,比較得出最大攻擊概率的路徑,并將其作為攻擊圖的關(guān)鍵路徑。
部分更新的貝葉斯攻擊圖關(guān)鍵路徑概率計(jì)算如算法2所示。
算法2部分更新的貝葉斯攻擊圖關(guān)鍵路徑概率計(jì)算算法
輸入所有漏洞利用節(jié)點(diǎn)、初始節(jié)點(diǎn)、目標(biāo)節(jié)點(diǎn)、漏洞利用節(jié)點(diǎn)概率
輸出貝葉斯攻擊圖、所有路徑概率
算法的2)~3)為初始化變量,4)將開(kāi)始節(jié)點(diǎn)加入隊(duì)列,5)~15)為正向廣度優(yōu)先遍歷生成漏洞利用的向前依賴(lài)圖,6)出隊(duì)列,遍歷從開(kāi)始節(jié)點(diǎn)的所有可達(dá)節(jié)點(diǎn),對(duì)于當(dāng)前節(jié)點(diǎn),遍歷所有可能的漏洞利用(9)),然后通過(guò)判斷當(dāng)前節(jié)點(diǎn)的后置條件(8))是否能滿(mǎn)足遍歷的漏洞利用的前置條件(11)),如果滿(mǎn)足則加邊(12)),如果該漏洞沒(méi)有利用過(guò),則將其加入隊(duì)列,并標(biāo)記訪問(wèn)(13)~15))。獲得向前依賴(lài)圖后,需要進(jìn)行去環(huán),去除重復(fù)訪問(wèn)的邊(16))。然后再?gòu)哪繕?biāo)節(jié)點(diǎn)開(kāi)始逆向廣度優(yōu)先遍歷之前生成的向前依賴(lài)圖(行17)~30))生成攻擊圖,這樣能保證圖中所有節(jié)點(diǎn)從開(kāi)始和目標(biāo)節(jié)點(diǎn)都可達(dá)。獲得原始攻擊圖后,根據(jù)漏洞利用概率計(jì)算貝葉斯攻擊圖(32)),然后利用關(guān)鍵節(jié)點(diǎn)算法更新漏洞利用的概率(33))后,再計(jì)算更新概率后的貝葉斯攻擊圖(34)),最后遍歷貝葉斯攻擊圖,根據(jù)節(jié)點(diǎn)貝葉斯概率獲得攻擊圖路徑概率(35))。
本文采用文獻(xiàn)[23]的拓?fù)浣Y(jié)構(gòu)來(lái)舉例說(shuō)明本文所提方法的工作原理,并對(duì)該方法進(jìn)行驗(yàn)證。實(shí)驗(yàn)采用的拓?fù)浣Y(jié)構(gòu)源于實(shí)際工控網(wǎng)絡(luò)中的架構(gòu),增加了結(jié)構(gòu)的合理性以及真實(shí)性,但對(duì)規(guī)模進(jìn)行了限制。此外,該拓?fù)浣Y(jié)構(gòu)增加了不同類(lèi)型的工控設(shè)備,并為不同設(shè)備設(shè)置了常見(jiàn)的漏洞,以使實(shí)驗(yàn)結(jié)果更加全面,設(shè)備漏洞情況如表3所示。
表3 設(shè)備漏洞情況Table 3 Device vulnerability
實(shí)驗(yàn)拓?fù)鋱D如圖1所示。實(shí)驗(yàn)室采用的拓?fù)浣Y(jié)構(gòu)由4個(gè)區(qū)域組成:外部區(qū)域、DMZ區(qū)、監(jiān)視控制區(qū)、流程操作區(qū)。外部區(qū)域設(shè)置了一個(gè)遠(yuǎn)程節(jié)點(diǎn)i,通過(guò)該節(jié)點(diǎn)攻擊者可以登錄并開(kāi)始指定目標(biāo)的攻擊。DMZ區(qū)與外部區(qū)域的連接由防火墻fw1進(jìn)行保護(hù)。DMZ區(qū)中包含兩個(gè)服務(wù)器,其允許訪問(wèn)公司內(nèi)部網(wǎng)絡(luò)。監(jiān)視控制區(qū)由防火墻fw2連接到DMZ區(qū),包括服務(wù)器和工作站,用于控制流程操作區(qū)的現(xiàn)場(chǎng)設(shè)備,完成數(shù)據(jù)收集統(tǒng)計(jì)及傳輸[23]。其中,ew1和ew2作為兩個(gè)工作站,分別配置了西門(mén)子工作臺(tái)與羅克韋爾工作臺(tái)。流程操作區(qū)由3個(gè)執(zhí)行單元(cell)構(gòu)成,包括可編程邏輯控制器(PLC)以及現(xiàn)場(chǎng)設(shè)備。本拓?fù)涞?個(gè)執(zhí)行單元分別來(lái)自不同供應(yīng)商:西門(mén)子、羅克韋爾、施耐德。具體設(shè)備訪問(wèn)關(guān)系如表4所示。
圖1 實(shí)驗(yàn)拓?fù)鋱DFigure 1 Experimental topology graph
本文依照實(shí)驗(yàn)拓?fù)浣Y(jié)構(gòu)以及設(shè)備漏洞關(guān)系,利用廣度優(yōu)先搜索算法,以PLC為攻擊者目標(biāo)節(jié)點(diǎn),生成帶有貝葉斯原始概率的攻擊圖,如圖2所示。節(jié)點(diǎn)“MS Windows(Web,ew1)(0.697 5)”的含義是攻擊者在獲取到Web權(quán)限后,利用ew1上MS Windows所包含的漏洞,獲取ew1上的權(quán)限。0.697 5表示該漏洞利用的發(fā)生概率,即從Web利用MS Windows成功到達(dá)ew1的概率。
圖2 貝葉斯原始攻擊概率攻擊圖Figure 2 Bayes primitive probability attack graph
4.2.1關(guān)鍵節(jié)點(diǎn)選取算法有效性分析
兩種算法下的關(guān)鍵頂點(diǎn)集如圖3所示。其中,圖3(a)是利用文獻(xiàn)[21]中的算法計(jì)算出的割集,包含3個(gè)漏洞利用節(jié)點(diǎn):{CCW(Web,ew2)(0.66),
WinCC(ew1,scada)(0.673 9),WinCC(PLC1,scada)(0.667 9)};圖3(b)是利用本文提出的算法計(jì)算出的割集,包含4個(gè)漏洞利用節(jié)點(diǎn):{CCW(Web,ew2)(0.66),WinCC(ew1,scada)(0.673 9),WinCC(PLC1,scada)(0.667 9),Scheneider Web(scada, PLC3)(0.735 4)}。利用本文提出的算法計(jì)算出的關(guān)鍵節(jié)點(diǎn)集包含了利用文獻(xiàn)[21]算法計(jì)算出的集合中的所有節(jié)點(diǎn),并且多了一個(gè)漏洞利用節(jié)點(diǎn)Scheneider Web(scada, PLC3)(0.735 4)。在實(shí)際環(huán)境中分析,該漏洞利用節(jié)點(diǎn)的目標(biāo)權(quán)限獲取設(shè)備為PLC3,PLC為工控網(wǎng)絡(luò)中較為重要的設(shè)備,一旦PLC被攻擊者攻擊,會(huì)直接對(duì)控制邏輯以及底層現(xiàn)場(chǎng)設(shè)備產(chǎn)生直接影響。同時(shí),該漏洞利用的概率為0.735 4,相比于一般節(jié)點(diǎn),其有較高的被利用概率。本次利用的漏洞為PLC3上Scheneider Web包含的漏洞CVE-2014-0754,其CVSS2.0評(píng)分(由于CVSS2.0覆蓋較多漏洞的詳細(xì)評(píng)分,因此本文選用CVSS2.0標(biāo)準(zhǔn)為參考量化指標(biāo))為滿(mǎn)分10分,意味著該漏洞極其危險(xiǎn)。一旦遠(yuǎn)程攻擊者成功利用漏洞,其可通過(guò)發(fā)送特制的HTTP請(qǐng)求利用訪問(wèn)任意資源。因此,從攻擊概率、攻擊影響方面考慮,該點(diǎn)的攻擊收益很高,將該點(diǎn)設(shè)置為關(guān)鍵節(jié)點(diǎn)。而文獻(xiàn)[21]以及文獻(xiàn)[24]中算法計(jì)算出的3個(gè)節(jié)點(diǎn),只從圖結(jié)構(gòu)方面考慮,僅計(jì)算最小頂點(diǎn)割集,但在節(jié)點(diǎn)價(jià)值各不相同的工控環(huán)境下,其可能漏掉非最小割集中的關(guān)鍵節(jié)點(diǎn)。
圖3 兩種算法下的攻擊圖關(guān)鍵節(jié)點(diǎn)集合Figure 3 Key node set of the attack graph under the two algorithms
表5 列出了攻擊圖節(jié)點(diǎn)數(shù)從21~249的5種規(guī)模的攻擊圖關(guān)鍵節(jié)點(diǎn)計(jì)算的算法性能。本文選取算法耗時(shí)、占用內(nèi)存兩種性能指標(biāo)進(jìn)行對(duì)比實(shí)驗(yàn)。從表中數(shù)據(jù)可知,在173個(gè)節(jié)點(diǎn)規(guī)模之前,本文算法耗時(shí)和占用內(nèi)存略小于文獻(xiàn)[21]提出的算法(頂點(diǎn)割集)。在249個(gè)節(jié)點(diǎn)前,文獻(xiàn)[24]算法(矩陣割集)消耗內(nèi)存較小,小規(guī)模計(jì)算的內(nèi)存消耗優(yōu)于本文算法。但在249個(gè)節(jié)點(diǎn)的規(guī)模時(shí),頂點(diǎn)割集算法占用內(nèi)存從173個(gè)節(jié)點(diǎn)時(shí)的26.5 MB爆炸增長(zhǎng)至13.45 GB。而本文算法的內(nèi)存占用量增長(zhǎng)幅度仍較小,整體呈線性增長(zhǎng)。
表5 關(guān)鍵節(jié)點(diǎn)算法性能Table 5 Key node algorithm performance
在算法耗時(shí)方面,頂點(diǎn)割集算法在21、59個(gè)節(jié)點(diǎn)規(guī)模時(shí),其耗時(shí)表現(xiàn)與本文的算法基本持平。但是在97個(gè)節(jié)點(diǎn)時(shí),其計(jì)算時(shí)間是本文算法的兩倍。從97個(gè)節(jié)點(diǎn)開(kāi)始的3個(gè)規(guī)模攻擊圖中,頂點(diǎn)割集算法計(jì)算耗時(shí)呈指數(shù)增長(zhǎng),在173個(gè)節(jié)點(diǎn)時(shí),耗時(shí)高達(dá)475 s,而本文算法耗時(shí)0.04 s。在249個(gè)節(jié)點(diǎn)時(shí),其耗時(shí)由計(jì)算估計(jì)約52 h,本文算法計(jì)算耗時(shí)仍小于0.1 s。矩陣割集算法在21個(gè)節(jié)點(diǎn)規(guī)模下表現(xiàn)出優(yōu)異的計(jì)算耗時(shí),優(yōu)于本文算法以及頂點(diǎn)割集算法,但隨著節(jié)點(diǎn)數(shù)的增長(zhǎng),該方法耗時(shí)呈爆炸式增長(zhǎng),97個(gè)節(jié)點(diǎn)時(shí)耗時(shí)超過(guò)2 h,173個(gè)節(jié)點(diǎn)耗時(shí)無(wú)法經(jīng)過(guò)實(shí)驗(yàn)計(jì)算,不適用于大規(guī)模計(jì)算。
4.2.2關(guān)鍵路徑選取策略有效性分析
根據(jù)4.2.1節(jié)實(shí)驗(yàn)得到的4個(gè)關(guān)鍵節(jié)點(diǎn),利用3.4節(jié)所提出的算法進(jìn)行概率計(jì)算,并更新節(jié)點(diǎn)概率。更新前節(jié)點(diǎn)概率如圖2所示,更新后的節(jié)點(diǎn)概率如圖4所示。在更新完關(guān)鍵節(jié)點(diǎn)集合中所有節(jié)點(diǎn)概率后,利用式(5)重新計(jì)算出每條攻擊路徑的攻擊概率。列出了以PLC2為直接攻擊節(jié)點(diǎn)的攻擊路徑如表6所示。
圖4 最大攻擊路徑概率攻擊圖Figure 4 Maximum attack path probability attack graph
表6 攻擊路徑概率Table 6 Attack path probability
如表7所示,本文采用對(duì)全局節(jié)點(diǎn)更新概率計(jì)算關(guān)鍵路徑與只更新關(guān)鍵節(jié)點(diǎn)概率計(jì)算關(guān)鍵攻擊路徑兩種更新策略進(jìn)行計(jì)算耗時(shí)以及占用內(nèi)存兩方面對(duì)比實(shí)驗(yàn)。在21個(gè)攻擊圖節(jié)點(diǎn)到1 161個(gè)攻擊圖節(jié)點(diǎn)中設(shè)置了9種規(guī)模的攻擊圖實(shí)驗(yàn)。在占用內(nèi)存方面,兩種策略表現(xiàn)基本相同,且對(duì)于節(jié)點(diǎn)數(shù)大幅增長(zhǎng)的情況,占用內(nèi)存數(shù)沒(méi)有較大幅增長(zhǎng)。
表7 更新節(jié)點(diǎn)策略性能Table 7 Update node strategy performance
在計(jì)算耗時(shí)方面,本文用折線圖的方式直觀地展示兩種策略的耗時(shí)情況,如圖5所示。從圖5可以看出兩種策略隨著節(jié)點(diǎn)數(shù)不斷增大,其耗時(shí)呈線性增長(zhǎng)。但全局節(jié)點(diǎn)更新時(shí)間增長(zhǎng)函數(shù)的斜率明顯大于部分節(jié)點(diǎn)更新。由于兩種策略的計(jì)算耗時(shí)相差數(shù)值在攻擊圖節(jié)點(diǎn)數(shù)較小時(shí)并不明顯,在21個(gè)節(jié)點(diǎn)時(shí),全局節(jié)點(diǎn)更新耗時(shí)0.026 88 s,部分節(jié)點(diǎn)更新耗時(shí)為0.002 119 s,相差0.024 761 s,但全局更新耗時(shí)約為部分節(jié)點(diǎn)更新耗時(shí)的13倍。在1 161個(gè)節(jié)點(diǎn)時(shí),全局節(jié)點(diǎn)更新耗時(shí)1.573 4 s,部分節(jié)點(diǎn)更新耗時(shí)為0.115 1 s,全局更新耗時(shí)仍約為部分節(jié)點(diǎn)更新耗時(shí)的14倍,但其耗時(shí)相差1.458 3 s。經(jīng)數(shù)據(jù)分析可知,本文的部分更新策略在攻擊圖規(guī)模越大時(shí),效果越好。本文在關(guān)鍵路徑計(jì)算結(jié)果與傳統(tǒng)算法相同的情況下,耗時(shí)更低,可應(yīng)用于大規(guī)模工控網(wǎng)絡(luò)的關(guān)鍵路徑計(jì)算中。
圖5 全局/部分更新算法耗時(shí)對(duì)比Figure 5 Full/partial update algorithm time-consuming comparision
本文主要研究大規(guī)模工控網(wǎng)絡(luò)下攻擊圖的關(guān)鍵路徑選取問(wèn)題,并提出了一種基于攻擊收益割集選取關(guān)鍵節(jié)點(diǎn)集合的算法,同時(shí)提出了以部分更新關(guān)鍵節(jié)點(diǎn)攻擊概率代替全局更新節(jié)點(diǎn)概率的策略。本文結(jié)合實(shí)際案例對(duì)計(jì)算過(guò)程進(jìn)行分析,同時(shí)通過(guò)實(shí)驗(yàn)對(duì)比,驗(yàn)證了所提方法在大規(guī)模工控攻擊圖中的計(jì)算效率相比于最小割集算法以及全局節(jié)點(diǎn)更新策略有大幅提升,同時(shí)保證了方法結(jié)果的一致性。未來(lái)的研究工作包括:對(duì)于全局攻擊圖的小概率攻擊路徑簡(jiǎn)化;對(duì)于無(wú)實(shí)際意義的多條重復(fù)路徑的優(yōu)化。