本公開涉及網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,尤其涉及一種漏洞掃描方法和裝置。
背景技術(shù):
伴隨著工業(yè)物聯(lián)網(wǎng)的來臨,智能制造、工業(yè)4.0以及中國制造2025戰(zhàn)略的逐步深入與實(shí)施,傳統(tǒng)的工業(yè)控制網(wǎng)逐漸與互聯(lián)網(wǎng)互聯(lián)互通,以期在制造、物流、倉儲(chǔ)以及用戶定制等方面得到全面的能力提升。但是,隨著工業(yè)控制網(wǎng)與互聯(lián)網(wǎng)的連接,也逐漸暴露了工業(yè)控制網(wǎng)的安全隱患。傳統(tǒng)的工業(yè)控制網(wǎng)采用物理隔離的方式來保護(hù)其安全性,一旦接入互聯(lián)網(wǎng),必將面臨無法避免的安全威脅,而且工業(yè)控制網(wǎng)由于其大多控制著與人民息息相關(guān)的工業(yè)、交通、電力能源等基礎(chǔ)設(shè)施,與現(xiàn)實(shí)世界的聯(lián)系更加緊密,因此系統(tǒng)的失效有可能會(huì)帶來災(zāi)難性的后果。
技術(shù)實(shí)現(xiàn)要素:
為克服相關(guān)技術(shù)中存在的問題,本公開提供一種漏洞掃描方法和裝置,可以及時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)設(shè)備中已存在的安全漏洞,并提高探測(cè)效率。
根據(jù)本公開實(shí)施例的第一方面,提供一種漏洞掃描方法,包括:
針對(duì)待掃描ip地址,判斷所述待掃描ip地址對(duì)應(yīng)的待掃描設(shè)備是否具有開放端口;
當(dāng)確定所述待掃描設(shè)備具有開放端口時(shí),將所述開放端口和對(duì)應(yīng)的所述待掃描ip地址存儲(chǔ)至消息隊(duì)列中;
從所述消息隊(duì)列中獲取所述開放端口和對(duì)應(yīng)的所述待掃描ip地址;以及
對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行漏洞掃描,以確定所述待掃描設(shè)備的所述開放端口的漏洞信息。
進(jìn)一步地,所述方法還包括:
將所述漏洞掃描的掃描結(jié)果存儲(chǔ)至所述消息隊(duì)列;
當(dāng)接收到來自入庫節(jié)點(diǎn)的調(diào)度指令時(shí),從所述消息隊(duì)列中獲取掃描結(jié)果;
按照入庫規(guī)則,將所述掃描結(jié)果分批次存入數(shù)據(jù)庫。
進(jìn)一步地,所述方法還包括:
獲取聯(lián)網(wǎng)的多個(gè)ip地址;
根據(jù)ip地址的屬性信息,將所述多個(gè)ip地址劃分為多個(gè)批次,以將所述多個(gè)ip地址分批次下發(fā)到所述消息隊(duì)列。
進(jìn)一步地,所述對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行漏洞掃描,以確定所述待掃描設(shè)備的所述開放端口的漏洞信息包括:
根據(jù)協(xié)議指紋特征,確定所述開放端口的協(xié)議類型;
將所述確定的協(xié)議類型、對(duì)應(yīng)的所述開放端口和待掃描ip地址下發(fā)到所述消息隊(duì)列中;
從所述消息隊(duì)列中獲取所述確定的協(xié)議類型、以及對(duì)應(yīng)的所述開放端口和待掃描ip地址,以對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行設(shè)備應(yīng)用掃描;
將所述設(shè)備應(yīng)用掃描的掃描結(jié)果、所述協(xié)議類型、所述開放端口和所述待掃描ip地址下發(fā)到所述消息隊(duì)列中,其中,所述設(shè)備應(yīng)用掃描的掃描結(jié)果包括所述待掃描設(shè)備的設(shè)備應(yīng)用版本號(hào);
從所述消息隊(duì)列中獲取所述設(shè)備應(yīng)用掃描的掃描結(jié)果、所述協(xié)議類型、所述開放端口和所述待掃描ip地址;
根據(jù)所述設(shè)備應(yīng)用掃描的掃描結(jié)果確定預(yù)設(shè)漏洞驗(yàn)證程序,以確定所述開放端口的漏洞信息,所述預(yù)設(shè)漏洞驗(yàn)證程序包括有漏洞信息。
進(jìn)一步地,所述根據(jù)協(xié)議指紋特征,確定所述開放端口的協(xié)議類型包括:
向所述開放端口發(fā)送多個(gè)用于探測(cè)協(xié)議類型的數(shù)據(jù)包;
接收所述開放端口回傳的數(shù)據(jù)包,以從所述回傳的數(shù)據(jù)包中提取協(xié)議指紋特征;
在所述預(yù)設(shè)協(xié)議指紋庫中查找所述協(xié)議指紋特征,以確定所述開放端口對(duì)應(yīng)的協(xié)議類型,所述預(yù)設(shè)協(xié)議指紋庫包括協(xié)議指紋特征和協(xié)議類型的對(duì)應(yīng)關(guān)系。
進(jìn)一步地,所述對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行設(shè)備應(yīng)用掃描包括:
向所述開放端口發(fā)送用于設(shè)備應(yīng)用掃描的數(shù)據(jù)包;
接收所述開放端口回傳的數(shù)據(jù)包,以從所述回傳的數(shù)據(jù)包中提取設(shè)備識(shí)別信息;
根據(jù)所述設(shè)備識(shí)別信息,在所述預(yù)設(shè)設(shè)備識(shí)別腳本庫中查找所述設(shè)備識(shí)別信息,以獲取所述待掃描設(shè)備的設(shè)備應(yīng)用掃描的掃描結(jié)果,所述掃描結(jié)果包括設(shè)備應(yīng)用版本號(hào),所述預(yù)設(shè)設(shè)備識(shí)別腳本庫包括設(shè)備識(shí)別信息和設(shè)備應(yīng)用版本號(hào)的對(duì)應(yīng)關(guān)系,其中所述設(shè)備應(yīng)用版本號(hào)包括設(shè)備固件版本號(hào)和/或應(yīng)用軟件版本號(hào)。
進(jìn)一步地,所述根據(jù)所述設(shè)備應(yīng)用掃描的掃描結(jié)果確定預(yù)設(shè)漏洞驗(yàn)證程序,以確定所述開放端口的漏洞信息包括:
在所述預(yù)設(shè)漏洞庫中查找是否有所述待掃描設(shè)備的設(shè)備應(yīng)用版本號(hào),所述預(yù)設(shè)漏洞庫包括設(shè)備應(yīng)用版本號(hào)與預(yù)設(shè)漏洞驗(yàn)證程序的對(duì)應(yīng)關(guān)系;
當(dāng)在所述預(yù)設(shè)漏洞庫中查找到所述設(shè)備應(yīng)用版本號(hào)時(shí),確定所述設(shè)備應(yīng)用版本號(hào)對(duì)應(yīng)的預(yù)設(shè)漏洞驗(yàn)證程序;
根據(jù)確定的所述預(yù)設(shè)漏洞驗(yàn)證程序確定所述待掃描設(shè)備的開放端口的漏洞信息。
進(jìn)一步地,所述對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行漏洞掃描,以確定所述待掃描設(shè)備的所述開放端口的漏洞信息包括:
向所述開放端口發(fā)送漏洞測(cè)試信息;
以及判斷所述待掃描設(shè)備是否為關(guān)鍵信息基礎(chǔ)設(shè)施;
當(dāng)確定所述待掃描設(shè)備不是關(guān)鍵信息基礎(chǔ)設(shè)施時(shí),根據(jù)從所述開放端口接收的回傳數(shù)據(jù)包的特征,確定所述設(shè)備應(yīng)用版本號(hào)對(duì)應(yīng)的第一漏洞信息,所述第一漏洞信息包括漏洞是否存在的信息;
當(dāng)確定所述設(shè)備應(yīng)用版本號(hào)對(duì)應(yīng)的設(shè)備是關(guān)鍵信息基礎(chǔ)設(shè)施時(shí),確定所述設(shè)備應(yīng)用版本號(hào)對(duì)應(yīng)的第二漏洞信息,所述第二漏洞信息包括漏洞屬性信息。
根據(jù)本公開實(shí)施例的第二方面,提供一種漏洞掃描裝置,包括:
端口掃描單元,用于針對(duì)待掃描ip地址,判斷所述待掃描ip地址對(duì)應(yīng)的待掃描設(shè)備是否具有開放端口;
存儲(chǔ)單元,用于當(dāng)確定所述待掃描設(shè)備具有開放端口時(shí),將所述開放端口和對(duì)應(yīng)的所述待掃描ip地址存儲(chǔ)至消息隊(duì)列中;
獲取單元,用于從所述消息隊(duì)列中獲取所述開放端口和對(duì)應(yīng)的所述待掃描ip地址;以及
漏洞掃描單元,用于對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行漏洞掃描,以確定所述待掃描設(shè)備的所述開放端口的漏洞信息。
進(jìn)一步地,所述漏洞掃描單元包括:
協(xié)議確定模塊,用于根據(jù)協(xié)議指紋特征,確定所述開放端口的協(xié)議類型;
第一發(fā)送模塊,用于將所述確定的協(xié)議類型、對(duì)應(yīng)的所述開放端口和待掃描ip地址下發(fā)到所述消息隊(duì)列中;
設(shè)備應(yīng)用掃描模塊,用于從所述消息隊(duì)列中獲取所述確定的協(xié)議類型、以及對(duì)應(yīng)的所述開放端口和待掃描ip地址,以對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行設(shè)備應(yīng)用掃描;
第二發(fā)送模塊,用于將所述設(shè)備應(yīng)用掃描的掃描結(jié)果、所述協(xié)議類型、所述開放端口和所述待掃描ip地址下發(fā)到所述消息隊(duì)列中,其中,所述設(shè)備應(yīng)用掃描的掃描結(jié)果包括所述待掃描設(shè)備的設(shè)備應(yīng)用版本號(hào);
獲取模塊,用于從所述消息隊(duì)列中獲取所述設(shè)備應(yīng)用掃描的掃描結(jié)果、所述協(xié)議類型、所述開放端口和所述待掃描ip地址;
漏洞確定模塊,用于根據(jù)所述設(shè)備應(yīng)用掃描的掃描結(jié)果確定預(yù)設(shè)漏洞驗(yàn)證程序,以確定所述開放端口的漏洞信息,所述預(yù)設(shè)漏洞驗(yàn)證程序包括有漏洞信息。
本公開的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:利用消息隊(duì)列機(jī)制,提高了海量ip地址對(duì)應(yīng)的在線設(shè)備的漏洞發(fā)現(xiàn)效率。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本發(fā)明的實(shí)施例,并與說明書一起用于解釋本發(fā)明的原理。
圖1是根據(jù)一示例性實(shí)施例示出的一種漏洞掃描方法的流程圖;
圖2是根據(jù)另一示例性實(shí)施例示出的一種漏洞掃描方法的流程圖;
圖3是根據(jù)一示例性實(shí)施例示出的一種漏洞掃描裝置的結(jié)構(gòu)框圖;
圖4是根據(jù)另一示例性實(shí)施例示出的一種漏洞掃描裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本發(fā)明相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
以下將結(jié)合附圖對(duì)本公開提供的一種漏洞掃描方法和裝置的具體實(shí)施方式進(jìn)行詳細(xì)說明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說明和解釋本公開,并不用于限制本公開。
圖1是根據(jù)一示例性實(shí)施例示出的一種漏洞掃描方法的流程圖。
如圖1所示,本公開實(shí)施例提供的一種漏洞掃描方法,執(zhí)行主體以安裝于計(jì)算機(jī)上的漏洞掃描裝置為例,所述方法包括以下步驟:
在步驟s11中,針對(duì)待掃描ip地址,判斷所述待掃描ip地址對(duì)應(yīng)的待掃描設(shè)備是否具有開放端口。
其中,在執(zhí)行步驟s11之前,從ip地址空間中,獲取聯(lián)網(wǎng)的多個(gè)ip地址,根據(jù)ip地址的屬性信息,將所述多個(gè)ip地址劃分為多個(gè)批次,以將所述多個(gè)ip地址分批次下發(fā)到所述消息隊(duì)列。例如ip地址的區(qū)域?qū)傩裕蛘呤墙r(shí)間屬性等,根據(jù)ip地址的自身屬性進(jìn)行批次劃分,并分批次下發(fā)到消息隊(duì)列中。
其中,消息隊(duì)列可以理解為是在消息的傳輸過程中保存消息的容器。消息隊(duì)列的主要目的是提供路由并保證消息的傳遞。如果發(fā)送消息時(shí)接收者不可用,消息隊(duì)列會(huì)保留消息,直到可以成功地傳遞它。
在本公開中,通過使用消息隊(duì)列機(jī)制,將待掃描的ip地址下發(fā)到消息隊(duì)列中,后續(xù)從所述消息隊(duì)列中獲取需要進(jìn)行其他相關(guān)掃描的ip地址,通過引入消息隊(duì)列,使本公開的漏洞掃描方法的執(zhí)行類似于“流水線”作業(yè),提高了處理效率。
其中,從所述消息隊(duì)列中獲取需要進(jìn)行端口開放掃描的待掃描ip地址。所述開放端口即該端口處于偵聽狀態(tài)。通過端口掃描引擎判斷所述待掃描ip地址對(duì)應(yīng)的待掃描設(shè)備是否具有開放端口。
在本公開中,并不是所有的ip地址均需要掃描,只針對(duì)有需要的ip地址進(jìn)行端口開放掃描。每個(gè)ip地址對(duì)應(yīng)多個(gè)端口,包括開放端口和非開放端口,可以選擇無狀態(tài)掃描引擎,例如zmap,masscan等,對(duì)端口進(jìn)行開放的判定,來提升端口開放掃描的效率。
另外,若在步驟s11之前將待掃描ip地址分批次下發(fā)到所述消息隊(duì)列中,那么在步驟s11中也可以根據(jù)需要獲取需要端口開放掃描的待掃描ip地址的批次,以批次為單位進(jìn)行掃描,更加節(jié)約時(shí)間,提高掃描效率。
在步驟s12中,當(dāng)確定所述待掃描設(shè)備具有開放端口時(shí),將所述開放端口和對(duì)應(yīng)的所述待掃描ip地址存儲(chǔ)至消息隊(duì)列中。
其中,可以將每個(gè)待掃描ip地址對(duì)應(yīng)的多個(gè)開放端口以列表的形式下發(fā)到所述消息隊(duì)列中。
在步驟s13中,從所述消息隊(duì)列中獲取所述開放端口和對(duì)應(yīng)的所述待掃描ip地址;以及
在步驟s14中,對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行漏洞掃描,以確定所述待掃描設(shè)備的所述開放端口的漏洞信息。
其中,在步驟s14中,對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行漏洞掃描包括如下步驟:
1)根據(jù)協(xié)議指紋特征,確定所述開放端口的協(xié)議類型;
2)將所述確定的協(xié)議類型、對(duì)應(yīng)的所述開放端口和待掃描ip地址下發(fā)到所述消息隊(duì)列中;
3)從所述消息隊(duì)列中獲取所述確定的協(xié)議類型、以及對(duì)應(yīng)的所述開放端口和待掃描ip地址,以對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行設(shè)備應(yīng)用掃描;
4)將所述設(shè)備應(yīng)用掃描的掃描結(jié)果、所述協(xié)議類型、所述開放端口和所述待掃描ip地址下發(fā)到所述消息隊(duì)列中,其中,所述設(shè)備應(yīng)用掃描的掃描結(jié)果包括所述待掃描設(shè)備的設(shè)備應(yīng)用版本號(hào);
5)從所述消息隊(duì)列中獲取所述設(shè)備應(yīng)用掃描的掃描結(jié)果、所述協(xié)議類型、所述開放端口和所述待掃描ip地址;
6)根據(jù)所述設(shè)備應(yīng)用掃描的掃描結(jié)果確定預(yù)設(shè)漏洞驗(yàn)證程序,以確定所述開放端口的漏洞信息,所述預(yù)設(shè)漏洞驗(yàn)證程序包括有漏洞信息。
上述步驟1)和2)為進(jìn)行所述開放端口的協(xié)議類型掃描的步驟,步驟3)和4)為進(jìn)行所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行設(shè)備應(yīng)用掃描的步驟,步驟5)和6)為進(jìn)行所述開放端口的漏洞信息掃描的步驟。
通過流水線環(huán)節(jié),使得掃描過程流暢,多任務(wù)、多并發(fā)和細(xì)粒度的掃描任務(wù)大幅提高了海量ip地址的掃描效率。
圖2是根據(jù)另一示例性實(shí)施例示出的一種漏洞掃描方法的流程圖。
如圖2所示,本公開實(shí)施例提供的一種漏洞掃描方法,執(zhí)行主體以安裝于計(jì)算機(jī)上的漏洞掃描裝置為例,所述方法包括以下步驟:
步驟s21,獲取聯(lián)網(wǎng)的多個(gè)ip地址,根據(jù)ip地址的屬性信息,將所述多個(gè)ip地址劃分為多個(gè)批次,以將所述多個(gè)ip地址分批次下發(fā)到所述消息隊(duì)列。
多個(gè)批次的ip地址下發(fā)到所述消息隊(duì)列中后,等待進(jìn)行端口開放掃描。
步驟s22,從所述消息隊(duì)列中獲取需要進(jìn)行端口開放掃描的待掃描ip地址,判斷所述待掃描ip地址對(duì)應(yīng)的待掃描設(shè)備是否具有開放端口,當(dāng)確定所述待掃描設(shè)備具有開放端口時(shí),將所述開放端口和對(duì)應(yīng)的所述待掃描ip地址存儲(chǔ)至消息隊(duì)列中。
具體是從所述消息隊(duì)列中獲取需要進(jìn)行端口開放掃描的待掃描ip地址,并通過端口掃描引擎掃描得到所述待掃描ip地址對(duì)應(yīng)的開放端口,然后將所述開放端口和對(duì)應(yīng)的所述待掃描ip地址存儲(chǔ)到所述消息隊(duì)列中,等待進(jìn)行協(xié)議掃描。
步驟s23,從所述消息隊(duì)列中獲取需要進(jìn)行協(xié)議掃描的開放端口和對(duì)應(yīng)的所述待掃描ip地址,根據(jù)協(xié)議指紋特征,確定所述開放端口的協(xié)議類型,將所述確定的協(xié)議類型、對(duì)應(yīng)的所述開放端口和待掃描ip地址下發(fā)到所述消息隊(duì)列中。
其中,在步驟s23中根據(jù)協(xié)議指紋特征,確定所述開放端口的協(xié)議類型具體包括如下步驟:
1)向所述開放端口發(fā)送多個(gè)用于探測(cè)協(xié)議類型的數(shù)據(jù)包;
2)接收所述開放端口回傳的數(shù)據(jù)包,以從所述回傳的數(shù)據(jù)包中提取協(xié)議指紋特征;
3)在所述預(yù)設(shè)協(xié)議指紋庫中查找所述協(xié)議指紋特征,以確定所述開放端口對(duì)應(yīng)的協(xié)議類型,所述預(yù)設(shè)協(xié)議指紋庫包括協(xié)議指紋特征和協(xié)議類型的對(duì)應(yīng)關(guān)系。
由于存在多中協(xié)議類型,故向所述開放端口發(fā)送多個(gè)用于探測(cè)協(xié)議類型的數(shù)據(jù)包,在多個(gè)數(shù)據(jù)包的交互過程中從所述回傳的數(shù)據(jù)包中提取協(xié)議指紋特征,并根據(jù)包括協(xié)議指紋特征和協(xié)議類型的對(duì)應(yīng)關(guān)系的預(yù)設(shè)協(xié)議指紋庫,查找所述協(xié)議指紋特征對(duì)應(yīng)的協(xié)議類型,從而確定所述開放端口對(duì)應(yīng)的協(xié)議,然后將所述確定的協(xié)議類型、對(duì)應(yīng)的所述開放端口和待掃描ip地址下發(fā)到所述消息隊(duì)列中,等待進(jìn)行設(shè)備應(yīng)用掃描。其中,一個(gè)ip地址對(duì)應(yīng)的多個(gè)開放端口對(duì)應(yīng)的協(xié)議并不相同,例如,以http協(xié)議為例,80、81、82、83、84、85、8080等端口都可能開放http服務(wù),因此不能簡(jiǎn)單的用端口關(guān)聯(lián)協(xié)議類型,需要對(duì)每個(gè)開放端口進(jìn)行數(shù)據(jù)包的交互以精準(zhǔn)識(shí)別協(xié)議類型。
步驟s24,從所述消息隊(duì)列中獲取所述確定的協(xié)議類型、以及對(duì)應(yīng)的所述開放端口和待掃描ip地址,以對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行設(shè)備應(yīng)用掃描,將所述設(shè)備應(yīng)用掃描的掃描結(jié)果、所述協(xié)議類型、所述開放端口和所述待掃描ip地址下發(fā)到所述消息隊(duì)列中,其中,所述設(shè)備應(yīng)用掃描的掃描結(jié)果包括所述待掃描設(shè)備的設(shè)備應(yīng)用版本號(hào)。
其中,步驟s24中對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行設(shè)備應(yīng)用掃描,具體包括如下步驟:
1)向所述開放端口發(fā)送用于設(shè)備應(yīng)用掃描的數(shù)據(jù)包;
2)接收所述開放端口回傳的數(shù)據(jù)包,以從所述回傳的數(shù)據(jù)包中提取設(shè)備識(shí)別信息;
3)根據(jù)所述設(shè)備識(shí)別信息,在所述預(yù)設(shè)設(shè)備識(shí)別腳本庫中查找所述設(shè)備識(shí)別信息,以獲取所述待掃描設(shè)備的設(shè)備應(yīng)用掃描的掃描結(jié)果,所述掃描結(jié)果包括設(shè)備應(yīng)用版本號(hào),所述預(yù)設(shè)設(shè)備識(shí)別腳本庫包括設(shè)備識(shí)別信息和設(shè)備應(yīng)用版本號(hào)的對(duì)應(yīng)關(guān)系,其中所述設(shè)備應(yīng)用版本號(hào)包括設(shè)備固件版本號(hào)和/或應(yīng)用軟件版本號(hào)。
對(duì)于每種協(xié)議可能對(duì)應(yīng)多種設(shè)備類型,在已經(jīng)確定協(xié)議的類型之后,向所述開放端口發(fā)送用于設(shè)備應(yīng)用掃描的數(shù)據(jù)包,一部分設(shè)備對(duì)于與之對(duì)應(yīng)的設(shè)備類型的數(shù)據(jù)包,會(huì)回傳數(shù)據(jù)包,其中包括設(shè)備識(shí)別信息,而對(duì)于與之不對(duì)應(yīng)的設(shè)備類型的數(shù)據(jù)包,不會(huì)回傳數(shù)據(jù)包;另一部分設(shè)備,會(huì)直接回傳包括設(shè)備識(shí)別信息的數(shù)據(jù)包。根據(jù)所述設(shè)備識(shí)別信息,在包括設(shè)備識(shí)別信息和設(shè)備應(yīng)用版本號(hào)的對(duì)應(yīng)關(guān)系的預(yù)設(shè)設(shè)備識(shí)別腳本庫中,查找所述設(shè)備識(shí)別信息對(duì)應(yīng)的設(shè)備應(yīng)用版本號(hào),其中所述設(shè)備應(yīng)用版本號(hào)包括設(shè)備固件版本號(hào)和/或應(yīng)用軟件版本號(hào)。例如,以西門子s7協(xié)議為例,經(jīng)過十幾個(gè)包的深度交互,可以獲取plc設(shè)備的型號(hào)、設(shè)備固件版本號(hào)等詳細(xì)信息。將所述設(shè)備應(yīng)用掃描的掃描結(jié)果、所述協(xié)議類型、所述開放端口和所述待掃描ip地址下發(fā)到所述消息隊(duì)列中之后,等待進(jìn)行漏洞信息掃描。
步驟s25,從所述消息隊(duì)列中獲取所述設(shè)備應(yīng)用掃描的掃描結(jié)果、所述協(xié)議類型、所述開放端口和所述待掃描ip地址,根據(jù)所述設(shè)備應(yīng)用掃描的掃描結(jié)果確定預(yù)設(shè)漏洞驗(yàn)證程序,以確定所述開放端口的漏洞信息,并將所述漏洞掃描的掃描結(jié)果存儲(chǔ)至所述消息隊(duì)列,所述預(yù)設(shè)漏洞驗(yàn)證程序包括有漏洞信息。
其中,所述掃描結(jié)果包括漏洞信息、對(duì)應(yīng)的待掃描設(shè)備的設(shè)備應(yīng)用版本號(hào)、協(xié)議類型以及對(duì)應(yīng)的所述開放端口和待掃描ip地址。
其中,步驟s25對(duì)開放端口進(jìn)行漏洞掃描,分兩種情況,一種是可以直接得到漏洞信息從而確定是否有漏洞,另一種是確定漏洞是否存在,是否已經(jīng)被修復(fù)了,下面將描述第一種情況,具體包括如下步驟:
1)在所述預(yù)設(shè)漏洞庫中查找是否有所述待掃描設(shè)備的設(shè)備應(yīng)用版本號(hào),所述預(yù)設(shè)漏洞庫包括設(shè)備應(yīng)用版本號(hào)與預(yù)設(shè)漏洞驗(yàn)證程序的對(duì)應(yīng)關(guān)系;
2)當(dāng)在所述預(yù)設(shè)漏洞庫中查找到所述設(shè)備應(yīng)用版本號(hào)時(shí),確定所述設(shè)備應(yīng)用版本號(hào)對(duì)應(yīng)的預(yù)設(shè)漏洞驗(yàn)證程序;
3)根據(jù)確定的所述預(yù)設(shè)漏洞驗(yàn)證程序確定所述待掃描設(shè)備的開放端口的漏洞信息。
其中,所述預(yù)設(shè)漏洞庫可以為目前國內(nèi)應(yīng)用的漏洞庫cnnvd或cnvd,或者為國際上應(yīng)用的漏洞庫cve。
對(duì)于第二種情況,存在設(shè)備應(yīng)用版本號(hào)對(duì)應(yīng)的待掃描設(shè)備是否為關(guān)鍵信息基礎(chǔ)設(shè)施的判斷,從而確定漏洞信息,具體包括如下步驟:
1)向所述開放端口發(fā)送漏洞測(cè)試信息;
2)以及判斷所述待掃描設(shè)備是否為關(guān)鍵信息基礎(chǔ)設(shè)施;
3)當(dāng)確定所述待掃描設(shè)備不是關(guān)鍵信息基礎(chǔ)設(shè)施時(shí),根據(jù)從所述開放端口接收的回傳數(shù)據(jù)包的特征,確定所述設(shè)備應(yīng)用版本號(hào)對(duì)應(yīng)的第一漏洞信息,所述第一漏洞信息包括漏洞是否存在的信息;
4)當(dāng)確定所述設(shè)備應(yīng)用版本號(hào)對(duì)應(yīng)的設(shè)備是關(guān)鍵信息基礎(chǔ)設(shè)施時(shí),確定所述設(shè)備應(yīng)用版本號(hào)對(duì)應(yīng)的第二漏洞信息,所述第二漏洞信息包括漏洞屬性信息。
對(duì)于非關(guān)鍵信息基礎(chǔ)設(shè)施,探測(cè)的程度可以深入一些,通過回傳的數(shù)據(jù)包可以判斷漏洞是否已經(jīng)被修復(fù),而對(duì)于關(guān)鍵信息基礎(chǔ)設(shè)施,只能得到漏洞屬性信息。
對(duì)于工控網(wǎng)來說,上述對(duì)于漏洞的掃描,只是發(fā)送類似漏洞探測(cè)報(bào)文,不會(huì)對(duì)工控網(wǎng)產(chǎn)生任何危害。
漏洞掃描只做有針對(duì)性的掃描,根據(jù)設(shè)備應(yīng)用版本號(hào)選擇合適的漏洞驗(yàn)證程序,可以大量的降低掃描的頻率,提升掃描效率。
步驟s26,當(dāng)接收到來自入庫節(jié)點(diǎn)的調(diào)度指令時(shí),從所述消息隊(duì)列中獲取掃描結(jié)果,按照入庫規(guī)則,將所述掃描結(jié)果分批次存入數(shù)據(jù)庫。
其中,所述入庫節(jié)點(diǎn)為虛擬機(jī)節(jié)點(diǎn)。
根據(jù)不同的入庫規(guī)則,將所述待掃描ip地址與對(duì)應(yīng)的掃描結(jié)果分批次存入數(shù)據(jù)庫。例如,當(dāng)需要將具有相同協(xié)議類型的數(shù)據(jù)入庫時(shí),則將具有相同協(xié)議類型,以及對(duì)應(yīng)的漏洞信息、設(shè)備應(yīng)用版本號(hào)以及對(duì)應(yīng)的開放端口和待掃描ip地址入庫存儲(chǔ)。數(shù)據(jù)批量入庫,可以降低數(shù)據(jù)庫的訪問頻率,提升訪問效率。
通過圖2所示的流程圖以及上述描述,將海量ip地址對(duì)應(yīng)的在線設(shè)備漏洞掃描,進(jìn)行類似于流水線作業(yè)一樣無縫連接,提高了掃描效率。
另外,圖2所示的六個(gè)步驟分別由不同節(jié)點(diǎn)進(jìn)行執(zhí)行,對(duì)于掃描任務(wù)量大的步驟可以分配多個(gè)節(jié)點(diǎn)進(jìn)行處理,例如步驟s23,步驟s24和步驟s25,每個(gè)步驟多并發(fā)執(zhí)行,提高掃描效率,某個(gè)步驟任務(wù)積壓的多,可以提升該步驟的節(jié)點(diǎn)數(shù)量,保障流水線的無縫連接。另外,單個(gè)節(jié)點(diǎn)一段時(shí)間內(nèi)只做一種類型的掃描任務(wù),可以降低入侵檢測(cè)系統(tǒng)的報(bào)警率,有效的發(fā)現(xiàn)隱藏在防火墻nat之后的設(shè)備。
圖3是根據(jù)一示例性實(shí)施例示出的一種漏洞掃描裝置的示意性結(jié)構(gòu)框圖。
如圖3所示,本公開實(shí)施例提供的一種漏洞掃描裝置30,該裝置可以設(shè)置在計(jì)算機(jī)上,包括端口掃描單元31,存儲(chǔ)單元32,獲取單元33和漏洞掃描單元34。
其中,所述端口掃描單元31,用于針對(duì)待掃描ip地址,判斷所述待掃描ip地址對(duì)應(yīng)的待掃描設(shè)備是否具有開放端口;
所述存儲(chǔ)單元32,用于當(dāng)確定所述待掃描設(shè)備具有開放端口時(shí),將所述開放端口和對(duì)應(yīng)的所述待掃描ip地址存儲(chǔ)至消息隊(duì)列中;
所述獲取單元33,用于從所述消息隊(duì)列中獲取所述開放端口和對(duì)應(yīng)的所述待掃描ip地址;以及
所述漏洞掃描單元34,用于對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行漏洞掃描,以確定所述待掃描設(shè)備的所述開放端口的漏洞信息。
在本發(fā)明一實(shí)施例中,如圖4所示,所述漏洞掃描單元34還包括:
協(xié)議確定模塊41,用于根據(jù)協(xié)議指紋特征,確定所述開放端口的協(xié)議類型;
第一發(fā)送模塊42,用于將所述確定的協(xié)議類型、對(duì)應(yīng)的所述開放端口和待掃描ip地址下發(fā)到所述消息隊(duì)列中;
設(shè)備應(yīng)用掃描模塊43,用于從所述消息隊(duì)列中獲取所述確定的協(xié)議類型、以及對(duì)應(yīng)的所述開放端口和待掃描ip地址,以對(duì)所述待掃描ip地址對(duì)應(yīng)的所述待掃描設(shè)備進(jìn)行設(shè)備應(yīng)用掃描;
第二發(fā)送模塊44,用于將所述設(shè)備應(yīng)用掃描的掃描結(jié)果、所述協(xié)議類型、所述開放端口和所述待掃描ip地址下發(fā)到所述消息隊(duì)列中,其中,所述設(shè)備應(yīng)用掃描的掃描結(jié)果包括所述待掃描設(shè)備的設(shè)備應(yīng)用版本號(hào);
獲取模塊45,用于從所述消息隊(duì)列中獲取所述設(shè)備應(yīng)用掃描的掃描結(jié)果、所述協(xié)議類型、所述開放端口和所述待掃描ip地址;
漏洞確定模塊46,用于根據(jù)所述設(shè)備應(yīng)用掃描的掃描結(jié)果確定預(yù)設(shè)漏洞驗(yàn)證程序,以確定所述開放端口的漏洞信息,所述預(yù)設(shè)漏洞驗(yàn)證程序包括有漏洞信息。
所述協(xié)議確定模塊和第一發(fā)送模塊運(yùn)行于虛擬機(jī)1上,設(shè)備應(yīng)用掃描模塊和第二發(fā)送模塊運(yùn)行于虛擬機(jī)2上,獲取模塊和漏洞確定模塊運(yùn)行于虛擬機(jī)3上,上述3個(gè)虛擬機(jī)ip地址不同,且上述3個(gè)虛擬機(jī)也可以為3批虛擬機(jī)。每個(gè)步驟多并發(fā)執(zhí)行,提高掃描效率,某個(gè)步驟任務(wù)積壓的多,可以提升該步驟的節(jié)點(diǎn)數(shù)量,保障流水線的無縫連接。
關(guān)于上述實(shí)施例中的裝置,其中各個(gè)單元模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實(shí)施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的發(fā)明后,將容易想到本發(fā)明的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本發(fā)明的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本發(fā)明的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本發(fā)明的范圍僅由所附的權(quán)利要求來限制。