賈寶林,黃思蓓
(上海工業(yè)自動(dòng)化儀表研究院有限公司,上海 200233)
工業(yè)控制系統(tǒng)是現(xiàn)代工業(yè)基礎(chǔ)的核心。在互聯(lián)網(wǎng)與工業(yè)控制系統(tǒng)深入融合的背景下,越來(lái)越多的工控設(shè)備暴露在互聯(lián)網(wǎng)上[1]。因此,及時(shí)、準(zhǔn)確地發(fā)現(xiàn)這些工控設(shè)備存在的安全隱患,已成為當(dāng)務(wù)之急。
互聯(lián)網(wǎng)工控漏洞掃描系統(tǒng),可以有針對(duì)性地掃描互聯(lián)網(wǎng)工控設(shè)備,以及時(shí)發(fā)現(xiàn)可能存在的漏洞與隱患[2],并將其上報(bào)至相關(guān)單位,從而有效地降低設(shè)備被攻擊的風(fēng)險(xiǎn)。
互聯(lián)網(wǎng)工控漏洞掃描系統(tǒng)是在工業(yè)控制系統(tǒng)與物聯(lián)網(wǎng)、互聯(lián)網(wǎng)呈現(xiàn)出深度融合的背景下設(shè)計(jì)的?;ヂ?lián)網(wǎng)設(shè)備具有數(shù)量大、品類多的特點(diǎn)。由于IPv4數(shù)量總數(shù)的限制,互聯(lián)網(wǎng)上的IP多為動(dòng)態(tài)地址,具有一定的時(shí)效性。這就要求本系統(tǒng)在設(shè)計(jì)時(shí)需要足夠的掃描性能,以滿足在較短時(shí)間范圍內(nèi)完成一輪掃描的需求。本系統(tǒng)主要對(duì)象為工業(yè)控制設(shè)備。工業(yè)控制設(shè)備與傳統(tǒng)互聯(lián)網(wǎng)設(shè)備在安全機(jī)制及通信協(xié)議方面有著很大的差別。在工控系統(tǒng)中,存在多種標(biāo)準(zhǔn)通信協(xié)議,同時(shí)也有很多私有協(xié)議。利用傳統(tǒng)的漏洞掃描方法,無(wú)法正確探測(cè)出工控設(shè)備的相關(guān)信息。本系統(tǒng)支持多種工控通信協(xié)議,可以快速進(jìn)行主機(jī)存活判斷、開(kāi)放端口識(shí)別、設(shè)備信息提取操作,同時(shí)具備常見(jiàn)工業(yè)控制系統(tǒng)和軟件識(shí)別功能,如可編程邏輯控制器(programmable logic controller,PLC)、數(shù)據(jù)采集與監(jiān)控(supervisory control and data acquisition,SCADA)、分布式控制系統(tǒng)(distributed control system,DCS)、交換機(jī)等[3]。本系統(tǒng)集成了專業(yè)的工業(yè)控制系統(tǒng)安全漏洞庫(kù)。庫(kù)中整合了已公開(kāi)的工控相關(guān)漏洞信息,可覆蓋多種設(shè)備指紋,如廠商、型號(hào)、固件版本等。系統(tǒng)在對(duì)設(shè)備進(jìn)行識(shí)別后,將通過(guò)設(shè)備型號(hào)、固件版本等按系統(tǒng)內(nèi)部構(gòu)建的索引信息進(jìn)行自動(dòng)匹配[4],從而快速診斷出系統(tǒng)是否包含可能存在的漏洞。
本文提出一種互聯(lián)網(wǎng)工控漏洞掃描系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā)流程,并提供一種可行的架構(gòu),以便相關(guān)開(kāi)發(fā)和設(shè)計(jì)人員對(duì)互聯(lián)網(wǎng)工控漏洞掃描系統(tǒng)進(jìn)行設(shè)計(jì)和開(kāi)發(fā)。
互聯(lián)網(wǎng)工控漏洞掃描系統(tǒng)作為一個(gè)面向互聯(lián)網(wǎng)的漏洞掃描工具,其掃描對(duì)象具有掃描范圍大、對(duì)象種類多、掃描結(jié)果數(shù)據(jù)量大等特點(diǎn)。同時(shí),互聯(lián)網(wǎng)上對(duì)象IP多為動(dòng)態(tài)地址,實(shí)時(shí)性要求較高,需要在較短的時(shí)間內(nèi)完成掃描,并將數(shù)據(jù)進(jìn)行匯聚分析。為了讓用戶獲取實(shí)時(shí)性較高的信息,在系統(tǒng)設(shè)計(jì)過(guò)程中需要重點(diǎn)設(shè)計(jì)大規(guī)模掃描的方式;同時(shí),針對(duì)被掃對(duì)象分類復(fù)雜的特點(diǎn),要保證各探測(cè)手段靈活方便,以便動(dòng)態(tài)調(diào)整。本文提出一種將實(shí)時(shí)掃描貫穿于系統(tǒng)整個(gè)過(guò)程的設(shè)計(jì)方法,主要包括需求調(diào)研、數(shù)據(jù)分析、架構(gòu)設(shè)計(jì)、部署測(cè)試四個(gè)部分。每個(gè)部分都著重從用戶使用及系統(tǒng)有效性角度考慮,以滿足用戶預(yù)期效果。
工業(yè)控制系統(tǒng)是現(xiàn)代工業(yè)基礎(chǔ)的核心,廣泛用于石油化工、電力、軌道交通等領(lǐng)域,是國(guó)家基礎(chǔ)設(shè)施建設(shè)的重要組成部分。目前,超過(guò)80%的民生工程基礎(chǔ)設(shè)施依靠工控系統(tǒng)來(lái)實(shí)現(xiàn)自動(dòng)化作業(yè),工控安全問(wèn)題已經(jīng)上升到國(guó)家戰(zhàn)略高度。很多工業(yè)控制系統(tǒng)由于存在設(shè)計(jì)時(shí)未考慮安全、長(zhǎng)生命周期、采用商業(yè)信息技術(shù)(information technology,IT)和同外界連網(wǎng)等問(wèn)題[5],隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)在工控系統(tǒng)中的應(yīng)用日益增多,其系統(tǒng)被網(wǎng)絡(luò)中存在的惡意程序或者網(wǎng)絡(luò)攻擊破壞的風(fēng)險(xiǎn)大大增加[6]。同時(shí),隨著工業(yè)4.0、中國(guó)制造2025計(jì)劃的實(shí)施,5G的加速部署,物聯(lián)網(wǎng)等技術(shù)的逐漸普及,互聯(lián)網(wǎng)與工控系統(tǒng)有著深度融合的趨勢(shì)。因此,只有及時(shí)、準(zhǔn)確地探測(cè)互聯(lián)網(wǎng)中的工業(yè)控制設(shè)備是否存在漏洞,才能有效減少外部的攻擊威脅,將風(fēng)險(xiǎn)、經(jīng)濟(jì)損失降到最低。
本系統(tǒng)面向互聯(lián)網(wǎng)工控設(shè)備,與傳統(tǒng)網(wǎng)絡(luò)掃描有本質(zhì)區(qū)別,需要在準(zhǔn)確探測(cè)到設(shè)備信息的基礎(chǔ)上提高掃描性能,以確保數(shù)據(jù)的實(shí)時(shí)、有效性。
本系統(tǒng)在對(duì)掃描對(duì)象進(jìn)行探測(cè)時(shí),需要頻繁創(chuàng)建socket連接、開(kāi)關(guān)端口等操作。對(duì)于單個(gè)服務(wù)器,端口開(kāi)放的數(shù)量及并發(fā)線程數(shù),會(huì)有一定的數(shù)量限制,從而造成性能瓶頸。本系統(tǒng)掃描對(duì)象為互聯(lián)網(wǎng)設(shè)備,具有目標(biāo)數(shù)量大的特點(diǎn)。考慮到本系統(tǒng)對(duì)數(shù)據(jù)實(shí)時(shí)性的要求,單臺(tái)服務(wù)器架構(gòu)無(wú)法滿足現(xiàn)有的需求。本系統(tǒng)以集群的方式,突破單臺(tái)服務(wù)器的硬件限制,從而最大程度提高掃描性能[7]。
互聯(lián)網(wǎng)設(shè)備種類繁多,暴露在互聯(lián)網(wǎng)上的工控設(shè)備種類具有不確定性。為了覆蓋盡可能多的工控設(shè)備種類,對(duì)設(shè)備的指紋匹配具有較高的要求。本系統(tǒng)集成數(shù)十種工控指紋匹配模板,覆蓋西門子、施耐德、羅克韋爾、倍福、巴合曼、臺(tái)達(dá)、紅獅、歐姆龍、和利時(shí)、三菱、霍尼韋爾等國(guó)內(nèi)外知名廠商的PLC、DCS、SCADA等。
現(xiàn)有國(guó)內(nèi)外主流的漏洞共享平臺(tái)共三種:公共漏洞庫(kù)(CVE)、國(guó)家信息安全共享平臺(tái)(CNVD)、國(guó)家信息安全漏洞庫(kù)(CNNVD)。為最大化兼容、覆蓋各種漏洞,本系統(tǒng)將此三種漏洞信息匯總,以CVE為關(guān)聯(lián),集成統(tǒng)一的自有漏洞庫(kù),并在格式化后創(chuàng)建索引,以便快速匹配。
在經(jīng)過(guò)需求調(diào)研與數(shù)據(jù)分析之后,基本可以確定漏洞掃描系統(tǒng)所需要具備的功能點(diǎn)、性能要求及數(shù)據(jù)輸出要求等。接下來(lái)需要進(jìn)行詳細(xì)的功能設(shè)計(jì)。此階段主要考慮掃描系統(tǒng)的高效性、掃描探測(cè)手段的靈活性、掃描數(shù)據(jù)的準(zhǔn)確性以及漏洞匹配的精確性。因此,在架構(gòu)設(shè)計(jì)時(shí),需要以掃描性能與數(shù)據(jù)準(zhǔn)確性為中心,遵循數(shù)據(jù)實(shí)時(shí)性、準(zhǔn)確性等原則。
系統(tǒng)架構(gòu)設(shè)計(jì)主要分成以下四個(gè)部分:①掃描任務(wù)管理與掃描集群設(shè)計(jì);②掃描單元設(shè)計(jì);③漏洞匹配;④數(shù)據(jù)存儲(chǔ)。系統(tǒng)結(jié)構(gòu)圖如圖1所示。

圖1 系統(tǒng)結(jié)構(gòu)圖
①本系統(tǒng)面向的對(duì)象為互聯(lián)網(wǎng)設(shè)備,具有掃描對(duì)象數(shù)量大的特點(diǎn),同時(shí)互聯(lián)網(wǎng)上的設(shè)備多為動(dòng)態(tài)IP。這就需要掃描結(jié)果具有一定的時(shí)效性,盡可能在短時(shí)間內(nèi)完成一輪掃描,并將數(shù)據(jù)進(jìn)行匯總。為滿足這一需求,本系統(tǒng)采用了掃描集群的方式,可同時(shí)部署多臺(tái)掃描節(jié)點(diǎn)同步進(jìn)行掃描,然后統(tǒng)一入庫(kù)處理。該集群使用一個(gè)主節(jié)點(diǎn)+多個(gè)子節(jié)點(diǎn)的方式部署:主節(jié)點(diǎn)主要用于處理外部輸入的掃描任務(wù);子節(jié)點(diǎn)則用于具體的掃描過(guò)程。當(dāng)主節(jié)點(diǎn)接收到掃描任務(wù)后,根據(jù)當(dāng)前任務(wù)所需要掃描的范圍及數(shù)量,將當(dāng)前任務(wù)拆分為若干個(gè)子任務(wù),并通過(guò)中間件方式將子任務(wù)分發(fā)至各子節(jié)點(diǎn)中;各子節(jié)點(diǎn)接收到任務(wù)信息后開(kāi)啟掃描過(guò)程,并將實(shí)時(shí)掃描數(shù)據(jù)發(fā)送到數(shù)據(jù)存儲(chǔ)模塊。
②每一個(gè)掃描節(jié)點(diǎn)為一個(gè)掃描單元。各掃描單元本質(zhì)上為獨(dú)立的掃描系統(tǒng),具備整個(gè)掃描過(guò)程的完整功能。掃描單一對(duì)象時(shí),一般分為以下步驟:主機(jī)探測(cè)、端口發(fā)現(xiàn)、指紋匹配、設(shè)備信息提取、漏洞匹配、漏洞驗(yàn)證。掃描數(shù)據(jù)流如圖2所示。對(duì)于多掃描對(duì)象的任務(wù),采用線程池的方式;同時(shí),掃描多個(gè)對(duì)象,以達(dá)到并發(fā)掃描的效果。對(duì)于最為關(guān)鍵的指紋匹配過(guò)程,采用動(dòng)態(tài)配置的方式,只需要按指定的格式生成指紋探測(cè)模板,并添加模板描述信息,即可集成至本系統(tǒng)中,方便后續(xù)添加維護(hù)。
③本系統(tǒng)漏洞庫(kù)集成了CVE、CNVD、CNNVD三種官方漏洞庫(kù)。CNVD與CNNVD分別可與CVE漏洞進(jìn)行關(guān)聯(lián),根據(jù)三者之間的關(guān)系將三種漏洞集成為一體,構(gòu)建自有漏洞庫(kù)。同時(shí),將各漏洞所關(guān)聯(lián)的產(chǎn)品列表格式化后,以廠商、型號(hào)、版本三段式結(jié)構(gòu)建漏洞匹配索引;設(shè)計(jì)漏洞匹配服務(wù)程序,部署于主節(jié)點(diǎn)服務(wù)器進(jìn)行集中化管理。各子節(jié)點(diǎn)通過(guò)socket方式與漏洞匹配服務(wù)程序相關(guān),獲取匹配中的漏洞數(shù)據(jù)。

圖2 掃描數(shù)據(jù)流示意圖
漏洞匹配服務(wù)通信過(guò)程如圖3所示。

圖3 漏洞匹配服務(wù)通信過(guò)程示意圖
④本系統(tǒng)數(shù)據(jù)存儲(chǔ)采用Redis+Mysql兩種數(shù)據(jù)庫(kù)組合方式。Redis用于緩存臨時(shí)數(shù)據(jù),Mysql則用于存儲(chǔ)分類后的掃描結(jié)果。本系統(tǒng)采用掃描集群方式部署,在主節(jié)點(diǎn)部署Redis數(shù)據(jù)庫(kù)緩存臨時(shí)數(shù)據(jù)。各子節(jié)點(diǎn)掃描完指定對(duì)象后,無(wú)需與主節(jié)點(diǎn)進(jìn)行交互,直接將掃描數(shù)據(jù)存入Redis數(shù)據(jù)庫(kù)中。由獨(dú)立的程序從Redis中讀取緩存數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行分類、聚合后,存入Mysql中。當(dāng)入庫(kù)性能不夠時(shí),還可以開(kāi)啟多個(gè)入庫(kù)程序,以同時(shí)讀取緩存數(shù)據(jù)入庫(kù)。
本系統(tǒng)掃描集群設(shè)計(jì)、Redis緩存入庫(kù)設(shè)計(jì)、指紋探測(cè)等設(shè)計(jì)均為動(dòng)態(tài)部署,可根據(jù)現(xiàn)場(chǎng)設(shè)備條件及性能、掃描深度需求作出靈活調(diào)整。
系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)編碼完成后,需要進(jìn)行部署測(cè)試,驗(yàn)證設(shè)計(jì)的合理性,并進(jìn)行調(diào)試修改。其目標(biāo)是取得最佳的用戶體驗(yàn)。部署測(cè)試主要包括功能測(cè)試、性能測(cè)試、數(shù)據(jù)準(zhǔn)確性測(cè)試三部分。部署測(cè)試在隔離的虛擬環(huán)境下運(yùn)行,通過(guò)大量的虛擬目標(biāo)IP及虛擬設(shè)備[8],模擬出現(xiàn)實(shí)的互聯(lián)網(wǎng)環(huán)境,從而在有效驗(yàn)證系統(tǒng)各功能點(diǎn)的同時(shí),不會(huì)影響線上設(shè)備的正常運(yùn)行。
功能測(cè)試主要是為了保證整個(gè)系統(tǒng)各功能點(diǎn)符合預(yù)期的效果,包括掃描任務(wù)的狀態(tài)、掃描集群間通信、掃描數(shù)據(jù)流轉(zhuǎn)、數(shù)據(jù)完整性等。性能測(cè)試主要是為了保證整個(gè)系統(tǒng)運(yùn)行的高效性。通過(guò)部署多個(gè)掃描結(jié)點(diǎn),對(duì)虛擬環(huán)境下的目標(biāo)對(duì)象進(jìn)行大規(guī)模掃描探測(cè);通過(guò)交換機(jī)監(jiān)測(cè)數(shù)據(jù)包速率,對(duì)實(shí)時(shí)掃描結(jié)果進(jìn)行匯總,計(jì)算單位時(shí)間內(nèi)完成掃描的數(shù)量,并作出相應(yīng)的調(diào)整優(yōu)化,以符合預(yù)期的效果。數(shù)據(jù)準(zhǔn)確性測(cè)試主要包括在掃描過(guò)程中,獲取的各對(duì)象數(shù)據(jù)與實(shí)際信息是否一致,以及匹配到的漏洞與公開(kāi)的漏洞信息是否一致。通過(guò)部署測(cè)試,以及后續(xù)的調(diào)試優(yōu)化,使整個(gè)系統(tǒng)達(dá)到預(yù)期的效果,基本符合設(shè)計(jì)要求。
研究者為某地區(qū)部門設(shè)計(jì)互聯(lián)網(wǎng)工控漏洞掃描系統(tǒng),經(jīng)上級(jí)主管部門批準(zhǔn),對(duì)指定范圍內(nèi)的互聯(lián)網(wǎng)設(shè)備進(jìn)行漏洞掃描。其掃描對(duì)象數(shù)量級(jí)達(dá)到千萬(wàn)級(jí)。通過(guò)部署掃描集群的方式,高效的掃描可能存在漏洞,在數(shù)天內(nèi)即可完成一個(gè)周期的掃描任務(wù)。后續(xù)可通過(guò)增加掃描節(jié)點(diǎn),進(jìn)一步縮短掃描周期,為用戶提供實(shí)時(shí)、精準(zhǔn)的數(shù)據(jù)信息。
通過(guò)調(diào)整掃描集群部署配置,調(diào)整掃描結(jié)點(diǎn)、Redis緩存數(shù)據(jù)庫(kù)、漏洞匹配服務(wù)器等資源配置,使掃描性能達(dá)到最優(yōu)。通過(guò)調(diào)整指紋匹配模板,對(duì)工控設(shè)備進(jìn)行針對(duì)性掃描,以獲取詳細(xì)的設(shè)備信息,保證漏洞掃描的準(zhǔn)確性。
隨著現(xiàn)階段工控系統(tǒng)、物聯(lián)網(wǎng)、互聯(lián)網(wǎng)的深度融合[9],暴露在互聯(lián)網(wǎng)上的工控設(shè)備與物聯(lián)網(wǎng)設(shè)備數(shù)量與日俱增。快速、及時(shí)地發(fā)現(xiàn)這些設(shè)備可能存在的漏洞,對(duì)于減少可能存在的危害、避免造成直接的經(jīng)濟(jì)損失,起著關(guān)鍵作用。
本文圍繞我國(guó)工控網(wǎng)絡(luò)與互聯(lián)網(wǎng)融合后安全領(lǐng)域相關(guān)的現(xiàn)實(shí)需求,提出了互聯(lián)網(wǎng)工控漏洞掃描系統(tǒng)的設(shè)計(jì)方法。通過(guò)需求調(diào)研、數(shù)據(jù)分析、架構(gòu)設(shè)計(jì)、部署測(cè)試等一套完整的流程,設(shè)計(jì)了高性能、高有效性的漏洞掃描系統(tǒng)。該系統(tǒng)能對(duì)暴露在互聯(lián)網(wǎng)上的工控設(shè)備進(jìn)行針對(duì)性掃描, 以及時(shí)、有效地發(fā)現(xiàn)可能存的威脅與漏洞。此設(shè)計(jì)過(guò)程可以在一定程度上為漏洞掃描系統(tǒng)設(shè)計(jì)提供設(shè)計(jì)流程上的參考,也可以在架構(gòu)設(shè)計(jì)上為設(shè)計(jì)人員漏洞掃描系統(tǒng)設(shè)計(jì)提供可行的方案。