摘 要: 針對(duì)目前大部分工業(yè)控制網(wǎng)絡(luò)缺乏必需的通信攻擊防御能力問題,提出了一種攻擊圖生成技術(shù),從而達(dá)到對(duì)工業(yè)控制網(wǎng)絡(luò)的安全分析和漏洞分析的目的,給出了工業(yè)控制網(wǎng)絡(luò)攻擊圖的生成算法及構(gòu)建步驟,并應(yīng)用生成的攻擊圖對(duì)工業(yè)控制系統(tǒng)網(wǎng)絡(luò)進(jìn)行了滲透測試和漏洞分析。最后通過“震網(wǎng)”病毒對(duì)生成的攻擊圖進(jìn)行了實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,按照上述理論生成的攻擊圖確實(shí)有效可行。
關(guān)鍵詞: 工業(yè)控制系統(tǒng)網(wǎng)絡(luò); 攻擊圖; 滲透測試; 漏洞分析
中圖分類號(hào): TN911?34; TM417 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)11?0103?05
Abstract: Aiming at most industrial control systems lack of the necessary communication attack defense ability, an attack graph generation technique is proposed to achieve the security analysis and vulnerability analysis for the industrial control system network. The attack graph generation algorithm and construction steps of industrial control network are given. The penetration test and vulnerability analysis for industrial control system network were conducted with the generated attack graph. Finally,the generated attack graph was experimented by means of \"stuxnet\" virus. The experimental results show that the generated attack graph according to the above theory is effective and feasible.
Keywords: industrial control system network; attack graph; penetration test; vulnerability analysis
0 引 言
目前幾乎所有的工業(yè)控制系統(tǒng)都缺乏IT系統(tǒng)網(wǎng)絡(luò)必需的通信攻擊防御能力[1],導(dǎo)致許多工業(yè)控制系統(tǒng)遭受了嚴(yán)重的攻擊。在對(duì)工業(yè)控制系統(tǒng)的安全研究中,攻擊樹模型[2]無法對(duì)循環(huán)事件進(jìn)行推理建模,模型檢測器也無法應(yīng)用于大規(guī)模工業(yè)控制網(wǎng)絡(luò)中。
針對(duì)上述問題,提出了一種將節(jié)點(diǎn)的權(quán)值定義為由脆弱性[3]不同利用方式引起的系統(tǒng)損失、攻擊成功的概率、已進(jìn)行的攻擊步驟。同時(shí)利用相關(guān)權(quán)值分析工業(yè)控制網(wǎng)絡(luò)的最佳攻擊目標(biāo), 進(jìn)而找到攻擊該目標(biāo)對(duì)應(yīng)的路徑,對(duì)其中的脆弱性環(huán)節(jié)采用重點(diǎn)修復(fù)的攻擊圖[3]生成技術(shù),并通過實(shí)驗(yàn)驗(yàn)證了該技術(shù)的有效性,從而對(duì)工業(yè)控制網(wǎng)絡(luò)的通信攻擊防御能力的提升具有重要意義。
1 工業(yè)控制網(wǎng)絡(luò)攻擊圖的生成
1.1 工業(yè)控制網(wǎng)絡(luò)攻擊圖的生成算法
(1) 工業(yè)控制網(wǎng)絡(luò)的四要素
第一個(gè)要素是工業(yè)控制組件,用表示單個(gè)組件,工業(yè)控制組件集合用表示,其共有以下4個(gè)參數(shù),分別用host_id表示單個(gè)組件的地址;用service表示組件所提供的控制服務(wù);用vuli表示可供遠(yuǎn)程或本地利用的組件上存在的脆弱性編號(hào);用valuei表示組件具有的價(jià)值。
第二個(gè)要素是工業(yè)控制網(wǎng)絡(luò)連接,用表示,其共有3個(gè)參數(shù),分別用HFrom表示連接起始的組件;用Protocol表示連接協(xié)議;用HTo表示被連接的組件。
第三個(gè)要素是單個(gè)組件上的脆弱性,用vuli來表示,其共有3個(gè)參數(shù),分別用host_id表示該脆弱性所在組件的地址;用Type表示該脆弱性的利用途徑;用Att_patt表示該脆弱性的利用方式,其中各種利用方式如表1所示。
第四個(gè)要素是用戶在單個(gè)組件上的權(quán)限,用access表示一般用戶的瀏覽權(quán)限,用user表示普通用戶的正常操作權(quán)限,用root表示系統(tǒng)管理員用戶對(duì)該組件信息資源的全面操作能力。
(2) 算法的推導(dǎo)
在一次原子攻擊成功后,工業(yè)控制網(wǎng)絡(luò)從網(wǎng)絡(luò)狀態(tài)變化至后一網(wǎng)絡(luò)狀態(tài)的過程,稱之為狀態(tài)遷移。工業(yè)控制系統(tǒng)網(wǎng)絡(luò)若要發(fā)生一次狀態(tài)遷移,必需同時(shí)滿足以下4個(gè)條件:
① 工業(yè)控制網(wǎng)絡(luò)處于初始狀態(tài)時(shí),網(wǎng)絡(luò)攻擊者在攻擊發(fā)起組件上必須擁有足夠級(jí)別的權(quán)限,可以利用被控制的組件去攻擊工業(yè)控制網(wǎng)絡(luò)中的其他組件。用Hvictim表示已經(jīng)被攻擊者成功控制的組件,用Hgoal表示攻擊者計(jì)劃控制的組件,即目標(biāo)組件;
② Hvictim與Hgoal之間應(yīng)有C=(Hvictim,Protocol,Hgoal)≠關(guān)系,這樣才能確保網(wǎng)絡(luò)狀態(tài)的順利遷移;
③ 目標(biāo)組件Hgoal需要滿足Vul=(Hgoal,Type, Att_patts)≠關(guān)系,即目標(biāo)組件存在脆弱性,這樣攻擊者才能利用其脆弱性進(jìn)行網(wǎng)絡(luò)狀態(tài)的遷移;
④ 攻擊者必須在目標(biāo)組件Hgoal上至少取得最低操作權(quán)限,并且在已控制組件Hvictim上至少取得最低攻擊權(quán)限,這樣才能利用其脆弱性實(shí)現(xiàn)網(wǎng)絡(luò)狀態(tài)的遷移。
(3) 算法的基本思想
如圖1所示,從網(wǎng)絡(luò)初始狀態(tài)開始,用上述四條依次判斷攻擊者可能達(dá)到的狀態(tài),判斷后,發(fā)現(xiàn)滿足狀態(tài)遷移的條件;根據(jù)寬度優(yōu)先搜索的原則,依次對(duì)進(jìn)行狀態(tài)遷移條件的判斷,從而預(yù)測攻擊者可達(dá)到的狀態(tài)。其中狀態(tài)符合上述攻擊條件的攻擊目標(biāo)函數(shù)Hgoal,說明狀態(tài)是一個(gè)合適的攻擊目標(biāo),這樣就無需再對(duì)其進(jìn)行狀態(tài)遷移條件的判斷;繼續(xù)判斷其中為滿足狀態(tài)遷移條件的節(jié)點(diǎn),再對(duì)進(jìn)行判斷,為滿足遷移條件的節(jié)點(diǎn);然后繼續(xù)對(duì)下一層節(jié)點(diǎn)進(jìn)行狀態(tài)遷移條件的判斷,其中,狀態(tài)滿足狀態(tài)遷移條件,是攻擊者的一個(gè)目標(biāo), 因此無需對(duì)其繼續(xù)進(jìn)行狀態(tài)遷移條件的判斷;繼續(xù)對(duì)進(jìn)行狀態(tài)遷移條件的判斷,判斷時(shí)發(fā)現(xiàn)其既無法到達(dá)任何新狀態(tài)節(jié)點(diǎn),又不能滿足攻擊目標(biāo)函數(shù),應(yīng)作為最后一層;判斷時(shí),為滿足遷移條件的節(jié)點(diǎn),再對(duì)節(jié)點(diǎn)進(jìn)行狀態(tài)遷移條件的判斷,發(fā)現(xiàn)該節(jié)點(diǎn)既無法到達(dá)任何新狀態(tài)節(jié)點(diǎn),又不滿足攻擊目標(biāo)函數(shù),則也為最后一層,至此完成了完整的狀態(tài)遷移過程。
(4) 算法的實(shí)現(xiàn)
以工業(yè)控制網(wǎng)絡(luò)的初始狀態(tài)為起點(diǎn),依據(jù)前述四條狀態(tài)遷移判定條件判斷所有可能達(dá)到的網(wǎng)絡(luò)狀態(tài),將判斷結(jié)果加入狀態(tài)隊(duì)列。具體流程如圖2所示。
1.2 工業(yè)控制網(wǎng)絡(luò)攻擊圖的生成
(1) 分析網(wǎng)絡(luò)弱點(diǎn)
為分析脆弱性利用行為的特征,可以采用數(shù)據(jù)挖掘中的關(guān)聯(lián)規(guī)則挖掘算法,該算法可以提取出同類脆弱性入侵行為的共性,但在提取過程中需使環(huán)境相關(guān)量和已知的脆弱性利用行為特征相結(jié)合,具體如圖3所示。
(2) 建立攻擊原型
若攻擊者要發(fā)動(dòng)一次原子攻擊,其必須具備以下條件:工業(yè)控制組件存在脆弱性;具備某種連接關(guān)系;具有一定級(jí)別的控制權(quán)限。
假如組件被成功攻擊,那么攻擊者就可以獲得該組件更高的控制權(quán)限并增加網(wǎng)絡(luò)的損失值,如此循環(huán),上次原子攻擊就為下次原子攻擊提供了條件,直至最終達(dá)到攻擊目標(biāo),實(shí)現(xiàn)攻擊目的。
攻擊原型建立的輸入是網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和網(wǎng)絡(luò)弱點(diǎn)分析部分,它們共同提供了網(wǎng)絡(luò)弱點(diǎn)的具體信息。其中,網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)提供的信息是工業(yè)控制網(wǎng)絡(luò)四要素中的控制網(wǎng)絡(luò)連接C、控制組件H和各個(gè)控制組件上的控制權(quán)限;網(wǎng)絡(luò)弱點(diǎn)分析部分提供的信息是實(shí)際工業(yè)網(wǎng)絡(luò)的連接狀況和組件脆弱性Vul。然后使用攻擊圖算法中提出的Attacker攻擊者模型作為攻擊源,并利用Attack_rule規(guī)則把網(wǎng)絡(luò)中的所有脆弱性轉(zhuǎn)化成為攻擊者的原子攻擊集合,即構(gòu)成攻擊原型。
(3) 推理攻擊序列
推理攻擊序列就是要把已經(jīng)建立的各個(gè)攻擊原型應(yīng)用于實(shí)際工業(yè)控制網(wǎng)絡(luò)中,從而確定攻擊者對(duì)整體網(wǎng)絡(luò)的攻擊行為。
用atom表示一個(gè)獨(dú)立的攻擊原型,其包含兩個(gè)參數(shù),分別是攻擊圖的邊edge和攻擊圖的點(diǎn)node。攻擊圖中edge和node的不斷轉(zhuǎn)移就把每個(gè)獨(dú)立的攻擊原型都關(guān)聯(lián)起來了,這就構(gòu)成了攻擊者的攻擊序列。所以要推理總體攻擊序列就要推理atom與atom之間的轉(zhuǎn)移條件。判斷兩個(gè)atom之間是否能夠轉(zhuǎn)移,具體步驟如下:
① 確定兩組件之間是否連通;
② 確定不同攻擊原型atom之間的權(quán)限使用關(guān)系,即攻擊者從攻擊原型atom1的攻擊目標(biāo)組件上取得的操作權(quán)限必須大于其在攻擊原型atom2的攻擊目標(biāo)組件上使用的訪問權(quán)限,這樣才能不斷地進(jìn)行atom轉(zhuǎn)化,使攻擊得以持續(xù)進(jìn)行。
當(dāng)經(jīng)過推理得到攻擊序列后,就可以確定從攻擊開始狀態(tài)到攻擊目標(biāo)的所有攻擊路徑。通過所有攻擊路徑構(gòu)建攻擊圖:將目前的網(wǎng)絡(luò)狀態(tài)作為初始狀態(tài)節(jié)點(diǎn),將該步攻擊行為和攻擊成功概率、組件損失值作為邊。
2 基于攻擊圖的滲透測試分析
在攻擊圖中融入傳統(tǒng)滲透測試[4]過程的測試項(xiàng)目、測試目標(biāo)、測試限制條件、測試用例四個(gè)因素就形成了滲透測試圖。滲透測試的測試項(xiàng)目、測試目標(biāo)和測試限制條件用頂點(diǎn)表示, 測試用例用弧來表示,具體各部分如圖4所示。
基于此模型進(jìn)行測試,過程如下所示:
第一步,在實(shí)際工業(yè)控制網(wǎng)絡(luò)中,一般已經(jīng)采用了某種安全防護(hù)措施保護(hù)攻擊路徑,這可能會(huì)導(dǎo)致執(zhí)行相應(yīng)的測試用例后并不能達(dá)到預(yù)期目的,最終使測試成功后取得的滲透測試圖與測試剛開始時(shí)的滲透測試圖存在差異。所以測試中需要先對(duì)測試沒開始時(shí)的滲透測試圖進(jìn)行改動(dòng),使其符合測試要求。
第二步,滲透測試完畢后,需要對(duì)滲透測試圖進(jìn)行分析,首先是將測試完畢后的滲透測試圖與測試沒開始時(shí)的頂點(diǎn)情況進(jìn)行對(duì)比,從而得出測試項(xiàng)目的最后測試結(jié)果;然后通過測試結(jié)果搜索成功攻擊路徑;最后,根據(jù)滲透測試圖中每條邊的權(quán)值,確定算法中此步攻擊的成功概率、此步攻擊造成的損失值及到目前為止的攻擊總步數(shù),然后計(jì)算一條攻擊序列的權(quán)值即可推算出網(wǎng)絡(luò)攻擊對(duì)該網(wǎng)絡(luò)的有害性大小。
3 基于攻擊圖的漏洞風(fēng)險(xiǎn)評(píng)估
為了評(píng)估各漏洞的風(fēng)險(xiǎn)大小,實(shí)現(xiàn)對(duì)危害性大的漏洞及攻擊路徑重點(diǎn)防御的目的,采用漏洞的風(fēng)險(xiǎn)值大小[5]評(píng)估漏洞的危害程度[6]。要確定漏洞的風(fēng)險(xiǎn)值,首先要確定漏洞的全局被利用概率和漏洞的全局危害程度,具體實(shí)現(xiàn)步驟如下:
(1) 使用廣度優(yōu)先遍歷算法,從起始節(jié)點(diǎn)開始逐層計(jì)算每個(gè)節(jié)點(diǎn)被利用成功的全局被利用概率,用字母表示;
(2) 用value表示各組件的價(jià)值量,用Φ表示漏洞的獨(dú)立危害程度,故單個(gè)漏洞對(duì)其所在組件造成的損失則為Φ×value。用字母表示漏洞的全局危害程度,即單個(gè)漏洞的關(guān)聯(lián)危害程度與該工業(yè)控制網(wǎng)絡(luò)中的所有組件的價(jià)值量之和的比值。
(3) 用表示漏洞的風(fēng)險(xiǎn)值大小,其值為各個(gè)節(jié)點(diǎn)全局被利用成功的概率乘以該節(jié)點(diǎn)的全局危害程度
4 實(shí)驗(yàn)分析
實(shí)驗(yàn)以“震網(wǎng)”病毒作為攻擊工業(yè)控制系統(tǒng)的攻擊者,首先搭建實(shí)驗(yàn)用的模擬工業(yè)控制系統(tǒng)的網(wǎng)絡(luò)[7]環(huán)境,然后根據(jù)前述方法生成攻擊圖,最后通過攻擊圖得到滲透測試方案及漏洞風(fēng)險(xiǎn)大小。
4.1 實(shí)驗(yàn)過程
(1) 搭建網(wǎng)絡(luò)拓?fù)?/p>
網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖5所示。
(2) 生成算法參數(shù)選取
由于“震網(wǎng)”攻擊是以操作員站所插的U盤為渠道進(jìn)入工控網(wǎng)絡(luò)的內(nèi)部,所以操作員站就是攻擊發(fā)起組件。
工業(yè)控制網(wǎng)絡(luò)中各組件的資產(chǎn)價(jià)值valuei如表2所示。
(3) 攻擊圖的生成
根據(jù)前述攻擊圖生成方法,“震網(wǎng)”病毒最可能攻擊同時(shí)也是危害最大的四條路徑如下:
① 累計(jì)攻擊步數(shù)為4,損失值為12.2,攻擊成功概率為0.096;
② 累計(jì)攻擊步數(shù)為4,損失值為10.2,攻擊成功概率為0.072;
③ 累計(jì)攻擊步數(shù)為4,損失值為16.6,攻擊成功概率為0.063;
④ 累計(jì)攻擊步數(shù)為4,損失值為18.6,攻擊成功概率為0.084。
(4) 基于攻擊圖的滲透測試
測試目標(biāo)、測試項(xiàng)目和測試限制條件等參數(shù)用滲透測試的頂點(diǎn)表示,測試用例用弧表示,滲透測試方案的生成采用深度優(yōu)先遍歷方法,將生成的滲透測試圖與測試剛開始時(shí)的滲透測試圖進(jìn)行對(duì)比,其結(jié)果完全吻合。
(5) 基于攻擊圖的漏洞風(fēng)險(xiǎn)評(píng)估
根據(jù)通用漏洞評(píng)分系統(tǒng)和漏洞利用關(guān)系圖計(jì)算出每個(gè)漏洞的風(fēng)險(xiǎn)值,如表4所示。
如表4所示,漏洞風(fēng)險(xiǎn)值最大的是vul4,它就是WINCC中DLL的加載策略缺陷。可見“震網(wǎng)”攻擊中,裝有WINCC軟件的組件是對(duì)系統(tǒng)威脅最大的漏洞,也就是說對(duì)此攻擊路徑必須進(jìn)行重點(diǎn)防御,而實(shí)際防御情況也是這樣,即說明分析結(jié)果正確。
4.2 實(shí)驗(yàn)結(jié)果
針對(duì)前述方法生成的攻擊圖得到滲透測試分析方案,使用該滲透分析方案分析得到的漏洞風(fēng)險(xiǎn)值與實(shí)際情況相符,證明了該攻擊圖生成方法確實(shí)可行有效。
5 結(jié) 論
本文提出了一種攻擊圖生成技術(shù),從而達(dá)到對(duì)工業(yè)控制網(wǎng)絡(luò)的安全分析和漏洞分析的目的。給出了攻擊圖的生成算法及構(gòu)建步驟,并應(yīng)用該攻擊圖對(duì)“震網(wǎng)“病毒的攻擊進(jìn)行了實(shí)驗(yàn),證明了該攻擊圖生成方法的正確性。但在計(jì)算系統(tǒng)損失值、攻擊成功的概率指標(biāo)時(shí)還存在很大的主觀性,這些指標(biāo)的確定還需在后面的工作中繼續(xù)完善。
參考文獻(xiàn)
[1] 陳星,賈卓生.工業(yè)控制網(wǎng)絡(luò)的信息安全威脅與脆弱性分析與研究[J].計(jì)算機(jī)科學(xué),2012,39(z2):188?190.
[2] 盧繼軍,黃劉生,吳樹峰,等.基于攻擊樹的網(wǎng)絡(luò)攻擊建模方法[J].計(jì)算機(jī)工程與應(yīng)用,2003,39(27):160?163.
[3] 李忠武,陳麗清.計(jì)算機(jī)網(wǎng)絡(luò)安全評(píng)價(jià)中神經(jīng)網(wǎng)絡(luò)的應(yīng)用研究[J].現(xiàn)代電子技術(shù),2014,37(10):80?82.
[4] 崔穎,章麗娟,吳灝,等.基于攻擊圖的滲透測試方案自動(dòng)生成方法[J].計(jì)算機(jī)應(yīng)用,2010,30(8):2146?2150.
[5] 張璽,黃曙光,夏陽,等.一種基于攻擊圖的漏洞風(fēng)險(xiǎn)評(píng)估方法[J].計(jì)算機(jī)應(yīng)用研究,2010,27(1):278?280.
[6] 張濤,胡銘曾,李東,等.一種量化的軟件弱點(diǎn)評(píng)估方法[J].計(jì)算機(jī)工程與應(yīng)用,2005,41(27):7?9.
[7] LANGNER R. Stuxnet: dissecting a cyberwarfare weapon [J]. IEEE security privacy magazine, 2011, 9(3): 49?51.
[8] 王國玉,王會(huì)梅,陳志杰,等.基于攻擊圖的計(jì)算機(jī)網(wǎng)絡(luò)攻擊建模方法[J].國防科技大學(xué)學(xué)報(bào),2009,31(4):74?80.