方棟梁 劉圃卓 秦 川 宋站威 孫玉硯 石志強 孫利民
(物聯網信息安全技術北京市重點實驗室(中國科學院信息工程研究所) 北京 100093) (中國科學院大學網絡空間安全學院 北京 100049)
根據美國國家標準技術研究院(NIST)給出的定義[1],工業控制系統(industrial control system, ICS)是一個涵蓋了多種類型的控制系統通用術語,包括監控和數據采集(supervisory control and data acquisition, SCADA)系統、集散控制系統(distributed control systems, DCS),以及其他控制系統,如可編程邏輯控制器(programmable logic controllers, PLC),常用于工業領域和關鍵基礎設施的控制系統中.工業控制系統是國家基礎設施的重要組成部分,廣泛應用于能源、制造、交通、軍工等行業,是關乎國計民生的重要資源.
工控協議是控制系統實現實時數據交換、數據采集、參數配置、狀態監控、異常診斷、命令發布和執行等眾多功能有機聯動的重要紐帶.早期工業控制系統運行在物理隔離的環境下,獨立于傳統互聯網,因此,相關設計與操作人員很少考慮到網絡攻擊的可能,且普遍存在僥幸心理[2].這導致大量協議在設計方面缺乏認證、加密等安全機制;在實現方面也對異常的協議數據考慮不充分,容易留有安全隱患.在“工業4.0”的時代背景下,工業控制系統越來越多地采用標準化解決方案.然而,這打破了工控系統原有的專用性和封閉性,使其面臨更廣泛的攻擊威脅.事實上,近些年針對工控系統的攻擊事件頻發,文獻[3]回顧了歷史上發生過的重大安全事件,并指出隨著形勢的發展,面向以工業互聯網為基礎的關鍵基礎設施的威脅越來越嚴峻.其中,攻擊者充分理解相關的工控協議諸多細節,并利用協議在設計、實現或應用方面的脆弱點,是順利實施攻擊事件的一個重要因素.如2010年,“Stuxnet”病毒劫持了S7協議實現代碼的關鍵函數,通過精確地篡改和偽造S7協議報文,成功攻擊了伊朗核電站,導致伊朗核計劃推遲數年[4].2017年,根據安全廠商ESET發布的消息,“Industroyer”病毒成功利用4種電力工控協議(IEC 60870-5-101,IEC 60870-5-104,IEC 61850-MMS,OPC DA),通過控制變電站中的斷路器,攻擊烏克蘭電力系統,造成大規模停電事件[5].同年,根據FireEye公司發布的消息[6],針對施耐德安全儀表系統的惡意軟件“TRITON”,利用私有協議TriStation進行的攻擊可造成工業過程無法工作.
綜上所述,深度剖析ICS的協議安全是理解工控系統安全威脅的一個重要角度,將為工業控制系統的安全防護提供參考和指導.本文通過調研和整理學術界、工業界對工控協議的安全研究工作,包括學術研究論文、標準指南、攻擊事件等,從協議的角度幫助理解工業控制系統的安全性.

Fig. 1 Typical industrial control network topology圖1 典型工控網絡拓撲結構
工控協議實現了ICS各層設備組件之間的連接和通信交互,并與各設備組件共同形成了工業控制網絡.從工業控制系統的業務分層看,一個典型的工控網絡可分為3層:管理層(企業辦公網絡)、控制層(過程控制與監控網絡)、現場設備層(現場控制網絡)[7-8],對應的工控網絡拓撲結構如圖1所示.根據傳輸信息的功能不同,各層的工控協議通信的實時性要求也不同,如在現場設備層,要求實時通信;而在管理層,則允許非實時通信.實際上,管理層的企業辦公網使用的協議與傳統互聯網協議一致(如HTTP,HTTPS,POP3等),此類協議已有很多分析和討論,此處不再贅敘.本文討論的工控協議是指應用于控制層和現場設備層的通信協議.
工控協議在不同場景中傳輸相似功能的內容,可大致分為3類[9].
1) 控制信息(control message)
控制信息在控制器和現場設備之間傳輸,并且是控制器中控制回路的輸入和輸出.因此,它具有很高的實時性和確定性要求.
2) 診斷信息(diagnostics message)
診斷信息用來描述系統當前的狀態,例如通過傳感器獲得的溫度、濕度、電流、電壓值等信息.這些信息用于監測廠站的健康狀態.通常情況下,控制系統傳輸診斷信息的數據量大.相比于實時性和確定性,診斷信息的傳輸更強調速度.
3) 安全信息(safety message)
安全信息用于控制一些關鍵功能,如安全關閉設備并控制保護電路的運行.傳統上,制造單元的安全聯鎖裝置使用可靠的安全繼電器進行硬接線,以確保單元內部在有操作員的情況下機器無法運行.但這種接線不容易重新配置,且出現問題時進行故障排查非常困難.通過傳輸的安全信息,可以更便捷地在各個組件之間協調,極大地提高了系統的重新配置和故障排除能力.
根據使用的通信技術,工控協議分為4類[8],如圖2所示:傳統控制網絡協議、現場總線協議、工業以太網協議和工業無線協議.當前廣泛應用的是工業以太網協議和現場總線協議,相比于早期的傳統控制網絡協議,其優點有2個:1)減少了用于通信的物理纜線,從而減少潛在故障點(如線路接頭松動);2)提高了通信系統的可維護性和擴展性(如向系統擴展添加新的設備).這些優點使得我們能更方便地構建復雜的大型控制系統.

Fig. 2 Protocol classification of industrial control system圖2 工業控制系統的協議分類
相對于有線協議,工業無線協議有更大優勢,例如進一步減少了所需的線纜數量,能更靈活地配置傳感器的位置等.所以,Moyne等人[9]認為工業無線網技術是工控網絡的未來,但需要解決安全、可靠、實時傳輸等問題[9-10].
相比傳統的互聯網協議,工控協議傳輸的數據對物理世界有直接的控制和影響.因此,工業控制系統的通信則被稱為控制網絡,而傳統互聯網一般被稱為數據網絡.結合文獻[1,9-10],我們總結了3個方面的區別:
1) 通信場景
工控協議廣泛應用于關鍵基礎設施領域,如電力、化工、制造、軍工、樓宇、交通等.其運行的環境經常遇到如潮濕、灰塵、高溫等不利的情況.工控協議傳輸的數據能直接影響物理世界,如機械臂運動、控制斷路器開合、電機啟動、反應液的水位等.通信故障對物理世界可能有嚴重的影響,如造成生產損失、環境毀壞,甚至危及生命.
傳統互聯網協議如HTTP,HTTPS,POP3等主要應用于數據分享和傳輸,運行在清潔和溫度受控的環境下.數據的產生和使用一般需要人的參與,如社交、搜索、郵件、新聞資訊、電子商務等.通信故障影響相對較小,可能給生活帶來不便,但大部分都可通過其他方式進行彌補和解決.
2) 通信要求
工控協議可直接影響物理世界,它的實時性要求相對較高.如運動控制的響應時間要求的范圍在0.25~1 ms,過程控制的響應時間要求的范圍在1~10 ms[10].除此之外,對于控制現場設備的工控協議一般還要求傳輸延遲是穩定的,即要求通信延遲的抖動小.因為抖動可能造成系統震蕩,產生負面影響.同時,工控系統一般還要求周期性的采樣系統的狀態信息,在這種情況下,設備是長時間“在線”的,數據的交互也是持續的.
傳統互聯網協議如HTTP,HTTPS,POP3等則對時延要求較低,大部分情況下,幾百毫秒甚至幾秒時間都是可接受的.同時,這些協議一般不要求長時間在線.
3) 通信過程
工控系統融合了IT領域和OT領域的技術,在通信網絡上,這種融合是分層的.現實中的工控網絡一般會分多層,比如普渡模型[11]將工控網絡分為6層.同時,作用于OT領域的工控協議,其傳輸的數據包通常較小,尤其在低層次的控制回路中,僅傳輸單個測量值或數字值,通常只有幾個字節.報文傳輸的可靠性主要依賴于報文中的完整性字段如CRC字段,冗余報文機制如GOOSE,SV協議等.
傳統互聯網協議層次較為簡單,一般分為局域網和廣域網.單次傳輸的數據量有幾千個字節或更多的數據,數據包大小至少為64B.同時,傳統的互聯網協議,其傳輸可靠性一般由TCP協議提供.雖然TCP協議存在校驗字段,但由于遠距離傳輸,容易出現丟包的情況,所以它還依賴確認應答機制、超時重傳機制等保障數據的可靠交互.
根據文獻[12-13],安全威脅是指可能造成信息丟失或功能失效等情況發生的事件.一般而言,安全威脅主要有2類[14]:1)蓄意攻擊.如工業間諜、恐怖組織活動等,可能帶來經濟、政治和軍事等方面的益處,也可能是炫耀技術能力或實施報復等.2)無意事件.它可能源于安全事故、設備故障、疏忽大意和自然災害等因素.
隨著通信技術的發展和進步,如高性能硬件的推出和新的保障機制的提出,系統運行的可靠性得到顯著改善,這使得無意事件帶來安全威脅的影響逐漸減小.相對地,隨著工業控制系統的信息化水平提高,越來越多的設備和系統直接或間接地接入互聯網,這打破了工控系統原有的封閉性和隔離性,加劇了其面臨的蓄意攻擊安全威脅.因此,我們更關注工控協議蓄意攻擊相關的安全威脅,具體地,本節將從工控協議的脆弱性、攻擊模式和攻擊影響3個角度來討論工控協議的安全威脅.
根據IETF RFC 4949[15]標準,任何一個系統都可能存在3種類型的脆弱點:設計上的脆弱點、實現上的脆弱點和操作管理方面的脆弱點.如協議設計上可能存在認證繞過/缺失、完整性缺失、信息明文傳輸等缺陷;協議實現上的脆弱點主要包括協議處理模塊中的堆棧溢出、命令注入、空指針引用等漏洞.操作管理方面的脆弱性與協議自身的關系較弱,可通過分級隔離、人員管理等方式解決.因此,工控協議的脆弱性研究更關注協議設計和協議實現2個方面.
1) 協議設計中存在的脆弱性
工控協議設計之初更關注功能的完備和運行時的性能保障,對安全機制考慮較少.表1總結了14種典型工控協議的設計缺陷,涵蓋了4種典型工控場景,包括過程自動化、智能樓宇、智能電網、智能儀表,涉及當前主流廠商如施耐德、西門子、羅克韋爾等.顯然,工控協議設計在認證、授權、加密和完整性等方面普遍存在缺陷和不足.這些設計缺陷和不足可進一步分為3類.

Table 1 Defects in the Design of Typical Industrial Control Protocols
① 協議設計缺乏安全機制.進行協議設計時未考慮安全機制,如Modbus,DNP3協議等.廣泛應用于電力自動化行業的MMS[33]協議標準在“Security Considers”章節明確指出,MMS協議高級別的安全設計不在標準的考慮范圍內.
② 協議對安全機制描述不具體,導致編程人員無法實現定義“模糊”的安全機制.如GOOSE協議報文結構設計中定義了一個security字段,如圖3所示,該字段用來作為報文的數字簽名,對通信過程傳輸的報文提供認證和完整性保障.同時,該字段被“ANY OPTIONAL”修飾,表明該字段是一個可選字段,可以不出現在報文中.鑒于工控場景的高實時性要求以及協議標準缺乏對該安全字段的詳細定義,大部分廠商都沒有實現該安全字段.
③ 協議安全機制設計存在缺陷.如BACNet協議、OPC-UA協議、ANSI C12.22協議等,它們提供安全機制,但未經充分檢查和驗證,存在潛在的攻擊方式.發現“安全協議”的設計缺陷主要有2種方法,即基于攻擊測試[19]來檢測和通過形式化方法[22]進行檢查.

Fig. 3 Definition of GOOSE message structure圖3 GOOSE協議報文結構定義
2) 協議實現中存在的脆弱性
在實現方面,編程人員容易默認“隔離”的工控通信環境是可信的,處理協議通信數據時未充分考慮畸形報文,導致程序可能產生漏洞,如內存溢出漏洞、非法內存訪問漏洞等.CVE,CNVD,ICS-CERT等平臺的漏洞信息顯示,工控協議在實現上存在多種類型的漏洞,表2列舉了CNVD中部分常見的工控協議實現漏洞.
同時,有些工控協議雖然設計了加密、認證等安全機制.但這些安全機制在實現時,由于錯誤的配置或簡化的實現,使得這些安全機制存在被繞過的可能.例如西門子公司最新版本的S7CommPlus私有協議在會話階段提供加密、認證等安全機制,但Biham等人[16]通過對該協議進行分析發現該協議存在安全缺陷:協議認證過程中所有同型號工控設備采用相同的密鑰.一旦成功逆向破解一款工控設備使用的密鑰,相同版本固件所有工控設備的通信都將變得不安全.施耐德電氣公司設計的UMAS協議,在管理控制Modicon M221控制器時提供密碼認證安全機制.但Kalle等人[34]發現該安全機制的實現存在重大缺陷,編程人員將安全保障至關重要的Hash密鑰存儲在一個固定的地址,一旦攻擊者發送數據重寫該固定地址即可將該Hash密鑰覆蓋,從而繞過認證機制,最終能夠繞過授權執行任意操作.

Table 2 Common Industrial Control Protocol Implementation Vulnerabilities
根據美國國家標準與技術研究院的報告[1],工控系統和任意信息系統一樣,都有3個安全目標:可用性、完整性和機密性.相對傳統的IT信息系統,工控系統的故障將直接影響物理世界,可能造成極其嚴重的后果,例如造成生產中斷、環境毀壞,甚至危及人身安全.因此,工控協議對可用性和完整性要求更高.分析通信協議攻擊模式,主要考慮3個方面,如表3所示:

Table 3 Introduction of Potential Attack Model of Industrial Control Protocol
2.2.1 破壞可用性
工控系統保障處理過程的連續可靠是最基本的要求,對組件和網絡有極高的可用性安全需求.任何預期之外的停機或時延是不可接受的.正常的停機過程一般需要提前幾天甚至幾周的安排、測試和準備工作[1].破壞可用性的關鍵在于使控制系統拒絕服務或無法正常提供服務,我們總結了3種攻擊模式.
1) 利用協議程序漏洞引發程序崩潰
利用程序崩潰可攻擊2類重要目標:①位于現場設備層的工控設備.例如思科公司的Rittle[35]發現了一個應用于Schneider Electric Modicon M580 SV2.80 PLC的UMAS協議漏洞.攻擊者向目標設備發送一個精心構造的UMAS協議數據包,使目標設備無法進行遠程通信,導致拒絕服務.Luo等人[36]發現開源的IEC 104協議解析庫存在非法段內存訪問漏洞,發送定制的IEC 104通信數據包將造成IEC 104協議解析程序發生崩潰,導致拒絕服務.②位于控制層的監控軟件.例如Dliangfun[37]發現的一個能導致MELSoft協議拒絕服務的高危漏洞.利用該漏洞,攻擊者以中間人的方式向監控軟件輸入定制的數據包,可導致40款Mitsubishi監控軟件發生崩潰,造成拒絕服務,如圖4所示:

Fig. 4 Denial of service attacks on supervisory software圖4 監控軟件拒絕服務攻擊

Fig. 5 The relationship topology of the internal control components of the water tank[38]圖5 水罐內部控制組件的關系拓撲[38]
2) 篡改業務控制流程,造成控制過程異常
2010年,Stuxnet[4]蠕蟲篡改了PLC控制程序,加快了伊朗核電站離心機的速度,并修改協議響應報文以欺騙控制中心,最終影響了伊朗的核計劃實施.Chen等人[38]分析了一種有關控制時序的潛在攻擊,如圖5所示.圖5中有2個用來盛水的水罐LIT101和LIT103.安全工作狀態下的水罐有2個要求:①水罐的水量不能為空;②水罐的水量不能溢出.因此,該自動化系統的一個重要目標是維持水流的進出平衡.如果攻擊者篡改了控制邏輯,例如控制水泵P101關閉,電動閥MV101打開,并從外部泵入過量的水到水罐LIT101,最終會導致該水罐進入一個不安全的狀態——水位溢出.
3) 發送“垃圾”數據,惡意消耗有限的計算資源
如果工控設備花費過量的時間/資源處理“垃圾”數據,將造成關鍵業務流程得不到及時處理.Niedermaier等人[39]對6個廠商的16種不同類型的PLC發送過量的數據包進行測試,發現這種方式會影響大部分PLC設備掃描執行的周期時長,可造成PLC掃描周期延長甚至停止工作.如圖6所示,如果傳感器檢測到容器的位置時,打開閥門的時間出現了延遲,可能導致液體注入錯誤的位置,如灑在傳送帶上.

Fig. 6 Fill the container on the transport belt with liquid[39]圖6 向運輸帶上的容器中注入液體[39]
許婷[40]分析了實際生產中的一起由故障引起的某變電站全站通信中斷事故.如圖7所示,某變電站系統中Ⅱ機發生了硬件故障,中斷了與Ⅰ機、遠動機(A網)和后臺機(A網)等設備的通信.當Ⅰ機處于這種工作狀態時,為了重新構建交換機地址表,自動向網絡發送大量廣播報文.當大量的廣播報文進入連接在Ⅰ機的所有間隔層測控裝置中,會給間隔層測控裝置的CPU造成沉重的處理負擔,最終將資源耗盡使CPU處理能力完全癱瘓,從而使變電站的CSI-200E設備和CSM-300E設備都不能正常工作,因此造成全站通信中斷.

Fig. 7 Network structure of a 220 kV substation integrated automation system圖7 某220 kV變電站綜合自動化系統網絡結構
2.2.2 破壞完整性
破壞完整性的關鍵在于破壞傳輸數據的一致性.一致性包括數據塊整體的一致性以及運行上下文的一致性.實際的攻擊中一般要劫持通信,然后通過篡改或者重放等方式實現完整性破壞的攻擊.針對破壞完整性的攻擊,主要有3種攻擊方式.
1) 通信劫持攻擊
該攻擊主要通過中間人攻擊 (man in the middle, MITM)方式實現對通信信道的劫持,該攻擊的根本原因在于通信信道未受到保護.首先,發起中間人攻擊,攻擊者需要先接入“物理隔離”的工業控制系統,如通過USB接口[4]或因特網[41],甚至是內部攻擊者[42].美國國土資源部和卡巴斯基公司的報告[43-44]都顯示,工控協議普遍面臨中間人攻擊的安全威脅.在真實的攻擊事件中,分析人員也經常觀察到中間人劫持技術的應用,如“震網”Stuxnet事件[4]和IRONGATE攻擊事件[45].

Fig. 8 Network topology of the experimental environment圖8 實驗環境的網絡拓撲
根據是否物理接入目標主機,中間人攻擊分為本地攻擊和遠程攻擊.本地攻擊可以通過DLL替換或注入等方式Hook劫持收發網絡數據相關的函數.如“震網”病毒[4]接入系統后,首先將原有的有關管理收發網絡數據的s7otbxdx.dll文件重命名為s7otbxsx.dll,然后病毒將準備的DLL命名為s7otbxdx.dll實現替換.于是,“震網”病毒可以劫持所有訪問PLC的網絡通信,包括修改來自監控軟件的請求和來自PLC處理返回的數據.本地攻擊還可以通過修改網絡配置的方式實現,比如修改路由表、ARP表等.文獻[34]演示了通過修改iptables中的目標地址轉換DNAT配置,結合ARP欺騙技術,將網絡通信協議數據包劫持重定向到自己構建的虛擬PLC上.
遠程中間人攻擊需要與目標主機在同一個局域網,所有與目標主機的通信內容都可能被攻擊主機劫持.如美國空軍理工學院的Hagen等人[46]提出的TCP veto攻擊,在劫持TCP連接的同時避免“ACK storm”的發生.如圖8所示,HMI和PLC的通信信道經過一個以太網集線器(Ethernet Hub),攻擊者連接到以太網集線器,具備能夠嗅探并注入任意數據包等能力,就可實現劫持已有TCP的連接,而僅產生少量的網絡異常數據包.
2) 報文篡改攻擊
攻擊者一旦完成通信劫持,就可以破壞通信過程數據塊整體的一致性實現攻擊.因此,虛假報文注入攻擊和報文偽造攻擊都屬于篡改攻擊.協議面臨篡改攻擊的根源在于協議設計缺乏安全的完整性校驗機制.如圖9所示,DNP3協議雖然存在CRC校驗和字段防止報文被篡改,但這種機制僅能防護協議數據傳輸過程中數據丟失或者電磁干擾等風險.對于熟知DNP3協議格式細節的攻擊者,篡改報文后,重新計算出正確CRC值進行替換,仍然可實施報文篡改攻擊.文獻[25]也指出DNP3協議面臨報文篡改攻擊威脅.

Fig. 9 DNP3 message data link layer frame format圖9 DNP3報文數據鏈路層幀格式
3) 報文重放攻擊
重放攻擊破壞的是通信雙方上下文的一致性,通過記錄網絡通信報文,然后根據攻擊需要進行重放.使用重放攻擊的一個典型場景是對認證過程進行重放繞過.如Beresford[29]在Black Hat上指出,早期西門子公司的S7-1200,S7-300和S7-400的PLC在會話管理上存在嚴重的漏洞,在同型號設備上重放會話數據即可建立會話.類似地,重放特定報文還可以實現讀內存、寫內存等功能,甚至可對硬件配置進行修改,比如修改IP地址、管理密碼和控制邏輯等.Hong等人[47]發現S7commplus協議存在重放攻擊缺陷.利用該缺陷,攻擊者可以輕易通過重放其他報文實現對PLC的控制啟停.對于認證缺失的協議,如果報文沒有校驗字段或沒有序號、會話等動態變化的會話管理字段,重放控制功能就能實現攻擊.如Drias等人[48]認為Modbus-TCP協議沒有CRC校驗,簡單地重放捕獲的客戶端與服務端的通信數據包就可實現重放攻擊.
2.2.3 破壞機密性
破壞機密性的關鍵在于非法獲取系統的敏感信息.由于獲取敏感信息不會直接影響工控系統的運行,工控系統機密性安全要求低于可用性和完整性.盡管如此,獲取系統的敏感信息仍然是完成有效攻擊的重要前提.攻擊者通過分析通信報文獲得系統的版本和型號等信息后,可用預先準備的對應漏洞進行攻擊利用[21].攻擊者獲取與認證相關的敏感報文,如嗅探MicroLogic 1100,MicroLogic 1400,CLICK等PLC的通信報文可獲得明文密碼[49],后續可利用重放攻擊等方式繞過認證,獲得系統的操作權限.針對機密性,主要有2種攻擊方式:
1)主動請求獲取系統的敏感數據
攻擊者可以遠程主動發起請求獲取工控設備/系統的敏感信息.Mirian等人[21]通過主動請求探測暴露于互聯網的工控服務能發現大量工控產品的廠商、型號等信息,并總結了典型工控協議提供的服務端口,如表4所示.除了利用工控協議,攻擊者還可以利用傳統TCP/IP等協議,將這些協議在不同系統交互時的差異作為指紋,獲得系統狀態等信息.如果攻擊者通過主動請求能夠探測到系統版本等信息,比如獲知設備的操作系統VxWorks版本低于6.9,則攻擊者可以利用漏洞CVE-2010-2967,通過密碼碰撞的方法繞過認證保護機制,獲得系統控制權限.

Table 4 Typical Industrial Control Protocol Service Port Number
2) 被動監聽通信內容
攻擊者如果與目標系統共享同一個通信信道,可以通過偵聽的方式,捕獲通信的數據包;或基于通信劫持攻擊(如中間人攻擊)的方式,攻擊者捕獲并分析通信的內容.圖10是捕獲的MMS協議報文的二進制內容[32].

Fig. 10 Captured MMS protocol message[32]圖10 捕獲的MMS協議報文[32]
根據協議手冊可知,MMS協議采用ASN.1/BER編碼規范,則可按規范得到如下解析結果:這是一個Confirmed-Request報文,在做read請求操作,該報文的invokeId值為123,這個讀請求包含了3個請求條目,每一個條目是具體的對象標識符,此處能獲取當前信息系統虛擬資產的標識信息.
NIST總結了潛在的攻擊事件對控制系統可能造成的影響[1].
1) 控制失靈.控制系統的運行因延遲或信息流阻塞而中斷,從而使系統操作員無法使用網絡,導致信息傳輸受阻或常駐服務如DNS發生拒絕服務.
2) 控制設備被重新編程.對PLC,RTU,DCS或SCADA等控制器中的程序指令進行未授權的更改,或更改警報閾值,甚至向控制設備發起未經授權的命令,可能導致設備損壞(如超出設備可承受閾值)、控制過程過早地關閉,造成環境事故,甚至使控制設備不可用.
3) 欺騙系統狀態信息.發送虛假信息給控制系統操作員(例如在人機界面顯示構造的數據),以掩飾未經授權的更改或操作員不當的操作.
4) 控制邏輯操控.對控制程序的配置進行修改,將產生不可預知的結果.
5) 安全系統修改.操控安全系統,以使得它們在需要時不運行,或者執行不正確的控制操作,從而損壞工業控制系統.
6) 植入惡意軟件.向控制系統引入惡意軟件,如病毒、蠕蟲、特洛伊木馬等.

Fig. 11 Comparison of MMS protocol before and after security improvement圖11 MMS協議安全改進前后對比
對控制系統的攻擊還會造成深遠的后續影響.最直接的影響包括人身傷害、財產損失、對環境的潛在破壞等.直接影響會進一步衍生經濟影響和社會影響,可能造成相關組織和機構巨大的經濟損失.對關鍵基礎設施如電力、交通的破壞所產生的經濟影響將遠遠超出對單個系統的直接物理損壞的影響,甚至使公眾對國家或組織失去信心.
工業控制系統在關鍵基礎設施中具有定制化和專用性的特征.因此,IEC 62443標準給出了針對工業控制系統的信息安全的定義:“①保護系統所采取的措施;②由建立和維護保護系統的措施所得到的系統狀態;③能夠免于對系統資源的非授權訪問或意外的變更、破壞或者損失;④基于計算機系統的能力,能夠保證非授權人員和系統既無法修改軟件及其數據,也無法訪問系統功能,保證授權人員和系統不被阻止;⑤防止對工業控制系統的非法或有害入侵,或者干擾其正確和計劃的操作”.
從協議的角度看,維護工控系統的安全狀態需采取必要的措施,主要包括:協議安全設計改進、協議安全實現測試、協議安全應用指南.
針對工控協議在設計上普遍缺乏認證加密等安全機制的問題,學術界和工業界一直在努力改善這一現狀.主要有3種思路:
1) 在協議棧增加安全層
國際標準組織推出IEC 62351標準[14]用來改進IEC 61850系列協議設計缺陷,并規定使用傳輸層安全協議(Transport Layer Security, TLS)為應用間通信提供端對端的傳輸安全.TLS協議使用加密技術提供數據的機密性和端之間的認證.從技術上講,TLS是一個運行在TCP協議之上的協議套件.因此,IEC 62351規定TLS應用在基于TCP/IP的電力工控協議,包括TASE.2,MMS,IEC 104等.其中,MMS協議改進前后的協議棧對比如圖11所示.
IEC 62351應用TLS進行安全改進時,還結合了工控場景的通信特點.如考慮到TLS多用于傳統互聯網協議的安全交互,這些協議連接的持續時間很短,使得加密算法和密鑰能在連接建立時重新協商,使用默認的TLS配置即可保障加密安全.而工控場景下TCP/IP連接趨向于更長的持續時間,并且經常是“永久”的,所以在安全防護方面需特殊考慮.為了提供“永久”連接的機密性,IEC 62351-3對應用TLS增加規定加密密鑰再協商的安全機制.
類似地,針對MQTT協議設計上的認證、授權和加密等方面的安全缺陷,Lesjak等人[50]提出了結合硬件安全的TLS增強改進方案.他們利用TLS握手過程實現訂閱方和發布方的相互認證.為保護用于認證的私有密鑰,他們使用一個專用的硬件實現數字簽名操作.文獻[50]的作者基于OpenSSL庫在TCP協議層之上實現了TLS,并用Security Controller模塊作為簽名運算專用硬件.
2) 在協議應用數據單元增加安全字段
針對Modbus協議的設計缺陷,文獻[51-52]等通過在協議應用數據單元增加新的安全字段,實現完整性、防重放、身份認證等安全機制.Fovino等人[51]通過SHA2哈希函數計算獲得數據包的安全摘要,再由RSA算法生成數字簽名字段,保障了Modbus協議完整性,如圖12所示.同時,非對稱加密RSA算法使用私鑰對安全摘要簽名,接收方可以通過公鑰快速驗證Modbus報文的身份,使改進的Modbus協議具備了身份認證的安全功能.時間戳(timestamp, TS)字段使得接收者能夠檢查接收報文的“新鮮度”,可抵抗重放攻擊.

Fig. 12 Secure Modbus application data unit圖12 安全版本的Modbus協議應用數據單元
考慮到工控系統運行的部分設備年代久遠,升級和替換的成本非常高,改進的Secure Modbus協議難以直接部署在傳統的SCADA環境.針對這一問題,Fovino等人[51]提出Modbus安全網關的解決方案.如圖13所示,Modbus安全網關(Modbus secure gateway)是一個專用的多宿主網關,承載連接到過程層網絡的TCP/IP接口和一組連接到傳統從站點對點的TCP或串行鏈路.它僅接受經過身份驗證的主服務器Secure Modbus TCP流量,并提取Modbus數據包發送給從設備;當收到來自從設備點對點鏈路數據包時,安全網關選擇對應的私鑰對數據包進行簽名,生成Secure Modbus TCP流量再發送.

Fig. 13 Communication architecture based on security gateway圖13 基于安全網關的通信架構
增加安全字段的思路可以應用在實時性要求高的協議上,如針對電力工控行業的GOOSE和SMV協議的改進.改進方案需考慮協議報文的實時性要求:必須在4 ms內被傳輸.IEC 62351指出在此要求下,加密和密鑰再協商會破壞高度實時的信息流,基于數字簽名的認證是唯一可用的安全措施,并對此提出的改進方案,如圖14所示:

Fig.14 Security improved GOOSE/SMV message structure圖14 安全改進版的GOOSE/SMV報文結構
該改進方案使用一個保留字段作為長度,這樣擴展字段就可以增加到GOOSE/SMV報文上,擴展的字段包含數字簽名認證信息.在實際系統中,非安全客戶端可簡單地忽略這個擴展字段.
3) 改進通信會話的過程
協議基于會話流程實現安全機制,根據文獻[29],Beresford于2011年發現初始版本的S7私有協議的設計存在多種漏洞,如缺乏對Session有效性的檢查,通過分析報文和簡單重放即可實現對S7-1200,S7-300,S7-400等PLC的攻擊.西門子公司改進S7私有協議為S7Commplus協議,基于Biham等人[16]的逆向分析,發現改進的S7Commplus協議的會話過程使用了更嚴格的認證機制,該過程涉及了基于非對稱加密的密鑰交換的過程.改進的S7Commplus協議的安全性得到了極大的提高,使得攻擊的難度增大.
編程人員在實現工控協議通信程序時,可能因疏忽大意導致程序代碼留有漏洞.為了自動發現這些協議實現漏洞,Fuzzing(模糊測試)技術是當前的研究熱點.根據現有文獻總結,工控協議模糊測試的方法主要有2種:灰盒測試和黑盒測試.
3.2.1 灰盒測試
灰盒測試是指在進行模糊測試時能獲得程序執行的一些內部信息,如獲取代碼覆蓋率(code coverage)信息[53].工控協議的灰盒測試一般需要源碼或者要求目標程序能被插樁,以實時獲得程序執行的信息作為反饋,指導并提高模糊測試的效率.
區別于傳統的測試對象(如圖片、視頻和文件等處理程序),文獻[35]指出工控協議一般會攜帶一個名為“功能碼”的特定字段,功能碼字段的取值指示接收端設備應該執行什么操作.所以,生成測試用例時確保該字段的正確性至關重要.基于該發現,文獻[35]的作者先靜態分析工控協議源碼提取協議功能碼字段信息,確定功能碼字段在報文中的偏移和取值范圍,然后基于AFL對協議源碼程序進行插樁,最后將模糊測試時約束生成的畸形協議數據包的功能碼字段在正確的范圍內,以提高模糊測試的效率.
針對工控協議模糊測試,文獻[54]認為傳統的基于模板生成測試用例的方法本質上是隨機的,測試效率有待提高.同時,工控協議不同(功能碼)類型的數據報文會觸發不同的程序代碼執行軌跡,但這些報文非常相似,難以區分.為此,文獻[54]的作者提出Peach*,為傳統協議模糊測試方法配備覆蓋率引導機制.由于需要基于LLVM框架對源碼程序進行插樁,Peach*僅適用于有源碼的程序.
3.2.2 黑盒測試
灰盒測試依賴協議程序源碼,可應用于一些開源的工控協議.考慮到相關廠商的知識產權和商業利益,仍有大量的工控協議未開源其代碼.這些工控協議運行在定制、專用的嵌入式設備中.相關程序難以被提取和插樁處理.所以,進行模糊測試時難以獲取被測程序內部的執行信息,被測對象被視為一個黑盒.為生成高質量測試用例,工控協議黑盒測試的關鍵在于使用非插裝監控手段獲取協議知識,例如協議報文格式、協議狀態等信息.
1) 通過人工分析相關文檔獲得協議知識
對于有公開文檔的工控協議,測試前需人工整理有關協議的信息,手動定義變異模板,自動化生成測試用例.Devarajan[55]在Black Hat大會上提出基于Sulley框架[56]的黑盒模糊測試方案,對SCADA系統的Modbus,DNP3,ICCP等公開的協議進行了模糊測試.Devarajan基于Sulley框架手動編寫了這些公開的工控協議測試模板.模板包括管理報文格式變異的數據模型和管理協議序列交互過程的狀態模型.類似的基于報文格式手動編寫測試模板的知名框架還包括Boofuzz[57],Peach[58],Scapy[59]等.如Tacliad等人[60]提出基于Scapy設計和實現了EtherNet/IP系列協議黑盒模糊測試工具.早期也有一些協議模糊測試工作沒有用到測試框架,而是自定義變異原語,如Snooze[61],但它們原理上是相同的.
2) 通過機器學習的方法獲得協議知識
Hu等人[62]提出基于機器學習的方法生成高效測試用例.Hu等人指出,對抗神經網絡(generative adversarial network, GAN)擅長從已有數據中學習并偽造符合特定分布特征的數據,以達到欺騙系統的目的.該過程與學習協議通信報文的語法格式偽造生成畸形測試用例一致.因此,Hu等人設計了GANFuzz,并使用GANFuzz學習Modbus-TCP協議流量,偽造符合協議語法格式的測試數據.最終Hu等人通過評估“測試用例被拒絕”和“能否挖掘真實漏洞”2個指標證明了該方法的有效性.類似地,Zhao等人[63]提出SeqFuzzer,該方案認為長短期記憶網絡LSTM擅長學習通信報文序列之間的關系,這種報文序列關系能很好地代表協議狀態轉移知識.除此之外,LSTM神經網絡還能學習協議報文的數據幀格式.然后Zhao等人用seq2seq作為解碼器生成高效測試用例,最后測試EtherCat協議并發現漏洞.
3) 通過協議逆向工程分析等獲得協議知識
Niedermaier等人[64]通過模式識別的方式逆向分析了Phoenix公司PLC的私有通信協議的報文格式,同時基于報文相似性對比的分析方法逆向私有協議握手會話的過程.基于逆向分析的結果,Niedermaier等人實現了一個模糊測試工具原型系統,對Phoenix公司PLC測試并發現了多個嚴重漏洞.如果僅考慮對私有協議逆向工程獲取協議知識,還有很多其他工作,主要分為基于網絡報文序列對齊的分析如Netzob[65],Discoverer[66],ScriptGen[67],PRISMA[68],NEMESYS[69]等和基于程序執行的分析如Dispatcher[70],Replayer[71]等.
除了獲取協議知識,工控協議程序測試還面臨狀態監控困難的挑戰.文獻[72]指出工控系統與環境的交互是程序執行的一部分,監控時考慮這種特征的研究工作還很少.同時,由于工控嵌入式設備資源受限,大多沒有內存管理單元,即使觸發了漏洞也不會立即出現易觀察的崩潰現象,已有的基于網絡連接是否存活的監控方式會有很多漏報[73].
對協議通信網絡進行不恰當的部署應用和管理,也是工控系統面臨攻擊的主要威脅之一.如2015年烏克蘭發生的大規模停電的網絡攻擊事件[41],事后分析發現電力控制網和互聯網未做好分區隔離、內部員工安全意識薄弱是這次攻擊事件發生的關鍵.攻擊者通過互聯網發送釣魚郵件接入電力控制網后實施針對電力控制網的攻擊.針對協議的安全應用,當前主要通過標準指南的方式進行規范化管理.
3.3.1 標準指南的制定
國內外的相關組織和機構針對工業控制系統信息安全的標準化工作,形成了一系列的規范性文件,彭勇等人[74]對此進行了全面的總結.對這些規范性文件進行對比分析,發現它們各有特色:
從適用行業來看,可分為通用行業和專用行業.IEC 62443是一個通用標準,適用于所有工控相關領域.而IEC 62351則是一個專用標準,僅適用于電力行業.
從方案對策來看,可分為側重技術對策和組織管理對策.Sommestad等人[75]對相關指南進行了綜述性比較,發現SCADA相關的標準指南更側重技術對策,如部署防火墻、入侵檢測系統等.而ISO/IEC 17799更側重組織對策,如安全組織、業務持續性計劃、政策和標準以及第三方合作等.
從技術偏好來看,可分為系統性防護和關鍵點防護.王建等人[76]對2個備受關注的標準IEC 62443和等級保護2.0《信息安全技術信息系統安全等級保護基本要求》(GB/T 22239—2019)進行了對比分析.GB/T 22239—2019側重邊界防護方面的技術指標,圍繞網絡架構、邊界防護、入侵防范等有較多的安全方案.而IEC 62443-3-3標準則強調系統性自我保護能力,系統一旦遭受攻擊,控制系統不僅會阻斷網絡邊界的通信,而且會切斷一切與其通信的路徑和傳輸數據.
3.3.2 推廣和落地
標準指南發布后在落地時面臨一個關鍵問題:相關行業和單位對標準指南的落地重視不夠,主動性、專業性不強,落地能力不足.為了推動標準指南的實施和落地,標準發布后需要配套的政策法規進行要求和引導.文獻[77]指出,國際自動化協會下屬安全合規性委員會推出了ISASecure EDSA認證計劃,開展IEC 62443標準符合性認證測試工作.類似地,美國國土安全部(DHS)推出了CSET安全評估工具,支持多個安全標準的評估,如NIST SP800-53和NIST SP800-82等.
我國更是在法律法規上提出了強制要求,其中2016年發布的《中華人民共和國網絡安全法》第21條明確提出國家實行網絡安全等級保護制度.我國網絡安全等級保護制度包括定級、備案、建設整改、等級測評和監督檢查5個階段,構建了完整的等級保護流程,何占博等人[78]總結了各階段對應的法律法規和政策規范,如表5所示:

Table 5 Regulations and Policies in Various Stages of the Cybersecurity Classified Protection
3.3.3 更新維護
隨著新技術的發展和應用,已發布的標準和指南需與時俱進地更新以滿足新興的安全防護需求.事實上,那些影響力大、關注度高的標準文件一直在更新維護.如NIST SP800-82[1]于2011年正式發布,2013年發布第一次修訂版,2015年發布第二次修訂版.國內由國家標準化管理委員會和國家質量監督檢驗檢疫總局共同發布的等級保護2.0《信息安全技術信息系統安全等級保護基本要求》(GB/T 22239—2019)也是在等級保護1.0的GB/T 22239—2008進行優化修訂完成的,它擴展了對云計算、移動互聯、物聯網、工業控制系統及大數據等新技術和新應用領域的安全要求.
本文從通信協議的角度分析了工業控制系統面臨的安全威脅和對應的策略.首先從工控網絡架構、工控協議作用、分類以及和傳統協議的比較等方面進行詳細闡述,然后從協議設計、實現和應用的角度深入分析了協議攻擊威脅和協議防護方案.結合工控協議的特點,我們有3個方面的展望:
1) 設計上,工控協議普遍存在安全問題.除了早期安全不受重視,客觀上還因工控設備的計算資源有限,難以部署重量級的安全機制,如安全算法、防火墻、監控程序等.同時,工業控制過程對系統的可用性要求更高,例如需滿足實時響應、保持長期在線等,而一般的安全改進方案除了帶來性能上的損耗,還可能帶來新的安全問題,所以難以直接應用傳統的安全方案.而已有研究大多聚焦于減少資源開銷,鮮有驗證其方案的可靠性.因此,研究人員需要提出一種可靠的輕量級安全通信機制,這種安全機制需要滿足2個要求:①受限的資源.該安全機制需要嚴格控制計算資源的使用,如盡可能降低對設備電量和內存的消耗,同時,還要盡可能減小對性能的影響.②可驗證的安全.該安全機制不會帶來新的安全問題,在某些重要屬性上是安全可驗證的.
2) 實現上,工控協議程序涉及專用、異構多樣的嵌入式設備.不同于通用的測試程序對象,很多工控協議程序難以被提取、分析和監控運行.因此,基于路徑覆蓋反饋的高效模糊測試方案難以直接應用.針對工控設備中的協議程序,已有研究聚焦于分析獲得協議知識,然后進行黑盒測試,其有效性受限于無法獲得運行時的反饋.因此,研究人員需針對工控設備提出一種有效的程序運行監控的反饋機制.可從2個角度進行考慮:①該監控機制不對程序直接進行分析和插樁,而從其他角度間接推斷程序運行狀態,例如從返回報文、運行能耗開銷、設備I/O監控等角度;②解決嵌入式工控協議程序提取困難的挑戰,然后遷移該程序到其他易控環境進行模擬仿真執行,從而方便測試時監控和運行時反饋.
3) 應用上,保障工控協議的通信安全需結合已發布的標準和指南,然后部署配套的安全方案,例如部署入侵檢測系統、防火墻等.部署具體安全方案時,研究人員需結合具體的控制場景提出一種更加有效的風險評估模型,以準確定位安全威脅和安全需求,從而選擇并配置合適的安全方案.同時,考慮到工控系統的高可用性需求(例如有的方案需采集實時數據,而該過程可能會影響系統的可用性),研究人員還需要提出一種更加有效的評估方法來驗證具體方案的可靠性,以防引入新的隱患.
作者貢獻聲明:方棟梁負責論文主要內容的調研、整理和撰寫;劉圃卓、秦川、宋站威輔助進行調研、討論與文章修改;孫玉硯、石志強、孫利民對文章結構與內容進行討論并提出了指導意見.