秦虎, 王建利, 彭逍遙
(中國信息安全測評中心,北京 100085)
在風險評估和滲透測試過程中,漏洞掃描是一項非常重要的工作. 然而,傳統的漏洞掃描僅單獨報告每個漏洞的名稱、類型、危害、修復建議等信息,對于目標系統之間、各個漏洞之間的關系卻難以分辨,因而無法凸顯整個信息系統最薄弱的環節. 為了解決該問題,學術界提出了許多嘗試對網絡攻擊進行模型描述的安全評估模型,其中攻擊圖是最為常用的模型之一[1]. 攻擊圖分析模型加入了攻擊行為模擬和過程執行[2],能夠直觀地展示攻擊者可能的攻擊路徑,進一步揭示各個漏洞之間的關聯性以及綜合利用所有漏洞可能造成的危害. 利用攻擊圖,可以對信息系統進行風險分析、可靠性分析、最短攻擊路徑分析等[3]更加深入的分析.
最初,Phillips和Swiler等[4-5]提出了攻擊圖的概念,但構建模型過于復雜,且只能由滲透測試人員手工繪制;Ritchey等[6]提出了模型檢測的方法用于分析網絡的脆弱點,但模型過于簡單,無法表現某些復雜的攻擊行為. Sheyner等[3]同樣使用了模型檢測的方法,首次自動構建攻擊圖;馮慧萍等[7]提出基于可靠性理論的脆弱性分析模型,使用模型檢驗迭代算法搜索狀態集合的技術自動構建攻擊圖;Bhattacharya等[8]提出利用智能規劃技術自動構建攻擊圖. 以上3種方法雖然可以自動構建攻擊圖,但由于需要對目標網絡和攻擊者的狀態之間的相互作用關系進行綜合分析,因此不可避免地存在狀態爆炸的問題[9],無法應用于大規模的目標網絡. 為了解決該問題,Ammann等[10]首次提出攻擊者能力的單調性假設,即假設攻擊者在攻擊過程中的攻擊能力是不斷增長的,且已經獲得的能力在每次原子攻擊中都不會失去,并在該假設的基礎上將攻擊圖構建的復雜度由指數復雜度降為多項式復雜度;Ou等[11]基于邏輯編程技術生成邏輯攻擊圖的方法,進一步降低了生成攻擊圖的復雜度,并用實驗驗證了該方法可以在20 min以內生成1 000臺主機規模的網絡攻擊圖;陳峰[12]在提出AGML建模語言的基礎上,使用攻擊模式過濾技術、屬性壓縮技術和實例化檢查技術3中優化技術對攻擊模式和屬性進行預處理,從而降低算法復雜度;葉云等[13]采用了陳峰提出的AGML建模語言,通過預先將目標環境屬性按照主機和謂詞分類,從而減少匹配次數,降低算法復雜度.
本文對攻擊圖構建過程進行研究,提出一種基于權限提升矩陣的攻擊圖生成方法. 該方法在攻擊模式庫和目標環境描述基礎上,將權限提升作為攻擊者攻擊能力提升的判斷標準,以矩陣描述目標網絡中主機之間的關系,根據目標環境描述生成權限提升矩陣,并以權限提升矩陣為依據生成攻擊圖.
攻擊圖采用有向圖的方式表示攻擊者如何逐步獲取目標網絡控制權限的攻擊路徑,通常由節點和邊組成. 在過去的研究中,研究者先后提出狀態攻擊圖、屬性攻擊圖、滲透依賴攻擊圖、屬性依賴攻擊圖、邏輯攻擊圖、聚合攻擊圖等多種攻擊圖表示方法[14]. Ammann提出的屬性依賴攻擊圖[10]可清晰地顯示屬性轉換前后的依賴關系. 本文參考屬性依賴攻擊圖,現將攻擊圖定義如下.
定義1攻擊圖AG=(A0∪Ad,E),其中,A0表示攻擊者和目標網絡在攻擊逐步實施后可達的屬性節點集合,Ad表示攻擊者和目標網絡的初始屬性節點集合,E為有向邊集合,表示所有的原子攻擊.
攻擊模式是指攻擊者利用一類軟件漏洞進行的攻擊方式的抽象描述,可以由具體的屬性實例化為原子攻擊. 本文采用攻擊模式庫存儲攻擊者可以采取的攻擊模式,且以面向漏洞的方式描述攻擊模式. 攻擊模式可以形式化地描述為三元組AttackPattern=〈Pre,Vuls,Eff〉,其中,Vuls為目標主機存在的安全漏洞,可包括一個或多個安全漏洞,當Vuls數目為兩個或兩個以上時表示須結合多個漏洞實現該攻擊模式;Pre為攻擊的前提條件,包括針對主機進行攻擊所需的權限、Vuls對應的服務及其運行權限;Eff為攻擊產生的結果,包括獲取權限、拒絕服務、非身份信息泄露.
需要特別說明的是,相較于其他文獻中的攻擊模式,本文的攻擊模式庫模型做了必要的簡化,不再將攻擊者可能實施的正常操作行為列為單獨的攻擊模式,如遠程登陸等. 例如,本文不將“通過遠程FTP寫入漏洞修改.rhosts文件,并遠程SSH登錄”這種攻擊行為描述為“通過遠程FTP寫入漏洞修改.rhosts文件”和“遠程SSH登錄”兩種攻擊模式,而是合并為一種,其攻擊前提條件Pre中的服務合并為“FTP服務及SSH服務”. 同樣,在攻擊圖中也表示為一種原子攻擊.
目標環境描述是對目標網絡環境中的主機配置、網絡配置、存在漏洞等信息的形式化描述. 目標環境可以形式化地描述為二元組Scenario=〈Hosts,Connections〉,其中Hosts為主機信息集合,以〈HostID,Vuls,InitPriv〉描述,意為主機HostID存在漏洞Vuls,攻擊者在該主機上擁有初始權限InitPriv;Connections為連接信息集合,以〈HostSrc,HostDst,Services〉描述,意為主機HostSrc可以訪問主機HostDst的Services服務.
絕大部分情況下,攻擊者攻擊能力的提升都可以歸結為權限的提升,當攻擊者獲得某臺主機的攻擊權限后,即獲得了攻擊與該主機相連的其他主機的能力. 在某些特殊情況下,攻擊者在攻擊過程中可能獲取改變網絡連接情況的能力,例如攻擊者獲取防火墻或網閘的控制權限并可以隨意更改網絡配置的情況,但是由于與具體網絡配置結合過于緊密,導致攻擊后果難以預測,這些特殊情況很難抽象為通用的攻擊模式. 因此,在本文的攻擊圖生成方法中,僅考慮通用情況下的攻擊圖生成,即本文假設網絡連接情況在攻擊過程中是不會發生改變的. 同樣,目標網絡中主機的服務運行情況和存在漏洞情況也不會隨著攻擊者的攻擊而發生改變. 可見,網絡連接情況、服務及其運行權限僅可作為攻擊模式的前提屬性,拒絕服務、非身份信息獲取盡可作為攻擊模式的結果屬性,而攻擊者的權限既可作為前提屬性,也可作為結果屬性. 因此,本文將攻擊者權限的提升作為攻擊圖構建的接力點.
本文以矩陣描述各主機之間的關系,下面給出幾個矩陣的定義.
定義2網絡連接矩陣C={Cij},當i=j時,Cij=0;當i≠j時,Cij=1表示第i個主機可以訪問第j個主機存在漏洞的服務,Cij=0表示第i個主機無法訪問第j個主機存在漏洞的服務.
定義3主機遠程漏洞矩陣V={vij},當i≠j時,vij=0;當i=j時,vij為第i個主機存在的遠程漏洞ID列表.
定義4權限提升矩陣R={rij},當i=j時,rij=0;當i≠j時,rij為漏洞列表表示攻擊者可以由第i個主機利用相關漏洞獲取第j個主機的控制權限,rij=0表示攻擊者無法由第i個主機獲取第j個主機的控制權限.
給定一個n臺主機的目標網絡,其目標環境描述為Scenario,所有主機按照0~n標號,那么攻擊圖的生成過程可分為權限提升矩陣計算和攻擊圖生成2個過程. 權限提升矩陣計算的步驟如下:
① 設置一個n維主機權限記錄向量d={di},di=0表示攻擊者未獲得第i個主機的控制權限,di=1表示攻擊者獲得了第i個主機的user權限,di=2表示攻擊者獲得了第i個主機的root權限. 攻擊者不會重復獲取已經獲取過的控制權限[15],主機權限記錄向量可用于記錄權限獲取情況,避免重復計算攻擊路徑,從而降低運算量;
② 遍歷目標環境描述Scenario中的Hosts集合,生成主機遠程漏洞矩陣V,同時初始化權限記錄向量d;
③ 在遍歷的同時,根據其中的Vuls查詢攻擊模式庫,匹配相應的攻擊模式,得到部分實例化[11]攻擊模式集合PartialAP,并將PartialAP按照漏洞的遠程或本地屬性分為遠程攻擊模式集合rPartialAP和本地攻擊模式集合lPartialAP,即PartialAP=rPartialAP∪lPartialAP;
④ 遍歷rPartialAP,根據其中的Vuls對應服務遍歷目標環境描述Scenario中的Connections集合,以“源主機是否可訪問目標主機存在漏洞的服務”為標準生成網絡連接矩陣C;
⑤ 計算權限提升矩陣R,R=CV;
攻擊圖生成的步驟如下:
① 設置一個n維主機遍歷記錄向量t={ti}并初始化為零向量,ti=0表示攻擊圖未遍歷至該主機,否則反之;
② 計算g=d⊕t,其中⊕為自定義運算,表示兩向量對應值進行異或運算,即gi=di⊕ti. 若g為零向量,則轉到步驟⑥;若g非零向量,則進行步驟③;
③ 遍歷向量g中不為0的值,對于gi≠0,首先設置ti=1,然后遍歷權限提升矩陣R的行向量rj={rj0,rj1,…rjn},根據dj和rjk的值設置dk為相應的權限值,并生成相應的記錄語句用于生成攻擊圖,若tk=1,則忽略該攻擊路徑,以避免在攻擊圖中產生環;
④ 更新dk的值后,根據dk的值遍歷本地攻擊模式集合lPartialAP,查詢是否存在可本地提權的原子攻擊,若存在,則繼續更新dk和tk的值并生成相應的記錄語句;
⑤ 轉到步驟②繼續執行循環;
⑥ 循環結束,根據記錄語句生成攻擊圖.
在權限提升矩陣計算過程中,由于攻擊模式庫中的攻擊模式數量是一定的,因此步驟②和步驟③的復雜度O(aN),其中a為常數;目標環境描述Scenario中的Connections集合元素的最大數量可能為N2,因此步驟④的復雜度為O(N3);步驟⑤的復雜度為O(N2). 攻擊圖生成過程的實質是遍歷所有可以獲得控制權限的主機,嘗試能否以其作為跳板獲取其他主機的權限,因此該過程的復雜度為O(N2). 因此算法整體的復雜度約為O(N3).
本文搭建實驗網絡驗證了本文中的攻擊圖生成算法,如圖1所示.
實驗網絡中共有6臺計算機,分別以數字1~6作為標號. 1號計算機為攻擊主機,攻擊者擁有其完全控制權限;1號主機通過互聯網可訪問2號主機,由于中間有防火墻攔截,僅可訪問其Web服務;2號主機可訪問3、4、5號主機,3號和5號主機為個人計算機,4號主機為服務器,運行Windows 2003操作系統和Internet Information Services 6.0服務;4號主機可訪問6號個人主機. 本文引用CVE(common vulnerabilities exposures)漏洞編號. 目標網絡中所有主機的漏洞信息如表1所示.

圖1 實驗網絡環境Fig.1 Experimental network environment

表1 實驗網絡漏洞信息
根據目標網絡信息描述,可以按照本文算法分別得出網絡連接矩陣C、主機遠程漏洞矩陣V如下:


經計算可得,權限提升矩陣R如下:
作為一種新興市場營銷模式的低碳市場營銷模式,在現實生活中還是會面臨很多意想不到的挑戰。從企業來說,如果想要真正實施低碳市場營銷模式,勢必會要徹底改變傳統的生產模式,將低碳的優勢和理念融入到企業發展的每一個細節中。從實踐來說,要探討企業在碳關稅、碳交易等多方面所要克服的困難,進而積極改進發展思路,為企業的長遠發展奠定堅實的基礎。

主機權限記錄向量初始化為
d=[200000],
主機遍歷記錄向量初始化為
t=[000000].
按照本文算法的攻擊圖生成步驟,可生成攻擊圖如圖2所示.

圖2 實驗網絡攻擊圖Fig.2 Attack graph of experimental network
其中包含4種原子攻擊:
① struts_exe:Struts2遠程代碼執行攻擊;
② local_bof:本地緩沖區溢出(local buffer overflow)提權攻擊;
④ iis_bof:IIS遠程緩沖區溢出攻擊.
對攻擊圖構建過程進行了研究,提出了網絡連接矩陣、主機遠程漏洞矩陣和權限提升矩陣,并通過對攻擊模式庫和目標環境描述的模型化分析,提出了基于權限提升矩陣的攻擊圖生成方法,可以實現以O(N3)算法復雜度生成攻擊圖. 由于在本文的算法模型中,對攻擊者能力提升模型進行了一定程度的簡化,因此僅適用于通用的網絡攻擊圖生成. 在下一步的工作中,可繼續豐富本文算法中的矩陣模型,從而能夠適用于更多的網絡攻擊場景.