張盛山,尚文利,萬 明,張華良,曾 鵬
(1.中國科學(xué)院 沈陽自動(dòng)化研究所,遼寧 沈陽110016;2.中國科學(xué)院大學(xué),北京100049)
在設(shè)計(jì)之初,工業(yè)控制系統(tǒng)大多采用專有的通信協(xié)議、操作系統(tǒng)、硬件設(shè)備,并且與其它網(wǎng)絡(luò)隔離,因此業(yè)界普遍認(rèn)為其不存在信息安全問題。隨著工業(yè)化與信息化進(jìn)程的不斷交匯融合,工業(yè)通訊系統(tǒng)廣泛采用TCP/IP 技術(shù)[1]、開放的工業(yè)通訊協(xié)議、通用軟硬件和網(wǎng)絡(luò)設(shè)施,甚至與企業(yè)管理信息系統(tǒng)和互聯(lián)網(wǎng)產(chǎn)生數(shù)據(jù)交換。工業(yè)控制系統(tǒng)的封閉性正在逐漸被打破,而且原本存在諸多安全缺陷也使工業(yè)控制系統(tǒng)更容易遭受黑客、病毒、與敵對(duì)勢(shì)力的滲透攻擊[2-5]。
因此,如何阻止病毒入侵工業(yè)控制系統(tǒng)、抵御惡意攻擊與工控系統(tǒng)入侵行為檢測(cè)成為當(dāng)前研究熱點(diǎn),國內(nèi)相關(guān)研究機(jī)構(gòu)與專家學(xué)者紛紛在該領(lǐng)域展開研究工作,并且取得了一定的成果。Snort2.9 版本開始加入Modbus等協(xié)議的預(yù)處理器[6,7],可對(duì)通訊協(xié)議的部分字段和數(shù)據(jù)包的完整性進(jìn)行分析;第三方機(jī)構(gòu)發(fā)布,例如Digital Bond發(fā)布了入侵檢測(cè)規(guī)則集合[7],描述了部分典型的工業(yè)控制系統(tǒng)中的異常行為。Niv Coldenberg等[9]提出了一種基于有限狀態(tài)自動(dòng)機(jī)的Modbus TCP通訊精確建模方法,根據(jù)人機(jī)界面與可編程控制器之間的通訊流量構(gòu)建了有限狀態(tài)自動(dòng)機(jī)的模型,該方法具有較低誤報(bào)率,不過需要建立在人機(jī)界面與可編程控制器之間通訊具有周期性特征的基礎(chǔ)之上。Dale Peterson等[10]設(shè)計(jì)了DCS系統(tǒng)SCADA 系統(tǒng)的安全事件被動(dòng)生成方法,彌補(bǔ)了工控系統(tǒng)中控制器缺乏記錄安全事件的缺陷,使得行為審計(jì)、故障追蹤成為可能。Hadeli Hadeli等[11]認(rèn)為可以通過工控系統(tǒng)中的確定行為和系統(tǒng)描述文件來可靠地識(shí)別異常行為,并為防火墻等安全設(shè)施配置規(guī)則設(shè)計(jì)實(shí)現(xiàn)了自動(dòng)產(chǎn)生配置規(guī)則的框架。Wojciech Tylman[12,13]提出了基于Snort數(shù)據(jù)獲取模塊DAQ 的非IP協(xié)議的處理方法,使得Snort可以深入現(xiàn)場(chǎng)總線層進(jìn)行入侵檢測(cè),并不必添加硬件或修改Snort代碼本身。
上述各研究方法如文獻(xiàn) [5-7,12]可以歸為誤用檢測(cè)范疇,即根據(jù)已知攻擊特征匹配網(wǎng)絡(luò)中的通訊流量,具有誤報(bào)率較低的特性,但由于工控系統(tǒng)攻擊行為特征庫不可能包含所有的攻擊行為,使用誤用檢測(cè)的方式容易產(chǎn)生漏報(bào)的情況。文獻(xiàn) [8-10]可歸為異常檢測(cè)范疇,該方法建立在工業(yè)控制系統(tǒng)本身通訊流量具有簡單固定的通訊模式的基礎(chǔ)之上,通過建立系統(tǒng)正常行為的輪廓模型識(shí)別出異常的流量,其優(yōu)勢(shì)是能夠探測(cè)出未知特征的攻擊行為甚至操作人員的誤操作,然而無法像誤用檢測(cè)那樣清晰地定位錯(cuò)誤,且容易出現(xiàn)誤警現(xiàn)象。
上述方法均在很大程度上增強(qiáng)了系統(tǒng)識(shí)別惡意攻擊行為的能力,提升了系統(tǒng)的安全性,然而工業(yè)控制系統(tǒng)的信息安全需要從不同的維度進(jìn)行強(qiáng)化,明確而合理的安全策略是工業(yè)控制系統(tǒng)信息安全的重要環(huán)節(jié)。在異常檢測(cè)方法的基礎(chǔ)之上,本文選取了具有代表性的Modbus通訊協(xié)議作為研究對(duì)象,針對(duì)其安全缺陷導(dǎo)致其易遭受來自于應(yīng)用協(xié)議的攻擊的問題,本文提出了ModbusTCP 協(xié)議深度解析方法和ModbusTCP 通訊安全規(guī)則模型,并在此基礎(chǔ)上設(shè)計(jì)了基于入侵檢測(cè)規(guī)則與 “白名單”相結(jié)合的ModbusTCP區(qū)域與邊界安全防護(hù)模型。
Modbus是OSI模型第七層上的應(yīng)用層報(bào)文傳輸協(xié)議,已經(jīng)成為一種通用的標(biāo)準(zhǔn)。其實(shí)現(xiàn)方式主要包括基于串行鏈路的實(shí)現(xiàn) (Modbus RTU/Modbus ASCII)、基于高速令牌環(huán)的實(shí)現(xiàn) (Modbus Plus)和基于以太網(wǎng)上TCP/IP 技術(shù)的實(shí)現(xiàn) (Modbus TCP/IP)以下簡稱Modbus TCP)。如圖1所示,Modbus各種通訊在可以無縫的銜接在同樣的通訊系統(tǒng)中[14],網(wǎng)關(guān)的作用是保證協(xié)議的不同底層的Modbus通訊的轉(zhuǎn)換。
圖1 Modbus TCP結(jié)構(gòu)拓?fù)?/p>
本文主要關(guān)注Modbus通訊在以太網(wǎng)上基于TCP/IP技術(shù)的通訊安全,其請(qǐng)求與響應(yīng)報(bào)文均封裝為如圖2所示的格式。
圖2 Modbus TCP包格式
其中MBAP HEADER 為Modbus應(yīng)用協(xié)議報(bào)文頭,目的是識(shí)別Modbus應(yīng)用數(shù)據(jù)單元。該部分主要包含事務(wù)處理標(biāo)志符 (TRANSACTION IDENTIFIER)、協(xié)議標(biāo)志符(PROTOCOL IDENTIFIER)、長度 (LENGTH)、單元標(biāo)志符 (UNIT IDENTIFIER)4 個(gè)部分。功能碼是Modbus客戶端 (MASTER)向服務(wù)端 (SLAVE)指示進(jìn)行何種操作的標(biāo)志字段,最能夠體現(xiàn)客戶端對(duì)服務(wù)器的操作意圖。數(shù)據(jù)部分 (DATA)由客戶機(jī)根據(jù)具體的應(yīng)用和功能碼的不同進(jìn)行設(shè)置并由服務(wù)端進(jìn)行相應(yīng)的回答[15]。
目前廣泛使用的工控協(xié)議在設(shè)計(jì)之初,幾乎都是運(yùn)行在相對(duì)封閉孤立的網(wǎng)絡(luò)環(huán)境中,不會(huì)產(chǎn)生與其它網(wǎng)絡(luò)的數(shù)據(jù)交換,因此信息安全與網(wǎng)絡(luò)安全因素并不需要著重考慮,而更多關(guān)心的是功能安全和物理安全[16]。工業(yè)控制系統(tǒng)通訊協(xié)議的信息安全需求雖然存在,但是考慮到向工業(yè)通訊協(xié)議中增添安全機(jī)制是一個(gè)繁雜的系統(tǒng)工程,筆者認(rèn)為在相當(dāng)長工業(yè)控制系統(tǒng)通訊協(xié)議自身存在安全風(fēng)險(xiǎn)的局面并不會(huì)改變。
Modbus TCP通訊底層基于標(biāo)準(zhǔn)的以太網(wǎng)TCP/IP技術(shù),因此底層協(xié)議的安全缺陷均被繼承保留下來,也就是說針對(duì)IT 網(wǎng)絡(luò)的常規(guī)攻擊方式也適用于工業(yè)控制系統(tǒng),甚至造成的危害更大[17]。例如,受制于工業(yè)控制器有限的運(yùn)算資源、可能不夠健壯網(wǎng)絡(luò)協(xié)議棧,拒絕服務(wù)方式的攻擊更容易使工業(yè)控制器宕機(jī)失效。
對(duì)于工控系統(tǒng)更為有效、破壞力更大的方式是針對(duì)應(yīng)用層數(shù)據(jù)構(gòu)建攻擊行為,這主要是由于Modbus協(xié)議應(yīng)用層設(shè)計(jì)存在的缺陷,主要表現(xiàn)為缺乏認(rèn)證、授權(quán)和加密等安全機(jī)制。缺乏認(rèn)證表現(xiàn)在僅需要一個(gè)合法的Modbus地址與合法的功能碼即可以建立一個(gè)Modbus會(huì)話;缺乏授權(quán)體現(xiàn)在沒有基于角色的訪問控制機(jī)制,任意用戶可以執(zhí)行任意的功能;缺乏加密體現(xiàn)在地址和命令使用明文傳輸,很容易捕獲并進(jìn)行解析。
當(dāng)攻擊者通過一系列的滲透攻擊手段,獲得了某系統(tǒng)的控制權(quán)限或者網(wǎng)絡(luò)的訪問權(quán)限后,可以通過監(jiān)聽網(wǎng)絡(luò)中Modbus TCP通訊流量,獲取其關(guān)心的信息,并且可以按照協(xié)議輕松地構(gòu)造Modbus TCP 數(shù)據(jù)包,甚至可以直接借助相應(yīng)的調(diào)試工具向重要控制器展開攻擊。
例如,在現(xiàn)實(shí)的工業(yè)控制系統(tǒng)中,數(shù)字量可能分別對(duì)應(yīng)于可編程控制器的線圈和保持寄存器,則篡改了可編程控制器中的某一個(gè)線圈的數(shù)值很有可能使得某一個(gè)本來應(yīng)該處于閉合狀態(tài)開關(guān)打開,顯然這在要求極其嚴(yán)苛的可靠性的工業(yè)控制系統(tǒng)將會(huì)造成很嚴(yán)重的后果。另一種情況是,攻擊者篡改了某個(gè)保持寄存器中的數(shù)值,而保持寄存器可能對(duì)應(yīng)于模擬量輸入輸出或者工業(yè)控制過程中的重要參數(shù),從而造成工藝不能達(dá)標(biāo)或者直接造成事故。
上文中分析表明若要切實(shí)保護(hù)基于Modbus通訊的工業(yè)控制系統(tǒng)信息安全,需要對(duì)Modbus報(bào)文進(jìn)行深度解析,從而發(fā)現(xiàn)入侵行為與攻擊企圖,因此本小節(jié)建立了Modbus報(bào)文的深度解析的一般模型,如圖3所示。
圖3 Modbus TCP深度解析
Modbus協(xié)議深度解析模型主要包含3部分,分別為網(wǎng)絡(luò)層與傳輸層解析、Modbus報(bào)文頭解析、Modbus報(bào)文解析,其流程如下:
步驟1 網(wǎng)絡(luò)層與傳輸層解析:該環(huán)節(jié)主要提取源與目的IP地址和源與目的端口號(hào),解析該部分信息為在網(wǎng)絡(luò)層與傳輸層進(jìn)行訪問控制或者入侵檢測(cè)提供基礎(chǔ)信息,通過IP地址與端口號(hào)標(biāo)示網(wǎng)絡(luò)中進(jìn)行通訊的設(shè)備。
步驟2 Modbus報(bào)文頭解析:該環(huán)節(jié)主要解析Modbus報(bào)文頭中事務(wù)處理標(biāo)識(shí)符、協(xié)議標(biāo)識(shí)符、長度和單元標(biāo)識(shí)符。其中,協(xié)議標(biāo)識(shí)符為判定是否是Modbus通訊提供了依據(jù);而長度字段的數(shù)值代表了單元標(biāo)識(shí)符與其后數(shù)據(jù)的總長度,可據(jù)此判別人為構(gòu)造的異常數(shù)據(jù)包;單元標(biāo)識(shí)符為Modbus串行鏈路上的地址,長度為一個(gè)字節(jié),根據(jù)該字段對(duì)連接在同一個(gè)協(xié)議轉(zhuǎn)換網(wǎng)關(guān)并且共享相同IP地址的不同Modbus設(shè)備進(jìn)行尋址,因此該字段具有重要意義。
步驟3 Modbus報(bào)文解析:該部分為Modbus協(xié)議深度解析的核心與關(guān)鍵,主要解析能夠代表操作意圖的Modbus功能碼,并且根據(jù)不同的Modbus功能碼進(jìn)一步解析相應(yīng)的數(shù)據(jù)。
Modbus協(xié)議中定義了4種數(shù)據(jù)類型分別為輸入線圈、線圈、輸入寄存器和保持寄存器,分別對(duì)應(yīng)于工控環(huán)境中的相應(yīng)變量,比如數(shù)字量輸入輸出,模擬量輸入輸出,對(duì)應(yīng)于特定的功能碼。例如,功能碼02為讀取輸入量線圈操作,操作對(duì)象為輸入線圈;功能碼03為讀取保持寄存器,操作對(duì)象為保持寄存器。由于協(xié)議中不同功能碼可能操作單個(gè)或者多個(gè)數(shù)據(jù)對(duì)象,因此需要提出一個(gè)通用的Modbus報(bào)文解析模型,如圖4所示。
該過程主要分為如下幾步構(gòu)成:
(1)解析Modbus功能碼字段,如果與Modbus協(xié)議規(guī)定的4種數(shù)據(jù)類型的讀寫操作無關(guān),則執(zhí)行步驟2,否則轉(zhuǎn)而執(zhí)行步驟3。
圖4 Modbus TCP報(bào)文解析
(2)解析可能存在的功能碼子碼,并且解析對(duì)應(yīng)功能的關(guān)鍵字段,然后結(jié)束整個(gè)解析流程。
(3)根據(jù)功能碼識(shí)別,所要操作的數(shù)據(jù)對(duì)象。
(4)解析所操作的數(shù)據(jù)對(duì)象的起始地址。
(5)解析該數(shù)據(jù)對(duì)象的數(shù)目信息。
(6)保存相應(yīng)的字段信息,流程結(jié)束。
目前學(xué)術(shù)界與業(yè)界普遍認(rèn)為,保證工業(yè)控制系統(tǒng)的信息安全和網(wǎng)絡(luò)安全的最有效方法是構(gòu)建工業(yè)控制系統(tǒng) “縱深防御”體系[18]。 “縱深防御”體系包含諸多方面,本文從工業(yè)通訊協(xié)議深度解析的角度,認(rèn)為構(gòu)建工控SCADA系統(tǒng)的縱深防御體系主要分為兩個(gè)核心環(huán)節(jié),分別是區(qū)域劃分與邊界建立和安全策略設(shè)計(jì)。
區(qū)域一般有執(zhí)行或者支持相同的功能,具有相同的安全需求的若干資產(chǎn)構(gòu)成。邊界存在于不同的區(qū)域之間,是不同區(qū)域進(jìn)行數(shù)據(jù)交換的通道。區(qū)域和邊界的合理劃分與設(shè)置對(duì)于保證工業(yè)通訊系統(tǒng)信心安全具有重要意義。一般來說區(qū)域的劃分可以從網(wǎng)絡(luò)連接、控制功能、數(shù)據(jù)存儲(chǔ)、遠(yuǎn)程訪問、通訊協(xié)議、關(guān)鍵性程度等幾個(gè)維度進(jìn)行考慮。本文主要考慮基于Modbus TCP 的工業(yè)SCADA 系統(tǒng),因此將系統(tǒng)區(qū)域劃分與邊界建立的一般方法簡化為如下流程:
(1)對(duì)系統(tǒng)進(jìn)行風(fēng)險(xiǎn)評(píng)估,并且進(jìn)行重要資產(chǎn)識(shí)別,并且建立相應(yīng)的文檔記錄。
(2)按照重要資產(chǎn)所處的企業(yè)業(yè)務(wù)的層次,將整個(gè)系統(tǒng)按照從上至下的順序分為四層,分別為企業(yè)管理信息層、數(shù)據(jù)監(jiān)控采集網(wǎng)層、控制單元層與現(xiàn)場(chǎng)設(shè)備層。
(3)在每一個(gè)層次內(nèi)部按照所實(shí)現(xiàn)的功能或者操作權(quán)限進(jìn)一步劃分不同的區(qū)域。例如在數(shù)據(jù)監(jiān)控采集層中有僅從底層PLC中讀取數(shù)據(jù)和對(duì)站點(diǎn)可能進(jìn)行寫操作的監(jiān)控畫面站點(diǎn),應(yīng)當(dāng)屬于數(shù)據(jù)采集監(jiān)控層的不同子區(qū)域。
(4)在有數(shù)據(jù)通訊的不同區(qū)域之間進(jìn)行邊界設(shè)定,使得兩個(gè)區(qū)域之間的通訊流量都經(jīng)過該邊界,以便進(jìn)行區(qū)域間通訊的管理和控制。
需要指出的是,一個(gè)區(qū)域內(nèi)的子區(qū)域的劃分是對(duì)區(qū)域內(nèi)不同資產(chǎn)的安全需求的進(jìn)一步刻畫,因此如果 “粒度”越細(xì),則劃分的區(qū)域越多和嵌套的子區(qū)域也就越多;此外,可以調(diào)整工業(yè)控制系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu),使得區(qū)域在邏輯上和物理上能夠重合。
區(qū)域間的邊界防護(hù)可能采用不同的安全防御技術(shù)和設(shè)備,規(guī)則描述也不盡相同,因此這里首先抽象出安全規(guī)則的一般模型
其中,SourceAdress表示源地址,SourcePort表示源端口,DestnationAddress代表目的地址,DestnationPort表示目的端口,也代表著何種服務(wù),Action表示是通訊流量符合后面的描述后,所應(yīng)該采取的動(dòng)作,主要包含如下幾種:
Allow:判定對(duì)應(yīng)的數(shù)據(jù)包合法并且放行,不產(chǎn)生其它任何動(dòng)作。
Deny:判定對(duì)應(yīng)的數(shù)據(jù)包為非法并且丟棄,并且進(jìn)行報(bào)警。
Alert:判定對(duì)應(yīng)的數(shù)據(jù)包為異常但是予以放行,并且進(jìn)行報(bào)警。
另外SpecificProtocolFields字段表示通訊協(xié)議相關(guān)的字段條件,對(duì)于Modbus TC通訊而言,其詳細(xì)的格式如下
其中,ProtocolIdentifier指Modbus報(bào)文頭中的協(xié)議標(biāo)識(shí)符,UnitID 指Modbus報(bào)文頭中的單元標(biāo)識(shí)符,F(xiàn)unctionCode表示Modbus規(guī)定的功能碼,而Data字段表示與Modbus功能碼相關(guān)的,當(dāng)Modbus功能碼讀寫對(duì)應(yīng)的4種數(shù)據(jù)類型或者其它操作時(shí),可能有標(biāo)識(shí)數(shù)據(jù)類型的起始地址與數(shù)量或者子功能碼構(gòu)成,即為
在邊界采用的安全防護(hù)防御技術(shù)可能包含防火墻、入侵檢測(cè)系統(tǒng)IDS[19]與入侵防御系統(tǒng)IPS等。防火墻主要進(jìn)行傳輸層或者網(wǎng)絡(luò)層的訪問控制功能,缺乏對(duì)工業(yè)通訊協(xié)議應(yīng)用層的支持;入侵檢測(cè)系統(tǒng)和入侵防御系統(tǒng)采用模式匹配的方法,對(duì)符合特征的數(shù)據(jù)包采取相應(yīng)的動(dòng)作。
從部署方式上看,IDS系統(tǒng)以旁路監(jiān)聽的方式獲取網(wǎng)絡(luò)中的流量,不會(huì)對(duì)網(wǎng)絡(luò)中的通訊造成延時(shí)的影響;IPS則串聯(lián)在通訊鏈路上,可以將違法的通訊包攔截丟棄。從傳統(tǒng)IT 領(lǐng)域信息安全規(guī)則配置所體現(xiàn)出來的安全策略來看,IDS與IPS 的安全策略多采取羅列檢測(cè)規(guī)則的方式,數(shù)據(jù)包如匹配則報(bào)警或者丟棄;而另一種IPS的安全策略則是先定義合法的數(shù)據(jù)包類型,然后丟棄其它任何流量。這兩種安全策略如圖5所示。
圖5 入侵檢測(cè)與 “白名單”策略
上述兩種安全策略對(duì)于工業(yè)SCADA 系統(tǒng)而言均有極大的局限性。首先,IDS系統(tǒng)雖然允許存在一定的誤判和誤判,不能攔截非法的數(shù)據(jù)包;而采用 “白名單”IPS策略如果配置規(guī)則不當(dāng),可能將合法的數(shù)據(jù)包丟棄,這對(duì)可靠性要求極高的工業(yè)控制系統(tǒng)中是相當(dāng)危險(xiǎn)的。
本文提出了結(jié)合IDS策略與 “白名單”策略相結(jié)合的Modbus TCP通訊安全防御模型,與前文中區(qū)域劃分與邊界設(shè)立合起來,如圖6所示,包含如下步驟:
步驟1 進(jìn)行SCADA 系統(tǒng)區(qū)域劃分和邊界設(shè)定。按照工業(yè)控制系統(tǒng)企業(yè)生產(chǎn)信息層、數(shù)據(jù)監(jiān)控采集層、控制單元層與現(xiàn)場(chǎng)設(shè)備層進(jìn)行區(qū)域劃分。若需要對(duì)每一個(gè)區(qū)域進(jìn)行進(jìn)一步的區(qū)域劃分,并且符號(hào)化記錄分區(qū)結(jié)果以方便進(jìn)一步的安全策略設(shè)定。
步驟2 “白名單”IPS策略部分設(shè)定。
(1)明確不同區(qū)域或者子區(qū)域之間進(jìn)行數(shù)據(jù)交換,所需要的ModbusTCP 通訊的最小集合,定義此部分通訊為合法通訊。這里的合法數(shù)據(jù)可能根據(jù)ModbustTCP 協(xié)議深度解析部分的功能碼以及功能碼所需要的數(shù)據(jù)共同定義。
(2)用安全規(guī)則描述語言表示所定義的合法數(shù)據(jù)包,例如一條表示可以Modbus客戶機(jī)可以使用01功能碼訪問Modbus服務(wù)器地址從0x0000開始的3個(gè)線圈的安全規(guī)則可以表示為:
圖6 Modbus TCP通訊安全防御模型
步驟3 對(duì)于無法完全認(rèn)定為合法的采取IDS策略進(jìn)行報(bào)警而不是攔截。這部分通訊可能包括攻擊者和系統(tǒng)本身都可能用到的通訊,例如功能碼為08且子功能碼為01的重啟通信功能,不能一定認(rèn)定為攻擊行為,因此最佳的選擇使及時(shí)報(bào)警。
步驟4 默認(rèn)規(guī)則設(shè)置,即放棄其它一切不在步驟2與步驟3中的設(shè)置的ModbusTCP通訊包。
事實(shí)上,該模型不僅僅適合于ModbusTCP 通訊安全防護(hù),如果增加其它通訊協(xié)議的深度解析機(jī)制,例如MMS、GOOSE、FF-HSE 與DNP3 等,則可以按照相同的流程推廣到其它通訊協(xié)議從而成為一個(gè)通用的模型。
為了驗(yàn)證本文提出的Modbus系統(tǒng)防御方法實(shí)驗(yàn)室環(huán)境下搭建了基于Modbus TCP 通訊的工業(yè)SCADA 系統(tǒng)仿真實(shí)驗(yàn)環(huán)境,其拓?fù)渑c結(jié)構(gòu)如圖7所示。
該仿真實(shí)驗(yàn)環(huán)境分為三層,依次是數(shù)據(jù)監(jiān)控采集層、主控單元層、以及虛擬現(xiàn)場(chǎng)設(shè)備層。數(shù)據(jù)監(jiān)控采集層包含兩個(gè)Modbus客戶端,分別基于KingSCADA 軟件開發(fā)監(jiān)控畫面,和模擬攻擊源的調(diào)試測(cè)試軟件diagslave;主控單元層選擇施耐德M340PLC,CPU 型號(hào)為2020;虛擬現(xiàn)場(chǎng)設(shè)備層在可編程邏輯控制器M340中的控制邏輯中實(shí)現(xiàn)。
圖7 仿真實(shí)驗(yàn)環(huán)境
其中,在虛擬現(xiàn)場(chǎng)設(shè)備層中包含3個(gè)標(biāo)識(shí)開關(guān)開閉的開關(guān)量,和3個(gè)電磁流量閥的開度的模擬量以及容器液位上下限和當(dāng)前液位高度??删幊踢壿嬁刂破鞯倪壿嬓枰獙?dāng)前液位限定在液位上限和液位下限之間。在實(shí)際的工業(yè)控制系統(tǒng)中,當(dāng)前液位不在上下限之間,可能會(huì)導(dǎo)致容器爆炸或者工藝質(zhì)量受到嚴(yán)重影響。因此,這里的攻擊方法設(shè)計(jì)為通過diagslave軟件修改保持液位上限的保持寄存器,則容器中實(shí)際液位高度超過真實(shí)的限度后,PLC 中的控制邏輯也不會(huì)改變輸入與輸出的閥門狀態(tài)從而控制液位。
抵御上面提到的攻擊的最佳方法,就是根據(jù)實(shí)驗(yàn)仿真環(huán)境能夠按照控制邏輯正常工作,明確Modbus客戶端與Modbus服務(wù)器端所需要的最小通訊集合,定義完善的邊界防護(hù)策略。這里邊界安全防御措施選擇的是開源軟件Snort,安全防御策略也是基于Snort的語法規(guī)則進(jìn)行描述,為了簡潔地描述安全策略,這里仍然采用和上文相同的安全規(guī)則描述方式。
對(duì)上面描述的場(chǎng)景分析可知,diagslave所模擬的數(shù)據(jù)采集軟件應(yīng)該僅僅應(yīng)該具有讀取開關(guān)量與模擬量的權(quán)限,而KingSCADA 應(yīng)該具有開關(guān)量與模擬量的讀寫權(quán)限;然而,對(duì)于液位上下限值不會(huì)經(jīng)常性的改變,即使是來自于KingSCADA 的寫操作也應(yīng)該認(rèn)定為異常操作而觸發(fā)報(bào)警信息。
這里為了簡化規(guī)則,假設(shè)系統(tǒng)中僅存在液位上限值這一個(gè)數(shù)據(jù)對(duì)象且其地址為0x0000,則該系統(tǒng)的安全規(guī)則設(shè)計(jì)流程按照如下步驟進(jìn)行:
步驟1 將系統(tǒng)劃分為數(shù)據(jù)監(jiān)控采集層與控制單元層,分別對(duì)應(yīng)于Modbus客戶端和服務(wù)器,并且進(jìn)一步將數(shù)據(jù)監(jiān)控采集層中按照是否可以對(duì)液位上限值進(jìn)行寫操作的劃分為2個(gè)不同的子區(qū)域。
步驟2 設(shè)置 “白名單”規(guī)則,允許KingSCADA 與diagslave對(duì)PLC 中地址為0x0000 的保持寄存器進(jìn)行讀操作。
步驟3 設(shè)置異常行為的入侵檢測(cè)規(guī)則,如果King-SCADA 對(duì)PLC進(jìn)行了寫操作,則進(jìn)行報(bào)警。
設(shè)置默認(rèn)規(guī)則,攔截其它一切未在前面 “白名單”中的通訊。
步驟4 設(shè)置默認(rèn)規(guī)則,攔截其它一切未在前面步驟2與步驟3中的數(shù)據(jù)包。
實(shí)驗(yàn)結(jié)果表明,diagslave與所模擬的攻擊源與King-SCADA 只能讀取PLC的0x0000保持寄存器;同時(shí),如果KingSCADA 修改了液位上限值,則會(huì)觸發(fā)Snort報(bào)警。這種將入侵檢測(cè)規(guī)則與 “白名單”相結(jié)合的工業(yè)控制系統(tǒng)區(qū)域間安全防護(hù)策略能夠極大程度的消除了風(fēng)險(xiǎn)敞口,保障系統(tǒng)安全運(yùn)行。
本文針對(duì)目前工業(yè)控制系統(tǒng)面臨的新型病毒入侵難以檢測(cè)和工業(yè)通訊協(xié)議設(shè)計(jì)存在缺陷等問題,提出了對(duì)工業(yè)通訊協(xié)議進(jìn)行深度解析方法和ModbusTCP 通訊的安全規(guī)則描述的一般形式。在此基礎(chǔ)之上,本文設(shè)計(jì)了基于入侵檢測(cè)規(guī)則與 “白名單”相結(jié)合的ModbusTCP區(qū)域與邊界安全防護(hù)模型,該模型的核心思想是明確指明區(qū)域間合法的ModbusTCP通訊,禁止其它一切不必要的數(shù)據(jù)在區(qū)域間進(jìn)行交換,而可能合法但可疑的通訊將觸發(fā)報(bào)警。該防護(hù)策略具有簡潔清晰,易于推廣的特點(diǎn),非常適合于應(yīng)用在工業(yè)控制系統(tǒng)這樣網(wǎng)絡(luò)中通訊流量模式相對(duì)固定的場(chǎng)合。驗(yàn)證實(shí)驗(yàn)結(jié)果也表明了該方法的有效性。
然而,本文所提出的ModbusTCP 安全規(guī)則描述模型,難以有效描述同時(shí)存在于幾個(gè)數(shù)據(jù)包中的通訊行為特征的能力;所提出的ModbusTCP通訊防護(hù)策略,依賴于安全設(shè)計(jì)人員對(duì)于通訊協(xié)議、工業(yè)流程的充分了解和把握,出現(xiàn)理解偏差會(huì)導(dǎo)致安全規(guī)則設(shè)置錯(cuò)誤。另外,引入在線的防御措施會(huì)對(duì)工業(yè)控制系統(tǒng)的通訊的實(shí)時(shí)性和可靠性造成影響。因此,未來可以從解決攻擊行為隱含在多個(gè)Modbus數(shù)據(jù)包以及該安全防護(hù)策略對(duì)系統(tǒng)通訊實(shí)時(shí)性和可靠性影響的角度展開進(jìn)一步的研究。
[1]TIAN Zhongda,GAO Xianwen,LI Kun,et al.The improvement of IEEE 802.1p priority scheduling protocol in industrial Ethernet[J].Information and Control,2012,41 (1):117-122 (in Chinese).[田中大,高憲文,李琨,等.工業(yè)以太網(wǎng)中IEEE 802.1p 優(yōu)先權(quán)調(diào)度協(xié)議改進(jìn) [J].信息與控制,2012,41 (1):117-122.]
[2]WEI Qinzhi.Industrial network control system security and management[J].Measurement &Control Technology,2013,32 (2):87-92 (in Chinese).[魏欽志.工業(yè)網(wǎng)絡(luò)控制系統(tǒng)的安全與管理 [J].測(cè)控技術(shù),2013,32 (2):87-92.]
[3]PENG Yong,JIANG Changqing,XIE Feng,et al.Industrial control system cyber security research [J].J Tsinghua Univ(Sci&Tech),2012,52 (10):1396-1405(in Chinese).[彭勇,江長青,謝豐,等.工業(yè)控制系統(tǒng)信息安全研究進(jìn)展 [J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,52 (10):1396-1405.]
[4]XIONG Qi,JING Xiaowei,ZHAN Feng.Summary and implications for China of the information security work of the ICS system in the oil and gas industry in America[J].China Information Security,2012,27 (3):80-83(in Chinese).[熊琦,競(jìng)小偉,詹峰.美國石油天然氣行業(yè)ICS系統(tǒng)信息安全工作綜述及對(duì)我國的啟示[J].中國信息安全,2012,27 (3):80-83.]
[5]ZHANG Min,ZHANG Wuyi,HAN Guifen.Industrial control system information system security [J].Industrial Control Computer,2013,26 (10):25-27 (in Chinese). [張敏,張五一,韓桂芬.工業(yè)控制系統(tǒng)信息安全防護(hù)體系研究 [J].工業(yè)控制計(jì)算機(jī),2013,26 (10):25-27.]
[6]SourceFire,Snort manual[EB/OL]. [2012-06-23].http://www.snort.org/assets/166/snort_manual.pdf.
[7]Thomas H,Morris,Bryan A,et al.Deterministic intrusion detection rules for MODBUS protocols[C]//46th Hawaii International Conference on System Sciences,2013:1773-1781.
[8]Digital bond.[EB/OL].[2013-12-28].http://www.digitalbond.com/tools/quickdraw/modbus-tcp-rules/.
[9]Niv Goldenberg,Avishai Wool.Accurate modeling of Modbus/TCP for intrusion detection in SCADA system [J].Critical Infrastructure Protection,2013,6 (2):63-75.
[10]Dale Peterson.Quickdraw:Generating security log event for legacy SCADA and control system device[C]//Cybersecurity Applications &Technology Conference For Homeland Security,2009:227-229.
[11]Hadeli Hadeli,Ragnar Schierholz,Markus Braendle.Leveraging determinism in industrial control systems for advanced anomaly detection and reliable security configuration [C]//Emerging Technologies &Factory Automation,2009:1-8.
[12]Thomas Morris,Rayford Vaughn,Yoginder Dandass.A retrofit network intrusion detection system for MODBUS RTU and ASCII industrial control systems [C]//46th Hawaii International Conference on System Sciences,2013:2338-2345.
[13]Javier J.Using SNORT for intrusion detection in MODBUSTCP/IP communications [EB/OL]. [2011-11-07].http://www.giac.org/paper/gcia/7218/snort-intrusion-detection-modbus-tcp-ip-communications/124438.
[14]GB/T 19582.3-2008,Modbus industrial automation network specification—Part3:Modbus protocol implementation guide over TCP/IP [S].(in Chinese).[GB/T 19582.3-2008,基于Modbus協(xié)議的工業(yè)自動(dòng)化網(wǎng)絡(luò)規(guī)范第3部分:Modbus協(xié)議在TCP/IP上的實(shí)現(xiàn)指南 [S].]
[15]GB/T 19582.1-2008,Modbus industrial automation network specification-Part1:Modbus application protocol[S]. (in Chinese).[GB/T 19582.1-2008,基于Modbus協(xié)議的工業(yè)自動(dòng)化網(wǎng)絡(luò)規(guī)范第1部分:Modbus應(yīng)用協(xié)議 [S].]
[16]XIA Chunming,LIU Tao,WANG Huazhong,et al.Industrial control system security analysis[J].Information Security and Technology,2013 (2):13-17 (in Chinese). [夏春明,劉濤,王華忠,等.工業(yè)控制系統(tǒng)信息安全現(xiàn)狀及發(fā)展趨勢(shì) [J].信息安全與技術(shù),2013 (2):13-17.]
[17]Peter H,Rodrigo C,Mauricio P,et al.Attack taxonomies for the Modbus protocols[J].Critical Infrastructure Protection,2008,1:37-44.
[18]Eric K.Industrial network security securing critical infrastructure networks for smart grid,scada,and other industrial control system [M].Syngress,2011.
[19]Fovino IN,Carcano A,De Lacheze Murel T,Trombetta A,et al.Modbus/DNP3state-based intrusion detection system[C]//Advanced Information Networking and Applications,2010:729-736.