本發(fā)明涉及網(wǎng)絡(luò)安全測試,具體涉及一種基于機器學(xué)習(xí)的自動化滲透測試方法和系統(tǒng)、電子設(shè)備。
背景技術(shù):
1、滲透測試是一種常用的安全評估的方法,旨在評估計算機系統(tǒng)、網(wǎng)絡(luò)和應(yīng)用程序的安全性,驗證網(wǎng)絡(luò)防御措施的有效性。滲透測試通過模擬真實的攻擊行為,發(fā)現(xiàn)網(wǎng)絡(luò)空間中的弱點、漏洞和安全風(fēng)險,并針對發(fā)現(xiàn)的問題進行報告。滲透測試是一個非常復(fù)雜的過程,包括信息收集,漏洞掃描,測試方案制定和漏洞利用等,這個過程需要大量經(jīng)驗的支撐,缺乏經(jīng)驗很容易產(chǎn)生誤判,從而影響測試準(zhǔn)確性和測試效率。
2、自動化滲透測試是指通過模型或規(guī)則的方式代替人類經(jīng)驗完成滲透測試的技術(shù)。目前,大多數(shù)的自動化滲透測試都是基于深度強化學(xué)習(xí)實現(xiàn)的,存在數(shù)據(jù)需求量大、訓(xùn)練時間長和計算資源消耗大等問題。
技術(shù)實現(xiàn)思路
1、為了克服上述依賴經(jīng)驗的滲透測試無法保證測試準(zhǔn)確性和效率以及自動化滲透測試的數(shù)據(jù)需求量大、耗時耗資源的問題,本發(fā)明提供一種基于機器學(xué)習(xí)的自動化滲透測試方法和系統(tǒng)、電子設(shè)備。
2、一方面,本發(fā)明提供一種基于機器學(xué)習(xí)的自動化滲透測試方法,包括:
3、利用嗅探工具對測試目標(biāo)進行目標(biāo)信息收集,得到目標(biāo)信息文件;
4、基于所述目標(biāo)信息文件中的信息標(biāo)簽進行所述目標(biāo)信息文件的內(nèi)容篩選,得到目標(biāo)關(guān)鍵信息列表;
5、基于機器學(xué)習(xí)模型進行所述目標(biāo)關(guān)鍵信息列表中每條關(guān)鍵信息的漏洞利用信息匹配,得到每條關(guān)鍵信息對應(yīng)的漏洞利用信息;
6、基于獲取到的測試信息、所述目標(biāo)關(guān)鍵信息列表和每條關(guān)鍵信息對應(yīng)的漏洞利用信息,生成對應(yīng)的滲透測試用例,并執(zhí)行所述滲透測試用例。
7、可選地,所述利用嗅探工具對測試目標(biāo)進行目標(biāo)信息收集,得到目標(biāo)信息文件,包括:
8、獲取輸入的與測試目標(biāo)關(guān)聯(lián)的測試目標(biāo)信息和嗅探配置信息;
9、基于所述測試目標(biāo)信息和所述嗅探配置信息,生成嗅探測試指令;調(diào)用nmap工具自動執(zhí)行所述嗅探測試指令,得到嗅探信息;
10、將所述嗅探信息存儲為xml文件,得到所述目標(biāo)信息文件。
11、可選地,所述基于所述目標(biāo)信息文件中的信息標(biāo)簽進行所述目標(biāo)信息文件的內(nèi)容篩選,得到目標(biāo)關(guān)鍵信息列表,包括:
12、遍歷所述目標(biāo)信息文件的內(nèi)容,基于所述目標(biāo)信息文件的標(biāo)簽特征篩選出與所述標(biāo)簽特征對應(yīng)的數(shù)據(jù)類型的內(nèi)容數(shù)據(jù),形成多條關(guān)鍵信息;
13、基于表格數(shù)據(jù)結(jié)構(gòu)進行多條關(guān)鍵信息的存儲,得到所述目標(biāo)關(guān)鍵信息列表。
14、可選地,每條關(guān)鍵信息至少包括目標(biāo)端口、目標(biāo)系統(tǒng)類型、目標(biāo)服務(wù)、目標(biāo)產(chǎn)品和漏洞標(biāo)識。
15、可選地,所述機器學(xué)習(xí)模型為決策樹模型,所述機器學(xué)習(xí)模型的訓(xùn)練過程包括:
16、基于metasploit的exploits模塊構(gòu)建訓(xùn)練數(shù)據(jù)集;
17、基于所述訓(xùn)練數(shù)據(jù)集針對漏洞利用類別的熵進行所述訓(xùn)練數(shù)據(jù)集的數(shù)據(jù)子集的劃分,直到劃分的每個數(shù)據(jù)子集的熵為0,訓(xùn)練完成;
18、將每個所述數(shù)據(jù)子集及其對應(yīng)的漏洞利用類別作為一個子樹,形成所述決策樹模型。
19、可選地,所述機器學(xué)習(xí)模型的訓(xùn)練過程還包括:
20、若所述數(shù)據(jù)子集的熵不為0,基于所述數(shù)據(jù)子集中的各標(biāo)簽特征進行所述數(shù)據(jù)子集的子集分割;
21、對于每個標(biāo)簽特征的分割結(jié)果,基于所述數(shù)據(jù)子集在分割前后的信息增益在各所述標(biāo)簽特征中篩選出分割特征,并將所述分割特征的分割結(jié)果作為所述數(shù)據(jù)子集的當(dāng)前分割結(jié)果;
22、重復(fù)所述子集分割過程,直到分割結(jié)果的熵為0或分割結(jié)果為單一標(biāo)簽特征。
23、可選地,所述基于所述數(shù)據(jù)子集在分割前后的信息增益在各所述標(biāo)簽特征中篩選出分割特征,包括:
24、基于每個分割后子集的數(shù)據(jù)量在分割前的數(shù)據(jù)子集中的數(shù)據(jù)量的占比,確定各分割后子集的熵權(quán)重,基于每個分割后子集的熵權(quán)重和對應(yīng)分割后子集的熵,確定所述數(shù)據(jù)子集在分割后的熵;
25、基于所述數(shù)據(jù)子集在分割前后的熵的差值,確定所述數(shù)據(jù)子集在分割前后的信息增益;
26、選擇所述信息增益的最大值對應(yīng)的標(biāo)簽特征作為所述分割特征。
27、可選地,所述數(shù)據(jù)子集在分割前后的信息增益的計算公式為:
28、
29、其中,ig表示數(shù)據(jù)子集在分割前后的信息增益,s表示分割前的數(shù)據(jù)子集,h(s)表示分割前的數(shù)據(jù)子集的熵,|s|表示分割前的數(shù)據(jù)子集的大小,k表示分割后子集的數(shù)量,|sj|表示分割后第j個子集的大小,h(sj)表示分割后第j個子集的熵;
30、所述數(shù)據(jù)子集的熵的計算公式為:
31、
32、其中,n表示數(shù)據(jù)子集中漏洞利用類別的類別總數(shù),i表示漏洞利用類別的序號,p(i)表示第i個漏洞利用類別的數(shù)據(jù)量在數(shù)據(jù)子集中的占比。
33、可選地,所述基于機器學(xué)習(xí)模型進行所述目標(biāo)關(guān)鍵信息列表中每條關(guān)鍵信息的漏洞利用信息匹配,得到每條關(guān)鍵信息對應(yīng)的漏洞利用信息,包括:
34、將所述目標(biāo)關(guān)鍵信息列表輸入所述決策樹模型,根據(jù)決策規(guī)則在所述決策樹模型的各節(jié)點進行決策測試,直到移動至所述決策樹模型的葉節(jié)點,得到每條關(guān)鍵信息的漏洞利用信息。
35、可選地,在基于機器學(xué)習(xí)模型進行所述目標(biāo)關(guān)鍵信息列表中每條關(guān)鍵信息的漏洞利用信息匹配之前,所述方法還包括:
36、對所述目標(biāo)關(guān)鍵信息列表進行多余數(shù)據(jù)和缺省值對應(yīng)行的刪除,得到預(yù)處理后的目標(biāo)關(guān)鍵信息列表;
37、對所述預(yù)處理后的目標(biāo)關(guān)鍵信息列表中的每條關(guān)鍵信息進行針對字符串的編碼,得到對應(yīng)數(shù)值型的目標(biāo)關(guān)鍵信息列表。
38、可選地,所述執(zhí)行所述滲透測試用例,包括:
39、響應(yīng)于對測試界面中與目標(biāo)測試用例對應(yīng)控件的選擇操作,查找所述目標(biāo)測試用例的用例信息;
40、基于所述目標(biāo)測試用例的用例信息生成對應(yīng)的目標(biāo)測試指令;
41、調(diào)用msfconsole工具執(zhí)行所述目標(biāo)測試指令進行初步滲透測試。
42、可選地,所述執(zhí)行所述滲透測試用例,還包括:
43、若所述初步滲透測試成功,繼續(xù)進行深入測試,直到測試結(jié)束;
44、若所述初步滲透測試失敗,自動執(zhí)行除所述目標(biāo)測試用例之外的剩余滲透測試用例,直到全部的剩余滲透測試用例執(zhí)行完成,基于執(zhí)行結(jié)果進行所述測試目標(biāo)的安全評估。
45、另一方面,本發(fā)明還提供一種基于機器學(xué)習(xí)的自動化滲透測試系統(tǒng),包括:
46、信息收集模塊,用于利用嗅探工具對測試目標(biāo)進行目標(biāo)信息收集,得到目標(biāo)信息文件;
47、篩選模塊,用于基于所述目標(biāo)信息文件中的信息標(biāo)簽進行所述目標(biāo)信息文件的內(nèi)容篩選,得到目標(biāo)關(guān)鍵信息列表;
48、信息匹配模塊,用于基于機器學(xué)習(xí)模型進行所述目標(biāo)關(guān)鍵信息列表中每條關(guān)鍵信息的漏洞利用信息匹配,得到每條關(guān)鍵信息對應(yīng)的漏洞利用信息;
49、滲透測試模塊,用于基于獲取到的測試信息、所述目標(biāo)關(guān)鍵信息列表和每條關(guān)鍵信息對應(yīng)的漏洞利用信息,生成對應(yīng)的滲透測試用例,并執(zhí)行所述滲透測試用例。
50、可選地,所述信息收集模塊包括:
51、信息獲取子模塊,用于獲取輸入的與測試目標(biāo)關(guān)聯(lián)的測試目標(biāo)信息和嗅探配置信息;
52、嗅探子模塊,用于基于所述測試目標(biāo)信息和所述嗅探配置信息,生成嗅探測試指令;調(diào)用nmap工具自動執(zhí)行所述嗅探測試指令,得到嗅探信息;
53、信息存儲子模塊,用于將所述嗅探信息存儲為xml文件,得到所述目標(biāo)信息文件。
54、可選地,所述篩選模塊包括:
55、標(biāo)簽篩選子模塊,用于遍歷所述目標(biāo)信息文件的內(nèi)容,基于所述目標(biāo)信息文件的標(biāo)簽特征篩選出與所述標(biāo)簽特征對應(yīng)的數(shù)據(jù)類型的內(nèi)容數(shù)據(jù),形成多條關(guān)鍵信息;
56、表存儲子模塊,用于基于表格數(shù)據(jù)結(jié)構(gòu)進行多條關(guān)鍵信息的存儲,得到所述目標(biāo)關(guān)鍵信息列表。
57、可選地,每條關(guān)鍵信息至少包括目標(biāo)端口、目標(biāo)系統(tǒng)類型、目標(biāo)服務(wù)、目標(biāo)產(chǎn)品和漏洞標(biāo)識。
58、可選地,所述機器學(xué)習(xí)模型為決策樹模型,所述系統(tǒng)還包括模型訓(xùn)練模塊,所述模型訓(xùn)練模塊包括:
59、數(shù)據(jù)集構(gòu)建子模塊,用于基于metasploit的exploits模塊構(gòu)建訓(xùn)練數(shù)據(jù)集;
60、子集劃分子模塊,用于基于所述訓(xùn)練數(shù)據(jù)集針對漏洞利用類別的熵進行所述訓(xùn)練數(shù)據(jù)集的數(shù)據(jù)子集的劃分,直到劃分的每個數(shù)據(jù)子集的熵為0,訓(xùn)練完成;
61、決策樹形成子模塊,用于將每個所述數(shù)據(jù)子集及其對應(yīng)的漏洞利用類別作為一個子樹,形成所述決策樹模型。
62、可選地,所述子集劃分子模塊還用于:
63、若所述數(shù)據(jù)子集的熵不為0,基于所述數(shù)據(jù)子集中的各標(biāo)簽特征進行所述數(shù)據(jù)子集的子集分割;
64、對于每個標(biāo)簽特征的分割結(jié)果,基于所述數(shù)據(jù)子集在分割前后的信息增益在各所述標(biāo)簽特征中篩選出分割特征,并將所述分割特征的分割結(jié)果作為所述數(shù)據(jù)子集的當(dāng)前分割結(jié)果;
65、重復(fù)所述子集分割過程,直到分割結(jié)果的熵為0或分割結(jié)果為單一標(biāo)簽特征。
66、可選地,所述子集劃分子模塊還用于:
67、基于每個分割后子集的數(shù)據(jù)量在分割前的數(shù)據(jù)子集中的數(shù)據(jù)量的占比,確定各分割后子集的熵權(quán)重,基于每個分割后子集的熵權(quán)重和對應(yīng)分割后子集的熵,確定所述數(shù)據(jù)子集在分割后的熵;
68、基于所述數(shù)據(jù)子集在分割前后的熵的差值,確定所述數(shù)據(jù)子集在分割前后的信息增益;
69、選擇所述信息增益的最大值對應(yīng)的標(biāo)簽特征作為所述分割特征。
70、可選地,所述數(shù)據(jù)子集在分割前后的信息增益的計算公式為:
71、
72、其中,ig表示數(shù)據(jù)子集在分割前后的信息增益,s表示分割前的數(shù)據(jù)子集,h(s)表示分割前的數(shù)據(jù)子集的熵,|s|表示分割前的數(shù)據(jù)子集的大小,k表示分割后子集的數(shù)量,|sj|表示分割后第j個子集的大小,h(sj)表示分割后第j個子集的熵;
73、所述數(shù)據(jù)子集的熵的計算公式為:
74、
75、其中,n表示數(shù)據(jù)子集中漏洞利用類別的類別總數(shù),i表示漏洞利用類別的序號,p(i)表示第i個漏洞利用類別的數(shù)據(jù)量在數(shù)據(jù)子集中的占比。
76、可選地,所述信息匹配模塊具體用于:
77、將所述目標(biāo)關(guān)鍵信息輸入所述決策樹模型,根據(jù)決策規(guī)則在所述決策樹模型的各節(jié)點進行決策測試,直到移動至所述決策樹模型的葉節(jié)點,得到每條關(guān)鍵信息的漏洞利用信息。
78、可選地,所述系統(tǒng)還包括:
79、預(yù)處理模塊,用于對所述目標(biāo)關(guān)鍵信息列表進行多余數(shù)據(jù)和缺省值對應(yīng)行的刪除,得到預(yù)處理后的目標(biāo)關(guān)鍵信息列表;
80、編碼模塊,用于對所述預(yù)處理后的目標(biāo)關(guān)鍵信息列表中的每條關(guān)鍵信息進行編碼,得到對應(yīng)數(shù)值型的目標(biāo)關(guān)鍵信息列表。
81、可選地,所述滲透測試模塊還用于:
82、響應(yīng)于對測試界面中與目標(biāo)測試用例對應(yīng)控件的選擇操作,查找所述目標(biāo)測試用例的用例信息;
83、基于所述目標(biāo)測試用例的用例信息生成對應(yīng)的目標(biāo)測試指令;
84、調(diào)用msfconsole工具執(zhí)行所述目標(biāo)測試指令進行初步滲透測試。
85、可選地,所述滲透測試模塊還用于:
86、若所述初步滲透測試成功,繼續(xù)進行深入測試,直到測試結(jié)束;
87、若所述初步滲透測試失敗,自動執(zhí)行除所述目標(biāo)測試用例之外的剩余滲透測試用例,直到全部的剩余滲透測試用例執(zhí)行完成,基于執(zhí)行結(jié)果進行所述測試目標(biāo)的安全評估。
88、另一方面,本發(fā)明還提供一種電子設(shè)備,包括:至少一個處理器和存儲器;所述存儲器和處理器通過總線相連;
89、所述存儲器,用于存儲一個或多個程序;
90、當(dāng)所述一個或多個程序被所述至少一個處理器執(zhí)行時,實現(xiàn)上述中任意一項所述的基于機器學(xué)習(xí)的自動化滲透測試方法。
91、另一方面,本發(fā)明還提供一種可讀存儲介質(zhì),其上存有執(zhí)行程序,所述執(zhí)行程序被執(zhí)行時,實現(xiàn)上述中任意一項所述的基于機器學(xué)習(xí)的自動化滲透測試方法。
92、與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果為:
93、本發(fā)明提供一種基于機器學(xué)習(xí)的自動化滲透測試方法和系統(tǒng),一方面,利用嗅探工具對測試目標(biāo)進行目標(biāo)信息收集得到目標(biāo)信息文件,基于目標(biāo)信息文件中的信息標(biāo)簽進行目標(biāo)信息文件的內(nèi)容篩選,得到目標(biāo)關(guān)鍵信息列表,可以在漏洞利用信息匹配之前自動提取關(guān)鍵信息,降低信息收集對于測試人員專業(yè)性和經(jīng)驗的依賴性,減少關(guān)鍵信息提取的錯誤率,同時列表形式的信息便于自動讀取和處理,提升測試準(zhǔn)確性和效率。另一方面,使用機器學(xué)習(xí)模型來模擬人工漏洞利用選擇的過程,避免了人工操作產(chǎn)生誤判的情況,可以提升漏洞選擇的準(zhǔn)確性和測試效率,同時,相較于深度強化學(xué)習(xí)方式,降低了測試過程的計算資源消耗,提升測試效率,且降低了模型訓(xùn)練過程對數(shù)據(jù)量、計算資源和訓(xùn)練時間的要求,大大降低了測試成本。