田學(xué)成,張五一,江 楠,陳燕峰
(1.國電南京自動化股份有限公司,江蘇 南京211100;2.南京華盾電力信息安全測評有限公司,江蘇 南京 211100)
能源行業(yè)網(wǎng)絡(luò)安全關(guān)系國家的基礎(chǔ)設(shè)施安全。2019年阿根廷發(fā)生大規(guī)模停電,沿海輸電系統(tǒng)疑遭受黑客攻擊發(fā)生故障并導(dǎo)致全國停電[1];2021年美國主要輸油管道系統(tǒng)受到勒索軟件攻擊,持續(xù)多日中斷,造成嚴(yán)重經(jīng)濟(jì)損失[2]。
網(wǎng)絡(luò)安全是國家安全的重要組成部分,當(dāng)下大國關(guān)系不明,針對關(guān)鍵基礎(chǔ)設(shè)施的網(wǎng)絡(luò)攻擊時(shí)有發(fā)生,關(guān)鍵基礎(chǔ)設(shè)施一旦被境外黑客攻擊利用,將會造成不可估量的損失。
相比于傳統(tǒng)互聯(lián)網(wǎng)安全,工業(yè)控制系統(tǒng)在設(shè)計(jì)之初重點(diǎn)考慮系統(tǒng)的穩(wěn)定性、實(shí)時(shí)性、魯棒性,而安全性并沒有得到充分有效的考慮,造成工業(yè)控制系統(tǒng)存在著大量的漏洞和后門。據(jù)CVE、CNVD等漏洞數(shù)據(jù)庫統(tǒng)計(jì),西門子、施耐德、羅克韋爾、AB、ABB、艾默生、歐姆龍等工控設(shè)備暴露的漏洞占據(jù)前列[3],一旦這些漏洞和后門被病毒、木馬、勒索軟件感染,或者被黑客、敵對勢力所利用,極易導(dǎo)致安全事件發(fā)生。我國工業(yè)控制系統(tǒng)基礎(chǔ)薄弱,大部分控制設(shè)備、工控協(xié)議和系統(tǒng)使用國外設(shè)備,面臨很多潛在的未知安全威脅。隨著新能源產(chǎn)業(yè)的發(fā)展以及工業(yè)控制系統(tǒng)的網(wǎng)絡(luò)互聯(lián)趨勢,必須要加強(qiáng)新能源工業(yè)控制系統(tǒng)的網(wǎng)絡(luò)安全建設(shè)和防御能力。
我國新能源風(fēng)力發(fā)電廠大多地處偏遠(yuǎn),風(fēng)機(jī)分布位置相對分散,目前在控制方式上采用四級控制,分別是現(xiàn)場側(cè)、場站側(cè)、集控側(cè)、總控側(cè)。其中現(xiàn)場側(cè)主要是風(fēng)機(jī)主控系統(tǒng)以及各種PLC傳感器等;場站側(cè)采集區(qū)域內(nèi)各風(fēng)電場的實(shí)時(shí)運(yùn)行狀態(tài)信息,可以直接對現(xiàn)場側(cè)下發(fā)各種控制調(diào)節(jié)指令;集控側(cè)位于區(qū)域內(nèi)控制中心,實(shí)現(xiàn)機(jī)組的數(shù)據(jù)監(jiān)視、發(fā)電控制和設(shè)備保護(hù)控制等操作;集控側(cè)向上與總控層通信,將區(qū)域內(nèi)重要風(fēng)電場的信息實(shí)時(shí)發(fā)送到總控層。集控側(cè)有時(shí)和總控側(cè)合為一層。
新能源風(fēng)電塔基控制站即風(fēng)機(jī)主控制器機(jī)柜,是風(fēng)電機(jī)組設(shè)備控制的核心,主要包括控制器、光纖轉(zhuǎn)化器、I/O模件等,控制器硬件運(yùn)行機(jī)組的各類復(fù)雜主控邏輯,通過現(xiàn)場總線與機(jī)艙控制器機(jī)柜、變槳距系統(tǒng)、變流器系統(tǒng)進(jìn)行實(shí)時(shí)通信。風(fēng)機(jī)主控制器一般具有CANopen、Profibus、Modbus、以太網(wǎng)等多種類型的現(xiàn)場總線接口,根據(jù)項(xiàng)目的實(shí)際需求進(jìn)行配置。多臺風(fēng)機(jī)通過光纖網(wǎng)絡(luò)組成一個(gè)單元網(wǎng)格,多個(gè)風(fēng)機(jī)網(wǎng)格組成風(fēng)機(jī)光纖環(huán)網(wǎng)。圖1所示是新能源風(fēng)電網(wǎng)絡(luò)拓?fù)鋱D。
圖1 風(fēng)電場風(fēng)機(jī)控制系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D
大規(guī)模的風(fēng)電、光伏新能源發(fā)電廠并網(wǎng)后,替代常規(guī)同步機(jī)組發(fā)電空間,降低了電網(wǎng)系統(tǒng)慣量,在出現(xiàn)故障導(dǎo)致系統(tǒng)頻率波動時(shí),極易發(fā)生新能源機(jī)組大面積脫網(wǎng),引發(fā)電力事故,所以需要加強(qiáng)對新能源出力占比及系統(tǒng)慣量監(jiān)視,確保新能源系統(tǒng)慣量足夠,保障電網(wǎng)安全[4]。
目前實(shí)現(xiàn)新能源新型電力系統(tǒng)大面積覆蓋主要存在三方面問題。
一是新能源發(fā)電功率和電能量平衡問題,即如何控制或者減小新能源波動性和間隙性等不可控特性可能導(dǎo)致的大規(guī)模接入電網(wǎng)后因?yàn)楣β屎湍芰康牟▌釉斐擅摼W(wǎng)或者其他嚴(yán)重問題[5]。
二是新能源風(fēng)電系統(tǒng)的動態(tài)特性不同于傳統(tǒng)電力系統(tǒng),其中新能源太陽能發(fā)電和風(fēng)能發(fā)電都屬于非同步機(jī)電源,非同步機(jī)電源的同步機(jī)制和動態(tài)特性不同于傳統(tǒng)的同步發(fā)電機(jī),導(dǎo)致以往廣泛采用的理論和方法可能不再適用[6]。新能源電力系統(tǒng)的動態(tài)特性主要表現(xiàn)有五個(gè)方面,即廣義同步穩(wěn)定性、電壓穩(wěn)定性、頻率穩(wěn)定性、寬頻諧振穩(wěn)定性以及短路電流新特性[7]。
三是新能源風(fēng)電網(wǎng)絡(luò)系統(tǒng)的安全性可直接影響新能源風(fēng)力發(fā)電的穩(wěn)定性。新能源風(fēng)電風(fēng)機(jī)主控設(shè)備使用Modbus等協(xié)議實(shí)現(xiàn)風(fēng)機(jī)控制,具體包括轉(zhuǎn)舵、變槳、啟停等動作操作。由于協(xié)議本身存在的漏洞,可以利用無線方式對其實(shí)施中間人攻擊,重放控制指令導(dǎo)致風(fēng)機(jī)意外停機(jī)或進(jìn)行反復(fù)啟停操作。如果攻擊者利用新能源風(fēng)電存在的協(xié)議漏洞攻擊風(fēng)電場,可直接造成風(fēng)機(jī)意外停機(jī)或重啟,將嚴(yán)重影響整個(gè)風(fēng)電場的安全。
Modbus協(xié)議是一種工業(yè)控制系統(tǒng)常見的現(xiàn)場總線協(xié)議,被廣泛使用在SCADA系統(tǒng)和分布式控制系統(tǒng)中,通信報(bào)文有Modbus RTU、Modbus ASCII以及Modbus PLUS和Modbus TCP[8]。在新能源風(fēng)電系統(tǒng)中風(fēng)機(jī)主控設(shè)備使用Modbus TCP協(xié)議作為風(fēng)機(jī)控制通信協(xié)議。常見的施耐德、倍福、Siemens的PLC設(shè)備都支持Modbus協(xié)議,風(fēng)機(jī)控制遠(yuǎn)端可以通過Modbus TCP協(xié)議對風(fēng)機(jī)主控進(jìn)行實(shí)時(shí)監(jiān)控并下發(fā)控制指令改變風(fēng)機(jī)的運(yùn)行狀態(tài),Modbus TCP是將Modbus協(xié)議嵌入到TCP結(jié)構(gòu)中,Modbus協(xié)議采用主從結(jié)構(gòu),在電力監(jiān)控系統(tǒng)中Modbus協(xié)議通信滿足實(shí)時(shí)性要求,Modbus主設(shè)備可以支持多個(gè)從設(shè)備實(shí)現(xiàn)即時(shí)通信[8]。圖2是Modbus TCP協(xié)議主從設(shè)備之間的通信方式。
圖2 Modbus TCP主從設(shè)備之間通信模式
Modbus TCP協(xié)議報(bào)文構(gòu)成中ADU數(shù)據(jù)幀結(jié)構(gòu)由MBAP和PDU組成,PDU部分包含Modbus功能碼Function_Code和數(shù)據(jù)域Data[9]。因?yàn)門CP是面向連接的協(xié)議,所以新能源工控協(xié)議Modbus TCP中地址域和CRC校驗(yàn)位沒有發(fā)揮作用。圖3是Modbus TCP協(xié)議報(bào)文結(jié)構(gòu)。
圖3 Modbus TCP協(xié)議數(shù)據(jù)包結(jié)構(gòu)
MBAP報(bào)文適用于識別Modbus應(yīng)用數(shù)據(jù)單元,MBAP頭部占7個(gè)字節(jié)長度[10],專門用來標(biāo)識Modbus協(xié)議數(shù)據(jù)單元。表1是MBAP報(bào)文結(jié)構(gòu)。
表1 MBAP報(bào)文結(jié)構(gòu)
通過分析Modbus TCP協(xié)議的報(bào)文結(jié)構(gòu),方便對風(fēng)機(jī)主控設(shè)備通信報(bào)文具體的控制指令進(jìn)行識別,并利用識別的控制指令做指令重放攻擊的測試。
協(xié)議形式化分析是協(xié)議安全分析的一種主要方法。本文使用Scyther形式化分析工具[11]對Modbus協(xié)議的安全性進(jìn)行分析,使用操作語義將Modbus協(xié)議草案規(guī)范的角色做形式化描述,聲明協(xié)議運(yùn)行事件遵從的運(yùn)行軌跡。Scyther可以使用多種靈活的安全模型,其輸出的攻擊圖對狀態(tài)執(zhí)行軌跡有著明確的描述。Scyther工具敵手模型冒充協(xié)議合法參與者,獲得協(xié)議知識,實(shí)現(xiàn)對協(xié)議的攻擊,從輸出的攻擊圖可以發(fā)現(xiàn)協(xié)議存在的攻擊路徑,以便對協(xié)議進(jìn)行安全改進(jìn)和設(shè)計(jì)[12]。
因?yàn)镮ETF截至目前并沒有收錄Modbus協(xié)議規(guī)范,本文基于對Modbus協(xié)議草案的標(biāo)準(zhǔn)描述[13],對Modbus協(xié)議進(jìn)行形式化安全分析。通過形式化描述協(xié)議主體特征以及主體執(zhí)行協(xié)議的軌跡,發(fā)現(xiàn)協(xié)議可能存在的攻擊軌跡圖。基于協(xié)議存在的攻擊軌跡進(jìn)行安全分析。
新能源風(fēng)電風(fēng)機(jī)控制系統(tǒng)使用Modbus TCP協(xié)議通信前,需要通過TCP三次握手建立會話連接,之后使用Modbus協(xié)議通信[14],結(jié)合之前對Modbus協(xié)議草案規(guī)范的分析,對Modbus協(xié)議通信過程進(jìn)行形式化描述。圖4是Modbus協(xié)議通信順序圖。
圖4 Modbus協(xié)議通信順序圖
上位機(jī)發(fā)送Modbus請求,客戶機(jī)根據(jù)請求的功能碼以及起始地址和寄存器數(shù)量從PLC寄存器中讀取數(shù)值,并將數(shù)據(jù)發(fā)送給上位機(jī),做協(xié)議形式化分析。形式化分析選擇Modbus報(bào)文通信模式,因?yàn)門CP是面向連接的可靠協(xié)議,這種模式不使用校驗(yàn)碼,從設(shè)備地址為常量不作形式化處理。Modbus協(xié)議的功能碼用Funcode表示。根據(jù)協(xié)議草案規(guī)范其會話過程未使用身份認(rèn)證和加密的安全屬性:
聲明Modbus協(xié)議會話過程中傳遞的參數(shù)是可到達(dá)的,Scyther定義一對屬性(Running,Commit)用來標(biāo)識協(xié)議雙方對傳輸數(shù)據(jù)的認(rèn)可,據(jù)此可以聲明Modbus協(xié)議會話過程中收發(fā)雙方對數(shù)據(jù)的認(rèn)可。圖5顯示形式化描述的Modbus協(xié)議角色執(zhí)行狀態(tài)正常。
圖5 角色狀態(tài)描述
Modbus協(xié)議草案規(guī)范未添加身份認(rèn)證屬性、加密屬性。在形式化驗(yàn)證中添加安全屬性的認(rèn)證,分析協(xié)議的安全性。Scyther采用黑盒驗(yàn)證的思想,每個(gè)定義角色從各自的路徑出發(fā),判斷能否滿足安全屬性,如果不滿足則輸出存在攻擊路徑,聲明Modbus協(xié)議會話過程傳遞的參數(shù)具有保密性:
從圖6驗(yàn)證結(jié)果看,按照Modbus協(xié)議草案規(guī)范形式化驗(yàn)證Modbus協(xié)議并不具備保密性的安全屬性,攻擊者從上位機(jī)獲得初始知識,能夠偽造上位機(jī)向客戶機(jī)發(fā)起控制指令,改變客戶機(jī)PLC設(shè)備的運(yùn)行狀態(tài)。圖7是其中一個(gè)攻擊輸出路徑。
圖6 Modbus協(xié)議安全性驗(yàn)證結(jié)果
圖7 攻擊路徑
Modbus協(xié)議未使用加密算法對Modbus協(xié)議通信加密,攻擊者可以直接獲得明文信息。攻擊者不僅能夠獲得上位機(jī)下發(fā)控制指令的功能碼Function_Code和數(shù)據(jù)域Data,而且還能偽造上位機(jī)將報(bào)文進(jìn)行篡改和重放。對Modbus協(xié)議通信報(bào)文進(jìn)行加密,形式化添加加密屬性如下:
加密之后,再次驗(yàn)證Modbus協(xié)議的安全性,如圖8所示,輸出的攻擊路徑明顯減少。但由于Modbus協(xié)議還存在身份驗(yàn)證問題,因此攻擊者還可以偽造身份下發(fā)控制指令。
圖8 Modbus協(xié)議添加加密屬性
Modbus協(xié)議存在的安全隱患問題有缺乏認(rèn)證、授權(quán)、加密和功能碼濫用等[15],因?yàn)镸odbus協(xié)議中沒有認(rèn)證相關(guān)方面的定義,導(dǎo)致攻擊者偽造一個(gè)合法的地址就可以使用特定功能碼建立一個(gè)Modbus通信會話,對Modbus從設(shè)備下發(fā)控制指令。Modbus協(xié)議通信過程中,地址和命令全部采用明文傳輸,因此數(shù)據(jù)容易被攻擊者捕獲和解析。另外功能碼濫用是導(dǎo)致Modbus網(wǎng)絡(luò)異常的一個(gè)主要原因,不正確的報(bào)文長度、確認(rèn)異常代碼延遲等可能導(dǎo)致拒絕服務(wù)攻擊。
基于對Modbus協(xié)議存在的安全隱患問題,在新能源風(fēng)電風(fēng)機(jī)控制系統(tǒng)中設(shè)計(jì)了中間人攻擊方式,攻擊者在風(fēng)機(jī)主控的交換機(jī)前添加樹莓派采用無線遠(yuǎn)程攻擊方式。圖9是新能源邊界安全攻擊場景。
圖9 新能源邊界安全滲透測試場景
為了模擬風(fēng)機(jī)控制系統(tǒng)和上位機(jī)之間的通信方式,使用Modbus Slave(客戶端)和Modbus Poll(服務(wù)端)對運(yùn)行Modbus協(xié)議的風(fēng)機(jī)主控PLC進(jìn)行模擬,客戶端向服務(wù)端發(fā)送指令之后,服務(wù)端作出響應(yīng),使用Wireshark對通信過程進(jìn)行流量抓包,分析PDU部分的數(shù)據(jù)報(bào)文,之后使用Wireshark導(dǎo)出數(shù)據(jù)包的一個(gè)詢問應(yīng)答分組包,對數(shù)據(jù)包進(jìn)行修改后使用TCP發(fā)包工具將該修改的數(shù)據(jù)包重新發(fā)送出去。觀察服務(wù)器是否能夠正常接收并發(fā)生響應(yīng)。圖10是Modbus模擬主從設(shè)備之間通信模式。
圖10 Modbus主從設(shè)備之間通信模式
服務(wù)端下發(fā)風(fēng)機(jī)啟停指令后,風(fēng)機(jī)能夠正常啟動和停止,首先攻擊者與風(fēng)機(jī)主控設(shè)備建立TCP連接,之后發(fā)送Modbus協(xié)議數(shù)據(jù),Wireshark對Modbus協(xié)議報(bào)文抓包,分析Modbus協(xié)議指令功能碼。表2是Modbus請求數(shù)據(jù)包mb_req_pdu,表3是Modbus響應(yīng)數(shù)據(jù)包mb_rsp_pdu。
表2 Modbus請求數(shù)據(jù)
表3 Modbus響應(yīng)數(shù)據(jù)
Modbus協(xié)議是應(yīng)用層報(bào)文傳輸協(xié)議,基于請求/應(yīng)答模型,提供功能碼驗(yàn)證服務(wù)。使用Modbus協(xié)議腳本程序探測Modbus通信設(shè)備,并使用中間人攻擊方式對風(fēng)機(jī)主控設(shè)備下發(fā)控制指令。圖11是識別到Modbus協(xié)議模擬設(shè)備,圖12是對模擬的風(fēng)機(jī)主控設(shè)備下發(fā)控制指令,修改風(fēng)機(jī)主控模擬設(shè)備狀態(tài)。
圖11 嗅探Modbus協(xié)議設(shè)備
圖12 寫入Modbus模擬設(shè)備寄存器值
使用中間人攻擊方法,對風(fēng)機(jī)主控系統(tǒng)下發(fā)的Modbus風(fēng)機(jī)控制指令進(jìn)行修改后重發(fā),可造成風(fēng)機(jī)的惡意啟停、偏航、收舵等行為,模擬攻擊顯示風(fēng)機(jī)主控設(shè)備接到指令并發(fā)生響應(yīng)。更嚴(yán)重的是攻擊者可以對風(fēng)機(jī)環(huán)網(wǎng)進(jìn)行攻擊,可造成大面積的風(fēng)場功率失調(diào)。
工業(yè)控制系統(tǒng)自身缺陷主要體現(xiàn)在工控協(xié)議、控制設(shè)備、上位機(jī)軟件等方面。Modbus協(xié)議缺乏認(rèn)證,使用合法的Modbus地址和功能碼即可以建立一個(gè)Modbus會話,其次Modbus協(xié)議缺乏加密,地址和命令明文傳輸,很容易被攻擊者截獲和解析。本文通過對新能源系統(tǒng)廣泛使用的Modbus協(xié)議進(jìn)行形式化安全分析,驗(yàn)證了Modbus協(xié)議自身的安全問題,并模擬了風(fēng)機(jī)主控設(shè)備使用Modbus協(xié)議存在的安全隱患?;诖颂岢鰧π履茉达L(fēng)電網(wǎng)絡(luò)通信邊界安全防護(hù)的方案。
添加身份認(rèn)證機(jī)制,對不符合身份的客戶端不建立連接,杜絕未授權(quán)的客戶端發(fā)起Modbus請求連接。圖13是Modbus協(xié)議身份認(rèn)證模式。
圖13 Modbus/TCP身份驗(yàn)證模型
使用國產(chǎn)密碼算法SM4[16]產(chǎn)品對Modbus協(xié)議通信進(jìn)行加密。通信協(xié)議加密過程采用國密算法SM4可以加強(qiáng)國產(chǎn)密碼技術(shù)在新能源領(lǐng)域的深度應(yīng)用,推動國產(chǎn)密碼技術(shù)應(yīng)用發(fā)展。對新能源風(fēng)力發(fā)電現(xiàn)場側(cè)邊界通信處添加國密算法設(shè)備,可確保協(xié)議通信的保密性。圖14是新能源風(fēng)電網(wǎng)絡(luò)邊界使用國產(chǎn)密碼產(chǎn)品設(shè)備進(jìn)行通信加密。
圖14 風(fēng)電網(wǎng)絡(luò)邊界通信加密
本文針對新能源風(fēng)電風(fēng)機(jī)控制系統(tǒng)使用的Modbus協(xié)議,形式化分析了Modbus協(xié)議的安全性,結(jié)合滲透測試方法驗(yàn)證了Modbus協(xié)議的新能源風(fēng)機(jī)主控系統(tǒng)的脆弱性,提出了新能源風(fēng)電網(wǎng)絡(luò)通信邊界安全防護(hù)方案。新能源工業(yè)控制系統(tǒng)中還存在其他廣泛的工控協(xié)議,通過對協(xié)議的形式化安全分析和實(shí)驗(yàn)驗(yàn)證確定工控協(xié)議存在的安全隱患,從而加強(qiáng)工控設(shè)備的安全防護(hù)。這對未來工控安全的研究提供了參考方法。