王文娟,杜學繪,單棣斌
(信息工程大學,河南 鄭州 450001)
隨著云計算[1]的發展和廣泛應用,攻擊者不再滿足于傳統的計算平臺,而是將其主戰場轉移到了云計算平臺。2016 年,云安全聯盟(CSA,Cloud Security Alliance)公布了《云計算面臨的十二大安全威脅》,其中高級可持續攻擊(APT,advanced persistent threat)、分布式拒絕服務(DDoS,distributed denial of service)攻擊等仍將盛行。如圖1 所示的DDoS 攻擊過程中,攻擊者給云環境中的虛擬機(VM,virtual machine)發送帶有惡意代碼shellcode的網址或文件,若VM 使用帶有漏洞的瀏覽器或應用程序打開惡意網址或惡意文件,shellcode 就會開始執行并利用瀏覽器或應用程序的漏洞獲得該VM的控制權。攻擊者下載惡意軟件如木馬到VM 并安裝木馬軟件,然后向木馬軟件建立遠程連接下達攻擊命令,例如控制木馬軟件掃描其他VM 的漏洞、竊取被攻擊VM 里的重要信息、控制多個VM 發動DDoS 攻擊。

圖1 DDoS 攻擊過程
可見,DDoS 攻擊表現出復雜多步、隱蔽性強等特點,成為攻擊者的重要攻擊手段。復雜多步攻擊是指一個完整的攻擊由多個具有不同目的的單步攻擊組成,達到某個目的之后繼續實施下一個單步攻擊,執行多個攻擊步驟后實現最終目標。然而,云入侵檢測系統(CIDS,cloud intrusion detection system)檢測出的報警事件是孤立的、低層次的,反映的是基于單點的、單時間的單步攻擊或攻擊片段,往往不具備關聯能力來識別復雜多步攻擊。因此,研究如何揭示報警之間隱藏的關聯關系、還原完整的攻擊場景(AS,attack scenario)是應對復雜多步攻擊的有效措施。攻擊場景是指呈現攻擊者入侵滲透過程的“畫面”,通過“畫面”能夠獲得攻擊者發動攻擊的起點、單步攻擊之間的關系,以及攻擊者的攻擊目標、攻擊路徑等信息,攻擊場景常用“圖”的形式表示[2]。基于此,本文研究面向云計算環境的攻擊場景構建方法,旨在再現和還原攻擊者的復雜多步滲透過程,幫助云安全管理員從整體上把握攻擊活動全貌,為實施有效的安全防御提供更全面的估計和決策依據。
攻擊場景構建實質上是報警關聯分析,揭露各個孤立報警之間的邏輯關系,并轉化為易于理解的、可視化的報警關聯圖。目前,報警關聯所采用的技術手段主要包括以下4 種:基于相似度的方法、基于數據挖掘的方法、基于屬性攻擊圖的方法和基于概率攻擊圖(PAG,probability attack graph)的方法。
基于相似度的方法是通過計算報警之間各屬性的相似度來判定報警之間是否具有關聯關系,此種方法的關鍵在于定義相似度函數。Wang 等[3]通過計算報警間各屬性相似度的加權平均和得到整體相似度,對整體相似度大于給定閾值的超報警進行關聯。梅海彬等[4]提出利用報警間的相似度函數對具有相似攻擊行為的序列進行聚類,并基于聚類的報警序列自動發現多步攻擊模式。此種方法計算開銷小,依賴專家知識較少,但需要預先定義閾值,只能發現統計上的關聯情況。
基于數據挖掘的方法是通過關聯算法、序列模式算法等發現隱藏在報警中的關聯關系,依據關聯關系構建攻擊行為序列。葛琳等[5]利用Map-Reduce架構下的Apriori 關聯算法挖掘多維通信信息中的頻繁項集,再進行綜合關聯分析。魯顯光等[6]使用改進的FP Growth 算法挖掘報警之間的關聯規則,繼而進行報警關聯。該方法不依賴專家知識,能夠發現未知威脅行為,但是存在準確度較低、實用性較低等缺陷。
基于屬性攻擊圖的方法直觀地呈現了攻擊者利用目標網絡各脆弱點進行逐步滲透的所有可能攻擊路徑,描述了攻擊步驟間的因果依賴關系,依據攻擊圖將報警進行匹配關聯,從而構建攻擊場景。因此,如何高效地生成攻擊圖和依據攻擊圖進行告警匹配關聯成為該方法的2 個重要研究內容。目前,一些研究更加專注于攻擊圖的分布式并行計算,以提高其生成效率。Wang 等[7]提出了一種基于啟發式搜索的攻擊圖生成方法,通過引入匹配索引表來存儲原子攻擊的最新匹配結果,從而提高攻擊圖的生成效率。Kaynar 等[8]提出了一種分布式攻擊圖生成算法,應用于分布式多代理平臺,由多個代理節點分別生成子攻擊圖,再由中心節點將子攻擊圖合并成全局攻擊圖。實驗表明,分布式并行計算可以提高攻擊圖生成速度。
然而,實際上攻擊步驟間的因果關系存在著不確定性因素,例如,無法確定某攻擊是否一定會成功,前一攻擊步驟能否導致下一攻擊步驟的發生等[9]。研究者將攻擊場景構建視為不確定性推理問題,試圖從概率推理的角度對攻擊步驟之間的因果關系進行分析。劉威歆等[10]提出了基于攻擊圖的多源報警關聯分析算法,能夠綜合應用圖關系和閾值進行報警的聯動推斷和預測,從而構建攻擊場景。呂慧穎等[9]深入分析了網絡對抗在空間上的復雜性和時間上的動態性,采用狀態轉移圖描述了威脅事件的時空關聯。該方法存在狀態空間爆炸問題,難以適應大規模網絡,且只能發現一定時間內的報警關聯。陳小軍等[11]提出了一個面向內部攻擊意圖推斷的概率攻擊圖模型,并設計了攻擊意圖推斷算法以及最大概率攻擊路徑推斷算法,但是這些算法并沒有考慮誤報警和漏報警產生的影響。王碩等[12]提出了基于因果知識網絡的攻擊場景構建方法,將因果知識網絡分為因果關系和因果知識,因果關系依據專家知識定義,因果知識則是從報警中挖掘計算得出。該方法依賴專家知識,從具有較高誤報率和漏報率的報警中挖掘的因果知識是不太準確的。為了直觀地描述各類方法的特性,表1 對不同報警關聯方法進行了分析比較。

表1 不同報警關聯方法對比
綜上所述,基于概率攻擊圖的方法能夠揭示攻擊步驟間的因果依賴和概率推理關系,準確度較高,此方法已成為目前攻擊場景構建的主流方法。然而,基于概率攻擊圖的方法仍然面臨一些問題和挑戰。
1) 云計算具有彈性、動態性的特點,其網絡拓撲結構、安全策略如防火墻規則等會經常發生改變,這導致概率攻擊圖不可能是一成不變的,而應是隨著時間的推移動態變化的。
2) 異常檢測系統不可避免地存在誤報和漏報問題,誤報和漏報無疑會對攻擊場景的構建產生影響,如出現冗余、斷裂等問題,并不能真正地反映攻擊者的實際攻擊過程。
針對以上問題,本文提出了一種基于動態概率攻擊圖的云環境攻擊場景構建方法。該方法在概率攻擊圖的基礎上,立足于攻擊步驟間的因果依賴關系和概率推理關系,考慮其時空約束和動態特性,對動態概率攻擊圖模型、攻擊場景構建過程進行了形式化建模和設計實現。本文的主要貢獻如下。
1) 構建了動態概率攻擊圖模型,通過定性分析與定量分析相結合,能夠準確合理地刻畫攻擊步驟間的因果依賴關系和概率推理關系。設計了概率攻擊圖更新算法,使之能夠隨時間的推移而動態變化,從而適應彈性、動態的云計算環境。
2) 在已知動態概率攻擊圖和觀測報警的前提下,設計了攻擊意圖推斷算法和最大概率攻擊路徑推斷算法,解決了誤報、漏報導致的攻擊路徑錯誤、斷裂等不確定性問題,保證了攻擊場景的準確性。同時,將攻擊場景隨動態概率攻擊圖動態演化,保證了攻擊場景的完備性和新鮮性。
3) 在部署的云計算實驗環境下對提出的動態概率攻擊圖模型以及攻擊場景構建方法進行了實驗驗證。實驗結果表明,本文方法能夠構建完整的、動態演化的攻擊場景,進而幫助云安全管理員從整體上把握云環境的安全態勢。
動態概率攻擊圖借鑒動態圖思想,動態圖又稱圖流或圖序列,指會隨時間推移而動態更新的圖[13]。這里,為了方便理解和描述動態概率攻擊圖,首先定義概率攻擊圖。
定義1 概率攻擊圖。PAG 由網絡結構和網絡參數兩部分組成,記為PAG=(G,P)。
1) 網絡結構G=(V,E)
G是一個有向無環圖。
V=A∪S為節點集合。A={ai|ai=action(host,vul)}為動作節點集合,action 表示原子攻擊ai所采取的動作,可能是一次掃描或一次漏洞利用;host表示ai的攻擊目標主機;vul 表示ai利用的漏洞信息;變量ai取值為1 或0,表示原子攻擊行為是否發生。S={si|si=state(host)}為狀態節點集合,state 表示攻擊者所處的狀態;變量si取值為1 或0,表示是否獲取host 的權限或占有host 的資源,s0表示初始狀態,si表示攻擊致變狀態。G={gi|gi=goal(host)}為攻擊目標狀態節點集合,滿足G?S。
E={ei|ei∈(E s∪Ea)}為有向邊集合。其中,E s=S×A為前提邊,表示只有前置狀態滿足時才能實施某原子攻擊;Ea=A×S為后果邊,表示原子攻擊成功實施后能夠達到某個新的后置狀態。
2) 網絡參數P=(Δ, Θ)
Δ=Δs∪ Δa表示依附在有向邊上的權值。其中,Δs依附于Es,指狀態節點到動作節點的一步轉移概率,表示在前置狀態滿足的條件下攻擊發生的概率,稱為攻擊發生概率;Δa依附于Ea,表示原子攻擊成功后到達后置狀態的概率,稱為攻擊成功概率。
Θ={θi|θi=P(vi|Pre(vi))}表示局部條件概率分布表(LCPT,local conditional probability table)。θi表示節點vi與其所有父節點的依賴關系程度,Pre(vi)表示節點vi的父節點集合。根節點s0沒有父節點,其概率值由先驗知識給出,根據根節點的概率值和邊權值便可推導出所有后續節點的LCPT。
定義2概率攻擊圖更新操作。概率攻擊圖更新操作可以用三元組
需要說明的是,向概率攻擊圖中增加一個節點,包括與該節點相關的一系列增加邊、增加邊權值和LCPT 等操作。類似地,刪除一個節點,則包括與該失效節點相關的一系列刪除邊、刪除邊權值等操作。
為了描述概率攻擊圖動態變化的特性,需要引入時間因素,這里將攻擊步時作為概率攻擊圖的更新周期。
定義3攻擊步時Δt。當攻擊者的入侵行為有一個攻擊步時,若在長時間內仍未發起后續攻擊,則認為入侵失敗,設置一個時間窗口Δt來衡量攻擊的成功與否。已知大部分攻擊的攻擊步時為2 h,設置Δt=2 h。
定義4動態概率攻擊圖(DPAG,dynamic probability attack graph)。DPAG 指在時間域T=[t0,tn]內隨攻擊步時Δt動態更新的概率攻擊圖流,可表示為

其中,二元組
由定義4 可知,動態概率攻擊圖的構建過程實際上是初始概率攻擊圖的構建與更新過程,其更新過程是按固定時間間隔的(即周期性更新),適應于較穩定的、改變量較小的私有云環境。對于公有云來說,其環境規模大,變化頻繁,如新增大量節點、部署新的系統等,為了提高更新效率,可以采取觸發更新機制,即當網絡環境發生變化時,提前自適應地局部更新。
概率攻擊圖的構建主要包括兩部分:網絡結構生成和網絡參數確定。網絡結構生成是指生成動作節點和狀態節點,并識別節點之間的因果依賴關系,以有向無環圖直觀展示;網絡參數確定是指確定節點間的因果依賴強度。
3.2.1 網絡結構生成
網絡結構生成是依據拓撲結構與漏洞信息等,借助攻擊圖生成工具生成攻擊圖的網絡結構。目前,研究者已開發了多種攻擊圖生成工具,如Ou等[14]開發的多主機多漏洞分析工具MulVAL、Noel等[15]提出的拓撲脆弱性分析工具TVA、Lippmann等[16]提出的基于圖論的攻擊圖生成工具NetSPA等。其中,MulVAL 是Linux 平臺開源攻擊圖生成工具,可用于大規模網絡的攻擊圖生成,實驗數據表明,對于包含2 000 臺主機的模擬網絡,生成攻擊圖的時間在15 s 左右;對于具有n個節點的網絡,復雜度為O(n2),符合多項式時間要求。MulVAL 工具將主機/網絡配置、網絡連通性信息、漏洞信息等輸入文件input.P 中,使用Graphviz 圖形生成器繪制攻擊圖,輸出的攻擊圖存儲在AttackGraph.PDF文件中。由于MulVAL 是開源工具,且相對于其他工具有更好的準確度和可擴展性,得到了工業界和學術界的一致認可,已廣泛應用于攻擊圖可行性驗證和性能測評,因此,本文選用MulVAL 工具生成網絡結構。
3.2.2 網絡參數確定
網絡參數確定是指確定有向邊權值以及每個節點的LCPT。
1) 有向邊權值確定
攻擊發生概率Δs。元素是前提邊(si,aj)的權值,表示在狀態si滿足的前提下攻擊aj發生的概率,ΔSij=P(a j|si)。
攻擊發生的概率與漏洞被利用的難易程度相關,漏洞越難被利用,相應的攻擊發生的可能性越小。通用脆弱性評估系統(CVSS,common vulnerability scoring system)是漏洞評估的公開行業標準[17]。CVSS 中的訪問向量(AV,access vector)、訪問復雜度(AC,access complexity)、認證(Au,authentication)等屬性描述了漏洞被利用的難易程度[17],可作為確定攻擊發生概率Δs的依據。攻擊發生的概率可定義為

實際上,也存在一些攻擊并不是通過漏洞利用來發動的,如口令猜測攻擊等。這類攻擊發生的概率可以根據其發生的頻率來確定。本文確定的攻擊發生概率的取值如表2 所示。

表2 攻擊發生概率的取值
攻擊成功概率Δa。元素Δaij是后果邊(ai,sj)的權值,表示原子攻擊ai成功發生后到達后置狀態sj的概率,=P(s j|ai)。
實際上,對于漏洞利用攻擊來說,其攻擊成功的概率與攻擊發生的概率是相關的,比如攻擊者選擇一個漏洞進行攻擊是否成功與該漏洞被利用的難易程度相關。因此,這里將漏洞利用攻擊的成功概率置為1.0,攻擊發生概率中已經考慮了其難度。但是對于其他攻擊,其攻擊成功的概率與攻擊發生的概率又不完全一樣,比如口令猜測攻擊很容易發生,但是成功的可能性卻比較低。因此,其他攻擊的成功概率根據專家知識庫來設置,如果攻擊難度較大,則攻擊成功的概率為0.1。攻擊成功概率的取值如表3 所示。

表3 攻擊成功概率的取值
2) 節點LCPT 確定
概率攻擊圖中包括動作節點和狀態節點2 類,故LCPT 的計算存在以下2 種情況。
①指向同一動作節點ai的各狀態節點之間是“與”關系,即只有當攻擊ai的所有前置狀態都滿足時,ai才有可能發生。
②指向同一狀態節點si的各動作節點之間是“或”關系,即任何一個原子攻擊成功都能夠達到此狀態si。
對于動作節點ai,其父節點集用Pre(ai)來表示,則ai的LCPT 為

對于狀態節點si,其父節點集用Pre(si)來表示,則si的LCPT 為

概率攻擊圖模型如圖2 所示。其中,虛線圓形表示狀態節點,虛線方形表示動作節點,有向邊表示節點間的因果關系。設節點s0的先驗概率P(s0)=0.8,根據式(2)和式(3),可推導出所有后續節點的LCPT。
不難發現,概率攻擊圖中網絡結構G從定性的角度直觀地刻畫了原子攻擊間的因果依賴關系,網絡參數P則從定量的角度量化了因果依賴的強度,通過定性分析與定量分析相結合,有利于準確合理地構建攻擊圖。
概率攻擊圖更新包括2 種方法:重新生成和局部更新。如果拋開原攻擊圖重新生成攻擊圖,則計算代價較大,新攻擊圖相較于原攻擊圖大部分是重復的,為此可以在原攻擊圖的基礎上實現攻擊圖的動態更新。

圖2 概率攻擊圖模型
引起概率攻擊圖變化的主要因素包括網絡拓撲改變、主機節點信息改變、防火墻規則微調等,根據定義2 可知,概率攻擊圖變化實際上是節點增加或刪除、相關前提邊和后果邊增加或刪除以及網絡參數的改變。因此,概率攻擊圖的更新工作主要包括3 個步驟:①確定引起改變的因素;②計算其改變量;③依據改變量更新概率攻擊圖。需要說明的是,當概率攻擊圖的網絡結構發生變化時,網絡參數也隨之變化,這里為了簡化描述,省略了網絡參數的更新描述。下面分別從網絡拓撲改變、主機節點信息改變、防火墻規則改變這3 種情況來描述攻擊圖的局部更新過程。
1) 網絡拓撲改變
當引起攻擊圖結構變化的因素是網絡拓撲改變,即增加或刪除一個主機節點時,需要確定該主機節點與其他節點的可達性關系,并計算可達性關系所產生的攻擊圖改變量。具體地,當增加一個主機節點時,解析該主機節點上的一個或多個脆弱性,在攻擊圖中增加與脆弱性相對應的動作節點,并基于可達性關系搜索動作節點的前置狀態,使用前提邊進行連接,若搜索不到,則從初始狀態開始連接,同時增加新動作節點的后果邊和后置狀態;當刪除一個主機節點時,解析該主機節點上的脆弱性,刪除與脆弱性相對應的、失效的動作節點,并刪除與失效動作節點相連接的所有邊和后續節點。
2) 主機節點信息改變
當引起攻擊圖結構變化的因素是主機節點信息改變,即某主機的脆弱性信息改變、端口開放或關閉時,其更新過程與網絡拓撲改變時相似。不同之處在于,當修復某主機的脆弱性時,在攻擊圖中應當刪除失效的動作節點和后置狀態節點。如果該動作節點的后置狀態還存在其他父節點,則表明攻擊者通過其他攻擊行為也能夠達到該狀態,因此不刪除其后置狀態節點。
3) 防火墻規則改變
防火墻規則改變是指規則的增加和刪除。當增加防火墻規則時,主機節點間的可達性關系可能會失效,由此攻擊圖內與規則相關的源主機節點和目的主機節點間的脆弱性關聯關系也會失效;當刪除防火墻規則時,主機節點間的可達性關系可能會增加,攻擊圖內與規則相關的主機節點間會產生新的脆弱性關聯關系,其更新過程與網絡拓撲改變時相似。
以網絡拓撲改變為例,描述概率攻擊圖更新算法,如算法1 所示。
算法1概率攻擊圖更新算法
輸入 ti?1時刻的概率攻擊圖PAG=(A,S,E),新增的主機節點host
輸出ti時刻的概率攻擊圖PAG'=(A',S',E')



圖3 概率攻擊圖更新示例
概率攻擊圖更新示例如圖3 所示。其中,X軸和Y軸為空間方向,T軸為時間方向。動態概率攻擊圖的時間域為T=[t0,t3],t0時刻對應的是初始概率攻擊圖PAG0=(A0,S0,E0)。假設在t1=t0+Δt時刻主機host1中產生一個新的脆弱性,則攻擊圖中應該增加一個相對應的動作節點a5,同時增加節點a5的前提邊、后置狀態s3及后置邊。用PAG1=(A1,S1,E1)表示由PAG0更新得到的概率攻擊圖,其更新操作可形式化描述為GC1:PAG0|→ PAG1,GC1={} 。類似地,假設在t2=t1+Δt時刻修復了主機host1中的一個脆弱性,同時新增了一個主機host2并產生一個新的脆弱性,則攻擊圖同時執行刪除和增加更新操作。用PAG2=(A2,S2,E2)表示t2時刻更新得到的攻擊圖,更新操作可形式化描述為GC2:PAG1|→PAG2,GC2={
綜上所述,概率攻擊圖更新操作分別是GC1={},GC2={
定義5攻擊路徑path。攻擊路徑是指由概率攻擊圖中的狀態節點和動作節點按照一定的因果依賴關系排列而成的攻擊序列,記為path(s0,g)={s0,a1,si,aj,…,g}。其中,{s0,si,…,g}表示攻擊狀態轉移序列,{a1,aj,…,an}表示原子攻擊行為序列。
概率攻擊圖是包含多條攻擊路徑的集合,即PAG={pathk(s0,g)}。其中,pathk(s0,g)表示從初始狀態s0到終止狀態g的編號為k的攻擊路徑。
報警來源于攻擊且能夠反映攻擊,每一條IDS報警都反映了一個原子攻擊的發生,利用概率攻擊圖作為模板,通過將報警與概率攻擊圖的動作節點進行映射,從而實現各孤立報警的關聯,還原攻擊者的攻擊軌跡。依據動態概率攻擊圖,將攻擊場景構建分為初建、重構和演化3 步。
4.1.1 報警聚類
目標網絡在同一時間段內可能受到來自多個攻擊者的入侵,這導致報警序列中包含了可能不止一個攻擊者的入侵活動,如果不做處理而直接進行映射,則將導致攻擊場景混亂。報警聚類旨在將隸屬于同一攻擊者的報警聚合到同一類簇中,以區分不同攻擊者的入侵活動。
為了更好地說明,首先定義報警的相關概念。
定義6報警。報警是指原子攻擊發生時被IDS觀測到的事件,用O表示報警序列,O={oi|oi=
IDS 產生的報警存在一些重復報警,主要是由同一攻擊源用同一種攻擊方式對目的主機進行多次不同時間的攻擊所造成的,有必要消除重復報警,將其簡化為同一條報警。此外,同一攻擊活動觸發的報警,彼此在IP 地址分布上總是具有關聯性,如前一攻擊步驟的dstIP 可能就是下一攻擊步驟的srcIP。依據這種IP 地址相關性,將同一攻擊活動的報警聚合在一起,從而避免關聯關系混亂。
定義7重復報警。如果兩條報警oi和oj的
定義8IP 地址相關性。如果報警oi的地址無論是源IP 地址還是目的IP 地址,總有一個和oj的地址相同,且oi和oj在攻擊步時Δt內,則認為oi和oj具有地址相關性。
定義9報警類簇。報警類簇是指將具有IP 地址相關性的報警按照其產生的時間順序排列而成的報警序列,記為C={o1,o2,...,om},滿足C?O。
基于IP地址相關性的報警聚類過程采用文獻[18]所提方法,這里不再論述。若2 個報警間是IP 地址相關的,則劃分到同一報警類簇中,從而將每個攻擊者的報警區分開。
4.1.2 報警映射
報警映射是將報警oi映射到概率攻擊圖中的節點,稱為觀測節點,并判斷觀測節點oi的目的IP地址和類型是否與某動作節點ai的主機和漏洞信息相匹配,若匹配則映射成功,否則映射失敗為空集。定義映射函數如下。
定義10報警映射函數。

映射失敗的原因可能有以下幾種:①存在誤報警導致攻擊ai沒有發生,但卻存在報警oi與之匹配;②存在漏報警使攻擊路徑中的某動作節點ai缺乏報警與之匹配;③概率攻擊圖的結構不完整。上述3 種情況都會導致報警映射失敗。具體地,報警映射情景如圖4 所示。圖4 中,淺灰色圓圈表示映射成功的觀測節點,深灰色圓圈表示映射失敗的觀測節點,實線表示攻擊實施成功或狀態轉移成功,虛線表示攻擊實施失敗或狀態轉移失敗。

圖4 報警映射情景
圖4(a)表示報警映射成功。觀測節點oi和ok分別與動作節點ai和ak相匹配,表明原子攻擊ai和ak實施成功,攻擊狀態轉移成功,狀態sx、sy和sz皆為True。
圖4(b)表示誤報引起的映射失敗。通過報警映射得到攻擊序列{sx,ai,s y,a k,sz}和{sx,a j,s y,a k,sz},然而由于oj是誤報,攻擊aj實際上并未發生,因此映射得到的攻擊路徑{sx,a j,s y,a k,sz}是錯誤或冗余的。
圖4(c)表示漏報引起的映射失敗。狀態sx、sy和sz為True,表明存在原子攻擊導致狀態轉移成功。然而由于漏報導致映射得到的攻擊序列{sy,a k,sz}是不完整的、斷裂的,從而無法確定攻擊路徑是{sx,ai,s y,a k,sz}還是{sx,a j,s y,a k,sz}。
圖4(d)表示概率攻擊圖結構不完整引起的映射失敗。圖中存在觀測節點ol但缺乏與之匹配的動作節點,故需更新攻擊圖。
可見,報警映射能夠獲得初步的攻擊場景,但是由于誤報、漏報問題,導致某些攻擊片段存在冗余或者斷裂,從而影響了對實際攻擊目標和攻擊路徑的判斷。因此,為了得到準確可信的攻擊場景,需要對初步構建的攻擊場景進行修正和重構,一方面通過衡量報警的置信水平,識別低置信度的、無效的報警證據,從而發現誤報引起的冗余路徑;另一方面計算各狀態節點被入侵的概率,從候選攻擊目標和攻擊序列中推斷最大可能的攻擊目標和攻擊序列。
攻擊場景重構本質上是概率推理問題。在概率推理中,先驗概率表示事件發生的概率,后驗概率則表示當新的證據出現時變量發生的概率。那些值已經被確定的變量集合稱為證據,而需要求解的變量集合稱為假設,概率推理問題就是求解在給定證據變量E的條件下假設變量H的后驗概率P(H|E)。當不確定假設集合H中某一個假設h∈H最佳時,最大后驗估計認為具有最大后驗概率(MAP,maximum a posteriori)的假設為最佳假設。即

4.2.1 報警證據識別
定義11報警置信度PO。PO 是指在觀測到報警事件oi的情況下,能證明其對應的原子攻擊ai發生的概率P(ai|oi),報警置信度也即動作節點ai的后驗概率。
設IDS 對攻擊ai的檢測率和誤報率分別為di和fi,檢測率是指在攻擊發生的情況下,IDS 產生報警的概率;誤報率是指在攻擊沒有發生的情況下,IDS 卻產生報警的概率,故存在P(oi|ai)=di,P(oi|?ai)=fi,報警置信度P(ai|oi)為

其中,P(ai)為動作節點ai的先驗概率,表示攻擊ai發生的概率;P(?ai)=1?P(ai)表示攻擊ai未發生的概率。
在概率攻擊圖中,某節點vi的先驗概率P(vi)可以通過下面2 種方法求解。
方法1通過求解邊緣概率分布得到,已知節點的LCPT,便可獲得節點的先驗概率為

方法2通過父節點的先驗概率以及節點間的轉移概率求解得到。
動作節點ai的先驗概率P(ai)為

狀態節點si的先驗概率P(si)為

通過上述2 種方法可以求得節點ai的先驗概率P(ai),并進一步得到報警oi的置信度P(ai|oi)。
通過報警置信度能夠衡量報警的置信水平,識別有效的報警證據。一方面,報警oi的置信度P(ai|oi)應當大于50%,否則,P(?ai|oi)將大于50%,這表明在證據oi出現時,攻擊未發生或攻擊失敗的概率大于50%,故報警oi為誤報警;另一方面,攻擊ai的后驗概率P(ai|oi)應當大于其先驗概率P(ai),這表明在報警證據oi出現時,攻擊ai發生的可能性提高了;反之,當后驗概率P(ai|oi)小于先驗概率P(ai)時,則表明證據oi的出現反而降低了攻擊ai發生的可能性,這與實際情況不符,因此認為報警oi為誤報警。基于上述分析,可以得出以下結論。當且僅當ai和oi滿足P(ai|oi) >50%和P(ai|oi)>P(ai)這2 個條件時,原子攻擊所產生的報警為真實報警。
4.2.2 攻擊意圖推斷
攻擊意圖推斷是指已知目標狀態節點集合G,在給定報警證據及其置信度PO=的情況下,計算并比較各目標狀態節點被入侵的概率,從而獲得具有最大后驗概率MAP 的目標狀態節點,即。
狀態節點si與證據O并無直接的聯系,然而證據O的出現會提高原子攻擊發生的可能性,進而提高其后置狀態存在的可能性。因此,狀態節點si的后驗概率與其父節點Pre(si)的后驗概率有關。
以圖3 中t1時刻的概率攻擊圖PAG1為例,分析在未觀測到任何報警事件以及在觀測到報警事件O={o1,o3}時,各節點的先驗概率和后驗概率的變化情況,如圖5所示。

圖5 帶觀測節點的概率攻擊圖
通過定性與定量分析可知以下3 點成立。
1) 在未觀測到報警事件o1和o3時,攻擊a2發生的概率大于攻擊a1發生的概率,節點s3被入侵的概率大于節點s2被入侵的概率,攻擊者的攻擊意圖為s3,攻擊路徑為path={s0,a2,s1,a5,s3}。
2) 在觀測到報警事件o1和o3時,攻擊a1和a3發生的概率提高了,其后驗概率皆大于其先驗概率,且后驗概率皆大于50%,表明o1和o3是真實報警。
3) 報警o1和o3為真實有效報警,因此攻擊者的攻擊意圖為s2,s2被入侵的概率提高到0.431,攻擊路徑為path={s0,a1,s1,a3,s2}。
算法2 首先采用廣度優先算法計算各個節點的先驗概率和后驗概率,將不具有子節點的狀態節點加入目標節點集G中;如果某目標狀態節點對應的動作節點存在真實報警,則該目標狀態為攻擊意圖;否則對目標狀態節點的后驗概率進行比較排序,具有最大后驗概率gmax的目標節點即為攻擊意圖,該算法同時可以識別有效報警證據。
算法2攻擊意圖推斷算法
輸入候選攻擊序列集合H={pathk(s0,G)},觀測事件序列
輸出節點先驗概率vi.Pr 和后驗概率vi.Po,攻擊意圖GMAP


復雜度分析。算法2 的復雜度與圖廣度搜索算法相同,為候選攻擊序列集合中狀態節點數、動作節點數以及有向邊數之和,即O(num_S+num_A+num_E)。
4.2.3 最大概率攻擊路徑推斷
最大概率攻擊路徑推斷是計算攻擊者發動攻擊行為的整個可能性,從候選攻擊序列集合中選擇具有最大后驗概率 MAP 的攻擊路徑,即。
在算法2 得到所有節點的先驗概率P(vi)和后驗概率P(vi|oi)的基礎上,算法3 以攻擊意圖為起點,通過貪心反向查找具有最大后驗概率的動作節點ai和狀態節點si,即可得到最大概率攻擊路徑hMAP。如果當前節點為狀態節點,則查找具有真實報警的前置動作節點并加入攻擊路徑hMAP中;而當出現漏報不存在報警時,則查找后驗概率最大的動作節點并加入路徑hMAP中;如果當前節點為動作節點,則將其所有的前置狀態節點都加入路徑hMAP中。
算法3最大概率攻擊路徑推斷算法
輸入攻擊意圖GMAP,節點先驗概率vi.Pr 和后驗概率vi.Po
輸出hMAP=(s0→…si→…G)。


復雜度分析。算法3 的復雜度與算法2 相似,但由于已經確定了攻擊意圖,狀態節點數、動作節點數相對算法2 減少了,且與有向邊無關,故復雜度為O(num_S+num_A)。
通過上述報警映射、攻擊意圖推斷和最大概率攻擊路徑計算,能夠得到準確可信的攻擊場景。然而由于云環境彈性、動態性的特點,其概率攻擊圖需要周期性地動態更新,攻擊場景也應周期性地動態演化,從而保證攻擊場景的完備性和新鮮性。
定義12動態攻擊場景(DAS,dynamic attack scenario)。DAS 指在時間域T=[t0,tn]內隨攻擊步時Δt動態演化的攻擊場景序列,可表示為

其中,二元組
攻擊場景演化過程如圖6 所示。由圖6 可知,將第一個攻擊周期Δt內的報警序列O1與t1時刻上的概率攻擊圖PAG1相映射,映射成功則得到t1時刻上的攻擊場景AS1;同樣將第二個Δt內的報警序列O2與t2時刻上的攻擊圖PAG2相映射,得到攻擊場景AS2;以此類推,可得到t3時刻上的攻擊場景AS3。由此可知,時間域T內動態演化的攻擊場景序列為DAST={
本節首先介紹云平臺實驗環境以及此環境中的安全漏洞,構建該環境下的初始概率攻擊圖;然后,根據觀測報警序列及其置信度推斷出攻擊者的攻擊意圖和最大概率攻擊路徑,并構建動態演化的攻擊場景。
云平臺實驗環境如圖7 所示。云平臺中包括了4 個浪潮云服務器,搭建了Xen 虛擬化云系統,配置信息如表4 所示。

表4 云平臺配置信息

圖6 攻擊場景演化過程

圖7 云平臺實驗環境
云服務器PM1被分割成了4 個VM,分別運行網絡控制器(NC,network control)、Nessus 漏洞掃描器、MulVAL 攻擊圖生成工具以及IDS;云服務器PM2被分割成若干個VM,作為云租戶所用VM,VM 間由可編程的虛擬交換機(OVS,open vSwitch)相連接。OVS 僅完成數據轉發功能,而路由控制則由PM1中NC 來完成;服務器PM3和PM4分別運行Hadoop 和Spark 分布式計算平臺。在DMZ 區域部署了網站服務器(WS,Web server)、文件服務器(FS,file server)等。這里假設PM3只允許VM1訪問其計算服務,而PM4只允許VM2訪問其服務。
5.2.1 概率攻擊圖的結構和參數
利用Nessus 掃描器對云平臺中各主機進行漏洞掃描,獲得的各漏洞信息如表5 所示。其中,Xen系統的漏洞CVE-2017-2620 為ti時刻新發現的漏洞。將網絡連通性、網絡配置及漏洞信息等輸入MulVAL 工具,從而生成初始概率攻擊圖PAG0的網絡結構,如圖8 所示。
從圖8 可知,存在6 種可能的攻擊路徑,其中,攻擊者利用WS 上的溢出漏洞CVE-2010-2227 獲取WS 的管理員權限,進而通過NFS 接口在FS上寫入木馬程序,該木馬程序被不小心執行,從而讓攻擊者控制了FS。當然攻擊者也可以直接利用FS 上的溢出漏洞CVE-2017-7895 獲取FS 的權限。接著,VM2從FS 上下載了帶木馬的文件從而被控制,攻擊者操控 VM2利用漏洞CVE-2018-8024 對Spark 服務器發動攻擊。同樣,攻擊者操控FS 對虛擬機VM1發動攻擊,并進一步利用漏洞CVE-2016-3086 對Hadoop 平臺展開攻擊,竊取其重要信息或文件等。
根據圖8 中概率攻擊圖的結構和表5 中CASS屬性(AV/AC/Au)能夠確定概率攻擊圖PAG0中有向邊的權值,如表6 所示。表6 中有向邊(s8,a12)和(a12,s9)為ti時刻發現新漏洞時新增的有向邊。依據網絡結構和網絡參數,構建完整的初始概率攻擊圖PAG0。

圖8 初始概率攻擊圖的結構

表5 云平臺漏洞信息

表6 有向邊的權值
5.2.2 攻擊場景構建過程及分析
在初始概率攻擊圖PAG0的基礎上,依據攻擊步時Δt內的更新操作情況,利用算法1 生成概率攻擊圖序列。依據IDS 觀測到的報警序列O,利用算法2 和算法3 即可推斷出攻擊意圖gMAP和最大概率攻擊路徑hMAP,從而構建出攻擊場景,如表7 所示。
概率攻擊圖的動態更新及攻擊場景的動態演化過程如圖9 所示。為了不失一般性,在t0時刻假設沒有觀測到任何報警事件O0={null},這相當于初始概率攻擊圖PAG0。圖9(a)直觀地展示了攻擊者最可能的攻擊意圖和攻擊路徑。在該情況下,狀態節點s5的概率是0.89,狀態節點s8的概率是0.27,因此攻擊者的攻擊意圖為s5,攻擊目標是運行Hadoop 的主機PM3,最大概率攻擊路徑則是{s0,a7,s3,a4,s4,a5,s5}。
在t1時刻更新概率攻擊圖,假設GC1=?,即攻擊圖沒有任何更新操作,IDS 在t1時刻觀測到報警事件O1={o1,o2,o3},其對應的置信度為PO={0.81,0.6,0.38}。在此情況下可知,報警o3為誤報警,攻擊a3實際上并未發生,其發生的概率應是0.27。候選攻擊序列包括{s0,a1,s1,a2,s2,a3,s3,a8,s6,a9,s7,a10,s8}和{s0,a1,s1,a2,s2,a3,s3,a4,s4,a5,s5},經計算知狀態節點s5的概率是0.92,狀態節點s8的概率是0.35,因此攻擊者的攻擊意圖仍為s5,最大概率攻擊路徑為{s0,a1,s1,a2,s2,a3,s3,a4,s4,a5,s5},攻擊場景如圖9(b)所示。
在t2時刻修復了PM3中的漏洞,則在概率攻擊圖中應刪除對應的失效動作節點a5及其后置狀態節點s5以及相關邊,即執行更新圖操作GC2={
在t3時刻發現 Xen 系統中存在新的漏洞CVE-2017-2620,則在概率攻擊圖中需要增加與漏洞相對應的動作節點a12,并基于可達性關系搜索該原子攻擊的前置狀態。由于虛擬機VM2能夠訪問Xen系統的虛擬CPU、虛擬內存等資源,可能發動DoS或漏洞利用攻擊,因此節點a12的前提狀態為VM2的狀態s7,通過前提邊進行連接,同時增加該動作節點的后置狀態s9和后果邊,更新操作為GC3={I,a12,s9}。同樣,在t3時刻觀測到報警事件o12,其對應的置信度為0.54,則可判斷出t3時刻的攻擊意圖為s9,最大概率攻擊路徑為{s0,a1,s1,a11,s7,a10,s8,a11,s9},如圖9(d)所示。此時的攻擊場景包括兩條成功的攻擊路徑和一次失敗的攻擊嘗試,展現了攻擊者的攻擊滲透過程。

表7 攻擊場景構建過程

圖9 概率攻擊圖動態更新及攻擊場景動態演化過程
5.2.3 實驗比較分析
文獻[10]和文獻[13]的工作中沒有考慮報警觀測事件推導到攻擊發生的不確定性,觀測事件與攻擊發生是一一對應的,即報警置信度PO 的取值全為1,從而無法識別真實有效的報警。文獻[11]的工作中沒有解決誤報、漏報問題對攻擊場景造成的影響。上述方法均沒有考慮攻擊場景的動態演化,無法保證攻擊場景的完備性和新鮮性。表8 展示了現有基于概率攻擊圖的報警關聯方法在各方面的對比。從表8 可以看出,本文方法支持有效報警識別和動態演化,優于其他3 種方法。

表8 基于概率攻擊圖的報警關聯方法對比
實驗驗證了本文方法的有效性。此外,本文方法具有以下優勢。
1) 通過將報警事件與概率攻擊圖進行映射匹配,從定性與定量分析2 個方面構建了攻擊場景,不僅能夠解決誤報、漏報問題,識別有效報警證據,還能夠推斷出攻擊者的攻擊意圖和實際攻擊路徑,從而保證了攻擊場景的準確性。
2) 動態概率攻擊圖是隨時間推移而動態變化的,依據動態概率攻擊圖,將攻擊場景隨之動態演化,能夠適應云計算環境彈性、動態性的特點,保證了攻擊場景的完備性和新鮮性。
3) 全時域內的動態攻擊場景完整地展現了攻擊者的逐步滲透和權限提升過程,方便管理員從整體上把握云環境的安全態勢,確定攻擊演變過程中危害較大的階段或者關鍵節點,進而采取切實有效的措施來抑制攻擊的發生。
面向云環境的攻擊場景重構技術逐漸成為網絡安全防御領域的研究熱點,旨在再現攻擊者的逐步滲透過程和攻擊活動全貌,是應對復雜多步攻擊的重要手段。本文在概率攻擊圖的基礎上,立足于攻擊步驟間的因果依賴關系和概率推理關系,考慮其時空動態特性,創建了動態概率攻擊圖模型,設計了概率攻擊圖更新算法,實現了概率攻擊圖的周期性或觸發性更新,解決了傳統的靜態不變的概率攻擊圖無法適應彈性、動態性的云環境問題;利用概率攻擊圖作為模板,將異常檢測系統觀測到的報警與概率攻擊圖進行映射匹配,能夠獲得初步的攻擊場景;針對誤報、漏報等現象導致攻擊場景存在錯誤、歧義、斷裂等不確定性問題,設計了攻擊意圖推斷算法和最大概率攻擊路徑推斷算法,利用最大后驗估計原理對候選攻擊序列進行定量推理,重構出準確可信的攻擊場景;同時將攻擊場景隨動態概率攻擊圖動態演化,保證了攻擊場景的完備性和新鮮性。通過攻擊場景的初建、重構及演化,實現了云環境復雜多步攻擊的及時發現。實驗結果表明,本文方法能夠有效地推斷出攻擊意圖和計算攻擊路徑,構建完整的、動態演化的攻擊場景,進而幫助云安全管理員從整體上把握云環境的安全態勢,為構建可監管可追責的云環境提供了一定的依據和參考。