?

基于機器學習的自動化滲透測試系統技術的研究

2022-07-09 06:43牛月坤田晨雨吳昊天
計算機測量與控制 2022年6期
關鍵詞:攻擊者漏洞節點

牛月坤,曹 慧,田晨雨,李 濤,吳昊天

(國能信息技術有限公司,北京 100011)

0 引言

當前許多公司和企業將開發出的應用程序架設在Web平臺上,但更多地關注網絡和服務器硬件性能,對應用安全的方面關注較少,可能導致Web站點存在安全漏洞,容易受到惡意攻擊[1]。自動化滲透測試平臺(DAS-APENTEST)在很多廠家,通過用自己的規則方法和程序等方式去解釋安全問題,通過構建滲透測試平臺,實現自動化、立體化的滲透測試系統?,F有技術研究背景還基于應用學角度,一切從實際應用出發,通過應用程序提高了滲透測試對系統的邏輯缺陷和技術漏洞分析能力。比如通過發明漏洞檢測程序,或者人為在不用位置檢測,提高應用能力。但這種技術現狀通過非法入侵的調度攻擊目標主機獲取目標系統的權限,在測試過程中評估系統的網絡安全性能,最大限度地探測出系統存在的安全漏洞。但當前的滲透測試的測量效率不高,現有的Fuzzing測試漏洞搜索范圍不大,且人工分析成本過高[2]。

針對上述存在的問題,文獻[3]系統開發出基于DJANGO的網絡滲透測試實驗平臺,結合了網絡爬蟲計技術,對獲取的資產數據進行掃描和滲透測試。文獻[4]系統使用Java語言編寫出多方協同的滲透攻擊框架,集成了端口轉發、socket代理和遠程控制木馬等功能,包含了攻擊鏈中所需的各種功能模塊。文獻[5]系統提出基于PENET理論的滲透測試模型,將動態分析法應用到測試中,提高目標設備和系統的安全性。文獻[6]系統利用綜合分析法建立判斷矩陣,對滲透測試的各工具和平臺進行分析,具有多個漏洞利用程序和輔助測試模塊,實時更新最新漏洞的利用插件。

上述技術中仍舊存在一些不足,大部分滲透測試工具只能對外網系統的漏洞進行掃描,無法構成自動化的流量信道,因此就需要一種新型的自動化滲透測試系統實現內網及其他主機的安全測試,提高第三方插件測試的自動化程度。

1 系統架構及原理

為全方位檢測出系統中存在的安全漏洞和網絡脆弱性節點,保證目標系統的網絡安全性能,本研究加入機器學習技術建立自動化滲透測試系統,從不同的角度出發,利用各類非法入侵方法對目標系統進行滲透測試,最終輸出滲透測試報告。滲透測試原理為通過非法入侵和調度攻擊目標主機,獲取系統的權限和篡改數據庫的數據,在測試過程中對目標系統的網絡安全性進行評估,從非法入侵的角度對系統中存在的邏輯缺陷、網路漏洞和系統脆弱節點進行分析,利用各類攻擊手段對系統內網和外網進行滲透測試,盡可能的發現系統匯總存在的全部漏洞,最終生成滲透測試報告。本研究基于機器學習的自動化滲透測試系統架構如圖1所示。

圖1 基于機器學習的自動化滲透測試系統架構

系統原理可以描述為:系統首先根據測試工具和用戶需求制定合理的測試方案,確定測試周期、測試權限、測試的業務范圍和執行流程,避免對目標系統網絡的正常運營造成影響[7]。系統對目標系統進行滲透攻擊,利用系統漏洞和部署在系統的攻擊載荷獲取目標系統的權限和服務器的ROOT權限,破壞系統內部邏輯結構,惡意修改系統數據庫數據,并避免IPS、IDS、WAF等網絡安全設備的檢測[8]。系統中機器學習模塊主要分為攻擊負載標注部分和訓練學習部分,將攻擊測試語句分解為最小分片的測試語句,將繞過WAF的攻擊測試的標簽進行標記,生產具有標簽的攻擊測試訓練集。

本研究系統使用Metasploit開源的滲透測試框架,包含了大量針對應用程序、協議、服務和操作系統的漏洞利用代碼,當系統確認目標系統存在漏洞時,滲透測試人員可以利用與漏洞相匹配的模塊進行攻擊。系統包含有多個有效載荷,為測試人員提供一個反彈形SHELL接口,可以連接到目標計算機運行測試人員在目標系統上執行操作和指令[9]。系統在進行攻擊前,漏洞利用模塊對有效載荷進行配置,使用合適的腳本Metasploit可以自動化完成整個配置過程,基于msfconsole、msfgui和msfapi接口完成用戶與框架之間的交互[10]。

系統由OPENVAS開放漏洞評估提供全面的漏洞掃描和漏洞管理方案,OpenVAS掃描器定期更新一個網絡漏洞測試NVTs,通過OpenVAS NVT feed掃描引擎執行漏洞掃描,將漏洞掃描結果全部整合到漏洞管理器中[11]。系統使用AUXiliary輔助模塊,包含了對目標系統的攻擊場景中的各種腳本,assistantscanner模塊用來破解SSH證書,打開一個msfcon,RHOSTS 選項可以設置掃描器的目標地址。經過機器學習對目標服務器進行分析后得到最佳攻擊路徑,使用自動化生成攻擊腳本進行滲透攻擊,將目標系統的反饋消息存儲在數據庫中。數據庫使用HBase開源data管理模塊,為列存儲Nosql數據庫,在HDFS上實時讀寫和快速隨機訪問數據層的結構化數據。系統客戶端包含Zookeeper存儲HBase的元數據,客戶端進行讀取和寫入操作時在Zookeeper中訪問meta元數據。對目標系統完成全面掃描和漏洞檢測后,量化滲透攻擊的成功率,對于相應的目標服務器和網絡系統生成滲透測試報告。系統通過接入第三方用戶圖表繪制庫ANTV為用戶提供可視化的應用,在圖表核心庫使用ANV作為構建圖表的核心部分,應用基于海量圖形應用的底層數據引擎,以大量圖形數據分析為驅動,提供多種圖形應用語義和交互方案,將系統的網絡漏洞數、漏洞位置和脆弱節點數量等數據以可視化圖形的形式展示。

系統的前端利用JAVAScript框架VUE構件的web用戶界面,系統界面具有相應的用戶管理模塊、情報收集模塊、漏洞探測模塊、攻擊模塊和生成報告模塊等,用戶根據需求進行相應的模塊完整測試工作。metasploit測試工具提供了滲透攻擊所需的編碼器模塊、輔助模塊、攻擊模塊和空指令模塊。在獲取到目標系統的權限后,對系統進行各種攻擊行為,比如降低權限、修改日志文件、刪除用戶數據、植入后門和運行其他程序等,滲透模塊通過metasploit接口對接到系統中,通過后滲透攻擊腳本Meterpreter與目標系統進行會話,執行Meterpreter服務端提供的API。

2 基于攻擊圖的最優攻擊路徑自動化生成

一般的攻擊圖生成過程由滲透測試人員分析得到的,沒有實現完全的自動化生成,基于狀態轉移的攻擊圖生成方式可能會出現生成環,增加了對攻擊路徑分析的難度。本研究根據目標系統的各個網路節點的脆弱性和連接關系,利用攻擊圖生成最優攻擊路徑?;诠魣D的最優攻擊路徑自動化生成流程如圖2所示。

圖2 基于攻擊圖的最優攻擊路徑自動化生成流程

生成攻擊路徑前首先需要獲取目標系統的信息,通過網路基掃描工具采集目標系統節點之間的連接關系,獲取系統節點的IP信息、ARP表。完成目標系統的信息采集后結合漏洞數據庫,根據節點的連接關系分析目標系統的網絡架構和拓撲結構,分析出目標系統中節點的脆弱信息。綜合目標系統的脆弱節點和連接關系,生成漏洞利用關系,得到目標系統節點之間的原子攻擊,原子攻擊包括攻擊的前提條件、攻擊結果和漏洞信息。一次原子攻擊作為攻擊圖的邊生成全局攻擊圖。

對生成的全局攻擊圖進行分析,生成對目標系統中目標節點的對應攻擊路徑。為防止生成的全局攻擊圖存在節點過多、生成攻擊環、攻擊路徑分析難度較大的問題,本研究設計的攻擊圖模塊,網絡設備為最小粒度,簡化了攻擊圖,在生成的所有攻擊路徑中,以網絡設備和主機構成攻擊節點,使攻擊圖不會出現環形結構。目標系統中的脆弱節點可以根據攻擊路徑到下一個目標節點,在復雜的網絡結構中不會因為節點數據的增加,導致攻擊性能的下降。

在攻擊圖中,一次實際漏洞利用形成了攻擊圖中的一條邊,表示發生了一次原子攻擊:

atomicAttack=(vul,peoC,result)

(1)

其中:vul表示原子攻擊利用的漏洞,peoC表示攻擊的前提條件,result表示原子攻擊產生的后果[12]。

通過公式(1)可以通過數據量化方式表示實際漏洞所形成了攻擊圖,并將攻擊內容通過數據量化的方式表示出來。

原子攻擊的前提條件可表示為:

peoC=(applyWay,Authoritysrc,Authoritydst)

(2)

其中:applyWay表示漏洞利用難度,Authoritysrc表示發起攻擊的主機需要獲取的最低權限,Authoritydst表示被攻擊的主機的最低權限[13]。目標系統網絡節點的脆弱性與漏洞利用難度applyWay有關,通過原子攻擊量化計算,將漏洞和applyWay存儲在VulProbility中。從Host中任意取出有關主機節點作為TempHost,直到所有網絡可訪問節點遍歷完畢[14]。從HostLink中獲取所有與TempHost相關的連接作為TempLink,從Hostvul中獲取到所有連接中的節點的漏洞信息,并判斷漏洞是否為可達性漏洞。獲取漏洞利用難度applyWay并生成一個原子攻擊,并表示為攻擊圖中的有向邊,重復以上過程直到生成可視化的全局攻擊圖。

通過上述描述,能夠將多種數據信息生成最優攻擊路徑,在具體應用中,還需考慮到攻擊的有效性和可以得到的最大利益,將從漏洞中獲取到目標系統的節點信息進行量化,表示為該節點的資產價值assetValue。第j個原子攻擊的價值可表示為:

attackVj=(assetValue+Threatvalue)/D

(3)

其中:attackVj為原子攻擊的價值,assetValue為節點的資產價值,Threatvalue為節點的威脅價值,D為原子攻擊難度。通過式(3)能夠實現威脅價值數據信息的計算。

在一次滲透攻擊當中攻擊路徑的攻擊價值可表示為:

(4)

式(4)中,attackWVj表示攻擊路徑的攻擊價值,N表示攻擊路徑總數,j表示原子攻擊次數。根據全局攻擊圖轉換為攻擊矩陣,矩陣中的值表示節點的原子攻擊價值,采用深度優先搜索算法,對走過的攻擊路徑進行編碼。對于新的攻擊路徑判斷是否已經到達目標節點,如果達到則更新攻擊價值attackVj,對目標系統中的節點依次嘗試,并標記已經走過的路徑。路徑探索完畢時,選取其中攻擊價值attackWVj最大值作為最優路徑。通過最優路徑,能夠實現威脅信息的獲取與計量。從目標系統的初始節點到目標節點的攻擊路徑生成核心代碼如下所示:

# 保存最大攻擊價值

MaxAttackValue = 0

Book = [0]

def dfs(Cur, Dis, n, AttackMatrix):

"""

:param Cur:當前所在位置

:param Dis:走過的路徑

:param n:總節點數

:param AttackMatrix:攻擊矩陣

:return:攻擊路徑信息,包括最大攻擊價值和攻擊路徑

"""

if Cur == n:

if Dis["Val"] >MaxAttackValue:

return Dis

for i in range(1, n + 1):

if AttackMatrix[Cur][i] != -1 and Book[i] == 0:

Book[i] = 1

# 繼續搜索

Dis["Val"] += AttackMatrix[Cur][i]

Dis["Way"] += "->" + str(i)

dfs(i, Dis)

# 路徑探索完畢,取消標記

Book[i] = 0

3 威脅驅動的多階段滲透攻擊

隨著目標系統的網絡節點數和網絡結構的復雜程度的提高,進行滲透攻擊很難直接與設定的攻擊目標直接獲取連接。本研究提出威脅驅動的多階段滲透攻擊方法,從外部網絡發動緊密的單步攻擊不斷接近目標系統,最終攻破攻擊目標,這種攻擊方法持續時間較長且具有明顯的階段性。

滲透攻擊者對目標網絡進行掃描,對可利用的主機進行定位,使用攻擊武器將該主機攻破后在目標網絡中占據據點,利用據點對網絡內部進行持續探測,進而利用目標網絡中的漏洞不斷接近并攻擊目標。當攻擊者具有主機H1的User權限時,目標網絡中主機H1與H2通過Http連接,當主機H2上存在遠程攻擊漏洞CVE,攻擊者能夠發動原子攻擊V,攻擊后獲取主機H2的Root權限[15]。多階段滲透攻擊如圖3所示。

圖3 多階段滲透攻擊

多階段滲透攻擊可分為3個階段,準備階段、利用階段和攻擊階段。準備階段作為攻擊者的初始節點,攻擊者在目標網絡中建立節點,為后續的攻擊提供基礎,對目標網絡進行掃描并將可利用的主機標記出來。在準備階段中定制為該主機的攻擊武器,準備完成后將攻擊武器投到進行攻擊的主機上,攻擊目的為完成該主機的入侵控制,控制完成后在目標網絡中建立據點。利用階段利用攻擊者在目標網絡中占據的節點,接著在目標網絡內部進行探測,利用目標網絡中的漏洞,不斷橫向移動以逼近攻擊目標。攻擊階段為滲透攻擊的最后階段,攻擊者距離目標節點更近,對攻擊目標發起攻擊,當攻擊成功后,目標系統表現為無法進行正常工作,業務數據被修改,系統無法正常訪問,敏感數據被竊取。攻擊圖用來描述多階段滲透攻擊,多階段滲透攻擊圖可表示為:

AG=(N,E,K)=(S∪V,S×V∪V×S,K)

(5)

式(5)中,N表示為目標系統的節點集合,E表示有向邊集合,K表示狀態轉移概率集合,S表示狀態節點集合,V表示原子攻擊集合[16]。

由圖3中的攻擊鏈模型可知,多段滲透攻擊從目標系統的外部發起,攻擊者逐漸向系統內部靠近攻擊目標,攻擊者與攻擊目標的距離越小,則表示攻擊者對目標網絡的威脅越大。目標網絡節點集合為NC=O∩I∩G,由外部網絡O、內部網絡I和攻擊目標G組成。能夠通過外網直接連接的外部節點構成外部網絡,外部節點被攻擊后成為據點,攻擊目標G為攻擊的最終目的,一般為系統的控制主機、服務器和數據庫等。攻擊者在T0發動攻擊,并在T1、T2、T3、T4、T5時刻攻破外部節點和內部節點HostA、HostB、HostC、HostD、HostE。已攻破的節點集合為AS,攻擊者不斷利用節點漏洞對其他節點進行攻擊,在T5時刻,攻擊者已攻破的節點集合為AST5={HostA,HostB,HostC,HostD,HostE}。攻擊者在不同時刻在目標網絡中所在的位置也不同,對攻擊目標的威脅大小也將動態改變,攻破目標節點的數量越多對目標網絡的威脅也越大。威脅驅動的攻擊階段動態劃分模型可表示為:

(6)

其中:THt表示攻擊者對目標網絡的威脅,THthsh表示防御者設定的威脅閾值,API表示滲透攻擊初期,APM表示滲透攻擊中期,APE表示滲透攻擊后期[18]。攻擊圖模型能夠很好反映攻擊進程的問題,當前目標網絡中的攻擊行為有相對宏觀的了解,將攻擊者對目標網絡的威脅融入攻擊階段劃分中,能夠更好地表示攻擊階段的動態變化。

威脅驅動的攻擊階段動態劃分模型能夠更好地分析滲透攻擊過程中目標系統的漏洞利用關系,和漏洞對目標節點的威脅,使用戶可根據攻擊特點和攻擊進程防御自身網絡,可根據實際攻擊情況設定威脅閾值THthsh,更有利于用戶設定靈活的網絡安全防御措施。如果防御者修復了受到攻擊系統中的所有節點,攻擊者將失去占有的據點,返回滲透攻擊初期階段API。防御者可通過威脅值THt的變化,直觀顯示防御手段的效果。

4 應用測試

本研究系統采用前端通用框架實現展示效果,系統界面主要有IP、端口、掃描方式3種參數配置,為滲透攻擊提供必要的配置信息。掃描任務指令通過AJAX傳輸方式,獲取到界面命令后封裝為固定接口格式,將命令傳輸到服務端的命令解析模塊執行。對目標系統完成一次掃描后,在系統界面上顯示出目標IP和IP端多個目標的端口開發情況、Mac地質和操作系統等信息。系統界面如圖4所示。

圖4 系統界面

為驗證本研究自動化滲透測試系統的可用性,本研究搭建實驗環境模擬企業網絡架構,并部署存在漏洞的網絡節點。實驗滲透測試平臺采用Win10操作系統,利用虛擬機裝載kali-linux-2020-4系統,在系統上的metasploit6.0.15環境下運行。搭建的實驗網絡結構分為核心區、業務區和開發區,業務區可以通過外網直接進行訪問,部分關鍵業務通過核心交換機進行NAT網絡轉換,開發區主要模擬網絡的開發環境,并部署了3臺虛擬服務器。實驗目標系統網絡結構如圖5所示。

圖5 實驗目標系統網絡結構

實驗環境中各測試機器軟硬件配置參數如表2所示。

表2 軟硬件配置參數

進行實驗前對目標系統網絡的各個主機進行掃描,使用metasploit框架集成的nmap掃描工具,針對主機的IP地址常用的端口號執行信息收集任務,得到目標系統的主機信息如表3所示。

表3 主機信息表

為驗證本研究系統的滲透成功率,在實驗環境下攻擊者對目標系統進行攻擊。目標系統中網絡節點交換滲透信息的時間間隔設定為1分鐘,主機更新滲透信息表。使用本研究系統對目標系統中的網絡節點進行滲透攻擊,文獻[3]系統和文獻[4]系統作為對比實驗進行測試,滲透測試時間設定為10分鐘,得到各系統的滲透成功率如圖6所示,具體數據如表4所示。

圖6 各系統的滲透成功率

表4 滲透成功率

在對目標系統網絡進行滲透攻擊過程中,網絡節點之間的滲透路徑具有多樣性,兩個網絡節點的直接滲透并不一定為最優滲透路徑,造成網絡節點滲透成功率不一致。本研究滲透測試系統發起滲透攻擊的成功率較高,能夠將目標系統的網絡節點攻破,并利用占據的節點繼續對其他網絡節點發動攻擊,對目標系統各節點的滲透成功率都高于80%,其中4號網絡節點的滲透成功率最高達到95.4%。

文獻[3]系統對各網絡節點發起滲透攻擊,滲透成功率較低,其中3號網絡節點的滲透成功率最低為68.7%,對6號網絡節點的滲透成功率最高達到81.1%.文獻[4]系統的滲透成功率普遍高于70%,其中4號網絡節點的滲透成功率最高達到85.1%,仍與本研究系統的成功率存在較大的差異。由于存在防火墻等防護設備的原因,識別到目標系統的端口數比實際數量要少,導致滲透攻擊過程耗時較長,文獻[3]系統和文獻[4]系統的滲透成功率較低。

由于攻擊節點的不同和與攻擊目標的距離不同,導致進行滲透攻擊的攻擊價值存在一定的差異。使用本研究系統生成全局攻擊圖,對攻擊目標進行滲透攻擊,使用公司(4)計算攻擊價值,3種系統對不同目標主機的攻擊價值如圖7所示,具體數據如表5所示。

圖7 攻擊價值

表5 攻擊價值

由于生成的全局攻擊圖規模較小,對同一目標主機攻擊路徑可能出現相同的情況,得到的攻擊價值相差不大。本研究系統根據目標系統網絡結構生成的攻擊路徑,發起滲透攻擊的攻擊價值較高,最高達到27.3,對4號目標主機的攻擊價值較低為23.4。文獻[3]系統對6號目標主機發起滲透攻擊的攻擊價值最小為20.3,相對于其他系統的攻擊價值較低,文獻[3]系統的攻擊路徑并非為最優攻擊路徑。文獻[4]系統對4號、5號、6號目標主機的攻擊價值與本研究接近,最高達到24.9,但1號、2號目標主機的攻擊價值最低,攻擊節點的前置屬性節點存在冗余的信息。

5 結束語

本研究基于機器學習技術設計出自動化滲透測試系統,利用網絡工具和端口掃描工具收集目標系統網絡信息,對目標系統發起滲透攻擊,輸出滲透測試報告對測試全過程進行總結。本研究的創新點在于:

1)為提出有效的攻擊策略,采集目標系統網路的節點脆弱性和連接關系,通過生成全局攻擊圖得到最優的攻擊路徑。將目標系統節點的資產和信息進行量化,計算節點的攻擊難度和攻擊價值,采用深度優先搜索獲取最優攻擊路徑。

2)提出威脅驅動的多階段滲透攻擊方法,建立滲透攻擊的動態劃分模型,更好地反應攻擊進程及攻擊者對目標網絡的威脅,攻擊者反復利用目標網絡中多個漏洞,攻破多個網絡節點最終實現對網絡目標的攻擊。

當前網絡環境下,系統的威脅和漏洞在不斷的演變,在以后研究中還需完善和發展滲透測試方法和測試工具。

猜你喜歡
攻擊者漏洞節點
漏洞
基于貝葉斯博弈的防御資源調配模型研究
分區域的樹型多鏈的無線傳感器網絡路由算法
基于移動匯聚節點和分簇的改進節能路由算法
基于點權的混合K-shell關鍵節點識別方法
正面迎接批判
正面迎接批判
偵探推理游戲(二)
漏洞在哪兒
視頻、Office漏洞相繼爆發
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合