本發(fā)明涉及一種策略生成方法,具體涉及一種針對網(wǎng)絡(luò)脆弱性的加固策略生成方法。
背景技術(shù):
隨著泛在網(wǎng)絡(luò)、移動(dòng)互聯(lián)網(wǎng)等網(wǎng)絡(luò)信息化技術(shù)不斷發(fā)展,網(wǎng)絡(luò)規(guī)模不斷擴(kuò)大的同時(shí),網(wǎng)絡(luò)安全事件頻發(fā),計(jì)算機(jī)網(wǎng)絡(luò)的漏洞數(shù)量和嚴(yán)重級(jí)別都呈現(xiàn)明顯的增長態(tài)勢。其中,可用于實(shí)施遠(yuǎn)程網(wǎng)絡(luò)攻擊的漏洞占據(jù)了新增漏洞的絕大部分,這為對網(wǎng)絡(luò)進(jìn)行逐層滲透和復(fù)雜多步攻擊提供了必要條件?;诖?,提出一種基于支配集理論的網(wǎng)絡(luò)加固方法。
對于規(guī)模較大的網(wǎng)絡(luò)而言,使用屬性攻擊圖進(jìn)行脆弱性分析是比采用狀態(tài)攻擊圖更好的方式,可以有效解決狀態(tài)爆炸問題。
技術(shù)實(shí)現(xiàn)要素:
為了實(shí)現(xiàn)上述目的,本方法采用屬性攻擊圖對網(wǎng)絡(luò)進(jìn)行建模分析,并提出一種基于初始屬性節(jié)點(diǎn)集合構(gòu)成的支配集,從而確定網(wǎng)絡(luò)加固策略的方法,更適應(yīng)對規(guī)模較大的網(wǎng)絡(luò)進(jìn)行加固。針對規(guī)模較大的網(wǎng)絡(luò),借鑒圖論中支配集的思想,將屬性攻擊圖映射為有向二部圖,采用貪心算法求解初始屬性節(jié)點(diǎn)的最小支配集,所得到的最小支配集mds,可以幫助網(wǎng)絡(luò)人員選取合理的網(wǎng)絡(luò)加固策略。
本發(fā)明的目的是采用下述技術(shù)方案實(shí)現(xiàn)的:
一種針對網(wǎng)絡(luò)脆弱性的加固策略生成方法,所述方法包括下述步驟:
1)構(gòu)建初始屬性節(jié)點(diǎn)集合和原子攻擊節(jié)點(diǎn)集合;所述原子攻擊節(jié)點(diǎn)集合中包括后果屬性節(jié)點(diǎn);
2)確定包含兩類節(jié)點(diǎn)的屬性攻擊圖,并將屬性攻擊圖映射為二部圖;
3)刪除二部圖中所有后果屬性節(jié)點(diǎn);
4)識(shí)別刪除后果屬性節(jié)點(diǎn)后,二部圖中初始屬性節(jié)點(diǎn)集合的節(jié)點(diǎn)與邊,并利用greedy-set-cover算法獲取最小支配集。
優(yōu)選的,所述步驟1)中,構(gòu)建初始屬性節(jié)點(diǎn)集合包括:令
初始屬性節(jié)點(diǎn)的入度id(u)=0,
初始屬性節(jié)點(diǎn)的出邊集為o(u)={v:(u,v)∈e},任意初始屬性節(jié)點(diǎn)u∈pre,則初始屬性節(jié)點(diǎn)的出度為od(u)≥1,
其中,w為前提邊,e為有向邊集合。
優(yōu)選的,所述步驟1)中,構(gòu)建原子攻擊節(jié)點(diǎn)集合包括:令
其中,w為前提邊,ai的原子攻擊入度
生成后果屬性節(jié)點(diǎn),即原子攻擊的出度
優(yōu)選的,所述步驟2)確定包含兩類節(jié)點(diǎn)的屬性攻擊圖包括:定義原子攻擊節(jié)點(diǎn)集合為a,屬性節(jié)點(diǎn)集合c,前提邊集合為
其中,(a∪c)為屬性節(jié)點(diǎn)集合,rr∪ri為邊集合。
優(yōu)選的,所述步驟2)將屬性攻擊圖映射為二部圖包括:令g=(v,e)為初始屬性節(jié)點(diǎn)集合v與有向邊集合e構(gòu)成的有向二部圖,有
對于任意邊(u,v)∈e,(u,v)=u→v表示該邊由初始屬性節(jié)點(diǎn)u指向節(jié)點(diǎn)v;
設(shè)s1、s2均為構(gòu)成初始屬性節(jié)點(diǎn)集合v的劃分,當(dāng)且僅當(dāng)
優(yōu)選的,所述步驟3)的二部圖包含初始屬性節(jié)點(diǎn)、原子攻擊節(jié)點(diǎn),以及初始屬性節(jié)點(diǎn)指向原子攻擊節(jié)點(diǎn)的有向邊。
優(yōu)選的,所述步驟4)識(shí)別刪除后果屬性節(jié)點(diǎn)后,二部圖中初始屬性節(jié)點(diǎn)集合
進(jìn)一步地,所述步驟4)利用greedy-set-cover算法獲取最小支配集:假定g中的所有m個(gè)原子攻擊節(jié)點(diǎn)會(huì)被劃分成n個(gè)子集,該n個(gè)子集中的每一個(gè)都對應(yīng)特定的初始屬性節(jié)點(diǎn);記錄每個(gè)初始屬性節(jié)點(diǎn)所覆蓋的原子攻擊的數(shù)目,每個(gè)初始屬性節(jié)點(diǎn)覆蓋的原子攻擊表示刪除后果屬性節(jié)點(diǎn)的二部圖g中相應(yīng)原子攻擊節(jié)點(diǎn)的子集;
輸入集合簇s(i)=si,(1≤i≤n)為原子攻擊節(jié)點(diǎn)集合ε的子集,當(dāng)x∈c∧ε=∪x∈cc時(shí),集合x覆蓋全部原子攻擊節(jié)點(diǎn);其中,c為ε集合冪集的子集即
采用greedy-set-cover(ε,s)算法獲取覆蓋所有原子攻擊節(jié)點(diǎn)的初始屬性節(jié)點(diǎn)屬性攻擊圖中的最優(yōu)覆蓋集d=d∪s(i),即最小支配集。
與現(xiàn)有技術(shù)相比,本發(fā)明達(dá)到的有益效果是:
本發(fā)明通過建立目標(biāo)網(wǎng)絡(luò)對應(yīng)的屬性攻擊圖并求解初始屬性節(jié)點(diǎn)集合的最優(yōu)覆蓋集從而確定合理的網(wǎng)絡(luò)加固措施。所得的極小支配集可以覆蓋攻擊圖中所有的原子攻擊。這一支配集可以幫助網(wǎng)絡(luò)人員選取合理的網(wǎng)絡(luò)加固策略。本方案適用于規(guī)模較大的網(wǎng)絡(luò)中,網(wǎng)絡(luò)管理員只需要關(guān)注初始屬性節(jié)點(diǎn)集合中的部分節(jié)點(diǎn)即可實(shí)現(xiàn)對網(wǎng)絡(luò)的高效加固。
1)使用屬性攻擊圖進(jìn)行脆弱性分析更加直觀有效。
2)適用于針對規(guī)模較大的網(wǎng)絡(luò)進(jìn)行加固,可以有效解決狀態(tài)爆炸問題。
3)最優(yōu)網(wǎng)絡(luò)加固策略的生成問題就轉(zhuǎn)換為了求解初始屬性節(jié)點(diǎn)集合構(gòu)成的最小支配集的問題。得出的最小支配節(jié)點(diǎn)代表一系列關(guān)鍵屬性,這些屬性覆蓋所有的原子攻擊節(jié)點(diǎn),如果能使這些屬性失效即可實(shí)現(xiàn)有效的網(wǎng)絡(luò)安全防御。
附圖說明
圖1針對網(wǎng)絡(luò)脆弱性的加固策略生成方法流程圖;
圖2屬性攻擊圖對應(yīng)的二部圖;
圖3目標(biāo)主機(jī)拓?fù)浣Y(jié)構(gòu)圖;
圖4目標(biāo)屬性攻擊圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式做進(jìn)一步的詳細(xì)說明。
單個(gè)初始屬性節(jié)點(diǎn)的狀態(tài)可能決定著多個(gè)原子攻擊成功與否,初始屬性節(jié)點(diǎn)集合與原子攻擊節(jié)點(diǎn)集合之間的關(guān)系是多對多的關(guān)系(m:n)。給定一個(gè)初始屬性節(jié)點(diǎn)集合s={x,y,z},現(xiàn)在考慮這樣一種情況,初始屬性節(jié)點(diǎn)x是所有原子攻擊節(jié)點(diǎn)的前提屬性節(jié)點(diǎn),而y與z節(jié)點(diǎn)僅為部分原子攻擊的前提屬性節(jié)點(diǎn),此時(shí)稱在該集合中x占主導(dǎo)地位。對于原子攻擊節(jié)點(diǎn),其所有前提條件節(jié)點(diǎn)狀態(tài)都為true時(shí),該原子攻擊方能執(zhí)行。各初始屬性節(jié)點(diǎn)間的關(guān)系為合取關(guān)系,因此在移除處于主導(dǎo)地位的初始屬性節(jié)點(diǎn),例如此處的x,就可以阻止大部分原子攻擊的發(fā)生。
如此,最優(yōu)網(wǎng)絡(luò)加固策略的生成問題就轉(zhuǎn)換為了求解初始屬性節(jié)點(diǎn)集合構(gòu)成的最小支配集的問題。主要思想即為將屬性攻擊圖看作一個(gè)有向二部圖,通過計(jì)算攻擊圖g由初始屬性節(jié)點(diǎn)集合構(gòu)成的最小支配集(mds)的方式,來決定網(wǎng)絡(luò)加固所應(yīng)采取的措施。得出的最小支配節(jié)點(diǎn)代表一系列關(guān)鍵屬性,這些屬性覆蓋所有的原子攻擊節(jié)點(diǎn),如果能使這些屬性失效即可實(shí)現(xiàn)有效的網(wǎng)絡(luò)安全防御。
為解決這一問題,可將上述問題轉(zhuǎn)換為經(jīng)典的集合覆蓋問題(setcoverproblem,scp)。因?yàn)閷傩怨魣Dg中每個(gè)初始屬性節(jié)點(diǎn)都可以覆蓋一個(gè)或多個(gè)原子攻擊節(jié)點(diǎn),可以假定屬性攻擊圖g中的所有m個(gè)原子攻擊節(jié)點(diǎn)會(huì)被劃分成n個(gè)子集,這n個(gè)子集中的每一個(gè)都對應(yīng)特定的初始屬性節(jié)點(diǎn)。本章的目標(biāo)即在于計(jì)算攻擊圖g中所有原子攻擊節(jié)點(diǎn)的最優(yōu)覆蓋集,該集合可以覆蓋屬性攻擊圖中的所有原子攻擊節(jié)點(diǎn)且初始屬性節(jié)點(diǎn)的數(shù)目最小。更精確的表述:令集合ε,|ε|=m為原子攻擊節(jié)點(diǎn)的全集,c為ε集合冪集的子集即
因?yàn)樵诰W(wǎng)絡(luò)加固時(shí),我們僅考慮初始屬性節(jié)點(diǎn)集合,算法中計(jì)算了每個(gè)初始屬性節(jié)點(diǎn)所覆蓋的原子攻擊的數(shù)目。每個(gè)初始屬性節(jié)點(diǎn)覆蓋的原子攻擊代表攻擊圖g中相應(yīng)原子攻擊的子集。集合簇c中的每一個(gè)子集至少覆蓋攻擊圖g中的一個(gè)原子攻擊構(gòu)成的子集。目標(biāo)即為尋找一個(gè)集合
如圖1所示,本發(fā)明提供一種針對網(wǎng)絡(luò)脆弱性的加固策略生成方法,所述方法包括下述步驟:
1)構(gòu)建初始屬性節(jié)點(diǎn)集合和原子攻擊節(jié)點(diǎn)集合;所述原子攻擊節(jié)點(diǎn)集合中包括后果屬性節(jié)點(diǎn);
2)確定包含兩類節(jié)點(diǎn)的屬性攻擊圖,并將屬性攻擊圖映射為二部圖;
3)刪除二部圖中所有后果屬性節(jié)點(diǎn);
4)識(shí)別刪除后果屬性節(jié)點(diǎn)后,二部圖中初始屬性節(jié)點(diǎn)集合的節(jié)點(diǎn)與邊,并利用greedy-set-cover算法獲取最小支配集。
第一步:分析網(wǎng)絡(luò)建模環(huán)境,構(gòu)建初始屬性節(jié)點(diǎn)集合和原子攻擊節(jié)點(diǎn)集合;
1、初始屬性節(jié)點(diǎn)集合:屬性攻擊圖中含有兩類安全屬性節(jié)點(diǎn)。第一類屬性節(jié)點(diǎn)僅作為原子攻擊的前提屬性節(jié)點(diǎn)存在,不作為任何原子攻擊的后果屬性節(jié)點(diǎn),且該類屬性節(jié)點(diǎn)僅存在于屬性攻擊圖的初始位置,這一類節(jié)點(diǎn)被稱作初始屬性節(jié)點(diǎn)。該類節(jié)點(diǎn)對于網(wǎng)絡(luò)加固非常重要,因?yàn)槠涮幵诟鞣N攻擊的入口位置。第二類屬性節(jié)點(diǎn)既是原子攻擊的前提屬性節(jié)點(diǎn),又是原子攻擊的后果屬性節(jié)點(diǎn),該類安全屬性節(jié)點(diǎn)不處于屬性攻擊圖的初始位置,代表某些成功原子攻擊造成的后果。
2、令
則
屬性節(jié)點(diǎn)的入度id(u)=0,
初始屬性節(jié)點(diǎn)的出邊集為o(u)={v:(u,v)∈e}。初始屬性節(jié)點(diǎn)一旦條件滿足,即可導(dǎo)致一個(gè)或多個(gè)脆弱點(diǎn)被利用。換而言之,任意初始屬性節(jié)點(diǎn)u∈pre都覆蓋著一個(gè)或者多個(gè)原子攻擊屬性節(jié)點(diǎn)。
初始屬性節(jié)點(diǎn)的出度有od(u)≥1,
3、原子攻擊節(jié)點(diǎn)集合(exploits):根據(jù)定義1,令
表1屬性攻擊圖節(jié)點(diǎn)出度入度
第二步:屬性攻擊圖。屬性攻擊圖為一個(gè)有向圖,給定原子攻擊節(jié)點(diǎn)集合為a,屬性節(jié)點(diǎn)集合c,前提邊集合為
令g=(v,e)為節(jié)點(diǎn)集合v與有向邊集合e構(gòu)成的有向二部圖。那么有
第三步:由于計(jì)算圖的支配集目前尚無多項(xiàng)式時(shí)間的算法,尋找屬性攻擊圖的最小支配集較為困難,為消減該問題的復(fù)雜度采用一種保守的方法。原子攻擊節(jié)點(diǎn)與初始屬性節(jié)點(diǎn)是攻擊圖中最重要的節(jié)點(diǎn),而后果屬性節(jié)點(diǎn)僅為成功的原子攻擊的結(jié)果。將二部圖中所有后果屬性節(jié)點(diǎn)移除。
上述操作得二部圖如圖2(b)所示,圖中僅含初始屬性節(jié)點(diǎn),原子攻擊節(jié)點(diǎn),及前者指向后者的有向邊。在所得二部圖中計(jì)算得到的mds即給出了覆蓋屬性攻擊圖中所有原子攻擊的初始屬性節(jié)點(diǎn)集合。
第四步:findmds算法如下:
在網(wǎng)絡(luò)加固時(shí),僅考慮初始屬性節(jié)點(diǎn)集合,算法中計(jì)算了每個(gè)初始屬性節(jié)點(diǎn)所覆蓋的原子攻擊的數(shù)目。每個(gè)初始屬性節(jié)點(diǎn)覆蓋的原子攻擊代表攻擊圖g中相應(yīng)原子攻擊的子集。由該算法找到的覆蓋所有原子攻擊的極小集合簇即為最終要求的mds。這一初始屬性節(jié)點(diǎn)構(gòu)成的集合覆蓋g中的所有原子攻擊,進(jìn)而也就成為初始屬性節(jié)點(diǎn)集合對應(yīng)的支配集。
greedy-set-cover算法如下:
采用如圖3所示的網(wǎng)絡(luò)拓?fù)溥M(jìn)行分析:
其中host3是攻擊者的攻擊目標(biāo)主機(jī),其上運(yùn)行的mysql數(shù)據(jù)庫服務(wù)是關(guān)鍵資源。攻擊者是一個(gè)惡意實(shí)體,其目標(biāo)是獲取host3上的root權(quán)限。防火墻將目標(biāo)網(wǎng)絡(luò)與互聯(lián)網(wǎng)絡(luò)隔開。
表3網(wǎng)絡(luò)防火墻配置
表4展示了網(wǎng)絡(luò)中各主機(jī)節(jié)點(diǎn)上脆弱點(diǎn)利用相關(guān)信息的具體情況。網(wǎng)絡(luò)中的外網(wǎng)防火墻只允許外網(wǎng)中的主機(jī)訪問host0上的服務(wù)。到其他任何主機(jī)的連接都會(huì)被阻止。內(nèi)網(wǎng)主機(jī)僅允許根據(jù)
表3網(wǎng)絡(luò)防火墻配置中的訪問控制規(guī)則進(jìn)行通信。all代表源主機(jī)可以訪問目的主機(jī)上的所有服務(wù)。none表示源主機(jī)對目的主機(jī)的任何服務(wù)進(jìn)行訪問都會(huì)被阻止[69]。
表4脆弱點(diǎn)利用相關(guān)信息
根據(jù)圖3所示的網(wǎng)絡(luò)拓?fù)湟约叭绫硭镜脑L問控制規(guī)則生成的屬性攻擊圖如圖4所示。其中原子攻擊節(jié)點(diǎn)用橢圓表示,初始屬性節(jié)點(diǎn)用矩形表示,后果屬性節(jié)點(diǎn)用純文本表示。在每步原子攻擊之間橢圓連接了前提屬性節(jié)點(diǎn)和后果屬性節(jié)點(diǎn)。
由圖可知,圖4中共有17個(gè)原子攻擊節(jié)點(diǎn)。原子攻擊若想被成功實(shí)施,其前提屬性節(jié)點(diǎn)必須全部滿足。后果屬性節(jié)點(diǎn)無法被移除,除非導(dǎo)致令其產(chǎn)生的實(shí)際原因,例如脆弱點(diǎn)、不必要的服務(wù)/開放端口等已經(jīng)被從網(wǎng)絡(luò)中移除。另一方面,初始屬性節(jié)點(diǎn)在加固網(wǎng)絡(luò)時(shí)卻可以被獨(dú)立的移除。采用第findmds算法,可得上述屬性攻擊圖產(chǎn)生的極小支配為:
mds={user(0),ftp(0,1),squid-proxy(1,3),licq(0,3),squid-
proxy(0,3),licq(0,3),ftp(2,1),ssh(2,1),net-bios-ssn(0,2),squid-
proxy(2,3),ssh(0,1),netbios-ssn(1,2),licq(2,3)}
優(yōu)先破壞一個(gè)或多個(gè)初始屬性節(jié)點(diǎn)可以阻止需要其作為先決條件的網(wǎng)絡(luò)攻擊,進(jìn)而阻止關(guān)鍵資源被攻陷。值得注意的是安全管理員在做決定的時(shí)候必須要考慮這些初始條件對應(yīng)的成本。
最后應(yīng)當(dāng)說明的是:以上實(shí)施例僅用以說明本申請的技術(shù)方案而非對其保護(hù)范圍的限制,盡管參照上述實(shí)施例對本申請進(jìn)行了詳細(xì)的說明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:本領(lǐng)域技術(shù)人員閱讀本申請后依然可對申請的具體實(shí)施方式進(jìn)行種種變更、修改或者等同替換,這些變更、修改或者等同替換,其均在其申請待批的權(quán)利要求范圍之內(nèi)。