張書欽,李凱江,張 露,楊峻峰
(中原工學院 計算機學院,河南 鄭州 450007)
攻擊圖是一種脆弱性關(guān)聯(lián)分析技術(shù),主要用于對攻擊者的多步攻擊進行分析。相對于傳統(tǒng)的漏洞掃描,攻擊圖技術(shù)更適合在大規(guī)模網(wǎng)絡中對網(wǎng)絡中的脆弱性、防護目標等整體安全狀態(tài)進行監(jiān)控。分布式中間件在大數(shù)據(jù)領域的大規(guī)模使用[1-3],使攻擊圖技術(shù)在整個網(wǎng)絡進行安全狀態(tài)的分析中得到了更廣泛的應用[4-5]。
目前,基于操作系統(tǒng)級別的安全防御已經(jīng)不能滿足用戶對安全的要求[6]。因此針對漏洞技術(shù)的掃描方式得到了大規(guī)模的使用,漏洞掃描為網(wǎng)絡安全的自動化建模提供了可能。攻擊圖在不同的網(wǎng)絡應用中具有不同的數(shù)據(jù)結(jié)構(gòu)組織方式和表現(xiàn)形式[7-8]。攻擊圖的生成方式大多使用傳統(tǒng)的圖結(jié)構(gòu)的遍歷和搜索進行構(gòu)造。文獻[9]通過不確定圖模型提出了一種攻擊圖的生成算法,從攻擊者的目標出發(fā),逆向模擬生成攻擊圖,可以較好的模擬現(xiàn)實攻擊情況并找出最可靠攻擊路徑[9]。文獻[10]利用一種逆向深度優(yōu)先攻擊圖生成算法和基于區(qū)間樹的規(guī)則匹配算法進行攻擊圖的生成[10]。傳統(tǒng)的攻擊圖生成方式雖然有效,但隨著網(wǎng)絡規(guī)模的增大,使用傳統(tǒng)方法會產(chǎn)生攻擊圖中節(jié)點爆炸的現(xiàn)象。隨著分布式計算和大數(shù)據(jù)研究的發(fā)展,國內(nèi)外研究者也將該技術(shù)應用在了攻擊圖中。如文獻[11]構(gòu)建了基于大數(shù)據(jù)的Nosql攻擊圖數(shù)據(jù)模型[11],文獻[12~13]利用了馬爾科夫鏈特性,將其應用在了入侵檢系統(tǒng)的分析中,提高了防御的成功率[12-13]。文獻[14]通過對數(shù)據(jù)結(jié)構(gòu)的改進,在使用廣度優(yōu)先搜索算法的基礎上使用分布式技術(shù)生成了攻擊圖[14]。隨著計算能力和分布式計算的發(fā)展,基于無狀態(tài)的機器學習算法已成為網(wǎng)絡攻擊圖的一個研究熱點。
為了改善攻擊圖生成算法的效率和規(guī)模,文本將使用Q-learning機制進行攻擊路徑的模擬生成,將智能體所處的環(huán)境作為攻擊圖。智能體通過場景對攻擊圖進行構(gòu)造,當智能體經(jīng)歷過所有的安全狀態(tài)空間時,攻擊圖生成結(jié)束。
Q-learning是一種解決動態(tài)規(guī)劃問題的算法思想。結(jié)合攻擊圖的性質(zhì),其系統(tǒng)結(jié)構(gòu)如圖1所示。智能體通過漏洞掃描對攻擊圖環(huán)境進行感知,并且通過攻擊模板查看當前狀態(tài)的動作,選擇動作后獲取攻擊圖環(huán)境的回報,并根據(jù)回報更新攻擊圖中的Q函數(shù)表。
圖1 攻擊圖生成中Q函數(shù)積累值的收斂過程
攻擊圖的拓撲結(jié)構(gòu)是具有若干個初始節(jié)點和終端節(jié)點的有向圖的描述??梢詫⒁粋€攻擊圖定義為Q-learning的整個環(huán)境。整體定義如下。
定義1攻擊圖作為Q-learning智能體認知的環(huán)境T=(State,Action,Stateinit,Statetarget,γ, refund),其中State代表攻擊圖中的節(jié)點,有漏洞節(jié)點和狀態(tài)節(jié)點兩種類型。Action代表智能體可以選取的動作類型,具有攻擊和防御兩種類型。Stateinit代表智能體可以作為攻擊初始狀態(tài)節(jié)點的集合。Statetarget代表智能體的收斂狀態(tài)集合。其中折扣因子和收益兩部分是根據(jù)Q-learning狀態(tài)模型而來的輔助結(jié)構(gòu)。
定義2環(huán)境空間狀態(tài)空間State,代表攻擊圖中智能體可能到達的狀態(tài)的集合。節(jié)點類型有兩種,分別為漏洞節(jié)點和狀態(tài)節(jié)點兩種類型。節(jié)點用四元組表示(id,type,State_value)表示,其中id表示狀態(tài)節(jié)點序號,type表示當前節(jié)點類型,State_value表示當前節(jié)點描述,漏洞節(jié)點為漏洞組信息,狀態(tài)節(jié)點表示當前的網(wǎng)絡狀態(tài)或者攻擊后狀態(tài)。
定義3動作Action代表智能體可以進行選擇的動作集合,具有攻擊和防御兩種行為,用(src,dst,cveids,attack_qvalue,defense_qvalue)表示。其中src表示前驅(qū)狀態(tài)節(jié)點,dst表示后繼狀態(tài)節(jié)點,cveids表示利用或者修復的漏洞組中cveid序號集合,attack_qvalue表示利用脆弱性攻擊后的q值,defense_qvalue表示修復脆弱性后的q值。智能體在進行攻擊時,主要通過攻擊模板進行攻擊前提(狀態(tài)節(jié)點)和攻擊后果(狀態(tài)節(jié)點)的判斷。攻擊模板
定義4折扣率γ表示攻擊者在進行回報獲取時,隨著攻擊的時序獲取回報的比率。
定義5立即獎罰值refund表示智能體進行動作選取后得到的回報值。
Q-learning的數(shù)學本質(zhì)是馬爾科夫決策過程。在馬爾科夫決策過程(Markov decision process)中0,智能體可通過脆弱性掃描來對當前網(wǎng)絡形成感知,通過對當前環(huán)境的認知,可以通過攻擊模板選擇合適的動作(即在當前節(jié)點選擇攻擊的方式以及防護的方式)。智能體通過決策作用于攻擊圖環(huán)境后,該攻擊者都可以感知當前的State。網(wǎng)絡狀態(tài)空間都會對該決策進行反映,給出相應的回報rt=r(Statet,actionu),之后進入下一個狀態(tài)Statet+1=g(Statet,actionu) 。在MDP中,r和g只依賴于當前的Statet狀態(tài),并不依賴之前State序列。這充分滿足了馬爾科夫鏈的狀態(tài)性質(zhì)。
結(jié)合攻擊圖的特點,對于具有特定目標的攻擊,智能體可以將該目標中的節(jié)點作為收斂狀態(tài)結(jié)束一次場景的學習。使用Q-learning機制最大的特點就是場景的無狀態(tài)性,每次智能體的學習過程都與其他的學習場景沒有必然的依賴,因此可以采用多主機多線程的方式對攻擊圖進行維護。
為進行攻擊圖的構(gòu)造,將整個網(wǎng)絡狀態(tài)空間模擬為一個攻擊圖,將從當前掃描的初始狀態(tài)為始發(fā)節(jié)點到攻擊目標的攻擊序列模擬為攻擊路徑。通過Q-learning機制中的智能體可以對整個攻擊圖進行攻防的模擬,并在模擬中對攻擊圖進行構(gòu)造。攻擊者對網(wǎng)絡的攻擊可以看作是對當前網(wǎng)絡中的某個狀態(tài)屬性的遷移。對于一次原子攻擊,攻擊者可以通過攻擊模板中的多種攻擊方式進行選擇,并且在攻擊后獲得一定的回報。智能體通過采取多步攻擊防御,最終到達攻擊目標對應的收斂狀態(tài)。智能體在進行攻擊防御過程中經(jīng)過的節(jié)點狀態(tài)序列形成了攻擊圖中的攻擊路徑。最終智能體通過在場景學習中完成對整個攻擊圖生成的過程。
智能體在進行攻擊圖的生成過程中不可能進行無休止的場景學習。對于智能體在進行決策過程中是通過貝爾曼方程在Q-learning機制中的Q函數(shù)提供依據(jù)的。通過對當前環(huán)境中Q-learning中的Q函數(shù)積累值收斂作為攻擊圖構(gòu)建完畢的條件。
(1)
其中,state,action表示當前的狀態(tài)和行為,α代表當前智能體的學習率。R(state,action)表示智能體在狀態(tài)state時采取action動作得到的立即獎罰值。
本文利用增強學習中Q-learning對網(wǎng)絡掃描狀態(tài)進行轉(zhuǎn)換分析,并且對當前的節(jié)點狀態(tài)進行決策。通過維護攻擊圖的Q函數(shù)表為智能體的決策提供下一步的行為建議,并通過對學習率α的設置防止在攻擊圖生成過程中Q函數(shù)積累值過早的收斂。Q函數(shù)積累值的過早收斂會引起攻擊圖中的節(jié)點丟失。
該算法基本思想為:在進行攻擊圖生成算法前,需要對網(wǎng)絡環(huán)境中的Q函數(shù)表進行初始化(初始值為0)。算法的輸入中需要輸入攻擊模板、學習率、折扣率、攻擊目標和初始節(jié)點集合,算法的輸出為攻擊圖。算法中,智能體根據(jù)對網(wǎng)絡環(huán)境的掃描從初始狀態(tài)節(jié)點出發(fā),根據(jù)當前狀態(tài)節(jié)點與當前攻擊圖中的后繼漏洞節(jié)點根據(jù)Q函數(shù)表和學習率進行動作的選擇。在進行動作選擇的過程中,智能體需要對Q函數(shù)表按照式(1)進行維護,并且通過攻擊模板的匹配結(jié)果對后繼漏洞節(jié)點和攻擊后果狀態(tài)節(jié)點進行增量添加。智能體通過動作選擇到達下一個攻擊后果狀態(tài)節(jié)點。通過一次次的動作選擇,智能體把到達攻擊目標狀態(tài)的攻擊路徑作為一次場景學習。智能體通過場景學習對攻擊圖進行擴展,直到當前Q函數(shù)積累值Qsum收斂,則認為該網(wǎng)絡狀態(tài)的攻擊圖生成結(jié)束。具體算法如下
input:target,attackRules,inits,γ,α
output attackGraph
attackgraph_build(target,attackRules,inits,γ,α){
attackGraph =null
∥Q函數(shù)積累值是否收斂
do{
∥判斷是否智能體完成該次場景
while(!init∈target){
∥初始狀態(tài)節(jié)點選擇
init=initChoose(inits)
attackpath=null;
∥智能體可選動作集合構(gòu)造
chooseSet=null;
∥根據(jù)攻擊圖中的節(jié)點,構(gòu)建智能體可選動作集合
chooseSet=getchooseSet(attackGraph,init)
foreach(attackRule:attackRules){
∥如果攻擊圖中沒有該后繼節(jié)點,并且攻擊模板中有,將添加到智能體的可選動作集合中
if(init∈attackRule&&! chooseSet.contain(attackRule)){
chooseSet.add(attackRule,0)
}
}
∥根據(jù)式(1)進行決策選擇和Q函數(shù)表更新
state=chooseStateByQ(chooseSet,α,γ)
Attackpath.add(state)
init=state
}
∥將攻擊路徑添加到當前攻擊圖中
attackGraph.add(attackpath)
}while(!Qsum.is Convergence)
return attackGraph
}
為了進行有效性的驗證,設置的包含兩個主機的仿真平臺配置如表1。主機192.168.1.111作為普通PC,主機192.168.1.112搭建MDNS服務,包含一個CVE-2007-2446漏洞。攻擊者處于該局域網(wǎng)外,但是可以通過路由器與該局域網(wǎng)通信。
表1 網(wǎng)絡實驗配置
強化學習的方式本身就適合基于大數(shù)據(jù)的分布式方式。由于文中采取了基于智能體學習場景構(gòu)建的攻擊圖,并且智能體的每次學習過程獨立進行。所以實驗中采取多線程方式模擬分布式中基于RPC的通信方式進行訓練學習。
通過基于Q-learning機制的攻擊圖構(gòu)建,最后收斂時攻擊圖如圖2示,共包含22個節(jié)點和22條邏輯攻擊。
圖2 基于Q-learning機制的攻擊圖
圖2中共有22個節(jié)點,一個攻擊目標節(jié)點(節(jié)點7),9個初始狀態(tài)節(jié)點共(即初始掃描狀態(tài)),12個中間狀態(tài)節(jié)點。對于每一個節(jié)點都有最后收斂后的值函數(shù)的值,以及所對應的狀態(tài)轉(zhuǎn)換的Q值。由于攻擊圖中節(jié)點和邊較多,這里僅給出部分數(shù)據(jù)(見表2~表3)。
表2 節(jié)點屬性信息表
表3 邊屬性信息表
Q-learning機制中,智能體通過在場景中生成攻擊路徑與攻擊圖建立聯(lián)系。攻擊圖的生成過程是一個不斷迭代更新Q函數(shù)的過程,智能體通過學習場景不斷地將攻擊路徑加入到攻擊圖。Q-learning機制中的一個關(guān)鍵過程是對折扣因子和學習率的選取。實驗中,結(jié)合攻擊路徑特征,選取的學習率為0.2。通過對學習率的設置可以實現(xiàn)智能體對網(wǎng)絡環(huán)境自動探索的過程,防止Q函數(shù)積累值Qsum過早收斂。
在攻擊圖的生成過程中,采用本文算法對該網(wǎng)絡環(huán)境進行攻擊圖的生成(設置到吸收態(tài)的Q值為99.9,折扣因子取0.9,學習率為0.2),進行了47個攻擊場景的學習,共計326次決策訓練后數(shù)據(jù)趨于收斂(收斂過程如圖3),Q函數(shù)累積值收斂值為1 548.14。
圖3 攻擊圖生成中Q函數(shù)積累值的收斂過程
隨著網(wǎng)絡安全在工業(yè)控制網(wǎng)絡中的主動防御的重要性的增強[15],攻擊圖作為一種基礎性的安全數(shù)據(jù)結(jié)構(gòu),被應用于各種網(wǎng)絡安全領域。文中通過Q-learning機制進行了攻擊圖的生成,實驗表明通過基于Q-learning機制可以利用分布式集群對攻擊圖生成過程進行生成。傳統(tǒng)的生成方式一般通過深度逆序的方式對攻擊圖進行生成,文中通過將智能體模擬攻擊者的攻擊過程進行攻擊路徑的生成,并通過Q-learning機制中的Q函數(shù)收斂作為攻擊圖生成結(jié)束的標志。此外,文中通過多線程的方式進行了多智能體的攻擊路徑生成,當運用到分布式集群時仍有許多限制需要進一步突破。