蘇 暢,熊申鐸,羅安琴,張 帥,龔鋼軍,劉 韌,劉文彬,吳秋新
(1.華北電力大學(xué) 北京市能源電力信息安全工程研究中心,北京 102206;2.北京信息科技大學(xué),北京 100192;3.北京卓識(shí)網(wǎng)安技術(shù)股份有限公司,北京 102206)
工業(yè)控制系統(tǒng)(Industrial Control System,ICS)一般由SCADA、DCS、PLC、RTU等組成,廣泛應(yīng)用于電力、石油化工、軌道交通等涉及國(guó)計(jì)民生的重要領(lǐng)域[1]。隨著信息化與工業(yè)化的深入融合,以及“互聯(lián)網(wǎng)+”與“智慧能源”、“智慧城市”、“智能制造2025”等的快速推進(jìn),最初完全封閉的ICS越來(lái)越不能滿足管理控制一體化的生產(chǎn)需求,ICS原有相對(duì)封閉的使用環(huán)境逐漸被打破,開(kāi)放性和互聯(lián)性越來(lái)越強(qiáng),信息安全問(wèn)題已經(jīng)從傳統(tǒng)的互聯(lián)網(wǎng)范圍延伸到了工業(yè)控制領(lǐng)域[2-3],物理隔離不再絕對(duì)安全,近幾年連續(xù)出現(xiàn)了專(zhuān)門(mén)針對(duì)ICS攻擊的“震網(wǎng)”、“duqu”和“火焰”等病毒,給伊朗等一些國(guó)家的關(guān)鍵基礎(chǔ)設(shè)施造成了巨大破壞,也為各國(guó)工控領(lǐng)域信息安全敲響了警鐘[4]。目前,我國(guó)已經(jīng)形成了以電力系統(tǒng)為代表的世界上系統(tǒng)規(guī)模最大、結(jié)構(gòu)層次最多、復(fù)雜程度最高的ICS[5-6]。我國(guó)的能源電力行業(yè)安全防護(hù)水平差異很大,其中,電網(wǎng)企業(yè)的信息安全防護(hù)水平高于發(fā)電企業(yè)。發(fā)電企業(yè)的ICS普遍存在工控協(xié)議安全性差、系統(tǒng)主動(dòng)防御水平低、純物理隔離防護(hù)致使系統(tǒng)互聯(lián)互通性不足等問(wèn)題。而且,由于發(fā)電企業(yè)歷來(lái)更重視工業(yè)生產(chǎn)的穩(wěn)定性與連續(xù)性,致使生產(chǎn)控制系統(tǒng)的升級(jí)改造頻次少、系統(tǒng)設(shè)備老化嚴(yán)重、生產(chǎn)控制系統(tǒng)與信息安全防護(hù)設(shè)備匹配性差,形成了“安全問(wèn)題多、極易出問(wèn)題、但無(wú)人敢動(dòng)”的局面,因此,亟需在現(xiàn)有安全防護(hù)體系、安全監(jiān)測(cè)體系、安全響應(yīng)體系的基礎(chǔ)上,構(gòu)建電廠典型仿真驗(yàn)證模型,開(kāi)發(fā)基于“可信、可管、可控”環(huán)境下的仿真演練平臺(tái)。
電廠ICS具有很強(qiáng)的復(fù)雜性和專(zhuān)用性,傳統(tǒng)IT系統(tǒng)風(fēng)險(xiǎn)評(píng)估中采用的漏洞掃描、滲透測(cè)試等入侵方法會(huì)對(duì)ICS系統(tǒng)運(yùn)行產(chǎn)生影響[7-8]。仿真方法以其安全性、經(jīng)濟(jì)性和可重復(fù)性等優(yōu)點(diǎn)成為ICS安全研究的一種重要手段。目前業(yè)內(nèi)多以軟件仿真進(jìn)行測(cè)試,但要想分析各種計(jì)算機(jī)病毒和惡意軟件對(duì)ICS信息物理系統(tǒng)所造成的真實(shí)的影響有著相當(dāng)大的難度,而且軟件無(wú)法完全仿真與硬件相關(guān)的部分,不能完全代替硬件仿真,軟件仿真多針對(duì)網(wǎng)絡(luò)攻擊,無(wú)法及時(shí)發(fā)現(xiàn)隱蔽性和滯后性較強(qiáng)的其他類(lèi)型攻擊,缺乏與真實(shí)網(wǎng)絡(luò)設(shè)備組件的交互,不能真實(shí)反映惡意攻擊對(duì)ICS中的信息物理系統(tǒng)進(jìn)行破壞的情況。因此,本文依照計(jì)算機(jī)網(wǎng)絡(luò)、工控安全、虛擬化與半實(shí)物仿真等技術(shù),提出了基于LabVIEW和MATLAB的ICS半實(shí)物仿真模型。
仿真中將實(shí)際控制對(duì)象引入到仿真控制系統(tǒng)的方法叫做半實(shí)物仿真,它具有開(kāi)發(fā)周期短、可靠性強(qiáng)、置信度高及研發(fā)經(jīng)費(fèi)少等優(yōu)點(diǎn),而且實(shí)物部分放入仿真中以系統(tǒng)整體性指標(biāo)進(jìn)行檢驗(yàn),更具有真實(shí)性,也更符合工業(yè)現(xiàn)場(chǎng)生產(chǎn)業(yè)務(wù)的連續(xù)性和穩(wěn)定性的保障需求。文獻(xiàn)[9]采取半實(shí)物建模的虛實(shí)結(jié)合的動(dòng)態(tài)仿真方法,構(gòu)造可以用來(lái)測(cè)試主機(jī)攻防技術(shù)的SCADA主機(jī)仿真靶場(chǎng),通過(guò)軟件實(shí)現(xiàn)了機(jī)組啟停、模擬量信號(hào)、正常運(yùn)行以及故障等功能,并利用真實(shí)攻擊以及防御實(shí)驗(yàn)驗(yàn)證了靶場(chǎng)用于測(cè)試的可行性,其系統(tǒng)模型的響應(yīng)與ICS中的實(shí)際物理過(guò)程一致,而且系統(tǒng)子模塊能自由取舍、易于修改。相對(duì)于純軟件仿真,半實(shí)物仿真可以更加清晰、真實(shí)地再現(xiàn)ICS工作過(guò)程、發(fā)現(xiàn)存在的信息安全問(wèn)題,以達(dá)到靈活、主動(dòng)安全防御的實(shí)際效果。
本文參照IEC62264標(biāo)準(zhǔn)的層次結(jié)構(gòu)模型[10],同時(shí)將SCADA系統(tǒng)、DCS系統(tǒng)和PLC系統(tǒng)的模型的共性進(jìn)行抽象,將通用ICS按功能劃分為5個(gè)層次。具體如圖1所示。
圖1 ICS層次架構(gòu)
圖1中,ICS具體分為企業(yè)資源層、生產(chǎn)管理層、過(guò)程監(jiān)控層、現(xiàn)場(chǎng)控制層和現(xiàn)場(chǎng)設(shè)備層。企業(yè)資源層和生產(chǎn)管理層主要與工業(yè)運(yùn)行管理有關(guān),稱(chēng)之為管理區(qū);過(guò)程監(jiān)控層、現(xiàn)場(chǎng)控制層和現(xiàn)場(chǎng)設(shè)備層主要與現(xiàn)場(chǎng)控制相關(guān),稱(chēng)為控制區(qū)。本文針對(duì)ICS參考模型控制區(qū)所對(duì)應(yīng)的三層架構(gòu)開(kāi)展半實(shí)物仿真測(cè)試,在模型中利用MATLAB來(lái)模擬電廠現(xiàn)場(chǎng)實(shí)際物理過(guò)程,用LabVIEW軟件構(gòu)造監(jiān)控系統(tǒng)操作界面,通過(guò)OPC協(xié)議及共享變量引擎SVE實(shí)現(xiàn)LabVIEW與MATLAB之間的實(shí)時(shí)數(shù)據(jù)交換,同時(shí)通過(guò)控制PLC來(lái)對(duì)現(xiàn)場(chǎng)數(shù)據(jù)進(jìn)行采集,構(gòu)建了ICS半實(shí)物仿真模型,實(shí)現(xiàn)發(fā)電廠ICS關(guān)鍵設(shè)備運(yùn)行狀態(tài)模擬、數(shù)據(jù)采集、遠(yuǎn)程與現(xiàn)場(chǎng)控制等功能,可有效驗(yàn)證ICS工業(yè)控制過(guò)程及其存在的安全漏洞。
在圖1控制區(qū)中,上層是過(guò)程監(jiān)控層,有數(shù)據(jù)采集與監(jiān)視控制系統(tǒng)SCADA和人機(jī)交互界面HMI,利用圖形化界面實(shí)現(xiàn)系統(tǒng)和用戶之間信息的動(dòng)態(tài)交互,操作員可以看到仿真機(jī)運(yùn)行的實(shí)時(shí)信息并進(jìn)行及時(shí)操作。中間層為過(guò)程控制層,使用德國(guó)西門(mén)子公司S7系列PLC,負(fù)責(zé)現(xiàn)場(chǎng)信號(hào)接入接出,與工控機(jī)、HMI等通信,并完成信號(hào)采集、處理標(biāo)準(zhǔn)的控制算法。底層是現(xiàn)場(chǎng)設(shè)備層,現(xiàn)場(chǎng)設(shè)備是基于MATLAB/SIMULINK的現(xiàn)場(chǎng)全物理過(guò)程仿真模型,通過(guò)OPC協(xié)議及共享變量引擎SVE實(shí)現(xiàn)MATLAB與LabVIEW之間的通信。本文所設(shè)計(jì)的半實(shí)物仿真系統(tǒng)架構(gòu)如圖2所示。
圖2 工控系統(tǒng)半實(shí)物仿真系統(tǒng)架構(gòu)
本系統(tǒng)可以分成仿真和監(jiān)控兩個(gè)部分:底層仿真部分,MATLAB對(duì)現(xiàn)場(chǎng)設(shè)備進(jìn)行仿真與LabVIEW進(jìn)行數(shù)據(jù)交互,并把信號(hào)通過(guò)PLC傳至上位機(jī)HMI等設(shè)備;上層監(jiān)控部分,上位機(jī)可以通過(guò)指令對(duì)PLC進(jìn)行操作,實(shí)現(xiàn)對(duì)控制對(duì)象運(yùn)行的在線監(jiān)控。
在LabVIEW中調(diào)用MATLAB/SIMULINK的方法有利用動(dòng)態(tài)數(shù)據(jù)交換DDE技術(shù)、動(dòng)態(tài)鏈接庫(kù)DLL技術(shù)、ActiveX技術(shù)[11]。本文用過(guò)程控制對(duì)象連接與嵌入?yún)f(xié)議(Object Linking and Embedding for Process Control,OPC)及其共享變量引擎SVE來(lái)解決兩者之間的通信問(wèn)題。SVE為創(chuàng)建一個(gè)與SIMULINK模型連接的用戶界面提供了一種方法。使用SVE,可以在同一個(gè)程序框圖的不同循環(huán)之間或者網(wǎng)絡(luò)上的不同VI之間共享數(shù)據(jù),當(dāng)要添加共享變量到一個(gè)LabVIEW項(xiàng)目后,可以將其拖至VI程序框圖中進(jìn)行讀寫(xiě)操作,然后進(jìn)行共享變量網(wǎng)絡(luò)發(fā)布,網(wǎng)絡(luò)發(fā)布的共享變量通過(guò)SVE在不同的VI之間通信,具體的SVE利用NI-PSP數(shù)據(jù)傳輸協(xié)議來(lái)允許用戶讀寫(xiě)數(shù)據(jù)[12-13]。圖3具體描述了MATLAB與LabVIEW之間的信息交互。共享變量部署到SVE上,網(wǎng)絡(luò)上的任何節(jié)點(diǎn)都可以讀寫(xiě)SVE發(fā)布的共享變量。當(dāng)寫(xiě)入到一個(gè)共享變量節(jié)點(diǎn),LabVIEW將這個(gè)新值發(fā)送給部署和托管這個(gè)變量的SVE,SVE處理環(huán)路發(fā)布這個(gè)值,從而MATLAB可以得到更新后的變量值。
圖4 三相同步電機(jī)MATLAB程序框圖
本文以發(fā)電廠典型的三相同步電機(jī)的仿真為例設(shè)計(jì)了一個(gè)由三相同步發(fā)電機(jī)、三相電壓電流測(cè)量裝置、三相RLC負(fù)載以及三個(gè)斷路器組成的Simulink仿真模型,如圖4所示。斷路器的作用是電流、電壓速斷保護(hù),當(dāng)流過(guò)的電流大于整定值時(shí)斷路器跳。斷路器與三相并聯(lián)負(fù)載相連,可以進(jìn)行邏輯判斷,產(chǎn)生控制脈沖,能夠在規(guī)定的時(shí)間內(nèi)承載和開(kāi)斷異?;芈窏l件下的電流,對(duì)過(guò)載、短路、欠壓有著速斷保護(hù)的作用。啟動(dòng)仿真之后,可以在LabVIEW中看到仿真實(shí)時(shí)數(shù)據(jù),如轉(zhuǎn)速、電流、電壓、功率等。
圖3 共享變量在MATLAB與LabVIEW之間的交互流程圖
由于ICS存在漏洞且缺乏防護(hù)措施,當(dāng)外來(lái)攻擊源攻破工業(yè)網(wǎng)絡(luò)時(shí),對(duì)SCADA主站系統(tǒng)或PLC設(shè)備完全接管,從而下發(fā)錯(cuò)誤指令或偽造上傳的數(shù)據(jù);對(duì)系統(tǒng)感染病毒和植入木馬程序,使其工作異常;隱秘竊取其核心數(shù)據(jù),而不被發(fā)現(xiàn)[15]。2010年爆發(fā)的“震網(wǎng)”病毒就是典型的通過(guò)病毒感染PLC設(shè)備,實(shí)現(xiàn)異??刂片F(xiàn)場(chǎng)物理運(yùn)行裝置,并同時(shí)偽造現(xiàn)場(chǎng)上傳數(shù)據(jù)為正常狀態(tài),從而欺騙上位機(jī)SCADA系統(tǒng)。因此,為了更好地模擬測(cè)試電廠ICS系統(tǒng)的信息安全問(wèn)題,可根據(jù)以上方法搭建一個(gè)虛實(shí)結(jié)合的ICS信息安全半實(shí)物仿真模型驗(yàn)證平臺(tái),從而可以具體再現(xiàn)工控網(wǎng)絡(luò)攻防情景,如圖5所示。
圖5示例結(jié)合半實(shí)物仿真平臺(tái),復(fù)現(xiàn)發(fā)電廠工控網(wǎng)絡(luò)典型拓?fù)浣Y(jié)構(gòu),突出發(fā)電廠PLC的核心控制功能。驗(yàn)證測(cè)試系統(tǒng)中部署了兩套不同的PLC,一套為低版本未加固PLC-a,存在一些公開(kāi)漏洞和后門(mén)賬戶,開(kāi)啟Telnet服務(wù),通過(guò)交換機(jī)直接與上位機(jī)SCADA操作員站相連,另一套為高版本升級(jí)加固后PLC-b,已禁止Telnet、FTP、HTTP等服務(wù),通過(guò)防火墻、交換機(jī)與上位機(jī)SCADA操作員站相連。攻擊分為以下兩個(gè)層次:
(1)通過(guò)對(duì)SCADA軟件植入木馬來(lái)實(shí)現(xiàn)對(duì)SCADA軟件的接管,同時(shí)利用PLC-a的漏洞,向其下發(fā)停止信號(hào)使其通信模塊暫停(如:構(gòu)建Modbus的playload代碼:04 8b 00 00 00 06 ff 08 00 04 00 00,利用UDP的17185端口讓PLC-a重啟),如圖6(a)所示。
(2)采用DDoS攻擊,不斷地向PLC-a發(fā)送垃圾指令,造成PLC-a設(shè)備拒絕服務(wù),上位機(jī)與PLC-a設(shè)備通信中斷,但攻擊結(jié)束后,通信自動(dòng)恢復(fù)正常,如圖6(b)所示。
同理對(duì)PLC-b進(jìn)行上述攻擊,未發(fā)現(xiàn)監(jiān)控系統(tǒng)的異常情況,如圖6(c)所示,測(cè)試中發(fā)現(xiàn),由于系統(tǒng)設(shè)備自身版本、設(shè)備配置和策略配置的差異性,PLC-a的防攻擊能力要低于經(jīng)加固升級(jí)后的PLC-b,因此具體對(duì)二者的攻擊行為和攻擊難度均有較大差異。通過(guò)攻擊測(cè)試和仿真系統(tǒng)的現(xiàn)象展示,切實(shí)反映出工業(yè)控制系統(tǒng)的漏洞與風(fēng)險(xiǎn)是能防范的、可控制的。
圖6 同攻擊下三相同步電機(jī)電流運(yùn)行圖
本文研究了ICS半實(shí)物仿真平臺(tái)的架構(gòu),驗(yàn)證了通過(guò)OPC技術(shù)、共享變量等技術(shù)建立MATLAB與LabVIEW之間通信的可行性,在實(shí)驗(yàn)室條件下,采用MATLAB模擬三相同步電機(jī)發(fā)電系統(tǒng),并在LabVIEW中對(duì)其運(yùn)行情況進(jìn)行有效的監(jiān)控,直觀顯示在三相同步負(fù)載下實(shí)時(shí)的電流、電壓、功率以及轉(zhuǎn)速的情況,驗(yàn)證了仿真模型的聯(lián)通性。最后,本文將半實(shí)物仿真模型與現(xiàn)有工控安全漏洞相結(jié)合,針對(duì)平臺(tái)模型難以重現(xiàn)的工控安全問(wèn)題采用虛擬化手段,建立半實(shí)物仿真模型,切實(shí)模擬發(fā)電廠實(shí)際問(wèn)題,再現(xiàn)了真實(shí)現(xiàn)場(chǎng)異常情況,這也對(duì)ICS信息安全防護(hù)提供了一種新的思路。