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