鄭鐵軍,王 齊,張宏杰,賀建偉,雍少華,孫知信
(1.國(guó)網(wǎng)寧夏電力有限公司,寧夏 銀川 750010;2.國(guó)網(wǎng)智能電網(wǎng)研究院有限公司,江蘇 南京 210003;3.信息網(wǎng)絡(luò)安全國(guó)網(wǎng)重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210003;4.國(guó)網(wǎng)中衛(wèi)供電公司,寧夏 中衛(wèi) 755099;5.南京郵電大學(xué) 現(xiàn)代郵政學(xué)院,江蘇 南京 210003)
工業(yè)控制系統(tǒng)(Industrial Control System,ICS)是電力、冶金、交通、能源等工業(yè)基礎(chǔ)設(shè)施的核心組成部分,也是國(guó)民經(jīng)濟(jì)、社會(huì)運(yùn)行和國(guó)家安全的重要基礎(chǔ)。自2019年以來(lái),受全球新冠疫情的影響,很多工作人員不得不在家里通過(guò)虛擬專用網(wǎng)絡(luò)(Virtual Private Network,VPN)連接ICS實(shí)現(xiàn)居家辦公,這加速了公共互聯(lián)網(wǎng)與工業(yè)控制網(wǎng)絡(luò)的融合,使工業(yè)控制網(wǎng)絡(luò)與公共互聯(lián)網(wǎng)的界限變得越來(lái)越模糊,打破了ICS的封閉性,導(dǎo)致ICS也將面臨公共互聯(lián)網(wǎng)中存在的各種安全問(wèn)題[1-2]。
國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心CNCERT發(fā)布的《2021年上半年我國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全監(jiān)測(cè)數(shù)據(jù)分析報(bào)告》顯示[3],大量暴露在互聯(lián)網(wǎng)的工控設(shè)備類型有串口服務(wù)器、可編程邏輯控制器等;存在高危漏洞的系統(tǒng)涉及電力、石油、煤炭、城市軌道交通等重點(diǎn)行業(yè),覆蓋企業(yè)生產(chǎn)管理、企業(yè)經(jīng)濟(jì)管理、政府監(jiān)管、工業(yè)云平臺(tái)等。由于暴露在互聯(lián)網(wǎng)中的工控設(shè)備類型越來(lái)越多,ICS應(yīng)用行業(yè)越來(lái)越豐富,運(yùn)行環(huán)境越來(lái)越復(fù)雜,ICS面臨著前所未有的挑戰(zhàn)。如果不能很好地防范ICS的安全,那么一旦被攻擊帶來(lái)的人力物力財(cái)力等各方面的損失將是不可估量的。思科的Talos安全研究團(tuán)隊(duì)在2018年發(fā)文指出美國(guó)羅克韋爾自動(dòng)化公司的Allen-Bradley MicroLogix 1400系列可編程邏輯控制器中存在多項(xiàng)嚴(yán)重安全漏洞[4],一旦被黑客利用,很可能會(huì)發(fā)起拒絕服務(wù)攻擊、篡改設(shè)備配置、修改內(nèi)存模塊上的數(shù)據(jù)等。因此,解決和強(qiáng)化ICS安全問(wèn)題的關(guān)鍵是通過(guò)網(wǎng)絡(luò)資產(chǎn)探測(cè)技術(shù)實(shí)時(shí)監(jiān)測(cè)工控設(shè)備的資產(chǎn)信息,及時(shí)發(fā)現(xiàn)系統(tǒng)漏洞[5-6]。
工控設(shè)備資產(chǎn)探測(cè)的流程主要包括:端口探活、協(xié)議數(shù)據(jù)包構(gòu)造、通信連接建立和數(shù)據(jù)收集。首先,對(duì)工控設(shè)備進(jìn)行端口探活,獲取運(yùn)行指定工控協(xié)議的設(shè)備;然后,構(gòu)造對(duì)應(yīng)協(xié)議的探測(cè)數(shù)據(jù)包,與目標(biāo)設(shè)備經(jīng)過(guò)三次握手建立通信連接;最后,根據(jù)目標(biāo)設(shè)備的響應(yīng)數(shù)據(jù)包解析其資產(chǎn)信息。其中,端口探活需要首先確定被掃描的主機(jī)是否可達(dá),然后掃描可達(dá)主機(jī)是否開(kāi)啟了指定的工控端口。對(duì)主機(jī)可達(dá)性的確認(rèn)采用ping檢測(cè)技術(shù),通過(guò)構(gòu)造特定的ICMP數(shù)據(jù)包,然后發(fā)送給目標(biāo)主機(jī),根據(jù)目標(biāo)主機(jī)的響應(yīng)判斷是否存活。然而大多數(shù)的工控設(shè)備為了防止被掃描,通常會(huì)開(kāi)啟禁ping功能,將降低設(shè)備探活的準(zhǔn)確性,從而影響資產(chǎn)探測(cè)的效率。此外,對(duì)可達(dá)主機(jī)端口的掃描最常采用的是全連接掃描和無(wú)狀態(tài)掃描,但不管采用哪一種掃描方式都需要設(shè)置timeout參數(shù),等待目標(biāo)主機(jī)的響應(yīng)。當(dāng)進(jìn)行大規(guī)模掃描時(shí),等待時(shí)間將會(huì)成為提高掃描速度的瓶頸。
因此,該文旨在提高端口探活的準(zhǔn)確性和速度,對(duì)端口探活過(guò)程中的主機(jī)存活掃描技術(shù)和端口掃描技術(shù)進(jìn)行研究,提出一種基于組合掃描的異步無(wú)狀態(tài)掃描方法,獲取開(kāi)放指定工控協(xié)議端口的設(shè)備,然后結(jié)合具體的工控協(xié)議構(gòu)造請(qǐng)求數(shù)據(jù)包,從而收集設(shè)備的資產(chǎn)信息,為系統(tǒng)漏洞安全問(wèn)題的發(fā)現(xiàn)提供依據(jù)。
工控設(shè)備的資產(chǎn)信息是指可以標(biāo)識(shí)設(shè)備的相關(guān)信息,包括設(shè)備的供應(yīng)商、修訂版本、產(chǎn)品代碼等數(shù)據(jù)。目前,對(duì)工控設(shè)備進(jìn)行資產(chǎn)探測(cè)的方法主要是基于傳統(tǒng)互聯(lián)網(wǎng)設(shè)備的探測(cè)技術(shù)。國(guó)外針對(duì)工控設(shè)備探測(cè)技術(shù)開(kāi)展了一系列的研究,開(kāi)發(fā)了很多功能強(qiáng)大的探測(cè)工具,其中使用較為廣泛的是Flody公司發(fā)布的Nmap探測(cè)工具[7],并且很多其他探測(cè)工具都是由Nmap延伸開(kāi)發(fā)出來(lái)的,比如Shodan[8]和Zmap[9]。Nmap是一種基于協(xié)議的網(wǎng)絡(luò)探測(cè)工具,適用于快速掃描大型網(wǎng)絡(luò)。除此之外,它還可以用來(lái)獲取目標(biāo)設(shè)備的操作系統(tǒng)類型、服務(wù)類型等。它的探測(cè)原理與ping檢測(cè)技術(shù)類似,并且可以實(shí)現(xiàn)對(duì)多種協(xié)議的探測(cè),但是由于很多工控設(shè)備通常會(huì)開(kāi)啟禁ping功能,所以使得Nmap對(duì)工控設(shè)備的探測(cè)準(zhǔn)確率較低。
J.Matherly通過(guò)長(zhǎng)期對(duì)工控設(shè)備探測(cè)技術(shù)的研究,在Nmap探測(cè)工具的基礎(chǔ)上發(fā)布了Shodan網(wǎng)絡(luò)空間探測(cè)引擎[8,10]。Shodan可以直接通過(guò)互聯(lián)網(wǎng)查找物聯(lián)網(wǎng)設(shè)備,然而由于Shodan對(duì)工控設(shè)備的掃描原理是基于Nmap的掃描方式,所以在探測(cè)性能方面并沒(méi)有得到優(yōu)化和提升,仍然面臨著對(duì)工控設(shè)備探測(cè)準(zhǔn)確率較低的問(wèn)題。
為了進(jìn)一步提升探測(cè)速度,密歇根大學(xué)在Nmap工具的基礎(chǔ)上設(shè)計(jì)開(kāi)發(fā)了Zmap設(shè)備掃描器,該掃描器主要功能是發(fā)現(xiàn)開(kāi)放端口[9,11]。因?yàn)閆map使用了無(wú)狀態(tài)連接的掃描方式進(jìn)行端口掃描,所以它的掃描速度比Nmap快了1 300倍,在1 GB帶寬的網(wǎng)絡(luò)環(huán)境下,掃描全部IPV4地址空間只需要45分鐘。然而,由于其追求探測(cè)速度,等待與目標(biāo)設(shè)備建立連接的時(shí)間很短,所以探測(cè)到的資產(chǎn)信息量比較少,使得其探測(cè)準(zhǔn)確率較低。
國(guó)內(nèi)在工控設(shè)備資產(chǎn)探測(cè)方面也取得了一些成果,文獻(xiàn)[12]設(shè)計(jì)了一種工業(yè)控制系統(tǒng)掃描平臺(tái)(ICSMap),該平臺(tái)將Nmap和Zmap進(jìn)行了結(jié)合,優(yōu)化了探測(cè)的效率,并且支持掃描多種工控協(xié)議,但是探測(cè)的準(zhǔn)確率并沒(méi)有得到優(yōu)化。文獻(xiàn)[13-14]針對(duì)西門(mén)子工控設(shè)備提出了一種基于Profinet協(xié)議的掃描方法,該方法利用Profinet協(xié)議獲取西門(mén)子工控設(shè)備的資產(chǎn)信息,但是該方法僅適用于對(duì)西門(mén)子廠商生產(chǎn)出來(lái)的工控設(shè)備進(jìn)行探測(cè),不支持其他工控協(xié)議。文獻(xiàn)[15]提出了一種基于NSE腳本的工業(yè)互聯(lián)網(wǎng)設(shè)備探測(cè)方法,可支持多種工控協(xié)議。但是該方法只是增加了支持的工控協(xié)議種類,并沒(méi)有優(yōu)化探測(cè)性能。文獻(xiàn)[5,16]專門(mén)提出了一種針對(duì)工控設(shè)備的通用資產(chǎn)探測(cè)方法,可同時(shí)支持Modbus、S7、DNP3和BACnet四種工控協(xié)議,并且在端口探活階段通過(guò)增加數(shù)據(jù)包的發(fā)送,以解決工控設(shè)備中的禁ping問(wèn)題。然而由于對(duì)工控設(shè)備的探測(cè)通常集中在某個(gè)網(wǎng)段,涉及的設(shè)備數(shù)量比較多,如果端口探活階段增加數(shù)據(jù)包的數(shù)量很有可能引起網(wǎng)絡(luò)擁塞,另外等待目標(biāo)設(shè)備響應(yīng)而設(shè)置的timeout參數(shù)也會(huì)成為提升掃描速度的瓶頸。因此,基于上述研究,該文旨在提高工控設(shè)備資產(chǎn)探測(cè)的速度和準(zhǔn)確性。
對(duì)傳統(tǒng)互聯(lián)網(wǎng)的探測(cè)往往是對(duì)一臺(tái)或者幾臺(tái)設(shè)備進(jìn)行一些常用端口或者全部端口的探測(cè),目的是全面收集這些探測(cè)設(shè)備端口的開(kāi)啟和關(guān)閉情況、設(shè)備信息和安全漏洞等,通常情況,對(duì)一臺(tái)設(shè)備的探測(cè)時(shí)間會(huì)比較久。與傳統(tǒng)互聯(lián)網(wǎng)不同,對(duì)工控設(shè)備的探測(cè)通常集中在某個(gè)網(wǎng)段,涉及的設(shè)備數(shù)量比較多,如果對(duì)大量沒(méi)有開(kāi)啟的端口或者不運(yùn)行的設(shè)備發(fā)送大量探測(cè)數(shù)據(jù)包,將會(huì)造成系統(tǒng)資源的不必要浪費(fèi),導(dǎo)致探測(cè)效率的降低。因此,該文首先對(duì)端口進(jìn)行探活,初步發(fā)現(xiàn)探測(cè)的網(wǎng)段中有哪些設(shè)備正在運(yùn)行。
端口探活技術(shù)包括主機(jī)掃描技術(shù)和端口掃描技術(shù)兩種類型。主機(jī)掃描是收集探測(cè)信息的第一步,以確定掃描的目標(biāo)主機(jī)是否可達(dá)。主機(jī)存活掃描利用的最基本手段是ping命令,通過(guò)ping命令來(lái)探測(cè)能否與目標(biāo)主機(jī)建立通信連接。然而大多數(shù)的工控設(shè)備為了防止被掃描,通常會(huì)開(kāi)啟禁ping功能。此時(shí)就無(wú)法通過(guò)ping命令判斷設(shè)備的狀態(tài),從而降低了探測(cè)的準(zhǔn)確性。當(dāng)通過(guò)主機(jī)掃描技術(shù)確認(rèn)了目標(biāo)主機(jī)的連接狀態(tài)后,接下來(lái)就利用端口掃描技術(shù)對(duì)處于運(yùn)行狀態(tài)的設(shè)備進(jìn)行端口開(kāi)放情況的探測(cè)。傳統(tǒng)的端口掃描方式主要是通過(guò)TCP三次握手去連接,而建立連接過(guò)程中存在的連接狀態(tài)是由操作系統(tǒng)在底層實(shí)現(xiàn)存儲(chǔ)的,需要消耗大量的系統(tǒng)資源,從而限制了端口掃描的速度,延長(zhǎng)了探測(cè)周期。
為了解決工控設(shè)備因開(kāi)啟禁ping命令而引起探測(cè)準(zhǔn)確性降低的問(wèn)題,目前常用的方法是構(gòu)造多個(gè)不同的數(shù)據(jù)包,在對(duì)目標(biāo)主機(jī)進(jìn)行探活時(shí)依次將多個(gè)報(bào)文發(fā)送給目標(biāo)設(shè)備,只要能收到其中一個(gè)報(bào)文的回復(fù),就說(shuō)明目標(biāo)設(shè)備是處于開(kāi)啟狀態(tài)的[5,16]。這種方式雖然能避免禁ping和丟包造成的錯(cuò)誤判斷,但是主機(jī)探活過(guò)程將產(chǎn)生大量數(shù)據(jù)包,不僅浪費(fèi)系統(tǒng)資源,而且容易引起網(wǎng)絡(luò)擁塞。在端口掃描階段,為了提高端口掃描速度和節(jié)約系統(tǒng)資源,產(chǎn)生了一種無(wú)狀態(tài)的連接方式,無(wú)狀態(tài)連接是指主機(jī)不需要關(guān)心TCP連接的狀態(tài)。無(wú)狀態(tài)連接的通信過(guò)程如圖1所示。首先掃描主機(jī)向目標(biāo)主機(jī)發(fā)送一個(gè)SYN數(shù)據(jù)包,然后等待目標(biāo)主機(jī)回復(fù)SYN+ACK包,之后發(fā)送RST取消建立連接。因整個(gè)過(guò)程沒(méi)有完成TCP的三次握手連接,所以不會(huì)占用操作系統(tǒng)的TCP/IP協(xié)議棧資源,也不需要操作系統(tǒng)對(duì)連接狀態(tài)進(jìn)行會(huì)話組包。這種方式可以極大地提高端口掃描的速度,但是,TCP SYN掃描很容易被對(duì)方的入侵檢測(cè)系統(tǒng)或防火墻檢測(cè)到,并且需要設(shè)置timeout參數(shù)等待目標(biāo)主機(jī)的回復(fù)。
圖1 無(wú)狀態(tài)鏈接通信過(guò)程
因此,該文提出一種基于組合掃描的異步無(wú)狀態(tài)端口掃描方法,通過(guò)建立發(fā)送數(shù)據(jù)包線程和接收數(shù)據(jù)包線程,來(lái)消除等待目標(biāo)服務(wù)端回復(fù)的時(shí)間,以進(jìn)一步提升掃描速度,并且發(fā)送數(shù)據(jù)包線程采用組合掃描的方式,同時(shí)實(shí)現(xiàn)對(duì)主機(jī)存活狀態(tài)和端口開(kāi)關(guān)狀態(tài)的判斷。組合掃描的過(guò)程如圖2所示。
圖2 組合掃描過(guò)程
組合掃描是同時(shí)發(fā)送TCP RST數(shù)據(jù)包和TCP FIN+ACK數(shù)據(jù)包到目標(biāo)主機(jī)。根據(jù)RFC 793協(xié)議規(guī)定,當(dāng)主機(jī)收到TCP RST數(shù)據(jù)包時(shí),盡管TCP堆棧不會(huì)響應(yīng)這個(gè)類型的數(shù)據(jù)包,但如果無(wú)法訪問(wèn)目標(biāo)計(jì)算機(jī),路由器將發(fā)送ICMP數(shù)據(jù)包。因此,如果沒(méi)有返回ICMP數(shù)據(jù)包,則表示目標(biāo)存在;否則,目標(biāo)不存在。這個(gè)操作可以用來(lái)判斷目標(biāo)主機(jī)是否被過(guò)濾,能更多地獲取工控設(shè)備的存活信息,避免因?yàn)榻鹥ing問(wèn)題而做出錯(cuò)誤判斷,大大提高端口探測(cè)的準(zhǔn)確率。當(dāng)向目標(biāo)主機(jī)發(fā)送TCP FIN+ACK數(shù)據(jù)包時(shí),若未收到響應(yīng),則表示目標(biāo)端口打開(kāi)或者目標(biāo)主機(jī)被過(guò)濾;若收到RST數(shù)據(jù)包,則表示目標(biāo)端口關(guān)閉。這個(gè)操作可以有效降低被對(duì)方的防火墻或入侵檢測(cè)系統(tǒng)監(jiān)測(cè)到的概率,因?yàn)樵摲椒](méi)有完成完整的連接操作,所以對(duì)方不會(huì)認(rèn)為是一種掃描或攻擊,而只會(huì)認(rèn)為是一次網(wǎng)絡(luò)錯(cuò)誤的發(fā)生,從而不會(huì)被記錄下來(lái)。
掃描過(guò)程啟動(dòng)后,掃描主機(jī)會(huì)對(duì)網(wǎng)卡建立一對(duì)異步處理線程,分別是發(fā)送數(shù)據(jù)包線程和接收數(shù)據(jù)包線程[17]。發(fā)送數(shù)據(jù)包線程將構(gòu)造好的組合掃描數(shù)據(jù)包發(fā)送給目標(biāo)主機(jī),如果目標(biāo)主機(jī)返回響應(yīng)數(shù)據(jù)包,響應(yīng)數(shù)據(jù)包由接收數(shù)據(jù)包線程接收,并解析收到的數(shù)據(jù)包。整個(gè)過(guò)程中,發(fā)送數(shù)據(jù)包線程只負(fù)責(zé)發(fā)送構(gòu)造好的探測(cè)數(shù)據(jù)包,接收數(shù)據(jù)包線程只負(fù)責(zé)接收目標(biāo)主機(jī)的響應(yīng)數(shù)據(jù)包,兩者之間沒(méi)有交互,從而消除了傳統(tǒng)無(wú)狀態(tài)連接的回復(fù)等待時(shí)間,具體工作流程如圖3所示。
圖3 基于組合掃描的異步無(wú)狀態(tài)端口掃描工作流程
為了更好地實(shí)現(xiàn)異步操作,在啟動(dòng)發(fā)送數(shù)據(jù)包線程和接收數(shù)據(jù)包線程后,將發(fā)送數(shù)據(jù)包線程分配到偶數(shù)編號(hào)的CPU,接收數(shù)據(jù)包線程分配到奇數(shù)編號(hào)的CPU。發(fā)送和接收數(shù)據(jù)包線程的具體執(zhí)行流程如下:發(fā)送線程首先創(chuàng)建一個(gè)指向外部變量的指針,用于通知線程內(nèi)發(fā)送數(shù)據(jù)包的數(shù)量以及當(dāng)前的發(fā)送速度等信息,然后發(fā)送數(shù)據(jù)包線程初始化被掃描網(wǎng)段的IP和端口,設(shè)置數(shù)據(jù)包的初始發(fā)送速度,接著根據(jù)被掃描網(wǎng)段的IP數(shù)和每個(gè)IP端口數(shù)的乘積來(lái)確定需要執(zhí)行的掃描數(shù)量,最后循環(huán)發(fā)送組合掃描數(shù)據(jù)包,直到完成指定掃描數(shù)量,進(jìn)入下一網(wǎng)段的掃描。接收線程同樣首先創(chuàng)建一個(gè)指向外部變量的指針,用于通知線程內(nèi)接收數(shù)據(jù)包的數(shù)量以及當(dāng)前的接收速度等信息,然后創(chuàng)建接收表記錄響應(yīng)數(shù)據(jù)包的信息,并根據(jù)響應(yīng)數(shù)據(jù)包輸出端口開(kāi)放情況。
以Modbus工控協(xié)議[18]為例,它是一種基于以太網(wǎng)TCP/IP的應(yīng)用層通信傳輸協(xié)議,廣泛應(yīng)用在分散控制方面。運(yùn)行Modbus協(xié)議的設(shè)備資產(chǎn)探測(cè)通信流程如圖4所示。Modbus協(xié)議常用的端口號(hào)是502,通過(guò)上述端口探活流程,獲取開(kāi)啟了502端口的工控設(shè)備,然后掃描主機(jī)向目標(biāo)工控設(shè)備的目標(biāo)端口發(fā)起TCP三次握手連接。通信連接建立后,掃描主機(jī)首先構(gòu)造Modbus通信請(qǐng)求數(shù)據(jù)包,構(gòu)造的Modbus通信請(qǐng)求數(shù)據(jù)包如表1所示。Modbus數(shù)據(jù)包中的字段是由十六進(jìn)制編碼構(gòu)成的,前兩個(gè)字節(jié)00 00為此次通信事務(wù)處理標(biāo)識(shí)符,通常每次通信之后會(huì)加1以區(qū)別不同的通信數(shù)據(jù)報(bào)文。接下來(lái)的兩個(gè)字節(jié)00 00表示Modbus的協(xié)議標(biāo)識(shí)符,00 06為數(shù)據(jù)長(zhǎng)度,單位是字節(jié),這里表示的是請(qǐng)求6個(gè)字節(jié)的數(shù)據(jù)信息。09是設(shè)備地址,即這臺(tái)設(shè)備中包含資產(chǎn)信息的寄存器編號(hào),以上7個(gè)字節(jié)稱為Modbus的報(bào)文頭。03為功能碼,表示讀取保持寄存器。00 00為起始地址;00 01為讀取的寄存器數(shù),即從00 00開(kāi)始讀取6個(gè)字節(jié),并且只讀1個(gè)資產(chǎn)信息寄存器。然后將此數(shù)據(jù)包發(fā)送給目標(biāo)設(shè)備,之后目標(biāo)設(shè)備返回6個(gè)字節(jié)數(shù)據(jù)的資產(chǎn)信息,通常包含有工控設(shè)備供應(yīng)商、產(chǎn)品型號(hào)、版本號(hào)等[19]。
表1 構(gòu)造的Modbus通信請(qǐng)求數(shù)據(jù)包
圖4 Modbus工控設(shè)備資產(chǎn)探測(cè)通信流程
為了驗(yàn)證提出的資產(chǎn)探測(cè)方法在探測(cè)準(zhǔn)確度和探測(cè)時(shí)間上的優(yōu)勢(shì),選取傳統(tǒng)資產(chǎn)探測(cè)工具Nmap和文獻(xiàn)[16]提出的資產(chǎn)探測(cè)方法作為對(duì)比進(jìn)行實(shí)驗(yàn)驗(yàn)證。探測(cè)準(zhǔn)確度和探測(cè)時(shí)間的定義如下:
探測(cè)準(zhǔn)確度:在端口探活階段,單位時(shí)間內(nèi)探測(cè)到的開(kāi)放指定端口的IP數(shù)量。IP數(shù)量越多,說(shuō)明探活的準(zhǔn)確度越高,能夠獲得資產(chǎn)信息的設(shè)備數(shù)越多。
探測(cè)時(shí)間:在指定網(wǎng)段內(nèi)完成完整資產(chǎn)探測(cè)所需的時(shí)間,包括端口探活時(shí)間和獲取設(shè)備資產(chǎn)信息的時(shí)間,探測(cè)時(shí)間越短,說(shuō)明探測(cè)速度越快。
端口探活階段是掃描主機(jī)與目標(biāo)工控設(shè)備建立初步通信的階段,這個(gè)階段的準(zhǔn)確性將對(duì)后面探測(cè)具體資產(chǎn)信息的工作產(chǎn)生直接影響。為了保證探測(cè)準(zhǔn)確度不受網(wǎng)絡(luò)環(huán)境的影響,實(shí)驗(yàn)選定的探測(cè)范圍為同一IP范圍段,并且是三臺(tái)主機(jī)在同一時(shí)間段內(nèi)并行運(yùn)行不同資產(chǎn)探測(cè)方法。此外,用Python編寫(xiě)腳本以實(shí)時(shí)記錄探活數(shù)量和探活時(shí)間,統(tǒng)計(jì)一段時(shí)間內(nèi)探活到的開(kāi)放指定端口的IP數(shù)量。實(shí)驗(yàn)如無(wú)特殊說(shuō)明,均以Modbus的502端口為探測(cè)的目標(biāo)端口,這是因?yàn)镸odbus協(xié)議在工控設(shè)備中的應(yīng)用較多,能夠進(jìn)行探測(cè)的IP范圍較為廣泛,測(cè)試結(jié)果如圖5所示。
圖5 Modbus端口探活結(jié)果
由圖5可以看出,提出的基于組合掃描的異步無(wú)狀態(tài)端口掃描方法在單位時(shí)間上探測(cè)到的IP數(shù)量明顯增多,這說(shuō)明在同一IP范圍段,提出的方法能夠獲取更多設(shè)備的資產(chǎn)信息。從具體數(shù)據(jù)上來(lái)看,在實(shí)驗(yàn)呈現(xiàn)的時(shí)間段內(nèi),所提方法的探測(cè)準(zhǔn)確度與Nmap相比提高了2倍左右。這是因?yàn)椴捎玫慕M合掃描方式可以有效降低被對(duì)方防火墻或入侵檢測(cè)系統(tǒng)監(jiān)測(cè)到的概率,并避免了因工控設(shè)備開(kāi)啟禁ping導(dǎo)致主機(jī)探活失敗的問(wèn)題。雖然文獻(xiàn)[16]在探活階段通過(guò)向目標(biāo)設(shè)備依次發(fā)送5個(gè)探測(cè)報(bào)文來(lái)應(yīng)對(duì)工控設(shè)備禁ping的問(wèn)題,但是探活過(guò)程產(chǎn)生的大量數(shù)據(jù)包將增加網(wǎng)絡(luò)的傳輸和處理時(shí)延,使得其在單位時(shí)間內(nèi)探活到的IP數(shù)量少于所提方法。
接下來(lái)對(duì)資產(chǎn)探測(cè)時(shí)間進(jìn)行對(duì)比分析,統(tǒng)計(jì)采用所提方法、文獻(xiàn)[16]方法和Nmap探測(cè)工具完成指定網(wǎng)段內(nèi)完整資產(chǎn)探測(cè)所需的時(shí)間,并進(jìn)行多次重復(fù)探測(cè),分別記錄每次探測(cè)的時(shí)間,然后計(jì)算平均值,圖6所示柱狀圖記錄了每次完成探測(cè)的時(shí)間及其平均值。由圖可以看出,所提方法完成完整資產(chǎn)探測(cè)所花費(fèi)的時(shí)間最短。這是因?yàn)樗岱椒ㄔ诙丝谔交铍A段對(duì)探活數(shù)據(jù)包的處理采用異步方式,消除了全連接掃描和傳統(tǒng)無(wú)狀態(tài)連接掃描的連接建立時(shí)間和回復(fù)等待時(shí)間,提升了端口探活的效率。從具體數(shù)據(jù)上來(lái)看,所提方法與傳統(tǒng)探測(cè)工具Nmap相比,在探測(cè)時(shí)間上縮短了約50%;與文獻(xiàn)[16]提出的方法相比,探測(cè)時(shí)間縮短了約20%。通過(guò)對(duì)上述兩組實(shí)驗(yàn)結(jié)果的分析,所提方法與文獻(xiàn)[16]和傳統(tǒng)資產(chǎn)探測(cè)工具Nmap相比,可以有效提升資產(chǎn)探測(cè)的速度和準(zhǔn)確性。
圖6 探測(cè)時(shí)間對(duì)比結(jié)果
為了提升工控設(shè)備資產(chǎn)探測(cè)的速度和準(zhǔn)確性,提出了一種基于組合掃描的異步無(wú)狀態(tài)工控設(shè)備資產(chǎn)探測(cè)方法。該方法主要對(duì)資產(chǎn)探測(cè)過(guò)程中的端口探活過(guò)程進(jìn)行改進(jìn),通過(guò)異步處理方式提升端口探活的效率,以縮短資產(chǎn)探測(cè)時(shí)間,并采用組合掃描降低被對(duì)方入侵檢測(cè)系統(tǒng)監(jiān)測(cè)到的概率,確保端口探測(cè)的準(zhǔn)確率。最后的測(cè)試實(shí)驗(yàn)結(jié)果證明了該方法的有效性。