傅一帆,霍玉鮮,劉 金,姜洪朝
(中國電子信息產業(yè)集團有限公司第六研究所,北京 102209)
工業(yè)控制網絡互聯(lián)互通的安全問題*
傅一帆,霍玉鮮,劉 金,姜洪朝
(中國電子信息產業(yè)集團有限公司第六研究所,北京102209)
針對工業(yè)控制系統(tǒng)使用的OPC(ObjectLinkingandEmbeddingforProcessControl)通信協(xié)議的安全防護,通過分析OPC客戶機和服務器之間的網絡流,用截獲的網絡幀說明如何開放動態(tài)生成的TCP連接會話、如何識別同步讀寫幀,怎樣對數(shù)據讀寫操作過濾;強調指出,這種傳統(tǒng)的防火墻保護模式,仍可能存在利用暴露的密碼攻擊、假冒應用要求惡意增加訪問次數(shù)破壞控制系統(tǒng)運行、借助不明信息流滲透攻擊的隱患,為此給出一個防火墻多端口分區(qū)保護縱深防御的方案。
防火墻;OPC;工業(yè)控制網絡;信息安全
在移動終端制造行業(yè)中,整個生產線上仍存在著“信息孤島”,為滿足移動終端制造行業(yè)產品多樣化及快速投向市場的需求,推進新一代信息技術與自動化技術的融合,已成為制造行業(yè)的發(fā)展趨勢。因此要解決生產設備之間、生產設備與計劃排產等應用之間的信息互通問題,普遍在工業(yè)控制系統(tǒng)中使用OPC(Object Linking and Embedding for Process Control)協(xié)議實現(xiàn)互連,通過支持OPC標準,不同廠家的設備之間可以實現(xiàn)過程控制數(shù)據的互操作。在實際應用中,OPC通信跨越了不同系統(tǒng)的邊界,因此也帶來很多安全問題。同時,由于OPC協(xié)議的應用數(shù)據是通過TCP協(xié)議動態(tài)生成的端口號創(chuàng)建的連接傳輸?shù)?,給傳統(tǒng)的IT防火墻的過濾造成困難[1]。下面用黑箱分析的方法來分析OPC協(xié)議,探討解決OPC通信的安全防護問題。
OPC通信采用客戶機-服務器的模式,服務器指擁有控制數(shù)據資源的一端,客戶機指對擁有的數(shù)據資源進行讀寫操作的一端[2]。通過監(jiān)聽客戶機和服務器之間的網絡流,分析可得到圖1所示結果。
圖1 OPC協(xié)議的TCP動態(tài)連接過程
如圖1顯示了OPC協(xié)議的動態(tài)創(chuàng)建數(shù)據通信連接的過程:首先客戶機向服務器的OPC135端口發(fā)出連接請求,經過大約幾十個幀后,從服務器的返回幀ISystemActivat RemoteCreateInstance response帶回OPC服務器要創(chuàng)建的端口號,分析幀數(shù)據即可解出要創(chuàng)建的端口號。
針對動態(tài)鏈接過程的分析,得到解決工控防火墻分析OPC動態(tài)連接端口的思路:
(1)監(jiān)視出/入OPC端口(TCP135號)的網絡幀;
(2)從TCP端口號為135的網絡幀中找出包含有返回動態(tài)端口號的幀;
(3)從包含有返回動態(tài)端口號的幀定位到包含有動態(tài)端口號的字符串(稱為StringBindings)的開始位置,查找出該字符串數(shù)組的長度,從StringBindings的開始位置向后查找,解析出動態(tài)端口號;
(4)根據解析出的動態(tài)端口號,建立該端口的防火墻狀態(tài)連接表項,放行該端口,并實時檢測該連接狀態(tài),當遇到4次交互的結束包(FIN,ACK),或終止包(RST)或遇到防火墻的Timeout,則及時斷開連接,撤除該端口的防火墻狀態(tài)連接表項,以保證安全。
從截獲的TCP端口號為135的網絡幀中找出包含有返回動態(tài)端口號的幀數(shù)據,如下所示:
地址(十六進制) 網絡幀數(shù)據(十六進制)
0000 90 fb a6 07 18 91 00 1b 11 04 3a c4 08 00 45 00
0010 03 f0 5d d3 40 00 80 06 97 2f 81 00 00 02 81 00
0020 00 03 00 87 0c f6 7e 72 7d d9 d1 5a 2e fd 50 18
0030 ff ff 1e 66 00 00 05 00 02 03 10 00 00 00 c8 03
0040 00 00 03 00 00 00 b0 03 00 00 01 00 00 00 01 00
0050 00 00 00 00 00 00 f8 a1 0d 00 98 03 00 00 98 03
0060 00 00 4d 45 4f 57 04 00 00 00a30100000000
00700000c00000000000004639 03 00 00 00 00
……
00f0 00 00 00 00 00 00 c0 00 00 00 00 00 00 46 02 00
0100 00 0028010000c8 01 00 00 01 10 08 00 cc cc
……
0260 1a ef b9 b2 53 09 02 00 00 00 05 00 07 00 c0 00
0270 00 00 c0 00510007 00 68 00 6f 00 6c 00 6c 00
0280 79 00 73 00 79 00 73 00 2d 00 32 00 32 00 32 00
0290 65 00 65 00 37 00 5b 00 33 00 38 00 34 00 33 00
02a0 5d 00 00 00 07 00 31 00 39 00 32 00 2e 00 31 00
02b0 36 00 38 00 2e 00 31 00 34 00 32 00 2e 00 31 00
02c0 5b 00 33 00 38 00 34 00 33 00 5d 00 00 00 07 00
02d0 31 00 39 00 32 00 2e 00 31 00 36 00 38 00 2e 00
02e0 32 00 2e 00 31 00 5b 00 33 00 38 00 34 00 33 00
02f0 5d 00 00 00 07 00 31 00 32 00 39 00 2e 00 30 00
0300 2e 00 30 00 2e 00 32 00 5b 00330038003400
031033005d 00 00 00 00 00 0a 00 ff ff 48 00 4f 00
0320 4c 00 4c 00 59 00 53 00 59 00 53 00 2d 00 32 00
要識別出有返回動態(tài)端口號的幀首先需找出包含有微軟的全局唯一標識符(Globally Unique Identifier,GUID)的幀,此幀的GUID={ a3 01 00 00 00 00 00 00 c0 00 00 00 00 00 00 46},如果是不含有VLAN和QOS標識的普通幀,從地址0x6A(十六進制)往后的128位即是該GUID碼。
通過查找綁定的字符串區(qū)找出端口號。在幀地址0x274取出2 B的字符串個數(shù)為0x5100,去小端后為0x51,一個字符占2 B,該綁定的字符串區(qū)長度為0xA2,從幀地址0x276開始,到幀地址(0x276+0xA2)結束,查找出包含在“[”(5b 00和“]”(5d 00)之間的字符串為{33 00 38 00 34 00 33 00},得出返回的端口號為3843。下一個要創(chuàng)建的用于數(shù)據傳輸?shù)倪B接是以OPC服務器的3843端口號的TCP的連接,工控防火墻可據此進行過濾。
監(jiān)視由OPC客戶機請求數(shù)據通信動態(tài)創(chuàng)建的所有TCP連接的網絡流內容,下面以截獲的網絡幀為例說明。
(1)在OPC客戶機請求數(shù)據通信動態(tài)建立的TCP連接中,逐個掃描由OPC客戶機發(fā)出的網絡幀中的通用唯一識別碼 (Universally Unique Identifier,UUID),同步操作碼UUID={52 3A C1 39 1E 01 D0 11 96 75 00 20 AF D8 AD B3},異步操作碼UUID={71 3A C1 39 1E 01 D0 11 96 75 00 20 AF D8 AD B3},在截獲的網絡幀中,客戶機端口號0x445,服務器端口號0xE50:
地址(十六進制) 網絡幀數(shù)據(十六進制)
0000 00 1b 11 04 3a c4 90 fb a6 07 18 91 08 00 45 00
0010 00 70 13 96 40 00 80 06 e4 ec 81 00 00 03 81 00
0020 00 02 04 45 0e 50 84 cf 13 04 72 1a 6b 94 50 18
0030 fb 43 02 68 00 00 05 00 0e 03 10 00 00 00 48 00
0040 00 00 35 00 00 00 d0 16 d0 16 de 8e e0 05 01 00
0050 00 00 08 00 01 00523ac1391e01d0119675
00600020afd8adb300 00 00 00 04 5d 88 8a eb 1c
在幀地址0x56處,匹配識別出是同步操作的UUID。
(2)如果匹配了由OPC客戶機發(fā)出的網絡幀中的同步操作碼UUID,則繼續(xù)監(jiān)視,當OPC服務器發(fā)回一個應答幀之后,在下一個從OPC客戶機發(fā)出的網絡幀中找到一個動態(tài)生成的16 B長的同步句柄ObjectID:
地址(十六進制) 網絡幀數(shù)據(十六進制)
0000 00 1b 11 04 3a c4 90 fb a6 07 18 91 08 00 45 00
0010 00 c8 13 c9 40 00 80 06 e4 61 81 00 00 03 81 0
0020 00 02 04 45 0e 50 84 cf 17 14 72 1a 6d b8 50 18
0030 fe db 02 c0 00 00 05 00 00 83 10 00 00 00 a0 00
0040 10 00 3c 00 00 00 54 00 00 00 09 0004000fa4
00500000900b00009d93a8fc314b040f05 00
0060 07 00 00 00 00 00 00 00 00 00 9a 11 e6 9c aa 14
0070 18 4f 93 46 5d 35 36 34 a4 dd 00 00 00 00 01 00
0080 00 00 01 00 00 00 f0 85 37 00 01 00 00 00 55 73
0090 65 72 00 00 00 00 03 00 00 00 00 00 00 00 04 00
00a0 00 00 06 00 00 00 04 00 00 009ec97f7f02 00
00b0 00 00 a8 2a 17 00 01 00 00 00 00 00 00 00 0a 02
00c0 0c 00 a8 2a 17 00 01 00 00 00 00 00 00 00 00 00
00d0 00 00 00 00 00 00
該同步ObjectID由幀地址0x4E開始,長度為16 B,在該TCP連接中取代了同步操作碼UUID的作用,一直到該TCP連接結束或斷開。在幀地址0x4c開始向后的2 B,是操作碼Opnum,Opnum=03 00表示讀操作,Opnum=04 00表示寫操作。工控防火墻可根據設置好的安全策略據此進行過濾保護,在此幀中,是寫操作,其值在幀地址0xAA處向后的4 B中。
可以用同樣的方法對訂閱方式進行分析,同時可對要寫入的數(shù)據的域做限定保護,但這并不能做到安全保護[3],還存在著安全隱患:
(1)在一些OPC產品中,要求OPC服務器和客戶機必須配置相同的賬戶名和登錄密碼,如果OPC通信是跨越不同的廠家或是不同的安全域,這是一條可以滲透攻擊的通道。
(2) 惡意邏輯可以通過提高讀取OPC數(shù)據的頻度等操作構成對控制器的攻擊。一般OPC服務器的數(shù)據來自于控制器或控制器采集的數(shù)據。控制器大多是以定時輪詢方式工作,在一個定時輪詢周期內要完成輸入-控制處理計算-輸出等一系列操作,根據應用要求周期從幾百毫秒到幾十毫秒不等,有些應用甚至到1 ms以下,控制器在輪詢周期內設計的網絡流量是確定且平穩(wěn)有序的,但是一旦增加對數(shù)據的訪問次數(shù),即使控制器一旦接收到網絡中斷請求就做丟棄處理,仍會破壞控制器的工作節(jié)奏,例如一個強度達到了6 000 pps(Packet Per Second)的網絡訪問,可在幾秒鐘之內就會使某些類型的控制器復位,如果是小幀,該流量帶寬也就3 M多,網絡上負載的變動會大大干擾甚至破壞控制器的正常運行。
(3)在前面的分析中,可對OPC動態(tài)生成的端口號的通信連接實行過濾,可對讀寫過濾保護,甚至可對數(shù)據的范圍識別過濾,但這些僅僅是OPC通信中的一小部分,作為OPC通信的基礎,還有RPC和DCOM組件,尤其是DCOM組件,在通信中頻繁出現(xiàn),比如在上節(jié)中對OPC服務器的一個數(shù)據開始做同步寫操作之前,已經來回傳遞了272個幀,這些幀的作用不像“讀”和“寫”那樣含義明確,對這其中大量信息作分析不是件容易的事。按說都是為OPC通信服務的,不應阻攔,但這為會話劫持等攻擊提供了機會,對這種OPC通信中不明信息流,是惡意邏輯可借以入侵和敏感信息外泄的通道,不僅可攻擊生產系統(tǒng),對移動終端智能制造生產線來說,甚至還可能侵入到在制品中,將惡意邏輯轉移到生產的產品中。在攻與防的對抗中,如果守方對于底層計算資源的了解和掌握程度低于攻方,顯然是不能做到有效的防護。
針對上述問題,可以現(xiàn)有的防火墻技術為基礎,利用多端口劃分不同的安全區(qū)域,實現(xiàn)縱深安全防護,如圖2所示。
圖2 對OPC通信的分區(qū)保護方案
其中,防火墻1、2口為OPC服務器一方,3、4口為OPC客戶機一方。對防火墻2-4端口配置OPC的TCP135號協(xié)議過濾和動態(tài)生成的端口號的協(xié)議過濾,包括讀寫過濾策略;防火墻的1-2端口僅是配置對控制器或現(xiàn)場設備數(shù)據的訪問協(xié)議的放行策略,包括對訪問頻度的保護;防火墻的3-4端口僅配置請求訪問對方的數(shù)據通信協(xié)議的放行策略。由于防火墻1-2端口和3-4端口數(shù)據通信含義和結構清楚,配置過濾策略可明確有效,防火墻端口2-4是OPC協(xié)議過濾,有暴露對方機器賬戶名、密碼的問題,還有大量不明信息流的安全隱患,是潛在的滲透攻擊的通道,但這會被防火墻1-2端口和3-4端口的安全策略所遏制,對兩邊的實際使用起到保護作用。若能增加對OPC服務器和客戶的實時監(jiān)控,還可從整體上進一步提高安全防護能力,當然對于雙方之間的其他含義結構均明確的數(shù)據通信,可直接通過防火墻1-3端口實施過濾放行的策略,以減少通信的遲延。
對于移動終端制造行業(yè),在整個生產線上的工業(yè)控制系統(tǒng)中用于與信息網互聯(lián)或各工控系統(tǒng)互聯(lián)的OPC協(xié)議,研發(fā)防火墻安全保護策略時不能僅僅考慮動態(tài)生成TCP端口號的過濾、數(shù)據讀寫過濾問題,還要考慮到密碼暴露、惡意提高訪問數(shù)據頻度等攻擊,對OPC通信中不明信息流,是惡意邏輯可借以入侵和敏感信息外泄的通道,不僅可攻擊生產系統(tǒng),對移動終端智能制造生產線來說,甚至還可能侵入到在制品中,將惡意邏輯轉移到生產的產品中,是更大的安全隱患。安全問題實質上是攻防雙方在對存在的和潛在的計算資源的掌控能力上的斗爭,如果守方對基礎軟件原理機制的掌握程度差于攻方,防護的效能會大打折扣。本文提出了一種用多端口防火墻分區(qū)過濾縱深防御的方案,以期在基礎軟件劣勢情況下得到相對的安全,這也提示我們[4],自主研發(fā)安全可控的基礎軟件對保障安全的重要性。
[1] 屈婉瑩,魏為民,朱蘇榕.工業(yè)控制系統(tǒng)通信協(xié)議安全研究[C].2015年全國智能電網用戶端能源管理學術年會論文集,北京:2015.
[2] 夏毅,李紅春.自動控制系統(tǒng)的安全防護[J].儀器儀表用戶,2014,21(2):97-100.
[3] 尚振陽,楊瑞先.實時數(shù)據庫系統(tǒng)數(shù)據安全采集方案[J].電信科學,2016,32(10):175-180.
[4] 宮芳濤.基于二進制通信的OPC UA客戶端及安全機制的研究與開發(fā)[D].北京:華北電力大學,2012.
The security in the industrial communication networks
Fu Yifan,Huo Yuxian,Liu Jin,Jiang Hongzhao
(The 6th Research Institute of China Electronics Corporation,Beijing 102209,China)
Aiming at the security issues of the OPC(Object Linking and Embedding for Process Control) communication protocol in industrial communication networks,through the analysis of frames on traffic between cient and server of OPC,it describes how to open dynamically generated TCP session,how to identify synchronized read and write frames based on OPC protocol,and how to filter read and write requests.It also points out the security risks posed by implementing traditional firewalls,such as facing threats due to leaked passwords,interruption in the operation of control systems by malware which disguises as an application and maliciously increases data access,and facing threats due to penetration of unknown frames on traffic,etc.To address these security threats,this paper provides a solution by creating zones of protection for mult-ports firewall.
firewall; OPC; industrial communication networks; information security
TP309.1
A
10.19358/j.issn.1674-7720.2017.21.001
傅一帆,霍玉鮮,劉金,等.工業(yè)控制網絡互聯(lián)互通的安全問題J.微型機與應用,2017,36(21):1-3,7.
工業(yè)和信息化部“智能制造綜合標準化與新模式應用”;核高基重大專項(2017ZX01030202)
2017-07-01)
傅一帆(1953-),男,碩士,研究員級高工,主要研究方向:防火墻、嵌入式系統(tǒng)、信息安全。
霍玉鮮(1990-),女,碩士,助理工程師,主要研究方向:嵌入式系統(tǒng)、信息安全。
劉金(1990-),女,碩士,助理工程師,主要研究方向:嵌入式系統(tǒng)、信息安全。