






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