本發(fā)明屬于機器學(xué)習(xí)和信息安全,具體的說是一種基于強化學(xué)習(xí)的windows域內(nèi)信息掃描及滲透測試路徑規(guī)劃方法。
背景技術(shù):
1、隨著企業(yè)信息化程度的不斷提高,windows域環(huán)境因其便捷的集中化管理特性,已成為企業(yè)網(wǎng)絡(luò)架構(gòu)的主流選擇。然而,復(fù)雜的域內(nèi)信任關(guān)系、多層級權(quán)限結(jié)構(gòu)和多樣化的服務(wù)配置,使得windows域環(huán)境面臨著嚴峻的安全挑戰(zhàn)。滲透測試作為主動發(fā)現(xiàn)安全漏洞的核心手段,其效率和智能化程度直接影響著安全防護體系的構(gòu)建效果。
2、傳統(tǒng)的windows域內(nèi)信息掃描工具往往需要執(zhí)行具體攻擊動作才能獲取到信息,動靜較大,在面對高版本操作系統(tǒng)時容易被防火墻發(fā)現(xiàn)。傳統(tǒng)的滲透測試方法主要依賴于安全專家的手動探測和經(jīng)驗判斷,存在測試周期長、人力成本高、測試覆蓋率難以保證等問題。盡管現(xiàn)有自動化工具如metasploit、cobalt?strike等能夠通過預(yù)置攻擊模塊實現(xiàn)部分自動化測試,但其本質(zhì)上仍采用基于規(guī)則庫的線性掃描策略,缺乏對復(fù)雜網(wǎng)絡(luò)環(huán)境的動態(tài)適應(yīng)能力。具體表現(xiàn)為:(1)在遭遇多跳攻擊路徑時容易陷入局部最優(yōu),無法有效識別跨節(jié)點的組合式攻擊向量;(2)面對動態(tài)變化的網(wǎng)絡(luò)拓撲和實時更新的漏洞信息時,缺乏自主決策能力;(3)對windows域特有的組策略對象、活動目錄層級關(guān)系等關(guān)鍵要素缺乏深度關(guān)聯(lián)分析。
3、近年來,部分研究嘗試將機器學(xué)習(xí)技術(shù)應(yīng)用于滲透測試領(lǐng)域,但在實際應(yīng)用中仍存在顯著局限性:監(jiān)督學(xué)習(xí)方法依賴大量標注數(shù)據(jù)進行模型訓(xùn)練,而真實攻擊場景數(shù)據(jù)的獲取存在法律和倫理限制;基于q-learning的傳統(tǒng)強化學(xué)習(xí)算法在處理高維狀態(tài)空間時面臨維度災(zāi)難問題,特別是在涉及數(shù)百個域節(jié)點的場景中,算法收斂速度急劇下降。此外,現(xiàn)有方法普遍缺乏對windows域環(huán)境的針對性設(shè)計,具體表現(xiàn)在:(1)未充分考慮kerberos認證、ntlm哈希傳遞等windows特有攻擊面的狀態(tài)表征;(2)對域控制器、成員服務(wù)器、客戶端工作站之間的權(quán)限傳遞關(guān)系建模不足;(3)缺乏對組策略首選項、橫向移動路徑等關(guān)鍵風(fēng)險點的動態(tài)權(quán)重評估機制。
4、當前亟需一種能夠深度融合windows域環(huán)境特性,通過自主強化學(xué)習(xí)實現(xiàn)智能路徑規(guī)劃的滲透測試系統(tǒng),以解決現(xiàn)有技術(shù)存在的路徑規(guī)劃效率低、攻擊面覆蓋不全、環(huán)境適應(yīng)能力弱等關(guān)鍵問題。
技術(shù)實現(xiàn)思路
1、為了解決上述問題,本發(fā)明的目的是提供一種基于強化學(xué)習(xí)的windows域內(nèi)信息掃描及滲透測試路徑規(guī)劃方法,以最小動靜獲取windows域內(nèi)環(huán)境信息,將域滲透測試抽象為馬爾可夫決策過程,訓(xùn)練強化學(xué)習(xí)智能體,構(gòu)建域滲透測試模型,通過實現(xiàn)滲透目標并滿足累計獎勵最大化的方式尋找最優(yōu)滲透測試路徑,從而找到域環(huán)境的薄弱環(huán)節(jié),對域環(huán)境的安全狀況進行評估。
2、為了達到上述目的,本發(fā)明是通過以下技術(shù)方案實現(xiàn)的:
3、一種基于強化學(xué)習(xí)的windows域內(nèi)信息掃描及滲透測試路徑規(guī)劃方法,統(tǒng)包括如下步驟:
4、步驟1:對目標windows域進行探測和掃描,利用ldap協(xié)議與目標主機建立連接,通過設(shè)置過濾條件來對目標域環(huán)境信息進行查詢,探測針對adcs、委派、域控制器和exchange服務(wù)器等的相關(guān)漏洞,掃描收集包括域內(nèi)主機信息、登錄用戶信息、相關(guān)服務(wù)配置信息、存活ip信息以及組策略信息等;
5、步驟2:在步驟1收集到的windows域內(nèi)相關(guān)信息的基礎(chǔ)上,對收集到的環(huán)境信息以及潛在漏洞信息進行分類、整理和存儲,結(jié)合探測到的環(huán)境信息和潛在漏洞信息,對有價值信息進行保留,無價值信息進行篩除;
6、步驟3:在步驟2的基礎(chǔ)上,將windows域滲透測試過程抽象為馬爾可夫決策過程,定義狀態(tài)空間、動作空間和獎勵函數(shù)。狀態(tài)空間是域內(nèi)主機和整體windows域的狀態(tài)組合,針對域內(nèi)主機的狀態(tài)包括登錄用戶權(quán)限、主機操作系統(tǒng)、當前控制類型以及特殊服務(wù)類型等等,針對域的狀態(tài)包括是否為根域、當前控制類型、是否存在非約束委派用戶、是否存在危險組策略、是否存在不需要kerberos預(yù)認證的用戶以及是否存在擁有spn的用戶等。動作空間包括一系列針對主機的攻擊動作,包括權(quán)限提升、漏洞利用以及組策略攻擊等等。獎勵函數(shù)為基于當前的策略采取行動,在執(zhí)行任意動作后根據(jù)獎勵函數(shù)獲取當前動作的即時獎勵;
7、步驟4:在步驟3的基礎(chǔ)上,構(gòu)建強化學(xué)習(xí)智能體,并通過與模擬環(huán)境進行交互訓(xùn)練來生成滲透測試路徑,根據(jù)獎勵策略進行調(diào)整,通過積累獎勵來尋找最優(yōu)滲透測試路徑,構(gòu)建windows域滲透測試模型,最終生成最優(yōu)滲透測試路徑。
8、進一步,步驟1中,通過ldap協(xié)議建立ldap連接,對目標域環(huán)境進行探測,對域內(nèi)信息進行收集,具體為:
9、在獲取到目標windows域內(nèi)任意一臺主機的憑證的前提下,為達到減少掃描動作的動靜,避免被目標主機防火墻檢測出的目的,通過ldap協(xié)議建立ldap連接,通過設(shè)置過濾器來對域內(nèi)相關(guān)信息和域內(nèi)可利用漏洞信息進行收集。收集域內(nèi)相關(guān)信息包括域名稱、域內(nèi)普通主機名稱、域控制器名稱、域內(nèi)服務(wù)器名稱、域用戶信息、用戶組信息、域信任關(guān)系信息等,探測的域內(nèi)漏洞信息包括針對adcs、域控制器、委派以及exchange服務(wù)器的相關(guān)漏洞。
10、進一步,步驟2中,在步驟1的基礎(chǔ)上,對收集到的環(huán)境信息以及潛在漏洞信息進行分類、整理和存儲,對有價值信息進行保留,無價值信息進行篩除,具體為:
11、對獲取到的相關(guān)信息進行處理,結(jié)合探測到的可能存在的可利用漏洞信息和獲取到的域內(nèi)主機等相關(guān)信息,分析潛在漏洞是否具有利用條件,漏洞利用成功率等等,分析漏洞利用所需的用戶信息、服務(wù)信息等條件是否存在,如果存在則將對應(yīng)的可利用漏洞存儲在字典里,如果不存在則將漏洞信息刪除,從而保留有價值的漏洞信息以及域內(nèi)主機等相關(guān)信息。最后根據(jù)處理后的信息生成yaml文件,用于后續(xù)的智能體訓(xùn)練。
12、進一步,步驟3中,在步驟2的基礎(chǔ)上,將windows域滲透測試過程抽象為馬爾可夫決策過程,定義狀態(tài)空間、動作空間和獎勵函數(shù),具體為:
13、步驟3-1:將windows域滲透測試過程抽象為馬爾可夫決策過程,馬爾可夫決策過程是一個用于解決多階段序列決策問題的框架,它是一種基于狀態(tài)轉(zhuǎn)移概率和獎勵的數(shù)學(xué)模型,用于描述一個智能體在一個隨機環(huán)境中采取一系列決策的情況。馬爾可夫決策過程由四元組構(gòu)成,分別代表動作空間,狀態(tài)空間,獎勵函數(shù)和狀態(tài)轉(zhuǎn)移概率函數(shù)。
14、步驟3-2:定義動作空間。每一個動作空間中的動作都由一個三元組(type,target,action)構(gòu)成,type為0代表動作目標對象為域內(nèi)主機,type為1代表動作目標對象為windows域;target代表目標主機或者windows域的序號;action為各個攻擊動作對應(yīng)的動作序號,針對主機的攻擊動作包括權(quán)限提升,非約束性委派,永恒之藍,ms14-068,ms08-067,exchange?relay,exchange?proxy,mssql?clr,hash?dump,dcsync。針對域的攻擊動作包括cve-2020-1472,cve-2021-42287,組策略攻擊,as_rep?roasting,kerberoasting,sidhistory。
15、步驟3-3:定義狀態(tài)空間。狀態(tài)空間是由描述域內(nèi)主機的狀態(tài)空間和windows域的狀態(tài)空間組合而成。
16、描述主機的狀態(tài)空間由一個二維數(shù)組構(gòu)成,分別代表作為測試目標的域內(nèi)主機對象和對應(yīng)描述該主機的某個特征。特征包括身份,當前控制類型,是否取得操作系統(tǒng)信息,特殊服務(wù)類型,當前登錄用戶中是否包含本地管理員組成員,是否存在所在域的高權(quán)限進程以及是否獲得域內(nèi)的高權(quán)限憑證。其中身份的值為0代表該主機是一臺普通域內(nèi)主機,1代表該主機是一臺普通的域內(nèi)服務(wù)器,2代表該主機是一臺普通的域內(nèi)控制器,3代表該主機是一臺根域的域控制器;當前控制類型的值為0代表尚未獲得該主機的控制權(quán),1代表獲得該主機的普通域內(nèi)用戶權(quán)限,2代表獲得該主機的system控制權(quán)限;特殊服務(wù)類型的值為0代表該主機不存在特殊的服務(wù),1代表該主機存在mssql數(shù)據(jù)庫服務(wù),2代表該主機存在exchange郵件服務(wù)。
17、描述域的狀態(tài)空間同樣也由一個二維數(shù)組構(gòu)成,分別代表作為測試目標的域?qū)ο蠛蛯?yīng)描述該域的某個特征。特征包括是否為根域,當前控制類型,是否已經(jīng)獲得該域的任意高權(quán)限憑證,是否存在非約束委派賬戶,是否存在危險的組策略文件,是否存在不需要kerberos預(yù)認證的用戶以及是否存在擁有spn的用戶。表述域的狀態(tài)空間使用0/1編碼,用于表示是否找到該項目的值。
18、步驟3-4:定義獎勵函數(shù)。強化學(xué)習(xí)智能體通過觀察環(huán)境中的狀態(tài),并基于當前的策略采取行動,在執(zhí)行任意動作后都會根據(jù)獎勵函數(shù)獲取當前動作的即時獎勵。智能體的目標是最大化未來的獎勵累積,因此獎勵函數(shù)的設(shè)置可以用于引導(dǎo)智能體習(xí)得最優(yōu)的策略。獎勵分為幾個部分進行設(shè)置,包括針對主機控制權(quán)發(fā)生改變的獎勵設(shè)置,針對域控制權(quán)發(fā)生改變的獎勵設(shè)置和針對憑證收集的獎勵設(shè)置。
19、進一步,步驟4中,在步驟3的基礎(chǔ)上,構(gòu)建強化學(xué)習(xí)智能體,尋找最優(yōu)滲透測試路徑,具體為:
20、在已經(jīng)定義好的狀態(tài)空間、動作空間和獎勵函數(shù)的基礎(chǔ)上,采用深度q網(wǎng)絡(luò)算法,定義并初始化q網(wǎng)絡(luò),將環(huán)境狀態(tài)編碼為數(shù)值向量,包括當前主機信息、網(wǎng)絡(luò)拓撲、域控狀態(tài)等信息。設(shè)置神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)及其參數(shù),包括核心架構(gòu)的輸入層、隱藏層和輸出層,設(shè)置動作掩碼,將非法動作的q值設(shè)置為負無窮以過濾無效動作。采用雙網(wǎng)絡(luò)機制,在訓(xùn)練網(wǎng)絡(luò)中實時更新參數(shù),用于選擇動作和計算當前q值。在目標網(wǎng)絡(luò)中定期從訓(xùn)練網(wǎng)絡(luò)同步參數(shù),用于計算目標q值,穩(wěn)定訓(xùn)練過程。并且設(shè)置同步頻率。在訓(xùn)練時根據(jù)貪心算法選擇動作,部署時選擇q值最大的動作。
21、在訓(xùn)練過程中,首先構(gòu)建模擬windows域環(huán)境,初始化訓(xùn)練網(wǎng)絡(luò)和目標網(wǎng)絡(luò)。其次設(shè)定超參數(shù),包括折扣因子,經(jīng)驗回放緩沖區(qū)容量,批次大小,初始探索率,衰減率,學(xué)習(xí)率等參數(shù)。在單次訓(xùn)練周期中,與環(huán)境交互循環(huán),選擇執(zhí)行動作和儲存經(jīng)驗,并且更新網(wǎng)絡(luò),計算目標q值等,最后根據(jù)設(shè)置的終止條件終止訓(xùn)練。
22、經(jīng)過充分訓(xùn)練后,智能體能夠基于當前狀態(tài)和動作空間,選擇漏洞利用動作,通過成功利用漏洞獲取更多的環(huán)境信息和權(quán)限,進一步提升狀態(tài)空間信息。在選擇漏洞利用動作后,智能體根據(jù)獎勵函數(shù)計算并接受獎勵。智能體根據(jù)反饋的獎勵值,更新當前狀態(tài)下各個動作的q值,優(yōu)化其行為策略。在持續(xù)迭代q值的過程中,智能體的策略不斷優(yōu)化,逐步接近最優(yōu)滲透測試路徑。
23、通過上述步驟,智能體最終能夠生成滿足滲透測試目標且累積獎勵最大化的滲透測試路徑,實現(xiàn)以最小的動靜對目標windows域環(huán)境的全面滲透測試評估,最終達到評估和維護windows域環(huán)境安全的目的。
24、本發(fā)明以最小動靜獲取windows域內(nèi)環(huán)境信息,將域滲透測試抽象為馬爾可夫決策過程,訓(xùn)練強化學(xué)習(xí)智能體,構(gòu)建域滲透測試模型,通過實現(xiàn)滲透目標并滿足累計獎勵最大化的方式尋找最優(yōu)滲透測試路徑,從而找到域環(huán)境的薄弱環(huán)節(jié),對域環(huán)境的安全狀況進行評估。
25、本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點:
26、(1)使用ldap協(xié)議與目標主機建立ldap連接,并通過設(shè)置過濾器的方式來對域內(nèi)信息進行收集。目前常見的域內(nèi)滲透測試的信息收集方法主要是依賴于獲取一臺域內(nèi)主機的控制權(quán),并通過與其他域內(nèi)主機通信等方式確認域內(nèi)存活主機,這種方法在域內(nèi)動靜較大,容易被防御手段發(fā)現(xiàn)。采用ldap協(xié)議的方法只需要一臺域內(nèi)主機的通信憑證而不需要完全控制權(quán),這樣就能以最小的動靜獲取到域內(nèi)信息,后續(xù)通過收集到的信息對智能體進行訓(xùn)練,整個過程能夠在不被防御手段發(fā)現(xiàn)的情況下進行,具有良好的隱蔽性。
27、(2)相較于傳統(tǒng)的基于規(guī)則庫的靜態(tài)掃描方式,這種通過深度強化學(xué)習(xí)框架實現(xiàn)的動態(tài)掃描方式收集信息能夠更加及時地獲取域內(nèi)環(huán)境的關(guān)鍵信息,減少手動方式帶來的效率降低。深度強化q網(wǎng)絡(luò)能夠充分考慮各類復(fù)雜的域環(huán)境和滲透測試場景,能夠兼容azure?ad混合架構(gòu)、多域信任森林等新型windows網(wǎng)絡(luò)形態(tài),及時應(yīng)對網(wǎng)絡(luò)拓撲的變化,在保證廣泛適用性的同時大大提升了效率。
28、(3)該方法在定義狀態(tài)空間時,充分考慮面向windows域特性的建模方法,從主機狀態(tài)和域狀態(tài)兩個維度出發(fā),將kerberos票據(jù)、gpo策略、ad拓撲等要素編碼為強化學(xué)習(xí)狀態(tài)向量,充分反應(yīng)整個域內(nèi)的狀況,解決了現(xiàn)有技術(shù)對域環(huán)境特征提取不充分的問題,使得滲透成功率在真實域環(huán)境下大大提升。