本發(fā)明涉及網(wǎng)絡(luò)攻擊技術(shù),特別是涉及一種基于狀態(tài)轉(zhuǎn)移網(wǎng)絡(luò)攻擊模型的攻擊圖生成方法。
背景技術(shù):
網(wǎng)絡(luò)的安全影響因素是多方面、多角度的,網(wǎng)絡(luò)中存在的弱點(diǎn)以及其脆弱性是影響其安全性的重要性因素之一。攻擊者針對(duì)網(wǎng)絡(luò)中弱點(diǎn)的攻擊其實(shí)是根據(jù)網(wǎng)絡(luò)中的弱點(diǎn)信息以及目標(biāo)信息,通過(guò)某種手段發(fā)動(dòng)攻擊來(lái)達(dá)到獲取重要信息或提升操作權(quán)限的目的。同時(shí),攻擊者的能力、經(jīng)驗(yàn)與其支配環(huán)境決定他的攻擊成功概率。所以,針對(duì)弱點(diǎn)的攻擊通常也是一種復(fù)雜的多步驟過(guò)程,一次完整的攻擊過(guò)程一般會(huì)包括一系列單獨(dú)的攻擊行為,這些單獨(dú)的攻擊行為發(fā)生在不同的網(wǎng)絡(luò)部分卻又相互關(guān)聯(lián)。
因此,如何合理的描述相互關(guān)聯(lián)的攻擊行為,已成為網(wǎng)絡(luò)安全領(lǐng)域的一大研究熱點(diǎn)。近年來(lái),網(wǎng)絡(luò)安全大都由傳統(tǒng)的被動(dòng)防御轉(zhuǎn)向主動(dòng)防御,針對(duì)目前主動(dòng)防御的方法模型主要有:攻擊描述語(yǔ)言、攻擊樹(shù)、攻擊圖、攻擊網(wǎng)。
坎寧安(Cunningham)最早提出攻擊圖模型,其認(rèn)為網(wǎng)絡(luò)由通過(guò)物理或邏輯方式連接的各種組件組成,攻擊圖中的有向邊表示攻擊需要付出的代價(jià),攻擊者通過(guò)攻擊網(wǎng)絡(luò)組件提升權(quán)限獲取收益。
里奇(Ritchey)等人提出了能夠自動(dòng)生成攻擊圖的模型檢測(cè)器方法,雖然該方法能夠自動(dòng)生成攻擊圖,但由于模型中包含所有的狀態(tài),這極易導(dǎo)致?tīng)顟B(tài)爆炸問(wèn)題而不適應(yīng)于大規(guī)模網(wǎng)絡(luò)。
達(dá)蓬曼(DapengMan)的基于寬度優(yōu)先搜索的全局攻擊圖生成算法通過(guò)設(shè)置閾值來(lái)減小攻擊圖規(guī)模,該方法雖然可以減小攻擊圖規(guī)模,但由于寬度優(yōu)先具有一定的局限性,該方法生成的攻擊圖也不宜適用大規(guī)模網(wǎng)絡(luò)。
前輩專家們的研究在相關(guān)領(lǐng)域都取得了相當(dāng)?shù)某删停窃诠魣D建模過(guò)程中,選取的約束條件不同以及在量化指標(biāo)上的側(cè)重點(diǎn)不同,產(chǎn)生的攻擊圖也有所差異。同時(shí),攻擊圖中冗余路徑不可避免的存在,不僅增加了攻擊圖的規(guī)模也影響反映現(xiàn)實(shí)網(wǎng)絡(luò)的客觀性和準(zhǔn)確性。所以,消除冗余路徑、減小攻擊圖規(guī)模是解決大規(guī)模網(wǎng)絡(luò)需求的必然選擇。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的主要目的在于提供一種規(guī)模小、速度快、直觀性強(qiáng)、準(zhǔn)確性高的攻擊圖生成方法。
為了達(dá)到上述目的,本發(fā)明提出的技術(shù)方案為:
本發(fā)明提供一種基于狀態(tài)轉(zhuǎn)移網(wǎng)絡(luò)攻擊模型的攻擊圖生成方法,包括:
步驟1、針對(duì)攻擊者欲攻擊的網(wǎng)絡(luò)建立網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列,將網(wǎng)絡(luò)中的源節(jié)點(diǎn)加入到所述網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列,并將所述源節(jié)點(diǎn)加入到所述攻擊圖中;
步驟2、在所述網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列非空時(shí),從所述網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列中取出一個(gè)網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),判斷所述當(dāng)前節(jié)點(diǎn)是否為目標(biāo)節(jié)點(diǎn);
步驟3、當(dāng)所述當(dāng)前節(jié)點(diǎn)不是目標(biāo)節(jié)點(diǎn)時(shí),判斷所述當(dāng)前節(jié)點(diǎn)的攻擊深度和攻擊花費(fèi)是否在預(yù)先設(shè)定的最大攻擊深度和最大攻擊花費(fèi)范圍內(nèi),所述攻擊花費(fèi)Cost為:
式中:n表示從源節(jié)點(diǎn)到所述被攻擊節(jié)點(diǎn)j整個(gè)攻擊路徑上的節(jié)點(diǎn)數(shù)、
pejL表示利用被攻擊節(jié)點(diǎn)j上的訪問(wèn)權(quán)限最大的攻擊弱點(diǎn)成功攻擊所述被攻擊節(jié)點(diǎn)j時(shí)的花費(fèi),0<l<u,u為所述被攻擊節(jié)點(diǎn)j上的弱點(diǎn)總數(shù)、
表示所述花費(fèi)中攻擊復(fù)雜度值和被發(fā)現(xiàn)的風(fēng)險(xiǎn)值的相關(guān)性系數(shù)、
K(0<K<1)表示攻擊過(guò)程對(duì)攻擊者經(jīng)驗(yàn)的依賴系數(shù),其值由專家經(jīng)驗(yàn)決定、
time表示從源節(jié)點(diǎn)到被攻擊節(jié)點(diǎn)j的攻擊過(guò)程中相似攻擊的重復(fù)次數(shù)、
ξ表示網(wǎng)絡(luò)緊致系數(shù),該系數(shù)反映網(wǎng)絡(luò)的魯棒性,其值由專家經(jīng)驗(yàn)決定;
步驟4、當(dāng)所述當(dāng)前節(jié)點(diǎn)的攻擊深度和攻擊花費(fèi)在所述最大攻擊深度和最大攻擊花費(fèi)范圍內(nèi)時(shí),查找所有與所述當(dāng)前節(jié)點(diǎn)有連接關(guān)系的其他狀態(tài)節(jié)點(diǎn);
步驟5、遍歷查找所述其他狀態(tài)節(jié)點(diǎn)上的所有弱點(diǎn),若從所述當(dāng)前節(jié)點(diǎn)到所述其他狀態(tài)節(jié)點(diǎn)上的弱點(diǎn)的攻擊可達(dá),則生成新的狀態(tài)節(jié)點(diǎn),將所述新的狀態(tài)節(jié)點(diǎn)加入到所述網(wǎng)絡(luò)狀態(tài)隊(duì)列,并將滿足預(yù)設(shè)條件的所述新的狀態(tài)節(jié)點(diǎn)加入到所述攻擊圖中;
步驟6、循環(huán)執(zhí)行所述步驟2-5,直到所述網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列為空時(shí)結(jié)束循環(huán),并生成所述攻擊圖。
基于上述攻擊圖生成方法的技術(shù)方案,所述相關(guān)性系數(shù)為:
式中:PA為所述花費(fèi)中的攻擊復(fù)雜度值、
PD為所述花費(fèi)中的被發(fā)現(xiàn)的風(fēng)險(xiǎn)值、
M為獲取所述攻擊復(fù)雜度值和所述被發(fā)現(xiàn)的風(fēng)險(xiǎn)值的概率統(tǒng)計(jì)次數(shù)。
具體而言,在所述步驟1所建立的網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列中,每個(gè)當(dāng)前節(jié)點(diǎn)包括以下屬性:
當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)ID、
與當(dāng)前節(jié)點(diǎn)有連接關(guān)系的其他狀態(tài)節(jié)點(diǎn)的節(jié)點(diǎn)ID、
所述其他狀態(tài)節(jié)點(diǎn)上的弱點(diǎn)編號(hào)、
攻擊者對(duì)所述當(dāng)前節(jié)點(diǎn)和所述其他狀態(tài)節(jié)點(diǎn)的訪問(wèn)權(quán)限、
所述當(dāng)前節(jié)點(diǎn)與所述其他狀態(tài)節(jié)點(diǎn)之間的連接關(guān)系、
所述其他狀態(tài)節(jié)點(diǎn)上開(kāi)放的服務(wù)、
所述當(dāng)前節(jié)點(diǎn)的攻擊深度和攻擊花費(fèi)。
在所述步驟2中,依據(jù)所述當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)ID判斷所述當(dāng)前節(jié)點(diǎn)是否為目標(biāo)節(jié)點(diǎn),當(dāng)判斷所述當(dāng)前節(jié)點(diǎn)是目標(biāo)節(jié)點(diǎn)時(shí),所述方法結(jié)束。
在所述步驟3中,當(dāng)所述當(dāng)前節(jié)點(diǎn)的攻擊深度超出所述最大攻擊深度的范圍、和/或當(dāng)所述當(dāng)前節(jié)點(diǎn)的攻擊花費(fèi)超出所述最大攻擊花費(fèi)的范圍時(shí),所述步驟3結(jié)束。
在所述步驟4中,根據(jù)所述當(dāng)前節(jié)點(diǎn)與所述其他狀態(tài)節(jié)點(diǎn)之間的網(wǎng)絡(luò)連接關(guān)系,查找所有與所述當(dāng)前節(jié)點(diǎn)有連接關(guān)系的其他狀態(tài)節(jié)點(diǎn)。
在所述步驟5中,將滿足預(yù)設(shè)條件的所述新的狀態(tài)節(jié)點(diǎn)加入到所述攻擊圖中包括:
計(jì)算所述新的狀態(tài)節(jié)點(diǎn)的攻擊深度,所述新的狀態(tài)節(jié)點(diǎn)的攻擊深度為在所述當(dāng)前節(jié)點(diǎn)的攻擊深度上加1;
判斷所述網(wǎng)絡(luò)狀態(tài)隊(duì)列中是否存儲(chǔ)過(guò)所述新的狀態(tài)節(jié)點(diǎn);
若之前沒(méi)有存儲(chǔ)過(guò),則將所述新的狀態(tài)節(jié)點(diǎn)加入到所述攻擊圖中;
若之前存儲(chǔ)過(guò),則判斷所述新的狀態(tài)節(jié)點(diǎn)的攻擊深度是否等于之前存儲(chǔ)過(guò)的所述新的狀態(tài)節(jié)點(diǎn)的攻擊深度,若等于則將所述新的狀態(tài)節(jié)點(diǎn)加入到所述攻擊圖中。
在所述步驟5中,若從所述當(dāng)前節(jié)點(diǎn)到一個(gè)所述其他狀態(tài)節(jié)點(diǎn)上的至少兩個(gè)弱點(diǎn)的攻擊可達(dá),且所述至少兩個(gè)弱點(diǎn)的弱點(diǎn)攻擊后果均為獲得該一個(gè)所述其他狀態(tài)節(jié)點(diǎn)的控制權(quán)限時(shí),按能夠獲得的最高控制權(quán)限生成所述新的狀態(tài)節(jié)點(diǎn)。
綜上所述,本發(fā)明所述的基于狀態(tài)轉(zhuǎn)移網(wǎng)絡(luò)攻擊模型的攻擊圖生成方法,在計(jì)算攻擊花費(fèi)時(shí),不僅考慮了攻擊復(fù)雜度值A(chǔ)cx和被發(fā)現(xiàn)的風(fēng)險(xiǎn)值Dsk,而且考慮了Acx和Dsk之間的相關(guān)性,提高了攻擊圖生成的準(zhǔn)確性。此外,通過(guò)仿真實(shí)驗(yàn),應(yīng)用本發(fā)明實(shí)施例得出的攻擊圖較改進(jìn)前的攻擊圖更加簡(jiǎn)潔,并且通過(guò)統(tǒng)計(jì)發(fā)現(xiàn),所述攻擊花費(fèi)的計(jì)算值更接近實(shí)際攻擊者的付出。因此,本發(fā)明實(shí)施例提供了一種規(guī)模小、速度快、直觀性強(qiáng)、準(zhǔn)確性高的攻擊圖生成方法。
附圖說(shuō)明
圖1是一種基于狀態(tài)轉(zhuǎn)移的網(wǎng)絡(luò)攻擊模型(NST模型);
圖2為一個(gè)獲取新的權(quán)限的弱點(diǎn)攻擊的具體實(shí)例;
圖3為本發(fā)明實(shí)施例中基于狀態(tài)轉(zhuǎn)移網(wǎng)絡(luò)攻擊模型的攻擊圖生成方法的示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述。
圖1是一種基于狀態(tài)轉(zhuǎn)移的網(wǎng)絡(luò)攻擊模型(NST模型)。NST模型可用一個(gè)二元組表示,即NST=(NS,AR)。其中,NS為組成模型的網(wǎng)絡(luò)狀態(tài)集合,AR為攻擊行為規(guī)則集合。
網(wǎng)絡(luò)狀態(tài)集合NS用如下三元組表示:NS=(Hd,Nl,Crol)。
Hd為網(wǎng)絡(luò)中主機(jī),即Hd=(hostid,os,sers,v)。hostid是區(qū)別網(wǎng)絡(luò)中主機(jī)的唯一標(biāo)識(shí)符,可以用IP地址來(lái)表示;os是主機(jī)上運(yùn)行的操作系統(tǒng)的版本信息;sers表示主機(jī)的開(kāi)放服務(wù),可用端口號(hào)來(lái)表示;v表示主機(jī)上的弱點(diǎn)列表,弱點(diǎn)包含操作系統(tǒng)的弱點(diǎn)、主機(jī)所安裝的軟件弱點(diǎn)或其他一些錯(cuò)誤配置信息等。
Nl為網(wǎng)絡(luò)連接關(guān)系,即NL=(src,dst,conn_pro)。src表示源主機(jī);dst表示目的主機(jī);conn_pro表示用于連接主機(jī)間的協(xié)議或端口。若二者不存在連接關(guān)系時(shí),conn_pro=null,當(dāng)二者為同一主機(jī)時(shí),conn_pro=localhost。
Crol為攻擊者擁有對(duì)主機(jī)的控制權(quán)限。本NST模型中將控制權(quán)限按照從大到小的順序分為三級(jí):系統(tǒng)管理員root;普通系統(tǒng)用戶user;遠(yuǎn)程網(wǎng)絡(luò)的訪問(wèn)者access。
攻擊行為規(guī)則AR用如下二元組表示:AR=(VA,Cost),VA=(AP,t,AS),Cost=(Acx,Dsk)。
AP表示利用弱點(diǎn)進(jìn)行弱點(diǎn)攻擊必須滿足的前提條件集合,即AP=(src_access,conn_pro,dst_sers,dst_v)。src_access表示攻擊者在攻擊源主機(jī)上至少應(yīng)具有最低訪問(wèn)權(quán)限;conn_pro表示源主機(jī)與目的主機(jī)之間應(yīng)滿足的連接關(guān)系,保證攻擊的可達(dá)性;dst_sers表示攻擊者在目的主機(jī)上可獲得的目的主機(jī)上開(kāi)放的服務(wù),保證弱點(diǎn)攻擊依賴的服務(wù)的可用性;dst_v表示目的主機(jī)上相應(yīng)的弱點(diǎn)。弱點(diǎn)攻擊必須滿足的前提條件集中各個(gè)對(duì)象的邏輯關(guān)系:當(dāng)且僅當(dāng)所有對(duì)象均存在且滿足要求時(shí),弱點(diǎn)攻擊VA才能發(fā)生。
在NST模型中,弱點(diǎn)泛指計(jì)算機(jī)系統(tǒng)中的計(jì)算機(jī)硬件和軟件等存在的安全技術(shù)缺陷或管理上存在的策略缺陷。弱點(diǎn)集合元素vi指操作系統(tǒng)上的弱點(diǎn)項(xiàng)、主機(jī)所安裝的軟件弱點(diǎn)和其他一些錯(cuò)誤配置信息,該弱點(diǎn)項(xiàng)能夠被攻擊者利用,威脅網(wǎng)絡(luò)系統(tǒng)安全。
AS表示攻擊行為導(dǎo)致的后果集合,即AS=(rslt_access,rslt_conn,rslt_vs)。rslt_access表示當(dāng)成功攻擊后,攻擊者在當(dāng)前被攻擊主機(jī)上獲得的訪問(wèn)權(quán)限;rslt_conn表示當(dāng)成功攻擊后,網(wǎng)絡(luò)連接關(guān)系的改變;rslt_vs則表示當(dāng)成功攻擊后所增加的弱點(diǎn)。弱點(diǎn)攻擊導(dǎo)致的后果集合中各個(gè)對(duì)象的邏輯關(guān)系:弱點(diǎn)攻擊VA發(fā)生后,攻擊行為導(dǎo)致的后果集合可以是獲得新的權(quán)限、增加新的連接關(guān)系或者是獲取新的弱點(diǎn)。一次攻擊發(fā)生后導(dǎo)致的后果可以是它們其中的一個(gè)或者多個(gè)。
t表示狀態(tài)變遷,它表示弱點(diǎn)攻擊后的網(wǎng)絡(luò)狀態(tài)的一次改變,可以是獲得新的權(quán)限的過(guò)程、增加新的連接關(guān)系的過(guò)程、或者是獲取新的弱點(diǎn)的過(guò)程。
圖2為一個(gè)獲取新的權(quán)限的弱點(diǎn)攻擊的具體實(shí)例,具體為,攻擊者從所控制的主機(jī)H1出發(fā),利用主機(jī)H2上的IIS Web服務(wù)中的一個(gè)漏洞(CVE2016-1194),獲取主機(jī)H2的Root權(quán)限。該弱點(diǎn)攻擊應(yīng)滿足4個(gè)前提條件:(1)攻擊者在源主機(jī)H1的權(quán)限至少為User(即U_H1);(2)主機(jī)H1可以訪問(wèn)主機(jī)H2的Http服務(wù)(即Http_H1_H2);(3)主機(jī)H2上的IIS Web服務(wù)正在運(yùn)行(即Web_H2);(4)主機(jī)H2上的IIS Web服務(wù)存在一個(gè)編號(hào)為CVE 2016-1194的漏洞(即V1194)。只有當(dāng)以上4個(gè)條件都滿足時(shí),攻擊者才可能成功地從主機(jī)H1上發(fā)起對(duì)主機(jī)H2的攻擊(即V1194_H1_H2),攻擊結(jié)果是:攻擊者可能獲得了主機(jī)H2上的Root權(quán)限(即R_H2)。
攻擊者成功攻擊被攻擊主機(jī)花費(fèi)的代價(jià),記為Cost,可用一個(gè)二元組表示,即Cost=(Acx,Dsk)
Acx表示攻擊復(fù)雜度值,本文將弱點(diǎn)被成功利用的難易度的概率統(tǒng)計(jì)值,作為反映一次成功攻擊的量化指標(biāo)。這個(gè)概率統(tǒng)計(jì)值稱為攻擊復(fù)雜度值,記為Acx。根據(jù)調(diào)查統(tǒng)計(jì),研究人員通過(guò)對(duì)大量安全事件的分析發(fā)現(xiàn)弱點(diǎn)的發(fā)掘利用周期和攻擊復(fù)雜度值A(chǔ)cx之間存在一種映射關(guān)系,通過(guò)這種映射關(guān)系能夠表達(dá)出各個(gè)弱點(diǎn)在攻擊復(fù)雜度值A(chǔ)cx上的差異。表1為弱點(diǎn)攻擊復(fù)雜度值A(chǔ)cx的量化表。
表1 弱點(diǎn)Acx量化表
Dsk表示被發(fā)現(xiàn)的風(fēng)險(xiǎn)值,本文將針對(duì)弱點(diǎn)攻擊時(shí),行為被發(fā)現(xiàn)的概率統(tǒng)計(jì)值作為反映攻擊失敗的量化指標(biāo)。這個(gè)概率統(tǒng)計(jì)值稱為被發(fā)現(xiàn)的風(fēng)險(xiǎn)值,記為Dsk。根據(jù)美國(guó)國(guó)家基礎(chǔ)設(shè)施顧問(wèn)委員會(huì)NIAC提出的、旨在提供一套開(kāi)放的通用的弱點(diǎn)評(píng)分框架機(jī)制CVSS(Commom Vulnerabiliyt Scoring System),本文以CI/II/AI的量化值來(lái)評(píng)估Dsk值的大小。
表2 CVSS基本度量組指標(biāo)量值表
在弱點(diǎn)評(píng)分框架機(jī)制CVSS中,基本的度量組包含六項(xiàng)指標(biāo):入侵途徑AV、身份認(rèn)證AU、攻擊復(fù)雜度Acx、機(jī)密性影響CI、完整性影響II、可用性影響AI。由表2可以看出,弱點(diǎn)對(duì)入侵途徑即攻擊位置要求越低、對(duì)攻擊者身份認(rèn)證要求越低、對(duì)攻擊的復(fù)雜度要求越低,相應(yīng)指標(biāo)度量值越大,CI/II/AI的影響越小,因此被發(fā)現(xiàn)的風(fēng)險(xiǎn)值Dsk就越小。所以,本文以CI/II/AI的量化值來(lái)評(píng)估Dsk值的大小。
根據(jù)上述NST模型,本文提出了一種基于狀態(tài)轉(zhuǎn)移網(wǎng)絡(luò)攻擊模型(NST模型)的攻擊圖生成方法,通過(guò)引入相關(guān)性系數(shù)來(lái)定量地分析攻擊花費(fèi)(Cost)中的攻擊復(fù)雜度值和被發(fā)現(xiàn)的風(fēng)險(xiǎn)值之間的關(guān)系,并以此優(yōu)化攻擊花費(fèi)的計(jì)算。最后,基于重新計(jì)算后的攻擊花費(fèi)生成攻擊圖。
如圖3所示,依據(jù)上述原理,本發(fā)明提出了一種基于狀態(tài)轉(zhuǎn)移網(wǎng)絡(luò)攻擊模型的攻擊圖生成方法。該生成方法概括如下:主要借助于INAG算法來(lái)生成攻擊圖,在INAG算法中,使用隊(duì)列結(jié)構(gòu)來(lái)保存能夠添加到攻擊圖中的狀態(tài)節(jié)點(diǎn),然后從隊(duì)列中取出一個(gè)狀態(tài)節(jié)點(diǎn),從該取出的狀態(tài)節(jié)點(diǎn)出發(fā)尋找與該取出的狀態(tài)節(jié)點(diǎn)有連接關(guān)系的其他狀態(tài)節(jié)點(diǎn),如果所述其他狀態(tài)節(jié)點(diǎn)上的弱點(diǎn)攻擊可達(dá),且弱點(diǎn)攻擊的深度和花費(fèi)均在可接受的范圍內(nèi),則將該其他狀態(tài)節(jié)點(diǎn)加入到隊(duì)列中,并將該其他狀態(tài)節(jié)點(diǎn)加入到攻擊圖中,否則將該其他狀態(tài)節(jié)點(diǎn)舍棄。這樣依次循環(huán)取出隊(duì)列中的狀態(tài)節(jié)點(diǎn),直到隊(duì)列為空時(shí),循環(huán)結(jié)束,完成攻擊圖的生成。
具體而言,所述方法包括:
步驟1、針對(duì)攻擊者欲攻擊的網(wǎng)絡(luò)建立網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列,將網(wǎng)絡(luò)中的源節(jié)點(diǎn)加入到所述網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列,并將所述源節(jié)點(diǎn)加入到所述攻擊圖中;
在所述網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列中,為每個(gè)當(dāng)前節(jié)點(diǎn)建立以下屬性:
(1)當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)ID(hostid);
(2)與當(dāng)前節(jié)點(diǎn)有連接關(guān)系的其他狀態(tài)節(jié)點(diǎn)的節(jié)點(diǎn)ID(dst);
(3)所述其他狀態(tài)節(jié)點(diǎn)上的弱點(diǎn)編號(hào)(dst_v);
(4)攻擊者對(duì)所述當(dāng)前節(jié)點(diǎn)和所述其他狀態(tài)節(jié)點(diǎn)的訪問(wèn)權(quán)限(Crol);
(5)所述當(dāng)前節(jié)點(diǎn)與所述其他狀態(tài)節(jié)點(diǎn)之間的連接關(guān)系(conn_pro);
(6)所述其他狀態(tài)節(jié)點(diǎn)上開(kāi)放的服務(wù)(sers);
(7)所述當(dāng)前節(jié)點(diǎn)的攻擊深度(deg)和攻擊花費(fèi)(cost)。
在建立網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列之后,首先將源節(jié)點(diǎn)加入到隊(duì)列中,并為所述源節(jié)點(diǎn)建立上述七種屬性。同時(shí)還要將源節(jié)點(diǎn)加入到所述攻擊圖中。
步驟2、在所述網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列非空時(shí),從所述網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列中取出一個(gè)網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),判斷所述當(dāng)前節(jié)點(diǎn)是否為目標(biāo)節(jié)點(diǎn);
在該步驟中,依據(jù)所述當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)ID判斷所述當(dāng)前節(jié)點(diǎn)是否為目標(biāo)節(jié)點(diǎn),當(dāng)判斷所述當(dāng)前節(jié)點(diǎn)是目標(biāo)節(jié)點(diǎn)時(shí),所述方法結(jié)束,否則繼續(xù)執(zhí)行下面的步驟。當(dāng)前節(jié)點(diǎn)的節(jié)點(diǎn)ID是區(qū)分各個(gè)狀態(tài)節(jié)點(diǎn)的唯一標(biāo)識(shí)符。
在開(kāi)始時(shí),所述網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列僅包含源節(jié)點(diǎn),此時(shí)網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列為非空,可以從中取出該源節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),并通過(guò)在步驟1中為當(dāng)前節(jié)點(diǎn)建立的屬性中的節(jié)點(diǎn)ID(hostid)判斷該源節(jié)點(diǎn)不是目標(biāo)節(jié)點(diǎn),并繼續(xù)執(zhí)行下面的步驟。
之后,對(duì)于網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列中加入的其他狀態(tài)節(jié)點(diǎn),同樣依據(jù)節(jié)點(diǎn)ID(hostid)判斷其是否為目標(biāo)節(jié)點(diǎn),如果是目標(biāo)節(jié)點(diǎn),則表明對(duì)目標(biāo)節(jié)點(diǎn)的攻擊已經(jīng)完成,攻擊圖的生成方法結(jié)束。否則,將繼續(xù)執(zhí)行下面的步驟。
步驟3、當(dāng)所述當(dāng)前節(jié)點(diǎn)不是目標(biāo)節(jié)點(diǎn)時(shí),判斷所述當(dāng)前節(jié)點(diǎn)的攻擊深度和攻擊花費(fèi)是否在預(yù)先設(shè)定的最大攻擊深度和最大攻擊花費(fèi)范圍內(nèi);
所述源節(jié)點(diǎn)的攻擊深度為0。所有的弱點(diǎn)攻擊都是從源節(jié)點(diǎn)開(kāi)始的,如果弱點(diǎn)攻擊是從源節(jié)點(diǎn)到與源節(jié)點(diǎn)有連接關(guān)系的其他狀態(tài)節(jié)點(diǎn)的攻擊,則該其他狀態(tài)節(jié)點(diǎn)的攻擊深度為源節(jié)點(diǎn)的攻擊深度加1;如果弱點(diǎn)攻擊是從該其他狀態(tài)節(jié)點(diǎn)到與之有連接關(guān)系的次級(jí)其他狀態(tài)節(jié)點(diǎn)的攻擊,則該次級(jí)其他狀態(tài)節(jié)點(diǎn)的攻擊深度為所述其他狀態(tài)節(jié)點(diǎn)的攻擊深度加1。以此類推,計(jì)算當(dāng)前節(jié)點(diǎn)的攻擊深度。
所述攻擊花費(fèi)為從源節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)每一次攻擊代價(jià)的總和,在本發(fā)明實(shí)施例中,所述攻擊花費(fèi)的計(jì)算方法與傳統(tǒng)攻擊花費(fèi)的計(jì)算方法不同,本發(fā)明實(shí)施例攻擊花費(fèi)的計(jì)算方法考慮了攻擊復(fù)雜度值A(chǔ)cx和被發(fā)現(xiàn)的風(fēng)險(xiǎn)值Dsk之間的相關(guān)性,以此方法計(jì)算出的攻擊花費(fèi)Cost值在本方法中是步驟2-5循環(huán)的一個(gè)主要約束條件(當(dāng)所述當(dāng)前節(jié)點(diǎn)的攻擊花費(fèi)超出最大攻擊花費(fèi)的范圍時(shí),步驟3結(jié)束,不再繼續(xù)執(zhí)行后面的步驟4和5),保證步驟2-5的循環(huán)可以正常結(jié)束;就其作用具體來(lái)說(shuō),通過(guò)仿真實(shí)驗(yàn),應(yīng)用本發(fā)明實(shí)施例得出的攻擊圖較改進(jìn)前的攻擊圖更加簡(jiǎn)潔,并且通過(guò)統(tǒng)計(jì)發(fā)現(xiàn),所述攻擊花費(fèi)的計(jì)算值更接近實(shí)際攻擊者的付出。
本實(shí)施例中,所述攻擊花費(fèi)Cost為:
式中:n表示從源節(jié)點(diǎn)到所述被攻擊節(jié)點(diǎn)j整個(gè)攻擊路徑上的節(jié)點(diǎn)數(shù);
pejL表示利用被攻擊節(jié)點(diǎn)j上的訪問(wèn)權(quán)限最大的攻擊弱點(diǎn)成功攻擊所述被攻擊節(jié)點(diǎn)j時(shí)的花費(fèi),0<l<u,u為所述被攻擊節(jié)點(diǎn)j上的弱點(diǎn)總數(shù);
表示所述花費(fèi)中攻擊復(fù)雜度值和被發(fā)現(xiàn)的風(fēng)險(xiǎn)值的相關(guān)性系數(shù);
K(0<K<1)表示攻擊過(guò)程對(duì)攻擊者經(jīng)驗(yàn)的依賴系數(shù),其值由專家經(jīng)驗(yàn)決定;
time表示從源節(jié)點(diǎn)到被攻擊節(jié)點(diǎn)j的攻擊過(guò)程中相似攻擊的重復(fù)次數(shù);
ξ表示網(wǎng)絡(luò)緊致系數(shù),該系數(shù)反映網(wǎng)絡(luò)的魯棒性,其值由專家經(jīng)驗(yàn)決定。
若一條攻擊路徑上存在針對(duì)同一弱點(diǎn)發(fā)生的二次攻擊或多次攻擊,基于智能的攻擊主體,后續(xù)重復(fù)攻擊代價(jià)肯定會(huì)小于第一次的攻擊代價(jià),因此,攻擊過(guò)程中有弱點(diǎn)重復(fù)的弱點(diǎn)攻擊代價(jià)還與其對(duì)攻擊者經(jīng)驗(yàn)的依賴系數(shù)有關(guān)。所以,上述公式考慮了攻擊者的經(jīng)驗(yàn)依賴系數(shù)。
在上述公式中,所述相關(guān)性系數(shù)為:
式中:PA為所述花費(fèi)中的攻擊復(fù)雜度值;
PD為所述花費(fèi)中的被發(fā)現(xiàn)的風(fēng)險(xiǎn)值;
M為獲取所述攻擊復(fù)雜度值和所述被發(fā)現(xiàn)的風(fēng)險(xiǎn)值的概率統(tǒng)計(jì)次數(shù)。因?yàn)橐粋€(gè)弱點(diǎn)的攻擊復(fù)雜度和被發(fā)現(xiàn)風(fēng)險(xiǎn)值不是客觀存在的,它是利用概率統(tǒng)計(jì)原理獲取的一個(gè)概率統(tǒng)計(jì)值,為獲取一個(gè)弱點(diǎn)的這兩個(gè)屬性需要做多次試驗(yàn),每次試驗(yàn)都會(huì)得到一組值,最后利用概率統(tǒng)計(jì)原理得到近似值。M則表示進(jìn)行概率統(tǒng)計(jì)的次數(shù)。
表3 的絕對(duì)值與相關(guān)強(qiáng)度對(duì)照表
本發(fā)明引入的概念可以定量地分析攻擊復(fù)雜度值A(chǔ)cx和被發(fā)現(xiàn)的風(fēng)險(xiǎn)值Dsk之間的關(guān)系,以便依據(jù)上述Cost的計(jì)算公式重新計(jì)算攻擊花費(fèi)。從的計(jì)算公式可知,此概念基于皮爾遜積矩相關(guān)系數(shù)(Pearson product-moment correlation coefficient)對(duì)Acx和Dsk的關(guān)系進(jìn)行定量的分析。
根據(jù)皮爾遜相關(guān)系數(shù)的定義,絕對(duì)值越大,系數(shù)越接近于1或-1,相關(guān)度越強(qiáng);反之越接近于0,相關(guān)度越弱。
在所述步驟3中,當(dāng)所述當(dāng)前節(jié)點(diǎn)的攻擊深度超出所述最大攻擊深度Max_Depth的范圍、和/或當(dāng)所述當(dāng)前節(jié)點(diǎn)的攻擊花費(fèi)超出所述最大攻擊花費(fèi)Max_Cost的范圍時(shí),所述步驟3結(jié)束,不再執(zhí)行后面的步驟4和5;當(dāng)所述當(dāng)前節(jié)點(diǎn)的攻擊深度在最大攻擊深度Max_Depth范圍內(nèi)、且攻擊花費(fèi)在最大攻擊花費(fèi)Max_Cost范圍內(nèi)時(shí),繼續(xù)執(zhí)行步驟4。該最大攻擊深度Max_Depth和最大攻擊花費(fèi)Max_Cost可以是預(yù)先設(shè)定的。
步驟4、當(dāng)所述當(dāng)前節(jié)點(diǎn)的攻擊深度和攻擊花費(fèi)在所述最大攻擊深度和最大攻擊花費(fèi)范圍內(nèi)時(shí),查找所有與所述當(dāng)前節(jié)點(diǎn)有連接關(guān)系的其他狀態(tài)節(jié)點(diǎn);
在該步驟中,根據(jù)所述當(dāng)前節(jié)點(diǎn)與所述其他狀態(tài)節(jié)點(diǎn)之間的網(wǎng)絡(luò)連接關(guān)系,查找所有與所述當(dāng)前節(jié)點(diǎn)有連接關(guān)系的其他狀態(tài)節(jié)點(diǎn)。所述網(wǎng)絡(luò)連接關(guān)系,即為步驟1中為當(dāng)前節(jié)點(diǎn)建立的屬性中的連接關(guān)系(conn_pro)。
步驟5、遍歷查找所述其他狀態(tài)節(jié)點(diǎn)上的所有弱點(diǎn),若從所述當(dāng)前節(jié)點(diǎn)到所述其他狀態(tài)節(jié)點(diǎn)上的弱點(diǎn)的攻擊可達(dá),則生成新的狀態(tài)節(jié)點(diǎn),將所述新的狀態(tài)節(jié)點(diǎn)加入到所述網(wǎng)絡(luò)狀態(tài)隊(duì)列,并將滿足預(yù)設(shè)條件的所述新的狀態(tài)節(jié)點(diǎn)加入到所述攻擊圖中;
在該步驟中,可以通過(guò)在步驟1中設(shè)定的弱點(diǎn)編號(hào)(dst_v)來(lái)進(jìn)行弱點(diǎn)查找,弱點(diǎn)編號(hào)(dst_v)是區(qū)別弱點(diǎn)的唯一標(biāo)識(shí)符。
在查找到所有弱點(diǎn)之后,依次循環(huán)判斷從所述當(dāng)前節(jié)點(diǎn)到所述其他狀態(tài)節(jié)點(diǎn)上的弱點(diǎn)攻擊是否可達(dá),具體的判斷步驟如下:
步驟51、依次循環(huán)判斷所述其他狀態(tài)節(jié)點(diǎn)上的每個(gè)弱點(diǎn)(每個(gè)所述其他狀態(tài)節(jié)點(diǎn)上至少有一個(gè)弱點(diǎn))是否在前面所述的攻擊行為規(guī)則AR的規(guī)則庫(kù)中,如果不在規(guī)則庫(kù)中則將該弱點(diǎn)加入弱點(diǎn)列表(該弱點(diǎn)為本方法舍棄,留待作其他后續(xù)分析),則結(jié)束步驟5,即結(jié)束本次循環(huán);
步驟52、如果弱點(diǎn)在所述規(guī)則庫(kù)中,則判斷該弱點(diǎn)是否滿足進(jìn)行弱點(diǎn)攻擊必須滿足的前提條件集合,即AP=(src_access,conn_pro,dst_sers,dst_v),不滿足則結(jié)束本次循環(huán)。
首先、每個(gè)所述其他狀態(tài)節(jié)點(diǎn)上至少有一個(gè)弱點(diǎn),即滿足dst_v;
其次、判斷該弱點(diǎn)對(duì)應(yīng)的服務(wù)(dst_sers)是否開(kāi)放,開(kāi)放則繼續(xù)下一步操作,否則結(jié)束本次循環(huán);
再次、若對(duì)應(yīng)的服務(wù)開(kāi)放,則判斷當(dāng)前節(jié)點(diǎn)是否有獲取該服務(wù)的最低權(quán)限(src_access),有則繼續(xù)下一步操作,否則結(jié)束本次循環(huán);
最后、若有最低權(quán)限,則判斷連接關(guān)系是否存在。在步驟5中是通過(guò)所述當(dāng)前節(jié)點(diǎn)與所述其他狀態(tài)節(jié)點(diǎn)之間的網(wǎng)絡(luò)連接關(guān)系查找到的所述其他狀態(tài)節(jié)點(diǎn),因此兩節(jié)點(diǎn)之間存在連接關(guān)系,即滿足conn_pro。
需要注意的是,步驟52中的四個(gè)判斷不分先后順序。上述順序只是為了編程的方便。
在步驟5中,經(jīng)過(guò)上述判斷,若從所述當(dāng)前節(jié)點(diǎn)到所述其他狀態(tài)節(jié)點(diǎn)上的弱點(diǎn)的攻擊可達(dá),則依據(jù)前面介紹的攻擊行為規(guī)則生成新的狀態(tài)節(jié)點(diǎn),該新的狀態(tài)節(jié)點(diǎn)可以是獲得新的權(quán)限、增加新的連接關(guān)系或者是獲取新的弱點(diǎn)。將所述新的狀態(tài)節(jié)點(diǎn)加入到所述網(wǎng)絡(luò)狀態(tài)隊(duì)列,如果攻擊不可達(dá),將不再生成新的狀態(tài)節(jié)點(diǎn)(這樣,經(jīng)過(guò)多次循環(huán)之后,步驟1中建立的所述網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列就可能為空)。
對(duì)于滿足預(yù)設(shè)條件的所述新的狀態(tài)節(jié)點(diǎn),可以加入到所述攻擊圖中,具體為:
步驟53、計(jì)算所述新的狀態(tài)節(jié)點(diǎn)的攻擊深度,所述新的狀態(tài)節(jié)點(diǎn)的攻擊深度為在所述當(dāng)前節(jié)點(diǎn)的攻擊深度上加1,即Nas.depth=N_cunt.depth+1,Nas為新節(jié)點(diǎn),N_cunt為當(dāng)前節(jié)點(diǎn)。此處新的狀態(tài)節(jié)點(diǎn)的攻擊深度計(jì)算方法與步驟3中所述當(dāng)前節(jié)點(diǎn)的攻擊深度計(jì)算方法相同,此處不再贅述;
步驟54、判斷所述網(wǎng)絡(luò)狀態(tài)隊(duì)列中是否存儲(chǔ)過(guò)所述新的狀態(tài)節(jié)點(diǎn);
步驟55、若之前沒(méi)有存儲(chǔ)過(guò),則將所述新的狀態(tài)節(jié)點(diǎn)加入到所述攻擊圖中;
步驟56、若之前存儲(chǔ)過(guò),則判斷所述新的狀態(tài)節(jié)點(diǎn)的攻擊深度是否等于之前存儲(chǔ)過(guò)的所述新的狀態(tài)節(jié)點(diǎn)的攻擊深度,若等于則將所述新的狀態(tài)節(jié)點(diǎn)加入到所述攻擊圖中。
在新的狀態(tài)節(jié)點(diǎn)加入到所述攻擊圖中時(shí),同時(shí)生成以當(dāng)前節(jié)點(diǎn)為起點(diǎn)、新的狀態(tài)節(jié)點(diǎn)為終點(diǎn)的邊,并加入到攻擊圖中。
此處需要說(shuō)明的是,在所述步驟5中,若從所述當(dāng)前節(jié)點(diǎn)到一個(gè)所述其他狀態(tài)節(jié)點(diǎn)上的至少兩個(gè)弱點(diǎn)的攻擊可達(dá),且所述至少兩個(gè)弱點(diǎn)的弱點(diǎn)攻擊后果均為獲得該一個(gè)所述其他狀態(tài)節(jié)點(diǎn)的控制權(quán)限時(shí),按能夠獲得的最高控制權(quán)限存儲(chǔ)所述新的狀態(tài)節(jié)點(diǎn)。
步驟6、循環(huán)執(zhí)行所述步驟2-5,直到所述網(wǎng)絡(luò)狀態(tài)節(jié)點(diǎn)隊(duì)列為空時(shí)結(jié)束循環(huán),并生成所述攻擊圖。
執(zhí)行步驟6之后,攻擊圖全部生成,最后輸出攻擊圖即可。
本發(fā)明所述的基于狀態(tài)轉(zhuǎn)移網(wǎng)絡(luò)攻擊模型的攻擊圖生成方法,在計(jì)算攻擊花費(fèi)時(shí),不僅考慮了攻擊復(fù)雜度值A(chǔ)cx和被發(fā)現(xiàn)的風(fēng)險(xiǎn)值Dsk,而且考慮了Acx和Dsk之間的相關(guān)性,提高了攻擊圖生成的準(zhǔn)確性。此外,通過(guò)仿真實(shí)驗(yàn),應(yīng)用本發(fā)明實(shí)施例得出的攻擊圖較改進(jìn)前的攻擊圖更加簡(jiǎn)潔,并且通過(guò)統(tǒng)計(jì)發(fā)現(xiàn),所述攻擊花費(fèi)的計(jì)算值更接近實(shí)際攻擊者的付出。因此,本發(fā)明實(shí)施例提供了一種規(guī)模小、速度快、直觀性強(qiáng)、準(zhǔn)確性高的攻擊圖生成方法。
綜上所述,以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。