王朝棟,張雪帆,欒少群
(工業(yè)互聯(lián)網(wǎng)創(chuàng)新中心(上海)有限公司,上海 200032)
隨著工控網(wǎng)絡(luò)從相對封閉轉(zhuǎn)變?yōu)殚_放的工業(yè)互聯(lián)網(wǎng),網(wǎng)絡(luò)安全防護(hù)工作也面臨更多挑戰(zhàn)。很多關(guān)乎國計(jì)民生的行業(yè)如電力、石油、石化、軍工等正遭受嚴(yán)峻的網(wǎng)絡(luò)安全威脅。2017年肆虐全球的蠕蟲勒索病毒“WannaCry”利用NSA泄露的“External Blue”漏洞進(jìn)行傳播,波及180多個(gè)國家的能源行業(yè)。此外,“震網(wǎng)”、“Duqu”等針對工業(yè)控制網(wǎng)絡(luò)的病毒也利用漏洞進(jìn)行傳播與攻擊,使各類工業(yè)系統(tǒng)損失慘重。因此,加強(qiáng)對漏洞的挖掘與掃描,從源頭遏制網(wǎng)絡(luò)安全事件的發(fā)生顯得尤為重要。
工控網(wǎng)絡(luò)不同于傳統(tǒng)網(wǎng)絡(luò),因此傳統(tǒng)的漏洞掃描器并不適用于工控網(wǎng)絡(luò)。隨著工業(yè)控制網(wǎng)絡(luò)安全事故數(shù)量逐年大幅上升,加強(qiáng)改進(jìn)對工控網(wǎng)絡(luò)的漏洞掃描技術(shù)刻不容緩。針對工控網(wǎng)絡(luò)的漏洞掃描系統(tǒng)除了需具有完備高效的掃描功能,還需考慮到工控設(shè)備對連續(xù)性要求高、無法承受傳統(tǒng)漏洞掃描器頻繁掃描帶來的負(fù)擔(dān)[1]等問題。當(dāng)前工控網(wǎng)絡(luò)使用的漏洞掃描系統(tǒng)亟待改進(jìn)為兼具掃描功能和輕量化特點(diǎn)的平臺。
本文設(shè)計(jì)了一套針對工控網(wǎng)絡(luò)的漏洞掃描系統(tǒng),提出了輕量化的掃描策略來改進(jìn)傳統(tǒng)的漏洞掃描器,可避免業(yè)務(wù)中斷對工控系統(tǒng)造成的損失。
漏洞掃描技術(shù)是針對計(jì)算機(jī)網(wǎng)絡(luò)安全的一種重要防護(hù)手段,常與防火墻和入侵檢測系統(tǒng)共用于提高網(wǎng)絡(luò)的安全性[2]。傳統(tǒng)漏洞掃描方式包括“基于網(wǎng)絡(luò)式”與“基于主機(jī)式”兩種。
基于網(wǎng)絡(luò)的漏洞掃描技術(shù)采用主動(dòng)方法,通過對系統(tǒng)進(jìn)行模擬攻擊,并分析其結(jié)果,與漏洞庫里的已知漏洞進(jìn)行比對確定漏洞是否存在[3]。這種技術(shù)除了可以用于發(fā)現(xiàn)一系列平臺的漏洞外,還可被用來進(jìn)行穿透實(shí)驗(yàn)和安全審計(jì)[4]。
基于主機(jī)的漏洞掃描技術(shù)采用被動(dòng)方法,通過使用root身份登錄目標(biāo)網(wǎng)絡(luò)上的主機(jī),記錄系統(tǒng)配置等各項(xiàng)主要參數(shù),再將其與安全配置庫進(jìn)行匹配以確定是否存在漏洞[5]。
基于傳統(tǒng)網(wǎng)絡(luò)的主動(dòng)掃描系統(tǒng)應(yīng)用范圍為Internet及局域網(wǎng),通常采用客戶/服務(wù)器模式,通過Sockets進(jìn)行通信[6]。
在設(shè)計(jì)工控漏洞掃描系統(tǒng)時(shí)需針對工控設(shè)備的特性考慮以下方面:
(1)工控網(wǎng)絡(luò)漏洞類型不同于傳統(tǒng)IT
典型工控設(shè)備及工控協(xié)議普遍關(guān)注系統(tǒng)的功能、穩(wěn)定性及可靠性,較少考慮工控系統(tǒng)的信息與網(wǎng)絡(luò)安全。例如,由于缺少對用戶身份的認(rèn)證,且普遍采用明文方式傳輸[7],工控協(xié)議漏洞明顯區(qū)別于傳統(tǒng)IT漏洞而存在。工業(yè)現(xiàn)場常見的Modbus協(xié)議,就存在缺乏認(rèn)證、授權(quán)、加密[8]等安全漏洞,攻擊者可無需經(jīng)過認(rèn)證就建立一個(gè)非法的Modbus通信會(huì)話,從而攻擊整個(gè)工業(yè)控制系統(tǒng)[9]。漏洞掃描系統(tǒng)應(yīng)接入CVND工控系統(tǒng)行業(yè)漏洞庫,支持豐富的漏洞特征比對與更新。進(jìn)行掃描后,根據(jù)被測設(shè)備的型號、固件、通信協(xié)議等指紋信息進(jìn)行匹配,從而檢測是否存在已知漏洞[10]。
(2)傳統(tǒng)漏洞掃描器不適用于工控環(huán)境
不同于傳統(tǒng)網(wǎng)絡(luò),工控系統(tǒng)不能承受有破壞性的脆弱性探測,一旦掃描行為觸發(fā)漏洞將影響到業(yè)務(wù)進(jìn)行,造成的后果極其嚴(yán)重。不同廠家、功能的工控設(shè)備在接入網(wǎng)絡(luò)時(shí)使用不同接口及工控協(xié)議,因此工控漏洞掃描系統(tǒng)應(yīng)支持多種接口及主流工控協(xié)議,以減少額外的數(shù)據(jù)轉(zhuǎn)換工作。
(3)工控系統(tǒng)對業(yè)務(wù)連續(xù)性要求高
工控系統(tǒng)用戶為保證業(yè)務(wù)連續(xù)性通常舍棄對設(shè)備運(yùn)行造成負(fù)擔(dān)的安全防御手段,在某工業(yè)應(yīng)用場景中,疏于網(wǎng)絡(luò)安全策略導(dǎo)致的直接經(jīng)濟(jì)損失竟然沒有停機(jī)停產(chǎn)造成的間接經(jīng)濟(jì)損失大。在保障業(yè)務(wù)正?;A(chǔ)上兼顧安全是設(shè)計(jì)工控漏洞掃描系統(tǒng)的重中之重。
工控網(wǎng)絡(luò)傳輸層常采用TCP協(xié)議進(jìn)行會(huì)話,工控網(wǎng)絡(luò)TCP數(shù)據(jù)包可分為包頭部分和數(shù)據(jù)部分,包頭部分由20 B的源端口、目的端口及序列號等信息組成,數(shù)據(jù)部分包含要傳輸?shù)男畔ⅰ?/p>
輕量化漏洞掃描技術(shù)采用“掃描融入業(yè)務(wù)”的思路,通過發(fā)送與業(yè)務(wù)一致的數(shù)據(jù)包來進(jìn)行掃描。掃描時(shí)發(fā)送的數(shù)據(jù)包,其包頭部分符合TCP協(xié)議,數(shù)據(jù)部分滿足工控協(xié)議。
圖1所示為掃描過程中發(fā)送的TCP數(shù)據(jù)包,其中16位的目的端口通常為工控協(xié)議常用端口,漏洞掃描行為包含在數(shù)據(jù)部分。
這種掃描技術(shù)通過對已支持工控協(xié)議的常用端口嘗試性鏈路連接,使得掃描行為融入到正常業(yè)務(wù)中,既完成了漏洞掃描功能,又不會(huì)觸發(fā)工控設(shè)備的漏洞,從而避免非正常的操作造成對系統(tǒng)的影響。由于其掃描過程相對業(yè)務(wù)運(yùn)行來說是靜態(tài)的,因此不會(huì)對數(shù)據(jù)的保密性、完整性和可用性造成任何形式的損壞。
結(jié)合傳統(tǒng)漏洞掃描器的工作原理和掃描技術(shù),本文針對工業(yè)互聯(lián)網(wǎng)設(shè)計(jì)了一個(gè)輕量級工控漏洞掃描平臺。整體架構(gòu)及功能交互關(guān)系如圖2所示。
采用開放式架構(gòu)及模塊化設(shè)計(jì)的輕量級工控漏洞掃描軟件,使用中間層理念以減少平臺對硬件的依賴。其中,操作系統(tǒng)模塊提供基礎(chǔ)的操作系統(tǒng);已知漏洞掃描模塊提供對操作系統(tǒng)工控網(wǎng)絡(luò)中已知漏洞的輕量級檢測;未知漏洞掃描模塊提供對上位機(jī)和PLC進(jìn)行未知漏洞掃描功能;日志、報(bào)表模塊對漏洞掃描過程進(jìn)行監(jiān)控,展示掃描結(jié)果;管理系統(tǒng)模塊提供對掃描任務(wù)及系統(tǒng)配置的掃描功能;用戶管理模塊提供可視化用戶配置界面用于配置漏洞掃描任務(wù)及系統(tǒng)管理任務(wù);升級系統(tǒng)模塊提供對掃描系統(tǒng)、漏洞庫、漏洞引擎的升級功能。
圖2 工業(yè)漏洞掃描平臺工作原理示意圖
掃描引擎是漏洞檢測平臺的核心,包含了傳統(tǒng)主機(jī)完整掃描過程的一系列核心功能,如存活判斷、端口掃描、服務(wù)識別、OS判斷、口令猜測等;具備PLC設(shè)備的識別功能以及DCS、PCS、SCADA系統(tǒng)識別功能。此外,掃描引擎還負(fù)責(zé)控制和管理整個(gè)輕量級掃描流程:首先,用戶下達(dá)關(guān)鍵指令給決策引擎;掃描引擎啟動(dòng)相應(yīng)的子功能模塊來掃描目標(biāo)工控設(shè)備,建立連接以及之后的發(fā)包過程均采用上文提到的輕量化技術(shù);監(jiān)控引擎接受工控系統(tǒng)的回復(fù)信息,通過決策引擎與存儲在當(dāng)前活動(dòng)的掃描知識庫中的結(jié)果做比對并生成掃描報(bào)告;最后,在HMI中展示掃描結(jié)果。
漏洞檢測平臺使用專用硬件平臺,提供可靠穩(wěn)定的硬件環(huán)境,輔助以系統(tǒng)運(yùn)行的必需軟件。平臺部署可采用遠(yuǎn)程訪問的方式,網(wǎng)絡(luò)可達(dá);也可旁路連接現(xiàn)有的網(wǎng)絡(luò),不對其做任何修改。
如圖3所示,漏洞檢測平臺在典型中小型網(wǎng)絡(luò)中單機(jī)旁路部署,可以從運(yùn)營管理層、生產(chǎn)管理層、監(jiān)督管理層與現(xiàn)場控制層4個(gè)方面對工業(yè)場景進(jìn)行全方位覆蓋。此外,在隔離網(wǎng)絡(luò)中可采用級聯(lián)部署,需要深入檢查安全域內(nèi)的安全風(fēng)險(xiǎn)時(shí)可采用分布式部署。
圖3 工業(yè)漏洞檢測平臺典型部署方式
一次輕量級的漏洞掃描分為三個(gè)階段:
(1)發(fā)現(xiàn)目標(biāo)網(wǎng)絡(luò);
(2)進(jìn)一步搜集目標(biāo)信息,如連接的主機(jī)信息、路由設(shè)備,并自動(dòng)生成該網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu);
(3)根據(jù)搜集到的信息判斷或者進(jìn)一步測試系統(tǒng)是否存在安全漏洞,并給出掃描結(jié)果。
圖4為實(shí)驗(yàn)網(wǎng)絡(luò)中掃描到的測試結(jié)果,包括SQL注入、XSS漏洞及上傳漏洞等50個(gè)Web漏洞。根據(jù)漏洞類型結(jié)合主機(jī)的拓?fù)湮恢媒o出風(fēng)險(xiǎn)值評估,如圖5所示。
圖4 漏洞掃描結(jié)果示例
圖5 漏洞掃描結(jié)果風(fēng)險(xiǎn)值詳情
本文提出的工業(yè)漏洞掃描平臺已運(yùn)用于電力、能源、制造及運(yùn)輸業(yè)等多個(gè)工業(yè)場景中,僅在某港口的吊機(jī)控制網(wǎng)絡(luò)中就成功發(fā)現(xiàn)十余種未知的工控漏洞,并加入已知漏洞庫以便后續(xù)預(yù)警工作使用。
基于輕量級漏洞掃描策略設(shè)計(jì)的工控網(wǎng)絡(luò)漏洞掃描平臺,可應(yīng)用于廣泛的工業(yè)控制領(lǐng)域如運(yùn)輸、電力、交通及高端制造業(yè)等,并可輔助管理人員對工控系統(tǒng)進(jìn)行更加全面的風(fēng)險(xiǎn)評估,能夠很好地幫助把成熟的IT風(fēng)險(xiǎn)評估技術(shù)成功移植到全新的工業(yè)互聯(lián)網(wǎng)系統(tǒng)環(huán)境中,提高工業(yè)互聯(lián)網(wǎng)安全的同時(shí)更對相關(guān)的平臺建設(shè)有著指導(dǎo)意義。