劉棣華,毛忠亮
(長春工業(yè)大學 計算機科學與工程學院, 吉林 長春 130012)
?
一種基于攻擊樹的滲透測試模型
劉棣華,毛忠亮
(長春工業(yè)大學 計算機科學與工程學院, 吉林 長春130012)
借鑒攻擊樹理論,設計了一種基于攻擊樹的滲透測試模型,并給出了基于攻擊樹的滲透測試流程。
網(wǎng)絡安全; 滲透測試; 攻擊樹; 攻擊模型
滲透測試是近年來新興的一種網(wǎng)絡安全方法。大多數(shù)人認為滲透測試的目的是入侵某個網(wǎng)絡或某臺計算機,這是一種不全面的認識。滲透測試的真正目的是發(fā)現(xiàn)目標網(wǎng)絡中不安全因素,從而對網(wǎng)絡安全性進行評估,并提出相應的應對策略。滲透測試是通過模擬惡意黑客的攻擊方法來評估計算機網(wǎng)絡系統(tǒng)安全的一種評估方法。這個過程包括對系統(tǒng)的任何弱點、技術缺陷或漏洞的主動分析,這個分析是從一個攻擊者可能存在的位置來進行的,并且從這個位置有條件的主動利用安全漏洞。測試人員需要向目標網(wǎng)絡管理員提供網(wǎng)絡安全狀態(tài)分析結果,而網(wǎng)絡管理員根據(jù)分析結果找到網(wǎng)絡的脆弱性和薄弱環(huán)節(jié),并制定相應的安全計劃。
隨著網(wǎng)絡安全漏洞種類的不斷增多,導致滲透測試技術、工具和框架變得越來越復雜,一次有效而全面的滲透測試需要運用多種攻擊技術,這就需要一個滲透測試模型來指導測試。但現(xiàn)有的滲透測試模型主要是采用線性遍歷漏洞進行測試,如OSSTMM、NISTSP-800-42。這些滲透測試模型往往會忽略漏洞之間的邏輯關系,孤立地看待網(wǎng)絡的安全性,很難體現(xiàn)出多階段網(wǎng)絡攻擊和協(xié)同攻擊。這與現(xiàn)實中的黑客攻擊過程有很大的區(qū)別,很難模擬實際的網(wǎng)絡攻擊,并且過度依賴測試人員的專業(yè)能力。因此,為彌補現(xiàn)有滲透測試模型的不足,滲透測試需要一種既能夠模擬網(wǎng)絡攻擊過程,又可以有效組織測試項目的測試模型。研究人員借鑒成熟的攻擊建模思想來構造滲透測試模型。周曉俊[1]等通過對滲透測試流程和滲透測試技術的優(yōu)缺點分析,改進了滲透測試流程;陳國棟[2]等基于網(wǎng)絡攻擊圖在自動滲透測試中的應用中提出了一種新的網(wǎng)絡攻擊圖自動生成及優(yōu)化方法;周偉[3]等提出了一種基于樹結構的網(wǎng)絡滲透測試系統(tǒng)。楊濤[4]等提出基于有色Petri網(wǎng)的滲透測試模型。
文中借鑒BruceSchneier提出的攻擊樹的概念對其進行優(yōu)化,提出一種基于攻擊樹的滲透測試模型。該模型簡化了一些測試前不必要的網(wǎng)絡掃描,節(jié)省了資源(如時間、帶寬等),并考慮到了目標網(wǎng)絡信息的不完整性和具體的網(wǎng)絡環(huán)境,使?jié)B透測試過程更符合現(xiàn)實的網(wǎng)絡攻擊。
1.1攻擊樹概念
BruceSchneier[5]在1999年首次提出了攻擊樹的概念。攻擊樹提供了一種正式而條理清晰的方法來描述系統(tǒng)所面臨的安全威脅和系統(tǒng)可能受到的多種攻擊。攻擊樹具有多級節(jié)點,其中包括根節(jié)點、非葉節(jié)點、葉節(jié)點。
在攻擊樹模型中,用一種樹狀結構描述系統(tǒng)面臨的安全威脅和可能受到的安全攻擊。其中根節(jié)點表示最終的目標,非葉節(jié)點表示攻擊的子目標,葉節(jié)點表示達到目標的不同方法,葉節(jié)點可根據(jù)具體的網(wǎng)絡環(huán)境實例化為具體事件或方法。節(jié)點之間的關系有“或”、“與”、“順序與”三種關系?!盎颉标P系表示任一子結點目標的取得都可以導致父結點目標的取得?!芭c”關系表示所有子結點目標的取得才可以導致父結點目標的取得?!绊樞蚺c”關系表示所有子結點目標的按順序取得才可以導致父結點目標的取得[6-9]。
攻擊樹模型中的節(jié)點關系表示方法如圖1所示。
圖1 攻擊樹模型中的節(jié)點關系表示方法
對一棵給定的攻擊樹,通過對各個節(jié)點的賦值和計算,可以從樹的某一個葉節(jié)點開始找到一條能夠實現(xiàn)攻擊目的路徑。文中對攻擊樹模型進行了優(yōu)化,針對樹中的或結點,假設G是目標節(jié)點,而{A1,A2,…,An}是可以獨立地實現(xiàn)目標節(jié)點G的子節(jié)點,Pk、Tk分別是子節(jié)點Ak的執(zhí)行成功的概率和預期的開銷。這些子節(jié)點按照Tk/Pk的比值,以從小到大的順序排列,然后按排完序的順序依次執(zhí)行這些子節(jié)點相應的攻擊動作,直到獲得目標節(jié)點G或者這些攻擊動作執(zhí)行失?。会槍渲械呐c節(jié)點,假設G是目標,子節(jié)點 {A1,A2,…,An}是需要全部執(zhí)行完畢才可以實現(xiàn)目標G的一組子節(jié)點,Pk、Tk分別是子節(jié)點Ak的執(zhí)行成功的概率和預期的開銷,這些攻擊動作按Tk/Pk的比值,以從大到小的順序排列,然后按排完序的順序依次執(zhí)行這些子節(jié)點的攻擊動作,直到有一個子節(jié)點執(zhí)行失敗或者這些子節(jié)點攻擊動作執(zhí)行全部成功,實現(xiàn)目標G。按照Tk/Pk從大到小的順序執(zhí)行,如果有一個子節(jié)點Ak執(zhí)行失敗,其后的攻擊動作就不用執(zhí)行了,從而減少了不必要的開銷[10-11]。
1.2設計思想
基于攻擊樹的滲透測試模型以攻擊樹理論為基礎,并以優(yōu)化的攻擊樹作為模型指導測試[12]。設計思路是樹的根節(jié)點表示滲透測試的最終目標,非葉節(jié)點表示滲透測試的子目標,葉節(jié)點表示達到目標的不同方法,測試人員根據(jù)所了解的目標網(wǎng)絡信息,并可依據(jù)這些信息進行從葉節(jié)點進行測試。這樣通過對各個節(jié)點的賦值和計算,可以從樹的某一個葉節(jié)點開始找到一條能夠實現(xiàn)攻擊目的,同時成功概率又比較大或開銷較低的攻擊路徑。根據(jù)以上思路,基于攻擊樹的滲透測試模型可分為3個步驟:
1)以滲透測試的最終目標作為根節(jié)點,依據(jù)相應的攻擊樹生成算法構造出攻擊樹。
2)根據(jù)生成的攻擊樹,生成相應的攻擊路徑。
3)執(zhí)行相應的測試過程。
1.3攻擊樹的構造
攻擊樹是一個樹狀結構,由根節(jié)點、非葉節(jié)點、葉節(jié)點組成。根節(jié)點是攻擊目標,達到目標的不同方法則用葉節(jié)點表示,非葉節(jié)點表示各個子目標。節(jié)點之間的關系有“或”、“與”、“順序與”三種關系。將滲透測試的最終目標作為根節(jié)點,根據(jù)要實現(xiàn)的最終目標,按照1.1中所述的針對與節(jié)點、或節(jié)點的策略,依次地添加完成最終目標所需的子目標,然后遞歸地添加實現(xiàn)子目標所需的方法,以自頂向下的方式構造出一棵攻擊樹。我們可以歸納出構建攻擊樹的一般步驟:
1)確定目標,每個目標都是單獨的攻擊樹。
2)添加實現(xiàn)目標所需的子節(jié)點,這些子節(jié)點可以是“或”、“與”、“順序與”的關系,也可以是用直接實現(xiàn)目標的攻擊方法作為子節(jié)點。
3)添加實現(xiàn)子節(jié)點的攻擊方法。
我們以取得一個WebServer最高管理權限為例,來說明攻擊樹的構建。
G0獲取WebServer最高管理權限
G1確定WebServer
G2確定防火墻、IP地址
G21查詢域名服務器
G22掃描防火墻
G23通過防火墻追蹤WebServer
G3確定防火墻的訪問權限
G31搜尋特定的缺省的監(jiān)聽端
G32廣泛的掃描所有開放端口
G4確定WebServer所使用的操作系統(tǒng)
G41通過掃描操作系統(tǒng)的BANNER來確定
G42探測TCP/IP棧來確定操作系統(tǒng)的特征信息
G5利用WebServer系統(tǒng)的脆弱性進行攻
G51直接根據(jù)局域網(wǎng)內敏感共享信息
G52通過WebServer特權賬號取得特定數(shù)據(jù)的
WebServer的攻擊樹如圖2所示。
圖2WebServer的攻擊樹
通過圖2可以看出,取得目標G0需要實現(xiàn)子目標G1、G2、G3、G4、G5,而實現(xiàn)子目標又需要添加相應的分支節(jié)點,這樣就可遞歸地構造出攻擊樹。
1.4攻擊路徑的生成
依據(jù)生成的攻擊樹,通過對各個節(jié)點的賦值和計算按照深度優(yōu)先的策略,從葉節(jié)點開始,以自底向上的方式尋找出可以獲得最終目標的最佳路徑。節(jié)點的屬性值包括取得上層目標的預期開銷和成功的概率。開銷包括時間、帶寬等。
針對樹中的或結點,假設G是目標節(jié)點,而{A1,A2,…,An}是可以獨立地實現(xiàn)目標G的子節(jié)點,Pk、Ck分別是子節(jié)點Ak的執(zhí)行成功的概率和預期的開銷。這些子節(jié)點按Ck/Pk的比值,以從小到大的順序排列,然后按排完序的順序依次執(zhí)行這些攻擊動作,直到獲得目標G或者這些攻擊動作執(zhí)行失敗。
例如或節(jié)點G1有兩個子節(jié)點A1,A2。A1的預期開銷(假設僅包括時間)為C1,成功概率為P2;A2的預期開銷為C2,成功概率為P2。由于兩個子節(jié)點是相互獨立的,所以預期的運行時間為C1+(1-P1)C2或者 C2+(1-P2)C1。
假設
則可推出
C1/P1 推導過程如下: 所以子節(jié)點按Ck/Pk的比值,以從小到大的順序排列,按照這個順序執(zhí)行相應滲透測試步驟。擁有4個子節(jié)點的“與節(jié)點”,這4個子節(jié)點的執(zhí)行順序見表1。 表1 4個子節(jié)點的執(zhí)行順序 針對樹中的與節(jié)點,假設G是目標,子節(jié)點{A1,A2,…,An}是需要全部執(zhí)行完畢才可以實現(xiàn)目標G,Pk、Ck分別是子節(jié)點Ak的執(zhí)行成功的概率和預期的開銷,這些子節(jié)點按Ck/Pk的比值,以從大到小的順序排列,然后按排完序的順序依次執(zhí)行這些攻擊動作,直到有一個子節(jié)點執(zhí)行失敗或者這些子節(jié)點執(zhí)行全部成功,實現(xiàn)目標G。由于需要全部子節(jié)點執(zhí)行成功,才能取得上層目標,所以按照Ck/Pk從大到小的順序執(zhí)行,如果有一個子節(jié)點Ak執(zhí)行失敗,其后的攻擊動作就不用執(zhí)行了,從而減少了不必要的開銷。 依據(jù)上述關于或節(jié)點和與節(jié)點的策略,從葉節(jié)點開始,以自底向上的方式尋找出可以獲得最終目標的最佳路徑。 1.5執(zhí)行相應的滲透測試 根據(jù)測試者對被測試網(wǎng)絡的了解程度,分為零知識測試(zero-knowledgetest)和全知識測試(full-knowledgetest),分別表示測試者對被測網(wǎng)絡的情況完全不了解和有一定了解。在執(zhí)行滲透測試之前,應該采集目標網(wǎng)絡的信息。由此可見,信息采集對于保證滲透測試的準確性至關重要。信息采集包括端口掃描、遠程操作系統(tǒng)掃描、漏洞掃描和數(shù)據(jù)預處理。將采集到的基本信息如開放端口、存在的漏洞等通過數(shù)據(jù)預處理形成一種結構化數(shù)據(jù)。例如要執(zhí)行LSASS緩沖區(qū)溢出測試,則要確定目標主機h的139端口是否開放、主機h是否存在LSASS漏洞和主機h的權限。而前兩者的數(shù)據(jù)類型可用布爾值表示,后者的數(shù)據(jù)類型可用枚舉類型值表示。依據(jù)生成的最佳攻擊路徑和采集到的基本信息執(zhí)行相應的滲透測試。 1.6基于攻擊樹的滲透測試模型結構 由上述的3個步驟可構建出攻擊樹模型的基本結構。主要包括4個模塊:構建攻擊樹、生成攻擊路徑、信息采集和數(shù)據(jù)預處理、執(zhí)行滲透測試。如圖3所示。 圖3 基于攻擊樹的滲透測試模型結構 基于攻擊樹的滲透測試模型流程如下: 1)將最終的目標作為根節(jié)點,構建攻擊樹。 2)基于或節(jié)點和與節(jié)點策略,生成最佳攻擊路徑。 3)采集目標網(wǎng)絡信息并進行數(shù)據(jù)預處理,然后按照生成的最佳路徑執(zhí)行滲透測試。如果執(zhí)行成功,報告攻擊成功并退出;如果執(zhí)行不成功,從攻擊樹中找到次最佳攻擊路徑,繼續(xù)執(zhí)行滲透測試。如果遍歷了攻擊樹中的所有路徑都沒有執(zhí)行成功,則根據(jù)滲透測試所得到信息重新構造攻擊樹,重復執(zhí)行上述流程。 1.7以基于攻擊樹的滲透測試模型實施IP-Spoofing攻擊 網(wǎng)絡中的一些攻擊一般都是利用一些系統(tǒng)、軟件、協(xié)議的不完善之處或漏洞發(fā)起的。下面是一個典型的IP-Spoofing攻擊。 當主機A需要訪問主機B時,要用到TCP協(xié)議與主機B通過3次握手建立連接,入侵者要冒充主機A與主機B進行連接。以G0:對B的IP-Spoofing攻擊為根節(jié)點,要實現(xiàn)目標G0,則首先要使主機A癱瘓,不能回應主機B的SYN-ACK包,然后猜測主機B的連接初始值y,發(fā)送ACK(Y+1)來冒充主機A與主機B連接,最后進行訪問主機B。由此可由根節(jié)點G0擴展出子節(jié)點G1(使主機A癱瘓)、G2(冒充主機A與主機B進行連接)、G3(訪問主機B),并且子節(jié)點G1、G2、G3是“順序與”的關系。要實現(xiàn)G1(使主機A癱瘓),則可通過一些DOS攻擊,如Land、SYN-FLOODING、DDOS等,有節(jié)點G1又可擴展出G4(Land攻擊)、G5(SYN-FLOODING攻擊)、G6(DDOS攻擊),節(jié)點G4、G5、G6是“或”的關系,按1.1所述的針對或節(jié)點的策略,對G4、G5、G6進行排序,假設順序為G4、G5、G6;要實現(xiàn)G2,通過當前的一些IP-Spoofing工具即可。由以上分析構造出攻擊樹,如圖4所示。 圖4IP-Spoofing的攻擊樹 由構造好的攻擊樹,根據(jù)1.1中針對與節(jié)點、或節(jié)點的策略,生成最佳攻擊路徑Path1:G4、G1、G2、G3、G0。根據(jù)生成的最佳路徑,進行信息采集和數(shù)據(jù)預處理,執(zhí)行相應的滲透測試;如果路徑Path1執(zhí)行不成功,根據(jù)攻擊樹生成次最佳路徑Path2:G5、G1、G2、G3、G0,繼續(xù)執(zhí)行相應的滲透測試;如果Path2執(zhí)行不成功,根據(jù)攻擊樹生成路徑Path3:G6、G1、G2、G3、G0,繼續(xù)執(zhí)行相應的滲透測試。如果遍歷了攻擊樹中的所有路徑都沒有執(zhí)行成功,則根據(jù)滲透測試所得到信息,重新構造攻擊樹,重復執(zhí)行上述流程。根據(jù)此模型生成的路徑實施SYN-FLOODING攻擊,可使與目標主機B建立連接,并且避免了一些不必要的網(wǎng)絡掃描,節(jié)約了帶寬和時間。 借鑒攻擊樹理論設計了一個基于攻擊樹的滲透測試模型,并給出了基于攻擊樹的滲透測試流程。攻擊樹模型利用攻擊樹組織滲透測試,能夠實現(xiàn)對攻擊過程的模擬和測試過程的控制。在今后的研究中,還需要根據(jù)這個模型的思想構建基于攻擊樹模型滲透測試系統(tǒng)。 [1]周曉俊,劉向東.網(wǎng)絡滲透測試技術研究[J].計算機安全,2007,24(4):285-288. [2]陳國棟,楊光臨,段曉輝.網(wǎng)絡攻擊圖在自動滲透測試中的應用[J].計算機工程,2008(7):115-118. [3]周偉,王麗娜,張煥國.一種基于樹結構的網(wǎng)絡滲透測試系統(tǒng)[J].計算機與數(shù)字工程,2006,12:15-18. [4]楊濤,郭義喜,張弘.有色Petri網(wǎng)在滲透測試中的應用[J].計算機工程,2009,35(1):156-185. [5]Schneier,Bruce.Attacktrees[J].Dr.Dobb'sJournalofSoftwareTools.,1999,24(12):21-29. [6]JLucangeli,CSarraute,GRicharte.Attackplanningintherealworld[C]//WorkshoponIntelligentSecurity,2010. [7]KevinPHaubris,JoshuaJPauli.ImprovingtheEfficiencyandEffectivenessofPenetrationTestAutomation[C]//2013 10thInternationalConferenceonInformationTechnology,2013. [8]BruceSehncier.SecretsandLies:Digitalsecurityinanetworkedworld[J].JohnWiley&Sons,2000,34:521-526. [9]CynthiaPhillips,LauraSwiler.Agraph-basedsystemfornetwork-vulnerabilityanalysis[J].ACM,1998:71-79. [10]MGunter,TBraun.Internetservicemonitoringwithmobileagents[J].IEEENetwork,2002,16(3):22-29. [11]LuShen,XiaoYanLiang,YangBo,etal.AutomaticGenerationforPenetrationTestingSchemeAnalysisModelforNetwork[C]//2011ComputationalandInformationSciences(ICCIS),2011. [12]廖曉勇,連一峰,戴英俠.網(wǎng)絡安全檢測的攻擊樹模型研究[J].計算機工程與應用,2005(3):108-110. An attack tree based model of penetration testing LIU Dihua,MAO Zhongliang (School of Computer Science & Engineering, Changchun University of Technology, Changchun 130012, China) Withattack-treetheory,wedesignapenetrationtestingmodelbasedontheattack-treeandprovidethepenetrationtestingprocess. networksecurity;penetrationtesting;attack-tree;attackmodel. 2016-05-07 劉棣華(1957-),男,漢族,黑龍江哈爾濱人,長春工業(yè)大學教授,博士,主要從事計算機網(wǎng)絡安全方向研究,E-mail:liudihua@ccut.edu.cn. 10.15923/j.cnki.cn22-1382/t.2016.4.11 TN915.08 A 1674-1374(2016)04-0367-052 結 語