• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于深度強化學(xué)習(xí)的網(wǎng)絡(luò)攻擊路徑規(guī)劃方法

      2022-10-10 16:21:16高文龍周天陽趙子恒朱俊虎
      信息安全學(xué)報 2022年5期
      關(guān)鍵詞:子網(wǎng)攻擊者漏洞

      高文龍,周天陽,趙子恒,朱俊虎

      信息工程大學(xué) 鄭州 中國 450001

      1 引言

      隨著信息技術(shù)的發(fā)展,網(wǎng)絡(luò)系統(tǒng)日益復(fù)雜化、多樣化,網(wǎng)絡(luò)風(fēng)險也在不斷上升。傳統(tǒng)的安全工具如防火墻和殺毒軟件等難以發(fā)現(xiàn)和應(yīng)對潛在脆弱點及其組合帶來的安全風(fēng)險,滲透測試通過模擬攻擊者在真實環(huán)境下的攻擊意圖和行為,對整個測試系統(tǒng)進行全面的利用和評估,幫助發(fā)現(xiàn)潛在的攻擊鏈條,逐漸成為評估網(wǎng)絡(luò)安全的重要手段。滲透測試是一種專業(yè)化程度很高的活動,需要測試人員具備多種安全知識和技能,這些經(jīng)驗需要反復(fù)實踐積累。同時,滲透測試往往會持續(xù)較長時間,幾天或數(shù)周,甚至需要對網(wǎng)絡(luò)系統(tǒng)進行反復(fù)測試和檢查維護。如果完全依賴人工實施滲透測試,一是專家經(jīng)驗不易學(xué)習(xí)獲取,二是需要消耗大量時間精力進行反復(fù)測試。實施自動化滲透測試可以擺脫對專家經(jīng)驗的依賴,節(jié)省時間和人力成本,提高滲透測試效率[1-2]。攻擊路徑自動規(guī)劃是實現(xiàn)自動化滲透測試的關(guān)鍵所在,目前成為研究熱點。

      攻擊路徑規(guī)劃是指從攻擊者角度出發(fā),通過選擇有效的動作序列從而到達既定的目標狀態(tài)。攻擊路徑規(guī)劃技術(shù)已有很多相關(guān)研究,根據(jù)可解決的環(huán)境模型是否為完全可觀察、確定、靜態(tài)等,大致分為確定性規(guī)劃技術(shù)和不確定性規(guī)劃技術(shù)[3]。確定性規(guī)劃技術(shù)的基本思路是首先將滲透測試問題轉(zhuǎn)化為規(guī)劃域描述如規(guī)劃領(lǐng)域定義語言(Planning Domain Definition Language,PDDL),然后借助智能規(guī)劃算法求得可行規(guī)劃序列。經(jīng)典的智能規(guī)劃算法通過前向或后向搜索尋找規(guī)劃解,包括規(guī)劃圖技術(shù)[4]、偏序規(guī)劃技術(shù)[5]、分層任務(wù)網(wǎng)絡(luò)[6]等,在搜索的過程中借助各種剪枝策略縮減搜索空間。此外,組合優(yōu)化算法也廣泛應(yīng)用于路徑規(guī)劃領(lǐng)域,如模擬退火算法[7]、遺傳算法[8]、粒子群算法[9]、蟻群算法[10]等,這些算法通過迭代尋優(yōu)的方式進行搜索,可以在設(shè)定優(yōu)化目標的情況下得到高質(zhì)量規(guī)劃解。上述規(guī)劃算法通常用于求解經(jīng)典規(guī)劃問題,需要設(shè)計好精確的搜索空間和算法模型。而攻擊者在現(xiàn)實情況下很難獲得完全準確的環(huán)境信息,因此研究非確定性規(guī)劃技術(shù)具有重要意義。非確定性規(guī)劃技術(shù)主要有兩種解決思路: 一是通過引入概率模擬環(huán)境不確定性,然后結(jié)合確定性規(guī)劃算法進行求解。Sarraute 等人[11]設(shè)計了一種規(guī)劃模型,將動作結(jié)果的不確定性建模為概率,首先借助攻擊樹計算復(fù)合概率和預(yù)期時間,然后使用Dijkstra 算法進行求解得到規(guī)劃路徑。HU Tairan 等人[12]使用攻擊成功概率表示環(huán)境的不確定程度,基于啟發(fā)式搜索提出了APU-D*算法,在規(guī)劃失敗的時候通過增量重規(guī)劃對規(guī)劃解進行快速調(diào)整。雖然在一定程度上解決了動作效果不確定性帶來的挑戰(zhàn),但攻擊者仍然需要獲取完整的拓撲連接等環(huán)境信息。二是基于馬爾可夫決策過程(Markov Decision Process,MDP)或部分可觀察馬爾可夫決策過程(Partially Observable Markov Decision Process,POMDP)模型對滲透測試過程中的不確定性進行描述。MDP 模型以最大化長期受益為目標,將行動表示為狀態(tài)之間的轉(zhuǎn)移,可以更方便刻畫動作效果的不確定性。POMDP 模型在MDP 的基礎(chǔ)上增加了觀察空間和觀察函數(shù),刻畫不確定環(huán)境的理論更加完備,而精確求解卻面臨著巨大挑戰(zhàn),學(xué)術(shù)界一般使用近似方法進行求解,可解決的問題規(guī)模仍然非常有限[13]。

      基于MDP 模型的強化學(xué)習(xí)技術(shù)[14]通過與環(huán)境的交互進行學(xué)習(xí),最終生成動作策略,可以在任何給定狀態(tài)下采取最大化長期收益的動作。強化學(xué)習(xí)可以幫助攻擊者在環(huán)境知識不完整的條件下進行路徑規(guī)劃,同時在計算上比起POMDP模型更具有可行性,具有廣闊的應(yīng)用前景。Schwartz 等人[15]設(shè)計了一個輕量級的網(wǎng)絡(luò)攻擊模擬器(Network Attack Simulator,NSA),將滲透測試框架表示為MDP 模型,基于此使用標準的強化學(xué)習(xí)算法如Q-leaning 尋找最優(yōu)攻擊路徑,但是作者只使用了標準算法在小規(guī)模網(wǎng)絡(luò)環(huán)境下進行了測試,模擬器的精細程度及算法可擴展性有待提高。后續(xù)有學(xué)者在此基礎(chǔ)上對強化學(xué)習(xí)算法進行了改進,周仕承等人[16]提出了一種改進的強化學(xué)習(xí)算法Noisy-Double-Dueling DQN,通過融合優(yōu)先經(jīng)驗回放、雙重Q 網(wǎng)絡(luò)、競爭網(wǎng)絡(luò)機制和噪聲擾動機制提升了DQN 算法在路徑規(guī)劃問題上的收斂速度;Nguyen H V 等人[17]提出了一種雙智能體(Agent)架構(gòu)的A2C 算法,兩個Agent 分別負責(zé)網(wǎng)絡(luò)結(jié)構(gòu)發(fā)現(xiàn)和主機服務(wù)探測利用,可以解決大規(guī)模網(wǎng)絡(luò)環(huán)境的攻擊規(guī)劃問題,但是未詳細闡明兩個Agent的交互細節(jié)。這種融合了多種網(wǎng)絡(luò)結(jié)構(gòu)的改進方法在一定程度提高了算法性能。Zennaro F M 等人[18]采用新的思路求解強化學(xué)習(xí)問題,針對每一種具體的滲透測試仿真環(huán)境,分別提供不同形式的先驗知識如延遲加載等,幫助智能體學(xué)習(xí)更復(fù)雜的問題。文中仿真環(huán)境的設(shè)計非常典型精細,不足之處在于實驗環(huán)境僅有兩臺主機,沒有在網(wǎng)絡(luò)中進行攻擊規(guī)劃。

      當前深度強化學(xué)習(xí)算法應(yīng)用于攻擊路徑規(guī)劃存在適應(yīng)性不強和收斂困難等問題,限制了深度強化學(xué)習(xí)算法處理復(fù)雜滲透測試環(huán)境的能力。Agent 在訓(xùn)練初期通過盲目探索得到的動作序列在維度迅速增長時質(zhì)量會急劇下降,有時很難完成目標。長期低質(zhì)量路徑的積累會導(dǎo)致算法不收斂甚至神經(jīng)元死亡。針對此類問題,本文提出了DH_DDQN 算法,在Double_DQN 算法基礎(chǔ)上增加路徑啟發(fā)信息和基于深度優(yōu)先滲透的動作選擇策略。路徑啟發(fā)信息充分利用歷史經(jīng)驗,在訓(xùn)練初期對Agent的學(xué)習(xí)過程加以引導(dǎo),基于深度優(yōu)先滲透的動作選擇策略在一定程度上對動作空間進行了剪枝。最后,在不同規(guī)模的滲透測試環(huán)境下對算法進行了測試,驗證了算法的有效性。

      2 強化學(xué)習(xí)

      強化學(xué)習(xí)根據(jù)設(shè)計者的意圖來訓(xùn)練Agent,通過與環(huán)境的交互學(xué)習(xí)策略,發(fā)現(xiàn)能帶來最大累積獎勵的動作序列。不需要預(yù)先給定數(shù)據(jù)集,Agent 根據(jù)執(zhí)行某一動作后環(huán)境的反饋進行學(xué)習(xí),通過不斷試錯積累經(jīng)驗。強化學(xué)習(xí)常用的理論框架是MDP,MDP模型通過四元組 <S,A,R,T>進行刻畫,其中,S表示有限狀態(tài)集;A表示可執(zhí)行的動作集;獎勵函數(shù)R表示在狀態(tài)s執(zhí)行某一動作a后獲得的獎賞或懲罰r(s'|s,a),定義為R:S×A→R;狀態(tài)轉(zhuǎn)移函數(shù)T表示在狀態(tài)s執(zhí)行某一動作a后轉(zhuǎn)移至下一狀態(tài)s'的概率p(s'|s,a)。MDP 的目標是依賴最大化長期累積獎賞Jπ(s0) 獲得最優(yōu)策略π*。在公式(1)和(2)中,γ為折扣因子;s0表示初始狀態(tài);策略π表示根據(jù)當前狀態(tài)s選擇動作a,即π(s)=a;L表示從s0開始依據(jù)π決策直至達到目標狀態(tài)的步數(shù)。

      目前基于值函數(shù)和策略梯度的求解方法是解決強化學(xué)習(xí)問題的核心基礎(chǔ)方法。網(wǎng)絡(luò)攻擊路徑規(guī)劃領(lǐng)域通常是離散空間,本文考慮使用基于值函數(shù)的求解算法?;谥岛瘮?shù)的求解方法主要借助值函數(shù)對策略進行評估,Vπ(s)表示在策略π的基礎(chǔ)上狀態(tài)s的預(yù)期獎賞,稱為狀態(tài)值函數(shù)。如果狀態(tài)s可選動作有多個,Qπ(s,a)表示在策略π基礎(chǔ)上對狀態(tài)s采取動作a的預(yù)期獎賞,稱為狀態(tài)動作值函數(shù)。二者之間的關(guān)系為可根據(jù)貝爾曼最優(yōu)方程對最優(yōu)狀態(tài)值函數(shù)V*(s) 進行求解。

      在環(huán)境模型確定已知的情況下可通過動態(tài)規(guī)劃算法進行求解,但在實際應(yīng)用中很難滿足,Q-Leaning 算法是一種時序差分學(xué)習(xí)算法,通過Q 表格中的Q值直接估計最優(yōu)狀態(tài)動作值函數(shù)Q*(s,a),Q值通過預(yù)期估值與實際估值的差進行更新,計算過程為

      DQN 算法容易出現(xiàn)過估計問題,即估計Q值往往比真實的值要大,于是出現(xiàn)了Double_DQN 算法(DDQN)[20],DDQN 使用兩個值函數(shù),一個用來選擇動作,一個用來評估當前狀態(tài)的價值,兩個值函數(shù)的參數(shù)不一樣。估計Q值的選取沿用之前的策略,不同之處在于計算目標Q值的時候,動作a不是直接從目標網(wǎng)絡(luò)選擇最大值,而是在當前網(wǎng)絡(luò)找出最大Q值的動作,然后放入目標網(wǎng)絡(luò)取計算目標Q值,即公式(6)中的a不再是基于θtarget進行選擇,而是基于θcurrent選擇,除此之外其他部分與DQN 一致。算法流程如下所示。

      3 基于深度強化學(xué)習(xí)的網(wǎng)絡(luò)攻擊路徑規(guī)劃算法

      3.1 滲透測試網(wǎng)絡(luò)模型

      本文將滲透測試問題表示為強化學(xué)習(xí)模型,也就是四元組{S,A,R,T}。S定義為網(wǎng)絡(luò)的狀態(tài)空間,A表示攻擊者在某一狀態(tài)下可能采取的行動,R表示攻擊者采取特定行動后獲得的獎勵,T為狀態(tài)轉(zhuǎn)移函數(shù),即在主機狀態(tài)為s時采取動作a后轉(zhuǎn)移至下一主機狀態(tài)s' 的概率。狀態(tài)s反映了主機的所有信息,包括主機標識、操作系統(tǒng)字段、服務(wù)字段和控制字段。更進一步地,主機標識由子網(wǎng)和IP 地址唯一確定;操作系統(tǒng)字段表示主機的操作系統(tǒng),本文假設(shè)一臺主機只運行某一種操作系統(tǒng),所以操作系統(tǒng)字段中的元素具有互斥性;服務(wù)字段表示主機上運行的服務(wù),可以有多種,攻擊者針對這些服務(wù)進行漏洞利用以控制主機;控制字段記錄當前主機的額外信息,包括是否被攻陷、是否可訪問、是否被發(fā)現(xiàn)、主機的資產(chǎn)價值、可被訪問的級別(user 或root)。對上述信息通過one-hot 方式進行編碼,主機標識字段的維度等于子網(wǎng)數(shù)和各子網(wǎng)最大主機數(shù)之和,操作系統(tǒng)字段的維度等于網(wǎng)絡(luò)內(nèi)所有操作系統(tǒng)種類數(shù),服務(wù)字段的維度等于各主機運行服務(wù)的最大值,控制字段的維度是固定的,每一變量為布爾型或數(shù)值型。

      動作空間表明了攻擊者可能采取的攻擊行為,包括信息收集動作和漏洞利用動作。在真實的滲透環(huán)境下,攻擊者難以在一開始就獲取準確全面的網(wǎng)絡(luò)環(huán)境信息,因此引入信息收集動作增加對環(huán)境的感知能力。現(xiàn)實中的信息收集可以是主動方式收集,如掃描;也可以是被動方式收集,如日志分析或流量分析。本文屏蔽具體實現(xiàn)細節(jié),認為在網(wǎng)絡(luò)連通且防火墻允許的條件下,信息收集動作可以成功返回目標的相關(guān)信息,如存在或是不存在。信息收集動作分為子網(wǎng)信息收集和主機信息收集,其中,子網(wǎng)信息收集用來發(fā)現(xiàn)新的子網(wǎng)及其中的主機。主機信息收集是為了獲取某一主機的配置信息,進一步可分為操作系統(tǒng)信息收集和服務(wù)信息收集,通過操作系統(tǒng)信息收集,可對狀態(tài)空間中的操作系統(tǒng)字段進行更新;通過服務(wù)信息收集,可確定主機運行了哪些服務(wù),進而幫助攻擊者選擇最佳漏洞利用動作進行滲透利用。信息收集動作的執(zhí)行成本設(shè)為某一固定值。漏洞利用動作是攻擊者針對主機某一存在漏洞的服務(wù),選擇合適的參數(shù)和漏洞利用程序進行攻擊。諸如開源漏洞框架metasploit(簡稱MSF)等已集成了大量成熟的漏洞利用程序,因此本文對漏洞利用動作進行抽象表示,忽略了選擇參數(shù)和漏洞利用程序的過程,認為針對特定服務(wù)執(zhí)行相應(yīng)的動作后可以以一定概率攻下主機。進一步地,將漏洞利用動作分為遠程攻擊利用和本地提權(quán)利用,漏洞利用動作具有攻擊成本c和攻擊成功率p兩個屬性,攻擊成本c由服務(wù)漏洞自身的高危程度s、漏洞利用過程的耗時t共同決定;攻擊成功率p用以刻畫動作效果的不確定性。其中,服務(wù)漏洞自身的高危程度借助通用漏洞評分系統(tǒng)(Common Vulnerability Scoring System,CVSS)進行評價,CVSS 得分反映了漏洞的嚴重性;漏洞利用過程的耗時可結(jié)合MSF 框架中滲透攻擊模塊命令及參數(shù)復(fù)雜程度進行估計;攻擊成功率可以根據(jù)core impact等測試平臺通過大量模擬實驗獲得。以漏洞高危程度的最大值最小值為界,把攻擊耗時t進行標準化保證量綱統(tǒng)一,針對服務(wù)漏洞i的攻擊動作成本ic的計算見公式(7)

      其中,si是漏洞i的CVSS 評分,ti是針對漏洞i的攻擊用時,S和T分別表示所有漏洞的評分及攻擊用時的集合,k∈(0,1)為調(diào)節(jié)因子,當k取 0.5 時,ci∈ (0,10)。我們的目標是尋找ci盡可能小的動作,公式表明某一漏洞越高危,越值得被推薦使用,ci越小;某一漏洞的利用程序越簡單,參數(shù)越少,ci越小。對動作空間同樣借助one-hot 編碼進行向量化表示,假設(shè)網(wǎng)絡(luò)中存在M個子網(wǎng)、一共有N臺主機,主機最多運行K個服務(wù),所有信息收集動作的個數(shù)為M+N+N*K,所有漏洞利用動作的個數(shù)為2*N*K。

      獎勵函數(shù)的設(shè)計參考文獻[15],假設(shè)Agent 在狀態(tài)s下采取動作a后轉(zhuǎn)移至狀態(tài)s',如果s'對應(yīng)的主機不是目標狀態(tài),則value值為0,動作所獲得的立即獎勵為負;如果s'對應(yīng)的狀態(tài)是目標狀態(tài),則立即獎勵等于被入侵主機的資產(chǎn)價值與動作執(zhí)行代價之差。目標狀態(tài)的value設(shè)置為某一較大的正數(shù),其余主機的value設(shè)為0。

      3.2 算法流程

      DDQN 算法初始階段采用盲目搜索的方式進行搜索,導(dǎo)致目標狀態(tài)的獎勵傳播太慢。探索和利用問題是強化學(xué)習(xí)過程需要考慮的重要因素,解決探索利用平衡問題常采用的方法是ε貪婪策略。在每次選擇動作時,首先產(chǎn)生一個隨機數(shù)?∈ (0,1),與ε進行比較后決定選擇動作的方式,ε的作用是調(diào)整探索和利用的比例。如果ε的值過小,Agent 更側(cè)重利用已有的經(jīng)驗,容易陷入局部最優(yōu);反之Agent 更側(cè)重探索未知區(qū)域,收斂速度過慢。

      3.2.1 路徑啟發(fā)信息設(shè)計

      1.3 測定項目與方法 土壤微生物生物量碳采用底物誘導(dǎo)呼吸法。取5 g鮮土盛于280 mL試劑瓶中,加入30 mg葡萄糖粉末和0.025 g滑石粉在22 ℃培養(yǎng)2 h測定CO2呼吸量,然后根據(jù)CO2釋放速率與微生物生物量碳之間的關(guān)系求出土壤微生物生物量碳[8-9]。

      經(jīng)典的強化學(xué)習(xí)算法并不能高效利用搜索過程中的知識,擅長學(xué)習(xí)卻不擅長搜索,而啟發(fā)式搜索擅長搜索卻不擅長學(xué)習(xí),因此本文通過在強化學(xué)習(xí)過程中加入路徑啟發(fā)信息,指導(dǎo)后續(xù)的學(xué)習(xí)過程,從而提高深度強化學(xué)習(xí)算法的效率。開始訓(xùn)練前設(shè)置路徑啟發(fā)表(Path Heuristic List,PHL),每執(zhí)行一個情節(jié)(episode)后,Agent 獲得了從起始狀態(tài)到目標狀態(tài)的一條動作執(zhí)行軌跡,然后計算每一狀態(tài)至目標狀態(tài)的路徑長度,即從當前狀態(tài)至目標狀態(tài)的狀態(tài)數(shù)。在獲取某一狀態(tài)的路徑長度后,直接對PHL 表進行更新,使PHL 表中當前狀態(tài)的啟發(fā)值保持為最小值。PHL 中每一狀態(tài)的值對應(yīng)為(ha,H(s,a)),其中,H(s,a) 表示在狀態(tài)s采取動作a后猜測其到達目標狀態(tài)的最小距離,計算過程為

      s'是在狀態(tài)s采取動作a后轉(zhuǎn)移到的狀態(tài)。在本文中,H(s,a)表示為s'到目標goal的路徑狀態(tài)數(shù)。當給定了狀態(tài)的啟發(fā)值后,啟發(fā)式動作ha定義為

      接下來是路徑啟發(fā)表的應(yīng)用,對ε貪婪策略進行擴展,采用動態(tài)ε選擇。將動作選擇方式分為三種,借助PHL表選擇動作的方式記做ε1-1,隨機動作選擇方式記做ε1-2,通過深度神經(jīng)網(wǎng)絡(luò)產(chǎn)生的最大Q值選擇方式記做2ε。當已運行步數(shù)steps小于最大探索階段步數(shù)EXPLORE_STEPS時,ε1=1-,此時把1ε進一步細分為ε1-1和ε1-2,若steps<EXPLORE_STEPS/4,ε1-1=0,ε1-2=ε1;否則ε1-1=ε1,ε1-2=0。當已運行步數(shù)steps超過最大探索階段步數(shù)EXPLORE_STEPS時,令ε1-1=0,ε1-2=FINAL_ε,ε2=1-FINAL_ε。這樣設(shè)計的目的是,在訓(xùn)練步數(shù)達到一定值之前,主要借助ε1進行動作選擇,而且會隨著訓(xùn)練進行逐漸遞減。因為剛開始PHL 表尚未完全構(gòu)建,所以在PHL 表完善之前,發(fā)揮主要作用的是ε1-2;當PHL 表構(gòu)建完成后,發(fā)揮主要作用的是ε1-1,ε2也在不斷增加;當超過最大探索階段步數(shù)后,基本只依靠ε2進行選擇,保留極小概率FINAL_ε的隨機選擇方式。

      3.2.2 基于深度優(yōu)先滲透的動作選擇策略設(shè)計

      在沒有任何經(jīng)驗指引情況下,強化學(xué)習(xí)Agent將信息收集動作和利用動作一視同仁,反復(fù)嘗試所有的狀態(tài)空間和動作空間,在網(wǎng)絡(luò)包含大量子網(wǎng)大量主機的情況下,狀態(tài)空間的過快增長限制了算法的可擴展性。通過觀察每個情節(jié)中生成的動作執(zhí)行軌跡可以發(fā)現(xiàn),Agent 嘗試了大量滲透效果相似的狀態(tài),比如對非目標主機所在的子網(wǎng)進行子網(wǎng)內(nèi)主機的信息收集和漏洞利用,然而從實際滲透測試角度考慮,攻擊者在抵達目標主機之前,最主要的目的是進行不同子網(wǎng)的跨網(wǎng)段攻擊,以更快抵達目標主機。

      本文將除目標主機之外的子網(wǎng)內(nèi)狀態(tài)空間進行邏輯意義上的狀態(tài)聚合,認為控制子網(wǎng)內(nèi)少數(shù)主機與控制大量主機對于實現(xiàn)攻擊目標主機而言效果一樣,提出了基于深度優(yōu)先滲透的動作選擇策略。首先,在攻擊者進入目標主機所在子網(wǎng)之前,當成功地對一個子網(wǎng)內(nèi)某臺主機進行本地提權(quán)后,下一步優(yōu)先使用信息收集動作以探測發(fā)現(xiàn)新的子網(wǎng)和主機。如果信息收集動作失敗,則采用完整的動作空間進行信息收集和漏洞利用嘗試,成功對另一臺主機進行本地提權(quán)動作后繼續(xù)優(yōu)先滲透下一子網(wǎng),直至成功控制目標主機。

      以一個典型的滲透測試網(wǎng)絡(luò)環(huán)境為例進行說明,攻擊者位于外網(wǎng),目標主機是位于業(yè)務(wù)網(wǎng)的FTP 服務(wù)器。非軍事沖突區(qū)(Demilitarized Zone,DMZ)的Web 服務(wù)器對外網(wǎng)提供訪問服務(wù),攻擊者在初始時刻只能訪問DMZ 區(qū)的Web 服務(wù)器或Redis 服務(wù)器。辦公室內(nèi)網(wǎng)和業(yè)務(wù)網(wǎng)管理區(qū)可以訪問DMZ 區(qū),辦公室內(nèi)網(wǎng)可訪問業(yè)務(wù)網(wǎng)管理區(qū)。辦公室內(nèi)網(wǎng)和業(yè)務(wù)網(wǎng)管理區(qū)只能通過Web 服務(wù)器某一特定漏洞去訪問,比如服務(wù)端請求偽造漏洞(Server-Side Request Forgery,SSRF)。業(yè)務(wù)網(wǎng)只能通過業(yè)務(wù)網(wǎng)管理區(qū)訪問,不能與任何其他網(wǎng)絡(luò)互相訪問。軟防火墻不允許Redis服務(wù)器訪問其他子網(wǎng)。每臺主機均運行了一些具有脆弱性的服務(wù)。理想狀態(tài)下最佳的滲透路徑為: 攻擊機→DMZ區(qū)Web 服務(wù)器→信息收集發(fā)現(xiàn)存在業(yè)務(wù)網(wǎng)管理區(qū)→業(yè)務(wù)網(wǎng)管理區(qū)→VPN 服務(wù)器→信息收集發(fā)現(xiàn)業(yè)務(wù)網(wǎng)→業(yè)務(wù)網(wǎng)FTP。但是在訓(xùn)練過程中Agent可能會在入侵DMZ 區(qū)Web 服務(wù)器后,對后臺的文件服務(wù)器等進行信息收集和利用,或者在Web 服務(wù)器日志中發(fā)現(xiàn)存在辦公室內(nèi)網(wǎng),通過反向代理方式入侵辦公室內(nèi)網(wǎng)。這對攻擊目標主機而言沒有實際價值,反而增加了成本。采用本文的深度優(yōu)先滲透策略,如果攻擊者剛開始入侵了Web 服務(wù)器并成功執(zhí)行了本地提權(quán)動作,則通過信息收集動作可以發(fā)現(xiàn)新的子網(wǎng),搭建反向代理后直接對下一個子網(wǎng)進行滲透;如果攻擊者剛開始入侵的是Redis 服務(wù)器,執(zhí)行信息收集動作會返回失敗,此時采用完整的動作空間,對Web 服務(wù)器進行漏洞利用??梢钥闯龌谏疃葍?yōu)先滲透的攻擊策略可以減少每個情節(jié)中動作執(zhí)行的個數(shù),更快到達目標主機,提高強化學(xué)習(xí)的速度和準確率。

      圖1 狀態(tài)空間向量化表示Figure 1 Vectorized representation of state space

      圖2 典型的滲透測試網(wǎng)絡(luò)環(huán)境Figure 2 Typical penetration testing network environment

      3.2.3 DH_DDQN 算法流程

      對上述算法進行簡要說明。首先對神經(jīng)網(wǎng)絡(luò)和路徑啟發(fā)表PHL 進行初始化,行19~36 表示訓(xùn)練一個情節(jié)后,如果成功到達目標狀態(tài),則對PHL 表進行更新,更新次數(shù)設(shè)置為MAX_PHL_STEPS。如果當前狀態(tài)尚未出現(xiàn)在PHL 表中,則新增元素,設(shè)置對應(yīng)的動作和啟發(fā)值;否則更新啟發(fā)值信息使其保持為最小值,具體步驟見行2~9。行26~29 表明如果當前動作成功對目標主機進行提權(quán)利用后,產(chǎn)生禁用動作表taboo_a,將本子網(wǎng)內(nèi)的動作以及整個網(wǎng)絡(luò)的漏洞利用動作添加至taboo_a 表。如果下一步信息收集失敗的話,把禁用動作表置空,繼續(xù)采用原來的動作空間進行選擇。

      4 實驗設(shè)計與結(jié)果分析

      本文使用文獻[15]中的網(wǎng)絡(luò)模擬器設(shè)計滲透測試環(huán)境,通過yaml 文件進行描述。對算法運行過程中總獎勵和運行時間的變化進行展示,驗證算法性能。

      4.1 實驗及參數(shù)設(shè)計

      實驗所使用的的網(wǎng)絡(luò)拓撲結(jié)構(gòu)如圖3 所示,攻擊者在初始時刻僅能訪問子網(wǎng)1,關(guān)于各子網(wǎng)間是否具有網(wǎng)絡(luò)連通關(guān)系可以通過配置防火墻規(guī)則實現(xiàn)。例如,在圖3中,設(shè)置子網(wǎng)1可以訪問子網(wǎng)3不能訪問子網(wǎng)2,子網(wǎng)2 僅能訪問子網(wǎng)3 不能訪問子網(wǎng)1,子網(wǎng)3 可以訪問子網(wǎng)1 也可訪問子網(wǎng)2。攻擊者在初始時刻并不知道子網(wǎng)2 和子網(wǎng)3 的存在,狀態(tài)空間中對應(yīng)的狀態(tài)值為0,當在子網(wǎng)1通過信息收集動作發(fā)現(xiàn)子網(wǎng)3后,更改相應(yīng)的狀態(tài)值為1,在此基礎(chǔ)上可以對子網(wǎng)3 的主機進行漏洞利用,修改對應(yīng)的狀態(tài)值,以此類推。

      圖3 網(wǎng)絡(luò)結(jié)構(gòu)示意Figure 3 Schematic diagram of network structure

      首先設(shè)計三種不同規(guī)模的網(wǎng)絡(luò)環(huán)境,測試本文算法與其他算法的性能。每個網(wǎng)絡(luò)環(huán)境的子網(wǎng)數(shù)、子網(wǎng)每主機數(shù)、以及主機漏洞數(shù)逐漸增加,同時網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜程度也增加,攻擊者需要更多的攻擊步驟才能到達目標狀態(tài)。目標主機從最后兩個子網(wǎng)中挑選2 臺,資產(chǎn)價值均設(shè)為10。實驗場景信息見表1。

      表1 實驗場景信息Table 1 Experimental scene information

      實驗硬件配置包括Intel i9-7980XE CPU、128G內(nèi)存,操作系統(tǒng)為windows 10,算法程序通過python語言編寫。程序超參數(shù)的含義見表2,部分超參數(shù)需要根據(jù)問題規(guī)模的擴大進行適當調(diào)整,這類超參數(shù)的設(shè)定對實驗結(jié)果有較大影響,表3 給出了3 種實驗場景下的超參數(shù)取值。其余超參數(shù)通過參閱相關(guān)文獻和進行大量實驗進行設(shè)定,對實驗結(jié)果的影響不大,保持在適當范圍即可。

      表2 算法超參數(shù)的設(shè)定及含義Table 2 Setting and meaning of algorithm hyperparameters

      表3 不同實驗場景下部分超參數(shù)的設(shè)定Table 3 Settings of some hyperparameters in different experimental scenarios

      4.2 實驗結(jié)果展示與分析

      Dueling_DQN[21]是采用了競爭網(wǎng)絡(luò)結(jié)構(gòu)的DQN算法,將Q 網(wǎng)絡(luò)分解為價值函數(shù)網(wǎng)絡(luò)和優(yōu)勢函數(shù)網(wǎng)絡(luò),在gym(OpenAI 的開源測試平臺)的一些簡單測試任務(wù)中取得了比DQN 算法更優(yōu)的效果。引入競爭網(wǎng)絡(luò)結(jié)構(gòu)的DDQN 算法稱為Dueling_DDQN 算法。將加入路徑啟發(fā)信息的DDQN 算法記做H_DDQN,首先將本文算法DH_DDQN 與DDQN、Dueling_DDQN 和H_DDQN 算法進行對比,在保持超參數(shù)及環(huán)境設(shè)定一致的情況下進行實驗,運行結(jié)果見圖4、圖6 和圖8,分別表示3 種實驗場景下4 種算法在每個情節(jié)所獲得的總獎勵,四種算法最終都收斂于最佳環(huán)境獎勵值。圖5、圖7 和圖9 分別展示了3 種場景下算法運行過程中的時間變化。

      圖4 場景1 實驗結(jié)果Figure 4 Experimental results in scenario 1

      圖5 四種算法訓(xùn)練過程的運行時間Figure 5 Running time of the four algorithm training processes

      圖6 場景2 實驗結(jié)果Figure 6 Experimental results in scenario 2

      圖7 四種算法訓(xùn)練過程的運行時間Figure 7 Running time of the four algorithm training processes

      圖8 場景3 實驗結(jié)果Figure 8 Experimental results in scenario 3

      圖9 四種算法訓(xùn)練過程的運行時間Figure 9 Running time of the four algorithm training processes

      從場景1 的實驗結(jié)果看出,在實驗規(guī)模較小的情形下,四種算法的初次收斂次數(shù)相近,而H_DDQN 算法的學(xué)習(xí)過程更為迅速。從時間曲線看,DDQN 和Dueling_DDQN 算法的運行時間接近,H_DDQN 和DH_DDQN 算法的運行時間接近,均大幅優(yōu)于前兩種算法,說明本文算法可以提高Agent 的學(xué)習(xí)速度。由于網(wǎng)絡(luò)結(jié)構(gòu)相對簡單,DH_DDQN 算法的深度優(yōu)先滲透策略并未發(fā)揮太大作用,反而增加了一些計算量,所以在運行時間上比H_DDQN 略多。

      從場景2的實驗結(jié)果可以看出,網(wǎng)絡(luò)規(guī)模擴展后,DDQN 和Dueling_DDQN 算法的學(xué)習(xí)過程更加復(fù)雜漫長,H_DDQN 和DH_DDQN 算法能夠在更少的訓(xùn)練次數(shù)中達到收斂。結(jié)合運行時間曲線看,Dueling_DDQN 算法在狀態(tài)空間較大的測試環(huán)境中,運行時間增長過快,收斂慢;DH_DDQN 算法的運行時間最快,達到收斂所需要的的時間在20s 左右。

      從場景3 的運行結(jié)果可以看出,H_DDQN 和DH_DDQN 算法相比于其余兩種算法學(xué)習(xí)過程更高效,而且隨著問題規(guī)模的擴展,DH_DDQN 算法相較于其他算法的提升更明顯。從H_DDQN 算法運行情況可以看到兩次明顯的波動,第一次波動發(fā)生在剛加入路徑啟發(fā)信息時,隨著訓(xùn)練的進行,借助路徑啟發(fā)信息進行動作選擇的概率越來越低,最后趨于0,此時產(chǎn)生第二次明顯的波動,路徑啟發(fā)信息作用的時間段在這兩次波動之間。在訓(xùn)練過程中逐漸降低直至撤銷路徑啟發(fā)選擇動作的概率的原因在于,雖然加入啟發(fā)式動作選擇策略后算法可以很快收斂,但是無法確定算法收斂是構(gòu)造路徑啟發(fā)表帶來的結(jié)果還是神經(jīng)網(wǎng)絡(luò)參數(shù)已訓(xùn)練完畢帶來的結(jié)果。從實驗結(jié)果看,訓(xùn)練次數(shù)在20~70 之間的“收斂”是路徑啟發(fā)信息本身造成的,此時神經(jīng)網(wǎng)絡(luò)參數(shù)沒有達到最優(yōu),這才導(dǎo)致撤銷路徑啟發(fā)信息這種動作選擇方式后,網(wǎng)絡(luò)再一次出現(xiàn)較大波動,這是神經(jīng)網(wǎng)絡(luò)自學(xué)習(xí)的過程,迭代200 次以后的收斂才是神經(jīng)網(wǎng)絡(luò)訓(xùn)練完成的結(jié)果。DH_DDQN 算法在H_DDQN 算法基礎(chǔ)上加入深度優(yōu)先滲透策略,中間的波動是3 種動作選擇方式切換造成的,神經(jīng)網(wǎng)絡(luò)經(jīng)過訓(xùn)練后收斂更快,而且收斂后的策略更加穩(wěn)定。

      接下來設(shè)計更復(fù)雜的實驗場景以驗證 DH_DDQN 算法的可擴展性。具體場景信息見表4,實驗結(jié)果見圖10,算法近似收斂時的迭代次數(shù)及運行時間見圖11。場景4、5、6 在保持網(wǎng)絡(luò)拓撲一致的情況下增加主機漏洞總數(shù),使用本文算法進行路徑規(guī)劃。場景4、7、8 在保持主機漏洞總數(shù)的情況下增加子網(wǎng)個數(shù)及主機個數(shù),使用本文算法進行路徑規(guī)劃。關(guān)于各實驗場景所使用的算法超參數(shù)見表5??梢钥闯?在網(wǎng)絡(luò)及主機數(shù)量不變的情況下,隨著主機漏洞數(shù)目的增加,算法達到近似收斂時需要更多的迭代次數(shù),時間增長相對平穩(wěn);增加子網(wǎng)個數(shù)及子網(wǎng)內(nèi)主機個數(shù)時,由于Agent在每個情節(jié)需要嘗試動作數(shù)迅速增長,所以算法收斂時所需要的時間也迅速增長。在100 臺主機以內(nèi)的網(wǎng)絡(luò)環(huán)境中,本文算法能夠在有限時間范圍求得規(guī)劃解。

      圖10 本文算法在不同規(guī)模實驗場景下的運行結(jié)果Figure 10 The results of the algorithm in this paper in different scale experimental scenarios

      圖11 本文算法在不同場景下的迭代次數(shù)及運行時間Figure 11 The number of iterations and running time of the algorithm in this paper in different scenarios

      表4 實驗場景信息Table 4 Experimental scene information

      表5 不同實驗場景下部分超參數(shù)的設(shè)定Table 5 Settings of some hyperparameters in different experimental scenarios

      5 結(jié)束語

      本文提出的DH_DDQN 算法融合了路徑啟發(fā)信息引導(dǎo)和深度優(yōu)先滲透的動作選擇策略,可以有效提升算法訓(xùn)練效率,通過實驗證明在同等實驗條件和參數(shù)設(shè)置條件下可以解決更復(fù)雜的攻擊路徑規(guī)劃問題。DH_DDQN 算法的改進措施相較于原算法在計算復(fù)雜度和存儲復(fù)雜度方面有一定的影響。首先在路徑啟發(fā)信息的構(gòu)建過程中,增加的計算量等于每個情節(jié)的路徑長度與最大更新次數(shù)MAX_PHL_STEPS之積,在每個情節(jié)中路徑長度的最大值為MAX_EP_STEPS,所以在最差情況下,增加計算次數(shù)為MAX_PHL_STEPS×MAX_EP_STEPS,增加的存儲量為MAX_PHL_STEPS×MAX_EP_STEPS。實際上,MAX_PHL_STEPS的值不必設(shè)置過大,更多操作是更新元素而不是新增元素,在獎勵稀疏的情況下增加的存儲量遠小于理論值。其次是深度優(yōu)先滲透策略的設(shè)計,深度優(yōu)先滲透策略發(fā)揮作用的時間段在算法收斂前,當神經(jīng)網(wǎng)絡(luò)訓(xùn)練完成后,幾乎不會再進入算法2 第21、22 步。假設(shè)達到收斂時的迭代次數(shù)為N,算法2 第22 步嘗試更換動作的次數(shù)的最大值為M,則這一過程增加的計算量為O(N × M× MAX_EP_STEPS),此外第27 步構(gòu)建taboo_a 表的過程,相當于對動作空間的一次遍歷,這一過程增加的計算量為O(MAX_STEPS×||A||),綜合來看基于深度優(yōu)先滲透策略增加的計算量為O(MAX_STEPS×max{M,||A||}),增加的存儲空間的最大值是taboo_a表的長度,即O(||A||)。

      本文在DDQN 算法基礎(chǔ)上的改進方法簡潔有效。路徑啟發(fā)信息值作用于訓(xùn)練前期的一段時間,而后概率降為0,目的是為了提高訓(xùn)練初期的探索路徑質(zhì)量,同時基于深度優(yōu)先滲透策略在收斂后也幾乎不會發(fā)揮作用。訓(xùn)練結(jié)束后深度神經(jīng)網(wǎng)絡(luò)習(xí)得最佳策略,可以用于攻擊者在任一狀態(tài)下的攻擊規(guī)劃。與其它算法對比,本文算法收斂速度更快,運行時間更短。未來可以考慮以下方面的改進。一是DH_DDQN 算法未對神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進行改進調(diào)整,如果能夠與更先進的神經(jīng)網(wǎng)絡(luò)或優(yōu)化方式融合,算法性能會有更大提升;二是深度強化學(xué)習(xí)的訓(xùn)練過程較為漫長,如何保存和轉(zhuǎn)化歷史策略去適應(yīng)全新的環(huán)境,也是一個比較復(fù)雜的問題。

      猜你喜歡
      子網(wǎng)攻擊者漏洞
      一種簡單子網(wǎng)劃分方法及教學(xué)案例*
      計算機時代(2023年1期)2023-01-30 04:08:22
      漏洞
      基于微分博弈的追逃問題最優(yōu)策略設(shè)計
      子網(wǎng)劃分問題研究及應(yīng)用
      正面迎接批判
      愛你(2018年16期)2018-06-21 03:28:44
      子網(wǎng)劃分的簡易方法
      三明:“兩票制”堵住加價漏洞
      漏洞在哪兒
      兒童時代(2016年6期)2016-09-14 04:54:43
      高鐵急救應(yīng)補齊三漏洞
      有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
      泗阳县| 惠水县| 梧州市| 阿图什市| 黄冈市| 仁化县| 南汇区| 汉源县| 辰溪县| 宁武县| 翼城县| 新河县| 武定县| 台东市| 通许县| 阿拉善右旗| 左云县| 工布江达县| 广德县| 汕尾市| 青铜峡市| 广宁县| 含山县| 偃师市| 清水河县| 光泽县| 五原县| 襄垣县| 台中市| 长治县| 赫章县| 阿坝县| 桐城市| 乌拉特后旗| 昭通市| 柞水县| 屯门区| 蓝田县| 汉源县| 湘潭市| 山东省|