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