劉偉++梁光明++鮑金鵬
摘 要: 深入研究了當前工業控制系統PLC現場可編程的原理,從數據的保密性、完整性和身份可認證性三個方面分別建立安全性模型,分析出現場可編程的安全機制在以上三個方面缺乏必要的安全防護。搭建實驗平臺,通過模擬實驗驗證了存在的安全隱患。
關鍵詞: 工業控制系統; 現場可編程; 安全隱患; 工業以太網
中圖分類號: TN710?34 文獻標識碼: A 文章編號: 1004?373X(2015)17?0153?05
Analysis of hidden trouble existing in field programmable mechanism
in industrial control system
LIU Wei, LIANG Guangming, BAO Jinpeng
(School of Electronic Science and Engineering, National University of Defense Technology, Changsha 410073, China)
Abstract: The principle of current PLC field programmability in industrial control system is studied deeply. The security models are set up respectively from the aspects of data confidentiality, integrity and identity authentication. The security mechanism of field programmability has been analyzed, and the three aspects are lack of necessary safety protection. The experiment platform was established, and the existed hidden trouble were verified by simulation experiment.
Keywords: industrial control system; field programmability; hidden safety threat; industrial Ethernet
0 引 言
隨著工業化和信息化的融合不斷深入,信息技術開始更加廣泛地運用到工業控制領域。當前,信息化工業控制系統已經廣泛應用于能源、電力、化工等工業領域,工業控制系統已然成為國家安全戰略的重要組成部分。為了方便工業控制系統中各個部件的協同和信息共享,工業控制系統正逐漸打破原有的封閉性,向開放化的方向發展,采用標準、通用的通信協議和軟硬件系統,將導致工控系統面臨病毒、黑客入侵等安全威脅。
2010年,伊朗布什爾核電站遭到“震網”(Stuxnet)蠕蟲病毒攻擊[1],“震網”病毒以伊朗核電站使用的數據采集與監視控制(SCADA)系統作為攻擊目標,利用Windows和工業控制系統PLC的動態鏈接庫(DLL)缺陷進行傳播和攻擊,致使伊朗核電計劃被延緩。在這次事件后,工控系統安全成為工控領域的熱點問題。如何有效的保護工業控制系統PLC的安全,防止不法分子和黑客對工業控制系統PLC實施入侵和破壞,具有重大的經濟和戰略意義。
相較以往工業控制系統的安全報告和相關文獻的重點突出在數據的實時采集與監控安全[2]、外網到內網的保護[3]上,本文從工控系統的現場可編程機制出發,對工控系統潛在的安全隱患和面臨的威脅進行分析,提出了安全隱患分析方法和模型,并對存在的安全威脅進行了總結。
1 工業控制系統現場可編程原理
工業控制系統的現場可編程,就是在工業控制系統的運行現場,編程上位機通過現場總線或以太網對工業控制器進行編程控制(包括用戶程序下載、工程信息修改等),可以即時改變現場設備的運行狀態。現場可編程技術在工控系統的廣泛應用使得工業生產中工控系統對現場設備的實時控制達到了一個全新的階段。
1.1 工業控制系統的基本構成
工業控制系統主要由以下幾個部分組成:SCADA(Supervisory Control And Data Acquisition)系統,即數據采集與監控系統,分布式過程控制系統DCS(Distributed Control System),可編程邏輯控制器PLC(Programmable Logic Controller),人機界面HMI(Human Machine Interface)等。其中的工業控制器即PLC是整個工業控制系統的核心部件,直接控制外部設備和工業生產。PLC直接受到編程上位機和監控站的控制,圖1為工業控制系統簡化結構圖。
1.2 現場可編程機制
現場可編程技術以其編程簡單、控制靈活、用戶程序實時可控等優點,在工業控制領域得到了廣泛的發展和應用,現階段的現場總線逐步向以太網等常用通信手段擴展。以廣泛使用的工業以太網實現的現場編程為例,現場編程的實現流程如圖2所示。
PLC的現場編程包括以下幾個步驟:
首先在編程上位機編寫STL/LAD高級程序,由編程軟件編譯成可執行代碼;再將可執行二進制代碼組合到網絡數據包中,通過以太網接口下載到控制器PLC中,PLC的以太網接口接收到數據包后,解析并執行這些代碼,這樣就實現了遠程上位主機對PLC的現場編程。隨著網絡技術的發展,PLC的現場編程不僅包括傳統的用戶程序代碼編程,更是延伸到了更底層的固件代碼,例如可以通過以太網接口實現固件版本更新等高級操作。
工業控制系統現場編程的數據采用現場總線傳輸,其中使用最廣泛的是工業以太網連接,圖3是工業以太網的層次模型[4]。
如圖3所示,工業以太網協議基本上是直接在TCP/IP層以上附加應用層協議實現的,通過直接把應用層報文嵌入到TCP報文中,組成工業以太網數據幀。所以工業以太網協議的低層次數據鏈路層、傳輸層、網絡層采用的是標準協議,應用層則一般采用內部非公開協議。工控系統的安全策略大多都在應用層中實現,具有一定的研究意義。
工控系統應用層協議主要具有以下幾個特點:
保密性:傳統IT網絡的應用層協議都已經對外公開,具有統一的標準,所以按照協議格式,可以輕松分析得到包頭和各數據段表示的信息。而工業控制系統的應用層協議則沒有統一的標準,工業控制領域的系統開發公司針對自己的產品都指定了具有各自特點的應用層協議,且不對外公開。
實時性:工業控制系統設計過程中最重要的指標就是實時性,從而要求工業控制系統的應用層協議也必須滿足實時性的要求。然而正是由于必須滿足實時性的要求,應用層協議在設計過程中主要的系統資源消耗在實時控制方面,導致無法消耗更多資源在系統安全的保護上。
可偵測性:工業控制系統采用的網絡結構與傳統IT網絡類似,具有分層結構。如果能侵入工業控制內網,則可以利用傳統IT網絡的嗅探、偵測技術對工業以太網的數據進行截獲、竊取等操作,甚至對關鍵數據進行篡改。
2 現場可編程安全隱患分析模型設計
工業控制系統在設計過程中注重系統的可用性和實時性,而對系統信息的安全沒有做出應有的防護。尤其在現場可編程機制中,編程上位機通過工業以太網與PLC連接實現數據傳輸,上位機將PLC應用程序下載到PLC,實際上是將PLC直接連接到了上位機和監控站所在的內部網里。僅僅通過在工業以太網上設置工業防火墻,防止內部網絡的非法訪問,不能保證內部數據的安全。因此,現場可編程機制存在嚴重的安全隱患。下面從保密性、完整性、可認證性三個方面對工控系統現場可編程機制的安全性進行分析建模[5?6]。
2.1 現場編程數據的保密性模型
保密性是指網絡信息不被泄露給非授權的用戶或實體,信息只為授權用戶使用的特性。
數據信息的保密性主要分為兩個方面:信息的防偵收和信息加密。
根據信息數據的傳輸和處理,建立基于信息流的現場編程數據保密性安全模型,如圖4所示。
在工控系統的現場可編程機制中,數據的保密性主要表現在對PLC用戶程序指令的可執行代碼的加密和解密、PLC的數據經過工業以太網時的防護(主要通過工業防火墻)等安全措施。如圖4所示,上排橫向過程表示用戶程序數據[A]經過加密變換[E]后,組包進入工業以太網傳輸;接收端經過解包,得到加密通信數據,再經過解密變換[D]還原出原始數據[A。]其中工業以太網設有工業防火墻,防止非授權訪問。若是黑客突破了工業防火墻,竊取了工業以太網中的通信數據,即使破譯了應用層的不公開協議,由于不能獲取數據的加密方式和密鑰,只能分析得到加密數據,而不能恢復出原始數據[A。]
然而,課題組對工控系統的現場編程過程的研究結果卻令人大吃一驚,工業以太網的二進制通信數據竟然毫無加密處理,而是以明文的形式傳輸。這就給黑客和不法分子侵入工控系統、竊取核心機密可乘之機。由于工控系統缺乏對數據的加密處理,黑客通過網絡手段獲取通信數據,就能直接得到現場編程的重要指令,造成極大的安全威脅。
2.2 現場編程數據的完整性
完整性是指在傳輸、存儲信息或數據的過程中,確保信息或數據不被未授權的篡改或在篡改后能夠被及時發現。圖5為工控系統現場編程數據完整性驗證模型圖。
圖5 現場編程數據完整性模型圖
如圖5所示,通信數據[A]在發送之前,使用雜湊函數[f( )]計算出信息摘要[f(A)]附在數據[A]后,通過工業以太網傳輸到PLC,PLC使用函數[f( )]對接收到的數據部分[B]再次計算,比較[f(A), f(B),]以此驗證數據[A]的完整性。假設通信數據被黑客截獲且關鍵數據被篡改,如圖中虛線表示,信息數據部分被篡改為[B,]而摘要部分[f(A)]保持不變,通信數據到達接收端后,對信息數據部分[B]再次計算[f(B),]并與原摘要[f(A)]作比較,以此檢驗數據完整性是否被破壞。
工控系統的現場可編程機制,為了更簡單、快捷、實效地傳輸程序指令,需要盡量減少通信數據的冗余,提高傳輸效率。因此,目前主流工控系統的現場可編程機制沒有設置對數據的完整性驗證,忽略了系統的安全性,也就可能導致通信數據程序指令存在被惡意篡改的危險。
2.3 上位機身份的可認證性
可認證性是指對操作客體對操作主體的認證。在工控系統的現場可編程機制中,編程上位機擁有對下位PLC的直接操作權限。為了保證系統的安全,PLC需要對編程上位機的身份信息進行認證[7],上位機身份認證模型如圖6所示。
工控系統的現場編程過程,首先需要編程上位機與PLC建立以太網通信連接(一般采用TCP 3次握手),然后通過工業以太網發送消息相互驗證身份信息。
如圖6所示,倘若黑客使用工業以太網上另一臺非上位主機與PLC建立偽上位機連接,PLC接收端會對上位機的身份進行驗證,確認該上位主機是否有對PLC操作的權限,確認身份后,才接收目標主機傳來的信息數據,這樣就能保證現場可編程數據的安全。通過對現有工控系統上位機與PLC通信機制的研究發現,為了節省系統資源,降低通信數據冗余,現階段普遍使用的PLC尚未設置對上位機的身份驗證環節,故不能對系統安全實施有效保護。因此,在上位機的身份認證方面,PLC依舊保持較弱的安全性,存在安全隱患。
綜上所述,可以總結出工控系統現場可編程安全機制主要分為三個方面:現場編程保密性、現場編程完整性和可認證性,每個方面都存在一定的安全隱患,主要有以下幾點:
(1) 工業以太網中引入了交換機,似乎提高了安全性,但交換機本身就存在大量安全漏洞,例如,更改交換機配置,ARP欺騙攻擊,監視端口被利用都可能導致交換機被黑客攻破,從而獲得直接侵入PLC的機會[8]。
(2) 以太網的通用標準早已被人們所熟知,工業以太網應用層以下的協議都是通用協議,可以直接解析,所以,不法攻擊者只需掌握或破譯應用層協議格式,就能輕易構造合法的數據包,模仿編程上位機對PLC進行實時操作。
(3) 工業以太網的數據傳輸大多采用明文,未使用任何加密手段,這又給黑客實施攻擊提供了方便,黑客一旦破譯了應用層協議格式,就可能得到PLC中運行的應用程序,這是相當危險的。
(4) PLC對編程上位機發送的網絡數據包不驗證來源的可靠性,這些數據包中包含重要的程序指令,偽造的數據包能輕易對PLC運行狀態進行更改。黑客甚至可能利用內網肉機與PLC建立偽上位機可編程連接,對PLC實施惡意操縱[9]。
3 隱患驗證實驗
根據工控系統現場可編程機制安全性的三個方面,進行以下3個小實驗來驗證現場可編程機制存在的安全隱患。
搭建一個簡單的實驗平臺,包括實驗編程上位機、監視監控主機、可編程控制器(PLC)、模擬攻擊主機等,通過交換機相連構成工業控制局域網系統。假設通過某種手段,黑客侵入了內部局域網的一臺主機,利用該主機對系統實施攻擊。
3.1 現場可編程信息破譯實驗
正常運行實驗平臺,使用編程上位機對PLC進行現場編程(例如發送刪除DB1數據塊的指令),同時抓取工控系統現場編程過程的網絡通信數據,圖7為利用抓包軟件wireshark獲取的實時通信二進制數據包。
如圖7所示,數據包的末尾可以清楚地看到0A00001B._DELE的ASCII碼。顯然,實驗平臺使用工控系統的網絡傳輸過程采用的是未加密的明文傳輸,一旦被網絡黑客獲取網絡數據,就能輕易破譯現場編程的重要指令,存在嚴重的安全隱患。
3.2 通信數據篡改實驗
工控系統正常運行,現場編程傳送給PLC一個包含2 s時間周期的DB塊。利用網卡混雜模式獲取網絡數據包,找到表示2 s時間數據的二進制代碼,修改為1 s,然后按照原DB模塊下載的通信時序重新下載,觀測實際通信周期。
從二進制通信數據中提取核心信息,對其進行篡改并按照相同的時序重新發送至PLC,觀測工控系統的相關指標。將表示時間的二進制數據0x02改為0x01,并按照相同的時序重新發送至PLC,觀測工控系統的實時壓力數值,如圖8所示,顯然對通信數據的篡改已經生效,數據周期由2 s變為1 s。
3.3 偽上位機惡意控制實驗
截獲上位機和PLC通信的網絡數據包之后,使用另一臺內網實驗主機,利用socket向PLC發送相同的數據內容,如圖9所示。
完成相同的通信時序之后,在PLC上實現了相同的編程效果。實驗證明,PLC對上位機身份沒有驗證,倘若黑客利用內網肉機建立了偽裝的上位機,就能實現對PLC的惡意控制。
實驗分析如下:工控系統的現場可編程機制存在嚴重的安全隱患,如采用普通網線傳輸數據,通信數據可能被監聽和截獲;不驗證上位機信息就能與PLC建立現場編程連接,可能存在惡意偽上位機連接;通信數據被篡改后仍然能正常下載到PLC并生效,缺乏對數據完整性的驗證。
4 結 語
本文從工控系統的現場可編程機制入手,研究了工控系統通過工業以太網實現現場編程所存在的安全隱患,主要就保密性、完整性、認證性等方面對現場可編程過程進行了安全性分析,總結了系統存在的部分安全威脅。
當前工控系統逐漸向開放化、智能化的方向發展,方便用戶的同時也會存在一些安全隱患,如工業以太網的安全漏洞、PLC對外來數據無驗證等。如何在豐富系統功能、簡化操作過程的同時確保工控系統的安全,是一個需要深入探索研究的課題[10]。
參考文獻
[1] 華镕.“震網”給工業控制敲響了警鐘[J].儀器儀表標準化與計量,2011(2):30?34.
[2] 朱世順,黃益彬,朱應飛,等.工業控制系統信息安全防護關鍵技術研究[J].電力信息與通信技術,2013,11(11):106?109.
[3] 李奀林,穆靈.電力工控系統安全面臨的威脅與對策[J].信息安全與通信保密,2014(6):62?63.
[4] 李鴻培.下一代安全技術方向的思考[R].綠盟科技,2012.
[5] 綠盟科技.工業控制系統及其安全性研究報告[EB/OL].[2013?07?02].http://www.2cto.com/ebook/201307/40253.html.
[6] NSTB. Assessment summary report:Common industrial control system cyber security weaknesses [R]. [S.l.]: NSTB, 2010.
[7] KASAI N, MATSUHASHI S, SEKINE K. Accident occurrence model for the risk analysis of industrial facilities [J]. Reliability Engineering & System Safety, 2013, 114(2): 71?74.
[8] FITZPATRICK C. GLOBAL: research warns of hacker threat to SCADA systems [M]. London: IWA Publishing, 2011.
[9] BRADBURY D. SCADA: a critical vulnerability [J]. Computer Fraud & Security, 2012, 2012(4): 11?14.
[10] PAUL A, SCHUSTER F, KONIG H. Towards the protection of industrial control systems conclusions of a vulnerability assessment [C]// Proceedings of 2013 10th International Confe?rence on Detection of Intrusions and Malware, and Vulnerability Assessment. [S.l.]: Springer Berlin Heidelberg, 2013: 160?176.