王 碩 王建華 湯光明 裴慶祺 張玉臣 劉小虎
1(中國人民解放軍戰略支援部隊信息工程大學 鄭州 450001)2(空軍電子技術研究所 北京 100195)3(綜合業務網理論及關鍵技術國家重點實驗室(西安電子科技大學) 西安 710071)
隨著網絡應用的廣泛普及以及支撐技術的不斷發展,云計算、智能設備、區塊鏈、物聯網等不斷涌現的新技術正在深刻改變人們生活方式,推動社會的飛速發展.然而,與此同時,伴隨網絡而來的安全問題也愈發嚴重,不僅給廣大用戶和企業帶來嚴重的損失,也威脅著國家安全與社會穩定.根據國家計算機網絡應急技術處理協調中心的2017年度網絡安全工作報告[1],2017年我國境內感染計算機惡意程序的主機數量約1 256萬個,規模在100個主機以上的僵尸網絡數量達3 143個,WannaCry蠕蟲病毒事件爆發等.然而,在眾多網絡攻擊形式中,滲透攻擊威脅更大,特別是以高級可持續攻擊(advanced persistent threat, APT)為代表的滲透攻擊,給國家、軍隊和企業帶來了巨大的威脅.“震網”病毒[2]開啟了APT攻擊的先河,隨之而來的極光攻擊、夜龍攻擊、Lurid攻擊等均造成了巨大的危害.2017年6月安全廠商ESET公布一款針對電力變電站系統進行惡意攻擊的工業控制網絡攻擊武器Win32Industroyer(ESET命名),該攻擊武器能夠直接控制斷路器,導致變電站斷電.除此之外,BlackTech網絡間諜組織以竊取高新技術行業的機密信息為攻擊目的,發動多階段的滲透攻擊,給企業帶來不可預估的經濟損失,同時也嚴重影響了企業名譽.深入分析近年危害巨大的攻擊可知,攻擊者通過滲透攻擊,不斷利用目標網絡中的漏洞,持續在內網滲透,最終入侵目標并竊取敏感數據,給國家、軍隊乃至企業帶來巨大的威脅.滲透攻擊成為目前網絡攻擊主要手段之一,嚴重危害著網絡空間安全.
依據網絡攻防對抗實踐可知,網絡中的漏洞是客觀存在的,且不能完全被消除.攻擊者會利用目標網絡中的諸多漏洞,發動一系列有序攻擊行為,最終實現攻擊目標.隨著網絡規模的不斷擴大,目標網絡中的漏洞數量也成倍增加.由于防御資源的有限性,防御方不可能修復所有的漏洞.鑒于此,如何準確高效評估網絡中的滲透威脅,從而采取有針對性的防御措施,成為當前網絡空間安全防御的重要研究內容.滲透路徑描述了攻擊者對網絡發起的一系列攻擊行為,而最優滲透路徑描述了攻擊者針對某一攻擊目標的最大可能滲透路徑.依據最優滲透路徑,防御方能夠最優化防御資源部署,進而實現防御效能的最大化.因此,研究最優滲透路徑的生成方法,能夠為網絡安全防御提供重要決策依據,成為當前應對滲透攻擊威脅的重要手段.
攻擊圖是描述滲透路徑的經典模型,攻擊圖與貝葉斯結合形成的貝葉斯攻擊圖成為當前求解最優滲透路徑的研究熱點[3-6].Phillips等人[7]首先提出了攻擊圖模型,而后攻擊圖經歷了從手工構建到自動構建的過程,具有代表性的成果是TVA[8]和TIAA[9].然而,這些算法的效率較低,無法適用于大規模網絡.在攻擊圖模型中,攻擊圖的構建過程也就是滲透路徑的生成過程.因此,如何提高攻擊圖構建的效率成為生成滲透路徑及最優滲透路徑的關鍵,也是后續網絡安全效能評估的基礎.當前,從優化思想角度,攻擊圖構建的優化算法主要可分為2種:
1) 通過預先制定策略來簡化攻擊圖的生成.Ammann等人[10]假設攻擊者不會為了獲取已有權限而發動攻擊,一定程度上解決了屬性攻擊圖含圈的問題.Ou等人[11]通過預先設置攻擊目標,然后利用反向搜索的方法生成局部攻擊圖,提高了攻擊圖的生成效率,但生成的攻擊圖不夠全面.Dawkins等人[12]通過限制攻擊步驟數簡化攻擊圖.同樣地,馬俊春等人[13]也采用限制攻擊步驟數的優化策略,解決了攻擊圖生成過程中存在的狀態爆炸問題.苘大鵬等人[14-15]則采用限制攻擊步驟數和攻擊路徑成功概率的策略來克服攻擊圖的狀態爆炸問題.葉云等人[16]僅是針對某一確定的攻擊目標而生成的攻擊圖,而非全局攻擊圖.Barrère等人[17]提出核心攻擊圖的概念,僅關注于給定源節點和目的節點間的滲透路徑.
2) 通過約簡攻擊圖的表示方式來提高其生成效率.Noel等人[18]采用層次合并和鄰接矩陣的方法來減小攻擊圖顯示的節點數量,而狀態爆炸問題依然沒有解決.蘇婷婷等人[19]則提出屬性領接矩陣的表示方法,并設計多步鄰接矩陣的算法,提高了攻擊圖的可視性,然而其生成效率依然不高.鐘尚勤等人[20]提出主機攻擊圖生成模型和算法,通過將網絡中的主機劃分安全組,生成高層次的攻擊圖,然而該方法對目標網絡環境要求較為苛刻,適用性不強.此外,Hong等人[21]提出了分層攻擊圖表示模型,并證明在網絡安全分析中,該模型比攻擊圖和攻擊樹更高效,但其并沒有深入研究該分層攻擊圖生成的效率問題.Xie等人[22]提出了一種2層的攻擊圖,利用鄰接矩陣的不斷迭代最終生成最優滲透路徑,并用灰度圖像表示不同主機間的滲透關系,但其方法中生成滲透路徑的效率仍不高.Hong等人[23]利用分層的攻擊表現模型(attack representation models)來評估移動目標防御(moving target defense, MTD)的有效性,同樣,其僅是利用該模型進行分析,并沒有給出模型的生成方法.Pokhrel等人[24]提出利用主機訪問圖結合概率統計模型來分析網絡中漏洞節點的重要性,它本質上也是一種分層的攻擊圖,即主機訪問圖相當于上層,然而其注重安全評估,并沒有深入研究主機訪問圖的生成效率.此外,Wang等人[25]提出了一種啟發式搜索的攻擊圖構建方法,設計了匹配索引表,提高了原子攻擊匹配效率.Kerem等人[26]則建立了一個多代理分布式處理平臺,利用虛擬機的并行計算提高攻擊圖的生成效率,然而該方法僅是一種空間換時間的方式,沒有從根本上解決效率問題.
當前以APT攻擊為代表的滲透攻擊,具有持續時間長的特點,第1種方法通過限制攻擊路徑長度和狀態轉移概率等策略往往并不適用于此類攻擊的分析,這也給滲透路徑的生成提出了新的挑戰.在第2種方法中,分層攻擊圖模型一方面與漏洞數量解耦,提高了攻擊圖生成效率;另一方面其表現形式靈活,便于最優滲透路徑生成及相關的網絡安全效能評估.此外,當前的攻擊圖模型僅注重描述目標網絡中已有的漏洞利用關系,不利于描述未知攻擊和內部攻擊.
鑒于此,在考慮未知攻擊和內部攻擊條件下,為進一步提高最優滲透路徑的生成效率,本文提出一種智能高效的最優滲透路徑生成方法.首先提出雙層威脅滲透圖(two-layer threat penetration graphs, TLTPG)模型,其下層為主機威脅滲透圖(host threat penetration graph, HTPG),描述了目標網絡中任意2個主機間的微觀滲透場景;上層為網絡威脅滲透圖(network threat penetration graph, NTPG),描述了目標網絡中各主機之間的宏觀滲透關系.借助知識圖譜思想構建主機資源知識圖譜(host resource knowledge graph, HRKG),提高了單步滲透攻擊構建的靈活性和效率,且可用于描述0day漏洞攻擊,克服了傳統攻擊圖僅可描述已知攻擊的不足.進一步,利用TLTPG,設計智能化的基于滲透信息交換的最優滲透路徑選擇算法,大大提高了最優滲透路徑的生成效率.
傳統的基于攻擊圖的滲透路徑生成方法主要存在3方面缺陷:1)攻擊圖生成效率較低,無法適應大規模網絡;2)攻擊圖描述了目標網絡中已有的漏洞利用關系,但不利于描述未知攻擊和內部攻擊.為了解決該問題,本文構建了TLTPG模型,作為一個雙層圖結構,其下層為HTPG,描述了目標網絡中任意2個主機間的微觀滲透場景;上層為NTPG,描述了目標網絡中各主機之間的宏觀滲透關系.
定義1.主機威脅滲透圖表示為GHTPG=(NHTPG,EHTPG).NHTPG為節點,用Host,Privilege表示,描述攻擊者獲得的主機權限,其中Host表示攻擊者已滲透的主機,可用該主機的IP地址表示,Privilege表示攻擊者獲得的主機權限,分為User和Root;EHTPG表示邊,用于描述單步滲透攻擊,用Service,Vulnerability,Probability表示,其中Service表示滲透攻擊所利用的主機服務,Vulnerability表示滲透攻擊所利用主機服務上的漏洞,一般用公共漏洞和暴露(common vulnerabilities and exposures, CVE)編號表示,Probability表示滲透攻擊成功的概率.
定義2.網絡威脅滲透圖表示為GNTPG=(NNTPG,ENTPG).NNTPG為節點,描述主機標識,一般用主機的IP地址表示;ENTPG表示邊,描述主機間滲透成功概率,用UP,RP表示,其中UP表示從源主機滲透獲得目的主機User權限的概率,RP表示從源主機滲透獲得目的主機Root權限的概率,二者均為0-1之間的實數.
圖1展示了一個簡單的TLTPG實例.相對于傳統的攻擊圖,TLTPG通過分層,宏觀與微觀相結合,有效減少了由于生成全局攻擊圖造成的高計算復雜度和空間復雜度,且增強了其可視性,便于網絡管理員理解當前網絡面臨的滲透威脅態勢.

Fig. 1 A simple example of TLTPG圖1 一個簡單的TLTPG實例
HTPG從微觀層面細致描繪了任意2個主機之間的滲透攻擊場景.顯然,當從主機HA不能滲透到HB時,則從主機HA到主機HB不存在HTPG.假設目標網絡中的主機數為M個,再加上1個外部的攻擊者(相當于1個主機),則最多有(M+1)×M個HTPG.本質上,HTPG相當于將傳統的全局攻擊圖以主機為單位進行分割,使得由原來的1個全局攻擊圖轉換為多個HTPG,使得每一個HTPG的規模更小,生成更加靈活,也更有利于后續的網絡安全分析.

Fig. 2 A typical example of HRKG圖2 一個典型的HRKG
傳統的攻擊圖生成主要依賴構建攻擊模式并將其實例化,這種方法較為復雜且不能處理0day漏洞攻擊.當前,知識圖譜作為一個流行的知識表達和推理模型,在人工智能、語義搜索等領域取得了重大進展,不同于以往的推理模型,知識圖譜具有簡潔直觀、靈活豐富的知識表達能力,使得基于知識圖譜的推理也變得更加高效智能[27-28].鑒于此,本文以每個主機為單位建立了HRKG,其主要利用漏洞掃描工具和配置管理器等網絡安全工具,收集主機中與滲透攻擊有關的信息,并將這此信息進行合理地歸并組織.一個典型的HRKG如圖2所示:
圖2展示了一個典型的HRKG,利用(主語-謂語-賓語)三元組進行描述.例如“HB”-“Running Service”-“IIS Web”表示主機HB上運行了IIS服務,“IIS Web”-“Using Port”-“80”表示IIS Web服務需要使用80端口,“IIS Web”-“Existing Vulnerability”-“CVE-2002-0364”表示IIS Web服務上存在CVE編號為CVE-2002-0364的漏洞,“CVE-2002-0364”-“Getting Privilege of a Successful Attack”-“Root”表示攻擊者利用CVE編號為CVE-2002-0364的漏洞發動攻擊可獲得此主機的Root權限,“CVE-2002-0364”-“Probability of a Successful Attack”-“0.5”表示攻擊者利用CVE編號為CVE-2002-0364的漏洞發動攻擊成功的概率為0.5,此概率由通用漏洞評分系統(common vulnerability scoring system, CVSS)確定.特別地,服務分為本地服務和遠程服務,遠程服務則需要使用端口.當一個服務沒有包含端口的三元組時,表示此服務為本地服務,則攻擊者利用此服務中漏洞的前提條件是攻擊者擁有此主機的User權限.考慮到未知攻擊在目前網絡攻擊中所占比重逐漸增大,其對網絡安全評估的結果影響也較大,本文利用假設規則來處理未知攻擊,進而提高網絡漏洞評估的準確性和合理性,具體設計規則如下:若遠程服務沒有漏洞,則假設其存在一個0day漏洞,攻擊者可利用此漏洞獲得主機的User權限,其概率為0.05;若本地服務沒有漏洞,則假設其存在一個0day漏洞,攻擊者可利用此漏洞獲得主機的Root權限,其概率為0.05.此概率可依據具體網絡的實際狀況靈活設定.

Fig. 3 HTPG from HAto HB圖3 由主機HA到主機HB的HTPG
依據HRKG,結合由網絡拓撲工具獲得的主機間連接信息,很容易得到由主機HA到主機HB的HTPG,如圖2中所示,當主機HA能夠連接到主機HB的80和21端口時,生成的主機HA到主機HB的HTPG如圖3所示.顯然,利用乘法原則,由HTPG易得從主機HA滲透獲得主機HB的User權限的概率為0.7,從主機HA滲透獲得主機HB的Root權限的概率為0.56.
相比傳統攻擊模式方法的復雜性,基于知識圖譜的HTPG生成方法更加簡潔直觀、靈活智能,具備了知識推理的邏輯結構能力,且能夠有效表征未知攻擊,提高了攻擊描述能力.
定義3.最優滲透路徑.滲透分為直接滲透和間接滲透.直接滲透指從一個主機直接發起攻擊滲透到另一個主機;間接滲透指從一個主機通過其他主機作為跳板發起多步攻擊滲透到另一個主機.從主機HA發動攻擊滲透到主機HB最大可能的攻擊路徑,稱為主機HA到HB的最優滲透路徑.顯然,最優滲透路徑可能為直接滲透或間接滲透.
定義4.滲透成功概率.主機HA到HB的最優滲透路徑的滲透成功概率稱為從主機HA到HB的滲透成功概率.滲透成功概率計算依據乘法原則,若主機HA到HB的滲透成功率為0.5,主機HB到主機HC的滲透成功概率為0.7,則從主機HA經過主機HB到主機HC的攻擊成功率為0.5×0.7=0.35.特別地,NTPG中的概率便指的是滲透成功概率.
由HTPG易得到任意2個主機之間的直接滲透成功概率,然而由于主機之間滲透路徑的多樣性,使得2個主機之間的直接滲透并非一定是2個主機之間的最優滲透路徑,也就是說由HTPG獲得的2個主機之間的直接滲透成功概率并非此2個主機之間的滲透成功概率.例如,當由HTPG得到主機HA到HB的直接滲透成功概率為0,即從主機HA并不能直接滲透到主機HB(可能是從主機HA不能直接訪問主機HB),同時,由HTPG得到主機HA到主機HC的直接滲透成功概率為(0.6,0.4),主機HC到主機HB的直接滲透成功概率為(0.5,0.4),顯然通過間接的主機HC,從主機HA能夠滲透成功到主機HB.因此,如何利用HTPG生成它們的最優滲透路徑以及滲透成功概率是生成NTPG的關鍵.
針對此問題,本文從經典的路由信息協議(routinn information protocol, RIP)獲得啟發,提出了基于滲透信息交換的NTPG生成(NTPG generation, NG)算法,該算法是一個分布式算法.將每一個主機都看作一個智能體,一邊維護從它自己到其他每一個主機的滲透信息,另一邊不斷和其他主機交換滲透信息.每個智能體的動作如下:
1) 僅和相鄰主機交換滲透信息.如果從主機HA能夠直接滲透到主機HB,則稱主機HB為主機HA的相鄰主機.NG算法規定,不相鄰的主機不交換滲透信息.
2) 主機交換的滲透信息是當前主機所知道的全部信息,即自己的滲透信息表.也就是說,交換的信息是“我到目標網絡中所有主機的滲透成功概率,以及滲透到每個主機應利用的下一個跳板主機”.
3) 按固定的時間間隔交換滲透信息.例如每隔1 min.然后主機根據自己收到的滲透信息更新滲透信息表.當主機連接、漏洞更新等網絡安全要素變化時,相應主機也及時向相鄰主機通告網絡安全要素變化后的滲透信息,以保證目標網絡中所有主機的滲透信息的準確性.
顯然,NG算法在剛剛開始時,每個主機僅知道到其相鄰主機的滲透成功概率(由HTPG可知).接著,每一個主機也僅和數量非常有限的相鄰主機交換并更新滲透信息.但經過若干次的交換更新后,所有的主機最終都會知道到達目標網絡中任何一個主機的滲透成功概率和滲透到每一個主機應利用的下一個跳板主機.
滲透信息表中最主要的信息是:到某個主機的滲透成功概率(即最大可能攻擊路徑的概率),以及應經過的下一個跳板主機.滲透信息更新的原則是找出到每個主機的滲透成功概率.
下面以一個簡單的例子介紹該算法.假定一個目標網絡中有6臺主機,分別記為HA,HB,HC,HD,HE和HF,已知主機HA的滲透信息表,如表1所示.現在收到相鄰主機HB發來的滲透更新信息,如表2所示.
其中“NO”表示無下一個跳板主機,即可通過直接滲透到目標主機.更新后的主機HA的滲透信息表如表3所示.

Table 1 The Penetration Information Table of HA表1 主機HA的滲透信息表

Table 2 The Penetration Information Table of HB表2 主機HB的滲透信息表

Table 3 The Updated Penetration Information Table of HA表3 更新后的主機HA的滲透信息表
NG算法讓目標網絡中的所有主機都和自己的相鄰主機定期交換滲透信息,并不斷更新其滲透信息表,確定從每一個主機到目標網絡中的其他主機的最優滲透路徑(即最大可能的滲透成功概率).特別地,雖然所有的主機最終都擁有了到目標網絡中的其他所有主機的滲透信息,但由于每一個主機的位置不同,它們的滲透信息表也是不同的.NG算法核心如下.
算法1.NG算法核心.
①PITcurrent=PITinitial;
③ for each hostHy∈x.neighbor_host

⑤ end for
⑥ end for
⑦PITfinal=PITcurrent.
PIT_CHANGE為任意2個主機進行滲透信息交換的函數,其定義如下:
PIT_CHANGE(PITA,PITB)
①PITA′=PITA;
② ifisempty(PITB)
④ end if
⑤ for each itemi∈PITB
i.target_host
⑦i.psp=i.psp×(pspofHAtoHB);
⑧i.next_jump_host=HB;
⑨ additoPITA′;
⑩ end if
i.target_host
基于滲透信息交換的NTPG生成算法的最終目標是使目標網絡中所有主機都得到正確的滲透成功概率,即達到收斂.它是一種迭代算法,而算法1僅相當于一次迭代,即一次主機滲透信息交換,顯然,經過算法1的若干次迭代,可實現最終目標.事實證明,基于滲透信息交換的NTPG生成算法是可收斂的,且收斂速度很快.
定理1.NG算法達到收斂所需的迭代次數=目標網絡中最長滲透路徑的步數-1.
證明. 用數學歸納法進行證明.
1) 當目標網絡中最長滲透路徑的步數為1時,目標網絡中從一個主機到另一個主機的滲透均為直接滲透,顯然,由HTPG得到的2個主機的直接滲透成功概率便是該2個主機間的滲透成功概率,即不需要迭代,也就是說NG算法達到收斂所需的迭代次數為0,定理1成立;
2) 假設目標網絡中最長滲透路徑的步數為m(m代表任意自然數)時,定理1成立,即NG算法達到收斂所需的迭代次數為m-1;
3) 當目標網絡中最長滲透路徑的步數為m+1時,對于目標網絡中的任一對HA和HB,設從HA到HB的最長滲透路徑的步數為p,顯然p≤m+1.當p≤m時,由2)可知,經過m-1次迭代可獲得從主機HA到HB的滲透成功概率;當p=m+1時,不妨設從HA到HB的最長滲透路徑分割為2段,一段從HA到HB′共m步,一段從HB′到HB共1步,則由2)易知,經過m-1次迭代可獲得從HA到HB′的滲透成功概率,由于從HB′到HB僅為1步,則再經過1次迭代,便可獲得從HA到HB的滲透成功概率.至此可知,當目標網絡中最長攻擊路徑的步數為m+1時,對于目標網絡中的任一對主機HA和HB,經過m次迭代,便可獲得從HA到HB的滲透成功概率,即NG算法達到收斂所需的迭代次數為m.
證畢.
NG算法解決了由目標網絡中所有的直接滲透概率求得任意2個主機的滲透成功概率(最優滲透路徑的概率),算法依賴的原理是目標網絡中的任意主機都可能作為滲透的跳板.然而實際上,攻擊者從主機HA滲透到主機HB,僅需要獲取主機HA的User權限而非Root權限.因此,NG算法僅適用于求解關于User權限的滲透成功概率.為了進一步求解關于Root權限的滲透成功概率,引入一個函數F.
定義5.函數F.C=F(A,B),函數的輸入為2個大小相等的矩陣A和B,函數的輸出為矩陣C,其大小也與A和B相等.滿足:

(1)
不妨設依據HTPG得到的關于Root權限的直接滲透矩陣為R0,而最終得到的NTPG中的關于User權限的間接滲透矩陣為U,Root權限的間接滲透矩陣為R.顯然可得:
R=F(U,R0).
(2)
綜上可知,利用NG算法能夠獲得U,進一步利用式(2)可獲得R.
由第3節生成NTPG可知,每個主機都保持并記錄自己的滲透信息表,滲透信息表的形式為目標主機、滲透成功概率、下一個跳板主機.若要確定從主機Hx到主機Hy的最優滲透路徑,其算法如下:
算法2.任意2主機間最優滲透路徑生成算法.
輸出:OPPx y—主機Hx到主機Hy的最優滲透路徑.
①OPPx y=?;

③OPPx y={Hx}*初始化*
④Ht=Hx;*初始化,構造一個輔助主機Ht*
⑤ while (j.next_jump_host~=?)
⑥ addj.next_jump_hosttoOPPx y;
⑦Ht=j.next_jump_host;
⑧ end while
⑨ addHytoOPPx y;
⑩ end if
算法2借助目標網絡中滲透信息表,利用鏈式索引方式,從主機Hx開始,不斷索引滲透到目標主機Hy的下一個跳板主機,其算法復雜度為O(N).圖4展示了主機Hx到Hy的最優滲透路徑生成示例,其具體過程為:若要確定從主機Hx到Hy的最優滲透路徑,首先索引主機Hx的滲透信息表,找到下一個跳板主機Ho,接著索引主機Ho的滲透信息表,找到下一跳板主機Hp,再接著索引主機Hp的滲透信息表,找到下一跳板主機Hq,繼續索引主機Hq的滲透信息表,發現下一個跳板主機為空,則說明從主機Hq到目標主機Hy的最優滲透路徑為直接滲透,故索引停止,最終生成的從主機Hx到Hy的最優滲透路徑為Hx→Ho→Hp→Hq→Hy.進一步分析可得如下定理.

Fig. 4 The example of generating optimal penetrationpath from Hx to Hy圖4 主機Hx到主機Hy的最優滲透路徑生成示例
定理2.NG算法生成的最優滲透路徑不含圈。
證明. 用反證法.假設NG算法生成的最優滲透路徑含圈,如圖5所示的含圈滲透路徑實例,從主機Hx到Hy的最優滲透路徑為Hx→Hm→Hn→Hm→Hy,其滲透成功概率為p1×p2×p3×p4,又p5和p4均為從主機Hm到Hn的滲透成功概率,故p5=p4,又因p2,p3必小于1,進而可知p1×p2×p3×p4 證畢. Fig. 5 The example of cyclic penetration path圖5 含圈滲透路徑實例 為了驗證本文方法的有效性,搭建了一個實際網絡環境來進行測試.實驗網絡拓撲如圖6所示. 外網用戶可通過Internet訪問本網絡.實驗網絡分為4個區域,分別是DMZ區、子網1、子網2和子網3.DMZ區有1臺Web服務器.子網1有2臺設備,1臺Pad和1臺主機,可連接Internet.子網2有2臺主機,不能連接Internet.子網3包括3臺服務器,分別是打印服務器、文件服務器和數據服務器.網絡中的服務訪問規則如表4所示.其中,攻擊者為Internet中的1臺主機.通過Nessus漏洞掃描器對網絡各網絡段進行掃描,得到各主機中漏洞信息,結合CVSS得到表5所示的各主機信息及其所含漏洞信息.特別地,Pad和H1并不能通過網絡訪問內網的H2和H3,但由于人為操作不當的因素,可通過USB等傳輸設備連接到H2和H3. Fig. 6 Experimental network topology圖6 實驗網絡拓撲圖 SourceDestinationServiceSourceDestinationServiceAttackerWeb ServerhttpH2H3FTPShellAttackerPad,H1ftp,smtpH3H2FTPShellPadH1ftp,smtpH2,H3Print ServerPrintH1Padftp,smtpH2,H3File ServerHFS,RDPPad,H1Web ServerhttpH2,H3Data ServerOracle,RDPWeb ServerFile ServerHFSFile ServerData ServerOracleWeb ServerData ServerOracle Table 5 The Information of Hosts and Vulnerabilities表5 各主機信息及其所含漏洞信息 依據每一個主機的漏洞信息,可建立了每個主機的HRKG,進而利用表4所示的訪問規則可得到任意2個主機間的HTPG.下面以攻擊者為源主機,Web服務器為目的主機為例,介紹HTPG的生成方法.首先依據表5中的Web服務器的漏洞信息建立其HRKG,如圖7所示. 依據陳小軍等人的文獻[29],設攻擊復雜度為高、中、低的漏洞的利用成功率分別為0.2,0.6,0.8.由于Web服務器上運行著Apache Http Server和Tomcat兩個服務,雖然利用漏洞掃描工具未發現Tomcat中有漏洞,但其中依然可能存在0day漏洞,故可利用假設規則,即假設Tomcat中存在一個0day漏洞. Fig. 7 The HRKG of Web Server圖7 Web服務器(H1)的HRKG 由表4所示,攻擊者可利用http通過80端口訪問Apache Http Server,則可知從攻擊者到Web服務器的HTPG如圖8所示.進而可知從攻擊者滲透獲得Web服務器的User權限的概率為0.8,從攻擊者滲透獲得Web服務器的Root權限的概率為0.6(0.8×0.05=0.04<0.6). 由上述方法可生成目標網絡中任意2個主機間的HTPG.不妨假設通過人為操作不當因素使得本來物理隔離的子網1和子網2連接的概率為0.4,進而可得到網絡中主機間的直接滲透概率,如圖9所示. Fig. 9 The directed penetration probability fromone host to another of the network圖9 網絡中主機間的直接滲透概率 進一步,依據第3節的算法1和式(2),能夠得到關于User權限的間接滲透矩陣為U和關于Root權限的間接滲透矩陣為R. 不妨設外部攻擊者要發動針對Database Server的攻擊,則依據算法2可得出攻擊者的最優滲透路徑為attacker→Pad→H2→Database Server,即攻擊者只需要3步就可獲得Database Server的Root權限,其滲透成功概率為0.115 2.通過算法2可獲得任意2個主機間的最優滲透路徑,進而為針對目標網絡中關鍵資產的防御提供重要決策依據,如目標網絡中主機防御優先級選擇(假設主機HA到目標網絡中關鍵資產的滲透成功概率較大,則在防御資源有限的情況下應優先加強對主機HA的異常檢測及脆弱性修復)、攻擊場景構建及預測(依據TLTPG模型提供的概率知識推測漏警誤警狀況)等. 通過分析整個最優滲透路徑生成的全過程可知,NG算法是核心,其算法復雜性決定了最優滲透路徑生成的效率.與本文算法最為相似的是文獻[22].文獻[22]中定義了F函數,進而利用F函數的N(N為目標網絡中主機數量)次迭代獲得了目標網絡中各主機間的滲透成功概率,經分析,F函數的算法復雜度為O(N3),則再經過N次迭代,其算法整體復雜度為O(N4).在本文提出的NG算法中,PIT_CHANGE函數的算法復雜度為O(N),則算法1的復雜度為O(N3),又由定理1可知,設目標網絡中最長滲透路徑的步數為m,算法1經過m-1次迭代可收斂,故NG算法的算法復雜度為O((m-1)×N3),由目標網絡特點及滲透攻擊的一般性可知,m-1?N.此外,文獻[22]中提出在實際的目標網絡中,由于矩陣的稀疏性,實際的算法開銷必定小于O(N4),同樣,在本文算法中,PIT_CHANGE函數僅與一個主機的相鄰主機的每項滲透信息相比較,其開銷與其相鄰主機的滲透信息表中項目數量成線性關系,遠小于O(N).再者,算法1第2行的for循環,表示一個主機與所有相鄰主機交換滲透信息,其開銷與其相鄰主機的數量成線性關系,也遠小于O(N).由此可見,NG算法的開銷也遠小于O((m-1)×N3).又者,NG算法可拓展為一種分布式算法,其各個主機可并行進行滲透信息表的交換,也提高了算法的效率.綜上分析可知,本文算法1在開銷上優于文獻[22]中的算法,具有一定的性能優勢. 為了進一步分析本文算法的實際效率,我們對算法進行了仿真測試.仿真測試的實驗平臺為Hp Z240 Tower Workstations,處理器為Inter?Xeon?CPU E3-1234 v6,頻率為3.7 GHz,內存為32 GB.仿真測試軟件為Matlab 2010.我們測試了網絡節點數目N為10,20,30,50和100時不同算法的運行時間.對于每組實驗,我們重復10次,取其平均值.針對文獻[22]中Xie利用F函數來計算滲透成功概率,他僅是直接利用F函數迭代N-1次來得到收斂結果,這種方式往往會消耗很多時間.實際上,理論分析可知,F函數往往僅需要迭代小于N-1次便能得到收斂結果.鑒于此,我們進一步改進了Xie的算法,通過控制F函數的迭代次數,使其一達到收斂便停止無效的迭代運算.進而,將我們的算法、Xie的算法和改進Xie的算法進行了對比,不同主機數目條件下3種算法花費的時間如圖10所示: Fig. 10 The time spent of three methods underdifferent hosts numbers圖10 不同主機數目條件下3種算法花費的時間 實驗結果表明:無論目標網絡中的節點數為多少,我們的算法均保持最優,改進的Xie算法其次,而Xie算法效率最差.當目標網絡中的節點數大于30時,Xie的算法消耗時間急劇上升;當目標網絡中的節點數大于50時,改進的Xie的算法也開始急劇上升.當目標網絡中的節點數為100時,我們算法需要34.5 min,改進Xie的算法則需要將近4.4 h,Xie的算法則需要31.2 h.此外,我們算法所需時間隨目標網絡節點數增長速率保持在可接受范圍內.綜上實驗分析可知,相比較于Xie的算法,我們算法具有明顯優勢,能夠提高了最優滲透路徑的生成效率. 當前,以APT攻擊為代表的滲透攻擊給網絡安全帶來了巨大的威脅.最優滲透路徑生成能夠描述攻擊者入侵目標網絡的最大可能攻擊過程,為攻擊行為分析及防御策略部署提供了重要依據.然而,當前的研究一方面忽略了對未知攻擊和內部攻擊的描述,另一方面最優滲透路徑生成效率較低.針對此問題,本文提出一種智能高效的最優滲透路徑生成方法.利用分層結構的TLTPG,高效靈活描述了滲透路徑.借助于知識圖譜思想,構建主機資源知識圖譜,通過智能推理高效得到下層HTPG,進而設計智能化的NG算法,得到上層NTPG.最后依據TLTPG模型,設計任意2個主機間的最優滲透路徑生成算法.實驗結果表明:該方法能夠描述未知攻擊和內部攻擊,且可提高最優滲透路徑生成效率.未來的工作包括算法的并行實現及利用TLTPG進行網絡防御策略部署.
5 實驗與分析



5.1 TLTPG生成


5.2 任意2個主機間的最優滲透路徑
5.3 算法效率分析

6 結束語