本發(fā)明涉及互聯(lián)網(wǎng)安全技術(shù)領(lǐng)域,尤其涉及一種插件掃描、確定插件內(nèi)規(guī)則調(diào)度順序的方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的日益發(fā)展,網(wǎng)絡(luò)安全問題成為一個關(guān)注的熱點。漏洞掃描器是一種自動檢測遠程或本地主機安全性弱點的程序。根據(jù)現(xiàn)有的運行機制,漏洞掃描器在啟動過程中,要將其所支持的插件加載到內(nèi)存中,然后根據(jù)需要調(diào)度這些插件,使這些插件在運行過程中實現(xiàn)對相應(yīng)漏洞的掃描。
現(xiàn)有技術(shù)中漏洞掃描器調(diào)度的最小單位為插件,針對一個插件而言,掃描一個漏洞是否存在,可以有很多的規(guī)則條件,少則幾條,多則幾十條。在掃描插件時,一般不考慮插件的調(diào)度順序,即隨機選擇插件中的規(guī)則條件進行調(diào)用,或者按照簡單的排列方式人工進行調(diào)整。然而,對于存在同一漏洞的不同的掃描目標而言,它們可能都是由該漏洞所對應(yīng)的插件中的某一規(guī)則條件掃描得出的。而隨機選擇規(guī)則條件或人工調(diào)整的方式,對于未知的掃描目標來說,必然會造成浪費大量的時間和計算機資源,降低掃描速度和效率,且人工調(diào)整具有很大的隨機性和不確定性。此外,對于漏洞掃描器而言,插件數(shù)一般都是成千上萬,由于每個插件的掃描速度和效率低,從而降低了漏洞掃描器的掃描性能。
綜上所述,現(xiàn)有技術(shù)中漏洞掃描器在掃描漏洞時,由于每個插件掃描浪費大量的時間和計算機資源,掃描速度和效率低,導(dǎo)致漏洞掃描器的整體掃描性能較低。
技術(shù)實現(xiàn)要素:
本發(fā)明提出了一種插件掃描、確定插件內(nèi)規(guī)則調(diào)度順序的方法及裝置,用以解決現(xiàn)有技術(shù)中漏洞掃描器在掃描漏洞時,通常都是隨機選擇插件中的規(guī)則條件或人工調(diào)整規(guī)則條件,因而具有很大的隨機性和不確定性,在對未知的多個掃描目標進行掃描時,由于每個插件內(nèi)部規(guī)則調(diào)度序列不當導(dǎo)致浪費大量的時間和計算機資源,降低了掃描速度和效率低,導(dǎo)致漏洞掃描器的整體掃描性能較低的問題。
本發(fā)明實施例提供一種確定插件內(nèi)規(guī)則調(diào)度順序的方法,包括:
獲取插件的各規(guī)則通道,所述插件通過所述各規(guī)則通道掃描出同一漏洞;
針對每條規(guī)則通道,確定所述規(guī)則通道中各獨立規(guī)則的資源消耗量和所述規(guī)則通道掃描出所述漏洞的命中率;根據(jù)所述各獨立規(guī)則的資源消耗量和所述規(guī)則通道的命中率,確定所述規(guī)則通道的優(yōu)先級;所述獨立規(guī)則在漏洞掃描過程中可獨立運行且與其它規(guī)則無依賴關(guān)系;
根據(jù)各規(guī)則通道的優(yōu)先級,確定所述插件運行時所述各規(guī)則通道的調(diào)度順序。
較佳地,所述方法還包括:
若所述各規(guī)則通道中存在至少兩條規(guī)則通道具有共享規(guī)則,確定共享規(guī)則的數(shù)量,所述共享規(guī)則為所述至少兩條規(guī)則通道中均包含的獨立規(guī)則;
針對包含至少一個所述共享規(guī)則的規(guī)則通道,根據(jù)所述至少一個共享規(guī)則的資源消耗量,確定所述至少一個共享規(guī)則在所述規(guī)則通道掃描起始部的順序。
較佳地,所述確定所述至少一個共享規(guī)則在所述規(guī)則通道掃描起始部的順序之后,還包括:
根據(jù)所述各規(guī)則通道的調(diào)度順序,構(gòu)建掃描任務(wù)調(diào)用樹,其中,所述掃描任務(wù)調(diào)用樹中不存在重復(fù)的獨立規(guī)則;
所述掃描任務(wù)調(diào)用樹中的每條分支對應(yīng)一條規(guī)則通道,根據(jù)除共享規(guī)則外的各獨立規(guī)則的資源消耗量確定各獨立規(guī)則在各規(guī)則通道中分支中的位置。
較佳地,所述根據(jù)所述各獨立規(guī)則的資源消耗量和所述規(guī)則通道的命中率,確定所述規(guī)則通道的優(yōu)先級,包括:
根據(jù)各獨立規(guī)則的資源消耗量確定所述規(guī)則通道的資源消耗量;
確定各規(guī)則通道的命中率與資源消耗量的比值;
將各規(guī)則通道按照命中率與資源消耗量的比值從小到大進行排序,得到所述各規(guī)則通道的優(yōu)先級。
本發(fā)明實施例還提供一種插件掃描的方法,包括:
獲取掃描任務(wù),確定掃描任務(wù)的插件;
獲取所述插件的各規(guī)則通道的調(diào)度順序,所述各規(guī)則通道的調(diào)度順序根據(jù)各規(guī)則通道中的各獨立規(guī)則的資源消耗量和規(guī)則通道的命中率確定;
按照所述各規(guī)則通道的調(diào)度順序,依次進行漏洞掃描,直至掃描出所述漏洞或所有規(guī)則通道均被調(diào)用。
較佳地,所述按照所述各規(guī)則通道的調(diào)度順序,依次進行漏洞掃描,直至掃描出所述漏洞或所有規(guī)則通道均被調(diào)用,包括:
使用掃描任務(wù)調(diào)用樹進行漏洞掃描,所述掃描任務(wù)調(diào)用樹根據(jù)所述各規(guī)則通道的調(diào)度順序構(gòu)建;所述掃描任務(wù)調(diào)用樹中不存在重復(fù)的獨立規(guī)則,所述掃描任務(wù)調(diào)用樹中的每條分支對應(yīng)一條規(guī)則通道;
若所述掃描任務(wù)調(diào)用樹中的共享規(guī)則掃描失敗,則從所述掃描任務(wù)調(diào)用樹中刪除包含所述共享規(guī)則的尚未被調(diào)用的規(guī)則通道,直至掃描出所述漏洞或所有規(guī)則通道均被調(diào)用,所述共享規(guī)則為所述至少兩條規(guī)則通道中均包含的獨立規(guī)則;所述獨立規(guī)則在漏洞掃描過程中可獨立運行且與其它規(guī)則無依賴關(guān)系。
本發(fā)明實施例還提供一種確定插件內(nèi)規(guī)則調(diào)度順序的裝置,包括:
獲取單元:用于獲取插件的各規(guī)則通道,所述插件通過所述各規(guī)則通道掃描出同一漏洞;
確定單元:用于針對每條規(guī)則通道,確定所述規(guī)則通道中各獨立規(guī)則的資源消耗量和所述規(guī)則通道掃描出所述漏洞的命中率;根據(jù)所述各獨立規(guī)則的資源消耗量和所述規(guī)則通道的命中率,確定所述規(guī)則通道的優(yōu)先級;所述獨立規(guī)則在漏洞掃描過程中可獨立運行且與其它規(guī)則無依賴關(guān)系;根據(jù)各規(guī)則通道的優(yōu)先級,確定所述插件運行時所述各規(guī)則通道的調(diào)度順序。
較佳地,所述確定單元,還用于:
若所述各規(guī)則通道中存在至少兩條規(guī)則通道具有共享規(guī)則,確定共享規(guī)則的數(shù)量,所述共享規(guī)則為所述至少兩條規(guī)則通道中均包含的獨立規(guī)則;
針對包含至少一個所述共享規(guī)則的規(guī)則通道,根據(jù)所述至少一個共享規(guī)則的資源消耗量,確定所述至少一個共享規(guī)則在所述規(guī)則通道掃描起始部的順序。
較佳地,所述確定單元,還用于:
根據(jù)所述各規(guī)則通道的調(diào)度順序,構(gòu)建掃描任務(wù)調(diào)用樹,其中,所述掃描任務(wù)調(diào)用樹中不存在重復(fù)的獨立規(guī)則;
所述掃描任務(wù)調(diào)用樹中的每條分支對應(yīng)一條規(guī)則通道,根據(jù)除共享規(guī)則外的各獨立規(guī)則的資源消耗量確定各獨立規(guī)則在各規(guī)則通道中分支中的位置。
較佳地,所述確定單元,具體用于:
根據(jù)各獨立規(guī)則的資源消耗量確定所述規(guī)則通道的資源消耗量;
確定各規(guī)則通道的命中率與資源消耗量的比值;
將各規(guī)則通道按照命中率與資源消耗量的比值從小到大進行排序,得到所述各規(guī)則通道的優(yōu)先級。
本發(fā)明實施例還提供一種插件掃描的裝置,包括:
任務(wù)獲取單元:用于獲取掃描任務(wù),確定掃描任務(wù)的插件;
調(diào)度順序獲取單元:用于獲取所述插件的各規(guī)則通道的調(diào)度順序,所述各規(guī)則通道的調(diào)度順序根據(jù)各規(guī)則通道中的各獨立規(guī)則的資源消耗量和規(guī)則通道的命中率確定;
掃描單元:用于按照所述各規(guī)則通道的調(diào)度順序,依次進行漏洞掃描,直至掃描出所述漏洞或所有規(guī)則通道均被調(diào)用。
較佳地,所述掃描單元,具體用于:
使用掃描任務(wù)調(diào)用樹進行漏洞掃描,所述掃描任務(wù)調(diào)用樹根據(jù)所述各規(guī)則通道的調(diào)度順序構(gòu)建;所述掃描任務(wù)調(diào)用樹中不存在重復(fù)的獨立規(guī)則,所述掃描任務(wù)調(diào)用樹中的每條分支對應(yīng)一條規(guī)則通道;
若所述掃描任務(wù)調(diào)用樹中的共享規(guī)則掃描失敗,則從所述掃描任務(wù)調(diào)用樹中刪除包含所述共享規(guī)則的尚未被調(diào)用的規(guī)則通道,直至掃描出所述漏洞或所有規(guī)則通道均被調(diào)用,所述共享規(guī)則為所述至少兩條規(guī)則通道中均包含的獨立規(guī)則;所述獨立規(guī)則在漏洞掃描過程中可獨立運行且與其它規(guī)則無依賴關(guān)系。
本發(fā)明實施例提供的一種插件掃描、確定插件內(nèi)規(guī)則調(diào)度順序的方法及裝置,在確定插件內(nèi)規(guī)則調(diào)度順序的階段,首先確定規(guī)則通道中各獨立規(guī)則的資源消耗量和規(guī)則通道掃描出漏洞的命中率;然后根據(jù)各獨立規(guī)則的資源消耗量和規(guī)則通道的命中率,確定各規(guī)則通道的調(diào)度順序。在掃描階段,按照各規(guī)則通道的調(diào)度順序,依次進行漏洞掃描。本發(fā)明實施例將插件按照獨立規(guī)則進行粒化,將掃描調(diào)度的最小單位?;癁橐?guī)則通道,自動確定合理的規(guī)則通道調(diào)度順序,提高了插件掃描速度和效率,同時節(jié)省了計算機資源,從而提高了漏洞掃描器的整體掃描性能。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種漏洞掃描系統(tǒng)結(jié)構(gòu)示意圖;
圖2為本發(fā)明實施例提供的一種確定插件內(nèi)規(guī)則調(diào)度順序的方法流程示意圖;
圖3為本發(fā)明實施例提供的插件A的獨立規(guī)則確定的有向無環(huán)圖;
圖4a為本發(fā)明實施例提供的插件A的一顆規(guī)則通道樹;
圖4b為本發(fā)明實施例提供的插件A的另一顆規(guī)則通道樹;
圖4c為本發(fā)明實施例提供的插件A的另一顆規(guī)則通道樹;
圖4d為本發(fā)明實施例提供的插件A的另一顆規(guī)則通道樹;
圖5為本發(fā)明實施例提供的一種插件掃描的方法流程示意圖;
圖6為本發(fā)明實施例提供的一種確定插件內(nèi)規(guī)則調(diào)度順序的裝置結(jié)構(gòu)示意圖;
圖7為本發(fā)明實施例提供的一種插件掃描的裝置結(jié)構(gòu)示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進一步地詳細描述,顯然,所描述的實施例僅僅是本發(fā)明一部份實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例提供一種漏洞掃描系統(tǒng),如圖1所示,為本發(fā)明實施例提供的一種漏洞掃描系統(tǒng)結(jié)構(gòu)示意圖,包括:插件規(guī)則調(diào)度模塊101,統(tǒng)計分析模塊102,數(shù)據(jù)庫103。其中,數(shù)據(jù)庫103包括規(guī)則庫1031、插件庫1032、漏洞庫1033。一個插件可以掃出多個漏洞,一個插件可以包含多條規(guī)則。
其中,統(tǒng)計分析模塊102用于機器學(xué)習(xí)階段,即通過采集大量樣本數(shù)據(jù),例如,針對一千個目標主機,通過調(diào)度插件庫1032中的插件進行掃描,統(tǒng)計出掃描出漏洞A的插件B,以及插件B的能夠掃描出漏洞A的規(guī)則通道,確定插件A中的各條規(guī)則通道的命中漏洞B的概率,以及插件A中的每條規(guī)則的資源消耗指數(shù),從而確定插件A中的規(guī)則的最優(yōu)調(diào)度順序。因而,對于任意一個插件,統(tǒng)計分析模塊102通過大量的樣本采集統(tǒng)計分析,都可以得到插件中規(guī)則的最優(yōu)調(diào)度順序。由于統(tǒng)計分析模塊102會消耗額外系統(tǒng)資源,所以在實踐掃描階段可以關(guān)閉該功能模塊。
插件規(guī)則調(diào)度模塊101用于實踐掃描階段,根據(jù)統(tǒng)計分析模塊102分析出的各插件中規(guī)則的調(diào)度順序,調(diào)度插件中的規(guī)則。
本發(fā)明實施例提供的一種漏洞掃描系統(tǒng),在機器學(xué)習(xí)階段,通過統(tǒng)計分析模塊102統(tǒng)計插件庫1032中各插件內(nèi)規(guī)則的調(diào)度順序。首先確定規(guī)則通道中各規(guī)則的資源消耗量和規(guī)則通道掃描出漏洞的命中率;然后根據(jù)各規(guī)則的資源消耗量和規(guī)則通道的命中率,確定各規(guī)則通道的調(diào)度順序。在實踐掃描階段,插件規(guī)則調(diào)度模塊101按照插件中各規(guī)則通道的調(diào)度順序,依次進行漏洞掃描。本發(fā)明實施例將插件按照規(guī)則進行?;?,將掃描調(diào)度的最小單位粒化為規(guī)則通道,通過機器學(xué)習(xí)自動統(tǒng)計分析確定出合理的規(guī)則通道調(diào)度順序,相對于現(xiàn)有技術(shù)中隨機掃描插件中規(guī)則或人工簡單對規(guī)則進行排序等方式,提高了插件掃描速度和效率,同時節(jié)省了計算機資源,從而提高了漏洞掃描系統(tǒng)的整體掃描性能。
本發(fā)明實施例還提供一種確定插件內(nèi)規(guī)則調(diào)度順序的方法,如圖2所示,為本發(fā)明實施例提供的一種確定插件內(nèi)規(guī)則調(diào)度順序的方法流程示意圖,針對任意一個插件,包括:
步驟201:獲取插件的各規(guī)則通道,插件通過各規(guī)則通道掃描出同一漏洞。
具體地,一個插件的掃描結(jié)果有以下兩種:掃出漏洞,未掃出漏洞。其中,未掃出漏洞分為兩種情況:1、所有規(guī)則都執(zhí)行完畢后未掃出漏洞;2、通過某條規(guī)則或某幾條規(guī)則成立推斷出不存在某個漏洞。此外,從判斷漏洞存在性的角度可以將插件中的規(guī)則分為以下幾種:1、單條規(guī)則就可以判斷漏洞的存在性,包括存在、不存在和不確定三種情況;2、若干條規(guī)則有前后依賴關(guān)系,例如一條規(guī)則的輸入依賴于另一條規(guī)則的輸出,本發(fā)明的各實施例將有前后依賴關(guān)系的規(guī)則進行綁定,作為一條獨立規(guī)則。例如規(guī)則R12的輸入依賴于規(guī)則R11的輸出,則將規(guī)則R11和規(guī)則R12進行綁定,作為一條獨立規(guī)則R1;3、各規(guī)則之間有關(guān)聯(lián)關(guān)系,即若干條規(guī)則同時成立才可以判斷漏洞的存在性,但是這些規(guī)則之間沒有先后順序,是相互獨立的,本發(fā)明的各實施例將在漏洞掃描過程中可獨立運行且與其它規(guī)則無依賴關(guān)系各規(guī)則作為獨立規(guī)則。例如,規(guī)則R1、規(guī)則R2、規(guī)則R3沒有前后依賴關(guān)系,且規(guī)則R1、規(guī)則R2和規(guī)則R3同時成立才可以判斷漏洞B存在,則將規(guī)則R1、規(guī)則R2和規(guī)則R3都為獨立規(guī)則。
步驟202:針對每條規(guī)則通道,確定規(guī)則通道中各獨立規(guī)則的資源消耗量和規(guī)則通道掃描出漏洞的命中率;根據(jù)各獨立規(guī)則的資源消耗量和所述規(guī)則通道的命中率,確定規(guī)則通道的優(yōu)先級。
具體地,步驟202中,首先根據(jù)各獨立規(guī)則的資源消耗量確定規(guī)則通道的資源消耗量;然后確定各規(guī)則通道的命中率與資源消耗量的比值;最后將各規(guī)則通道按照命中率與資源消耗量的比值從小到大進行排序,得到各規(guī)則通道的優(yōu)先級。
假設(shè)插件A共三條規(guī)則通道C1、C2、C3。規(guī)則通道C1包括獨立規(guī)則R1、R2、R3,規(guī)則通道C2包括獨立規(guī)則R2、R4、R5;規(guī)則通道C1包括獨立規(guī)則R3、R6。首先計算獨立規(guī)則R1~R6中每條規(guī)則的資源消耗量,具體地,每條獨立規(guī)則的資源消耗量可以根據(jù)每條獨立規(guī)則的以下任意指標之一或組合確定:CPU使用率、內(nèi)存占有率、IO占有率、網(wǎng)絡(luò)占用率等。需要說明的是,本發(fā)明實施例中資源消耗量的數(shù)學(xué)計算方法可以采用現(xiàn)有技術(shù)的算法,在此不做限制。
然后,根據(jù)獨立規(guī)則R1、R2、R3確定規(guī)則通道C1的資源消耗量D1,根據(jù)獨立規(guī)則R2、R4、R5確定規(guī)則通道C2的資源消耗量D2,根據(jù)獨立規(guī)則R3、R6確定規(guī)則通道C3的資源消耗量D3。
統(tǒng)計規(guī)則通道C1、C2、C3三條通道掃描出漏洞B的命中率。例如針對一千個掃描目標,規(guī)則通道C1、C2、C3掃描出漏洞B的次數(shù)分別為200次、500次、300次,則規(guī)則通道C1、C2、C3掃描出漏洞B的命中率分別為20%、50%、30%。
然后,確定各規(guī)則通道的命中率與資源消耗量的比值,對于規(guī)則通道C1,計算命中率與資源消耗量的比值N1=20%/D1;對于規(guī)則通道C2,計算命中率與資源消耗量的比值N2=50%/D2;對于規(guī)則通道C3,計算命中率與資源消耗量的比值N3=30%/D3。比較N1、N2、N3的大小,得到N2>N1>N3,將規(guī)則通道按照命中率與資源消耗量的比值從小到大進行排序,得到規(guī)則通道的優(yōu)先級為C2、C1、C3。
步驟203:根據(jù)各規(guī)則通道的優(yōu)先級,確定插件運行時各規(guī)則通道的調(diào)度順序。
根據(jù)步驟202中的舉例,由于統(tǒng)計得到插件A規(guī)則通道的優(yōu)先級為C1、C2、C3,則得到插件A運行時規(guī)則通道的調(diào)度順序為C2、C1、C3。則在實踐掃描階段,在插件A運行時,根據(jù)插件A中規(guī)則通道的調(diào)度順序C2、C1、C3依次進行漏洞掃描。
本發(fā)明實施例通過將插件按照獨立規(guī)則進行?;瑢呙枵{(diào)度的最小單位從插件?;癁椴寮械囊?guī)則通道,自動確定出合理的規(guī)則通道調(diào)用優(yōu)先級,相對于現(xiàn)有技術(shù)中隨機掃描插件中規(guī)則或人工簡單對規(guī)則進行排序等方式,提高了插件掃描速度和效率,同時節(jié)省了計算機資源,從而提高了漏洞掃描器的整體掃描性能。
進一步地,在確定了規(guī)則通道的優(yōu)先級之后,還可以確定規(guī)則通道內(nèi)的各獨立規(guī)則的優(yōu)先級。
若各規(guī)則通道中存在至少兩條規(guī)則通道具有共享規(guī)則,確定共享規(guī)則的數(shù)量,其中共享規(guī)則為所述至少兩條規(guī)則通道中均包含的獨立規(guī)則。根據(jù)步驟202中的舉例,規(guī)則通道C1和C2都包含獨立規(guī)則R2,規(guī)則通道C1和C3都包含獨立規(guī)則R3,則得到插件中包括兩條共享規(guī)則:R2、R3。
然后,針對包含至少一個所述共享規(guī)則的規(guī)則通道,根據(jù)所述至少一個共享規(guī)則的資源消耗量,確定所述至少一個共享規(guī)則在所述規(guī)則通道掃描起始部的順序。
具體地,在步驟202中,且已確定出獨立規(guī)則R1~R6的資源消耗量,假設(shè)分別為DR1、DR2、DR3、DR4、DR5、DR6,且DR2>DR3>DR1>DR6>DR4>DR5。由于其中共享規(guī)則DR2>DR3,則將共享規(guī)則R2作為規(guī)則通道C2掃描時的第一個獨立規(guī)則;將共享規(guī)則R3作為規(guī)則通道掃描時的C3第一個獨立規(guī)則;將則將共享規(guī)則R3作為規(guī)則通道C1掃描時的第一個獨立規(guī)則,將共享規(guī)則R2作為規(guī)則通道C1掃描時的第二個獨立規(guī)則。
進一步地,根據(jù)所述各規(guī)則通道的調(diào)度順序,構(gòu)建掃描任務(wù)調(diào)用樹,其中,掃描任務(wù)調(diào)用樹中不存在重復(fù)的獨立規(guī)則。掃描任務(wù)調(diào)用樹中的每條分支對應(yīng)一條規(guī)則通道,根據(jù)除共享規(guī)則外的各獨立規(guī)則的資源消耗量確定各獨立規(guī)則在各規(guī)則通道中分支中的位置。
具體地,由于R1~R6的資源消耗量DR2>DR3>DR1>DR6>DR4>DR5,得到規(guī)則通道C1內(nèi)的獨立規(guī)則的優(yōu)先級為R3、R2、R1;規(guī)則通道C2內(nèi)的獨立規(guī)則的優(yōu)先級為R2、R5、R4;規(guī)則通道C3內(nèi)的獨立規(guī)則的優(yōu)先級為R3、R6。根據(jù)且步驟202中已確定出規(guī)則通道的優(yōu)先級為C2、C1、C3,得到插件A的獨立規(guī)則調(diào)度順序R2、R5、R4、R3、R6、R3、R2、R1。為了節(jié)省計算機資源,提高掃描效率,僅保留最先出現(xiàn)共享規(guī)則的規(guī)則通道中的共享規(guī)則,即每個獨立規(guī)則僅掃描一次,得到最后的掃描任務(wù)調(diào)用樹為R2、R5、R4、R3、R6、R1。
本發(fā)明實施例首先確定插件中各規(guī)則通道的優(yōu)先級,然后確定規(guī)則通道內(nèi)的各獨立規(guī)則的優(yōu)先級,得到最終實踐掃描階段的掃描任務(wù)調(diào)用樹,進一步提高了插件掃描速度和效率,節(jié)省了計算機資源,從而提高了漏洞掃描器的整體掃描性能。
下面通過具體的實施例對本發(fā)明實施例提供的確定插件內(nèi)規(guī)則調(diào)度順序的方法進行詳細說明。
假設(shè)某插件A有8條獨立規(guī)則R1~R8,該8條規(guī)則能夠聯(lián)合起來判斷漏洞B的存在性。將插件A的8條獨立規(guī)則作為有向無環(huán)圖中的8個節(jié)點,由于各條獨立規(guī)則之間的關(guān)系獨立無前后依賴關(guān)系,則建立能夠獨立判斷漏洞存在性的規(guī)則通道。如圖3所示,假設(shè)這8條獨立規(guī)則中:獨立規(guī)則1、2、3可以共同判斷漏洞B的存在性,得到規(guī)則通道樹C1;獨立規(guī)則4、5、3可以共同判斷漏洞B的存在性,得到規(guī)則通道樹C2;獨立規(guī)則6可以直接判斷漏洞B的存在性,得到規(guī)則通道樹C3;獨立規(guī)則7、8可以共同判斷漏洞B的存在性,得到規(guī)則通道樹C4。則插件A從掃描開始到結(jié)束可以通過C1、C2、C3、C4四條規(guī)則通道數(shù)中任意一條掃描出漏洞B。
具體地,插件的N條規(guī)則為表示描述插件的N個屬性,規(guī)則是否成立表示是規(guī)則的屬性值。圖4a~圖4d所示,為插件A的4顆規(guī)則通道樹,構(gòu)建規(guī)則通道樹時,獨立規(guī)則可以作為規(guī)則通道樹的節(jié)點,規(guī)則的成立與否作為節(jié)點的分支,通過自動向下構(gòu)造規(guī)則通道樹,圖4a~圖4d分別構(gòu)造了四條規(guī)則通道樹。
由于相同的獨立規(guī)則可能出現(xiàn)在不同的規(guī)則通道樹中,而插件調(diào)度獨立規(guī)則的時候在一顆規(guī)則通道樹失敗的情況下才調(diào)用另一顆規(guī)則通道樹,因而在每棵規(guī)則通道樹中可以將出現(xiàn)在多個通路中的規(guī)則節(jié)點作為規(guī)則通道樹的根節(jié)點,如圖4a和圖4b,由于規(guī)則通道樹C1和規(guī)則通道樹C2中存在相同的獨立規(guī)則3,則將獨立規(guī)則3作為規(guī)則通道樹的根節(jié)點。當根節(jié)點失敗(規(guī)則不成立)時,則表示存在該獨立規(guī)則的規(guī)則通道樹全部失敗,即存在該獨立規(guī)則的規(guī)則通道樹都不能掃描出漏洞B,因而不需要再掃描存在該獨立規(guī)則的規(guī)則通道樹,這樣可以減少規(guī)則的調(diào)用次數(shù),從而節(jié)省資源。例如,當掃描出獨立規(guī)則3不成立時,則規(guī)則通道樹C1和規(guī)則通道樹C2中的其它規(guī)則都不需要再掃描,從而減少規(guī)則的調(diào)用次數(shù),節(jié)省了資源。
進一步地,本發(fā)明實施例將規(guī)則通道樹進行優(yōu)先級排序,確定出插件規(guī)則的調(diào)度順序。
例如,準備樣本數(shù)據(jù)如下,M個掃描目標可能存在漏洞V,現(xiàn)有可以掃描V漏洞的上述包括8條獨立規(guī)則R1~R8的插件A,該插件對每個掃描目標只掃描一次,則掃描次數(shù)一共為M次。此外,為提高統(tǒng)計分析準確性,可盡量增大樣本數(shù)據(jù)M的取值。
假設(shè)初始條件下每個獨立規(guī)則資源消耗均為無線大,隨后M個目標站點分別調(diào)用插件A進行V漏洞的掃描。A插件對其掃描規(guī)則通道樹進行隨機選取,例如調(diào)用的規(guī)則通道樹順序依次為C2、C1、C4、C3,則對應(yīng)的獨立規(guī)則隊列為[4,5,3,1,2,7,8,6],A插件按照獨立規(guī)則隊列進行依次調(diào)度,并記錄各規(guī)則的資源消耗指數(shù),直到判斷存在或不存在漏洞后插件A調(diào)度結(jié)束,對判斷出漏洞是否存在的規(guī)則通道樹概率權(quán)重加1。如果規(guī)則隊列全部調(diào)用完也沒有判斷出漏洞,則各個規(guī)則通道樹均不加權(quán),認為此次掃描無效。
假設(shè)在M次掃描中,有效次數(shù)為N(N<M),則統(tǒng)計分析獨立規(guī)則R1~R8的指標如表1所示,各規(guī)則通道樹的指標如表2所示。
表1
表2
為了最快的判斷漏洞是否存在,期望插件A的規(guī)則通道樹調(diào)度過程中先調(diào)用命中概率最大的且資源消耗指數(shù)最小的。因而可以用命中概率與資源消耗的比值(P/C)來反映規(guī)則通道樹的綜合得分,得分越高越先被調(diào)用。例如通過統(tǒng)計得出規(guī)則通道樹調(diào)度順序C3,C2,C4,C1,則相對應(yīng)的獨立規(guī)則的順序為6;3,4,5;7,8;1,2,3。
由于各個規(guī)則通道樹內(nèi)的獨立規(guī)則是相互獨立,所以調(diào)度時是無序的,因此還需要確定規(guī)則通道樹內(nèi)的獨立規(guī)則的順序,以插件A快速完成掃描。本發(fā)明實施例將出現(xiàn)在多顆規(guī)則通道樹中的獨立規(guī)則放在每顆規(guī)則通道樹的最前面,如果有多個這樣的規(guī)則,則按照資源消耗從低到高排序。對于只存在于一個規(guī)則通道樹中的獨立規(guī)則,直接按照資源消耗的高低從低到高排序,得到各規(guī)則通道樹內(nèi)的獨立規(guī)則的順序。然后將出現(xiàn)多次的相同獨立規(guī)則進行去重,得出插件A調(diào)度獨立規(guī)則時的規(guī)則隊列[6,3,4,5,7,8,1,2]。
本發(fā)明實施例提供的確定插件內(nèi)規(guī)則調(diào)度方法,對插件中的獨立規(guī)則條件進行粒化和關(guān)聯(lián)性分析,使資源消耗更加粒度化,具體到可以衡量各個插件規(guī)則的資源消耗,有助于收集規(guī)則性能數(shù)據(jù)并進行優(yōu)化;通過機器學(xué)習(xí)從樣本數(shù)據(jù)中自動分析獲取插件規(guī)則調(diào)度的規(guī)律,在實踐掃描階段將此規(guī)律運用到的掃描目標,在盡可能快的完成掃描的同時使用系統(tǒng)資源盡可能少,從整體上提高掃描效率。
基于同樣的發(fā)明構(gòu)思,本發(fā)明實施例還提供一種插件掃描的方法,如圖5所示,為本發(fā)明實施例提供的一種插件掃描的方法流程示意圖,包括:
步驟501:獲取掃描任務(wù),確定掃描任務(wù)的插件。
步驟502:獲取插件的各規(guī)則通道的調(diào)度順序,各規(guī)則通道的調(diào)度順序根據(jù)各規(guī)則通道中的各獨立規(guī)則的資源消耗量和規(guī)則通道的命中率確定。
具體地,各規(guī)則通道的調(diào)度順序預(yù)先通過大量樣本統(tǒng)計分析確定,如上述實施例確定的各規(guī)則通道的調(diào)度順序C3,C2,C4,C1。
步驟503:按照各規(guī)則通道的調(diào)度順序,依次進行漏洞掃描,直至掃描出漏洞或所有規(guī)則通道均被調(diào)用。
例如,對于目標主機F1,調(diào)用插件A中的規(guī)則通道樹,如調(diào)度順序C3,C2,C4,C1進行掃描漏洞。
進一步地,使用掃描任務(wù)調(diào)用樹進行漏洞掃描,掃描任務(wù)調(diào)用樹根據(jù)各規(guī)則通道的調(diào)度順序構(gòu)建;掃描任務(wù)調(diào)用樹中不存在重復(fù)的獨立規(guī)則,掃描任務(wù)調(diào)用樹中的每條分支對應(yīng)一條規(guī)則通道。例如,掃描任務(wù)調(diào)用樹為上述實施例確定的插件A調(diào)度獨立規(guī)則時的規(guī)則隊列[6,3,4,5,7,8,1,2]。
進一步地,若掃描任務(wù)調(diào)用樹中的共享規(guī)則掃描失敗,則從掃描任務(wù)調(diào)用樹中刪除包含共享規(guī)則的尚未被調(diào)用的規(guī)則通道,直至掃描出所述漏洞或所有規(guī)則通道均被調(diào)用,共享規(guī)則為所述至少兩條規(guī)則通道中均包含的獨立規(guī)則;獨立規(guī)則在漏洞掃描過程中可獨立運行且與其它規(guī)則無依賴關(guān)系。
例如,根據(jù)掃描任務(wù)調(diào)用樹[6,3,4,5,7,8,1,2]依次進行掃描,獨立規(guī)則6未掃描出漏洞,接著掃描獨立規(guī)則3,此時掃描出獨立規(guī)則3不成立,則規(guī)則通道樹C1和規(guī)則通道樹C2中的其它規(guī)則都不需要再掃描,即不再掃描獨立規(guī)則4、5、1、2,僅接著依次掃描獨立規(guī)則7、8,從而減少了規(guī)則的調(diào)用次數(shù),節(jié)省了資源。
基于同樣的發(fā)明構(gòu)思,本發(fā)明實施例還提供一種確定插件內(nèi)規(guī)則調(diào)度順序的裝置,具體執(zhí)行主體可以為本發(fā)明實施例提供的漏洞掃描系統(tǒng)中的統(tǒng)計分析模塊實現(xiàn)。如圖6所示,為本發(fā)明實施例提供的一種確定插件內(nèi)規(guī)則調(diào)度順序的裝置結(jié)構(gòu)示意圖,包括:
獲取單元601:用于獲取插件的各規(guī)則通道,所述插件通過所述各規(guī)則通道掃描出同一漏洞;
確定單元602:用于針對每條規(guī)則通道,確定所述規(guī)則通道中各獨立規(guī)則的資源消耗量和所述規(guī)則通道掃描出所述漏洞的命中率;根據(jù)所述各獨立規(guī)則的資源消耗量和所述規(guī)則通道的命中率,確定所述規(guī)則通道的優(yōu)先級;所述獨立規(guī)則在漏洞掃描過程中可獨立運行且與其它規(guī)則無依賴關(guān)系;根據(jù)各規(guī)則通道的優(yōu)先級,確定所述插件運行時所述各規(guī)則通道的調(diào)度順序。
較佳地,所述確定單元602,還用于:
若所述各規(guī)則通道中存在至少兩條規(guī)則通道具有共享規(guī)則,確定共享規(guī)則的數(shù)量,所述共享規(guī)則為所述至少兩條規(guī)則通道中均包含的獨立規(guī)則;
針對包含至少一個所述共享規(guī)則的規(guī)則通道,根據(jù)所述至少一個共享規(guī)則的資源消耗量,確定所述至少一個共享規(guī)則在所述規(guī)則通道掃描起始部的順序。
較佳地,所述確定單元602,還用于:
根據(jù)所述各規(guī)則通道的調(diào)度順序,構(gòu)建掃描任務(wù)調(diào)用樹,其中,所述掃描任務(wù)調(diào)用樹中不存在重復(fù)的獨立規(guī)則;
所述掃描任務(wù)調(diào)用樹中的每條分支對應(yīng)一條規(guī)則通道,根據(jù)除共享規(guī)則外的各獨立規(guī)則的資源消耗量確定各獨立規(guī)則在各規(guī)則通道中分支中的位置。
較佳地,所述確定單元602,具體用于:
根據(jù)各獨立規(guī)則的資源消耗量確定所述規(guī)則通道的資源消耗量;
確定各規(guī)則通道的命中率與資源消耗量的比值;
將各規(guī)則通道按照命中率與資源消耗量的比值從小到大進行排序,得到所述各規(guī)則通道的優(yōu)先級。
本發(fā)明實施例提供的一種確定插件內(nèi)規(guī)則調(diào)度順序的裝置,用于確定插件內(nèi)規(guī)則調(diào)度順序的機器統(tǒng)計分析階段,首先確定規(guī)則通道中各獨立規(guī)則的資源消耗量和規(guī)則通道掃描出漏洞的命中率;然后根據(jù)各獨立規(guī)則的資源消耗量和規(guī)則通道的命中率,確定各規(guī)則通道的調(diào)度順序。本發(fā)明實施例將插件按照獨立規(guī)則進行?;?,將掃描調(diào)度的最小單位?;癁橐?guī)則通道,自動確定合理的規(guī)則通道調(diào)度順序,提高了插件掃描速度和效率,同時節(jié)省了計算機資源,從而提高了漏洞掃描器的整體掃描性能。
基于同樣的發(fā)明構(gòu)思,本發(fā)明實施例還提供一種插件掃描的裝置,具體執(zhí)行主體可以為本發(fā)明實施例提供的漏洞掃描系統(tǒng)中的插件規(guī)則調(diào)度模塊實現(xiàn)。如圖7所示,為本發(fā)明實施例提供的一種插件掃描的裝置結(jié)構(gòu)示意圖,包括:
任務(wù)獲取單元701:用于獲取掃描任務(wù),確定掃描任務(wù)的插件;
調(diào)度順序獲取單元702:用于獲取所述插件的各規(guī)則通道的調(diào)度順序,所述各規(guī)則通道的調(diào)度順序根據(jù)各規(guī)則通道中的各獨立規(guī)則的資源消耗量和規(guī)則通道的命中率確定;
掃描單元703:用于按照所述各規(guī)則通道的調(diào)度順序,依次進行漏洞掃描,直至掃描出所述漏洞或所有規(guī)則通道均被調(diào)用。
較佳地,所述掃描單元703,具體用于:
使用掃描任務(wù)調(diào)用樹進行漏洞掃描,所述掃描任務(wù)調(diào)用樹根據(jù)所述各規(guī)則通道的調(diào)度順序構(gòu)建;所述掃描任務(wù)調(diào)用樹中不存在重復(fù)的獨立規(guī)則,所述掃描任務(wù)調(diào)用樹中的每條分支對應(yīng)一條規(guī)則通道;
若所述掃描任務(wù)調(diào)用樹中的共享規(guī)則掃描失敗,則從所述掃描任務(wù)調(diào)用樹中刪除包含所述共享規(guī)則的尚未被調(diào)用的規(guī)則通道,直至掃描出所述漏洞或所有規(guī)則通道均被調(diào)用,所述共享規(guī)則為所述至少兩條規(guī)則通道中均包含的獨立規(guī)則;所述獨立規(guī)則在漏洞掃描過程中可獨立運行且與其它規(guī)則無依賴關(guān)系。
本發(fā)明實施例提供的一種插件掃描裝置,用于實踐掃描階段,按照確定的各規(guī)則通道的調(diào)度順序,依次進行漏洞掃描。本發(fā)明實施例調(diào)用按照獨立規(guī)則進行?;牟寮?,將掃描調(diào)度的最小單位粒化為規(guī)則通道,調(diào)用自動優(yōu)化規(guī)則通道調(diào)度順序的各規(guī)則,提高了插件掃描速度和效率,同時節(jié)省了計算機資源,從而提高了漏洞掃描器的整體掃描性能。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的系統(tǒng)。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令系統(tǒng)的制造品,該指令系統(tǒng)實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。