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