傅一帆,霍玉鮮,劉 金,姜洪朝
(中國(guó)電子信息產(chǎn)業(yè)集團(tuán)有限公司第六研究所,北京 102209)
工業(yè)控制網(wǎng)絡(luò)互聯(lián)互通的安全問(wèn)題*
傅一帆,霍玉鮮,劉 金,姜洪朝
(中國(guó)電子信息產(chǎn)業(yè)集團(tuán)有限公司第六研究所,北京102209)
針對(duì)工業(yè)控制系統(tǒng)使用的OPC(ObjectLinkingandEmbeddingforProcessControl)通信協(xié)議的安全防護(hù),通過(guò)分析OPC客戶機(jī)和服務(wù)器之間的網(wǎng)絡(luò)流,用截獲的網(wǎng)絡(luò)幀說(shuō)明如何開(kāi)放動(dòng)態(tài)生成的TCP連接會(huì)話、如何識(shí)別同步讀寫(xiě)幀,怎樣對(duì)數(shù)據(jù)讀寫(xiě)操作過(guò)濾;強(qiáng)調(diào)指出,這種傳統(tǒng)的防火墻保護(hù)模式,仍可能存在利用暴露的密碼攻擊、假冒應(yīng)用要求惡意增加訪問(wèn)次數(shù)破壞控制系統(tǒng)運(yùn)行、借助不明信息流滲透攻擊的隱患,為此給出一個(gè)防火墻多端口分區(qū)保護(hù)縱深防御的方案。
防火墻;OPC;工業(yè)控制網(wǎng)絡(luò);信息安全
在移動(dòng)終端制造行業(yè)中,整個(gè)生產(chǎn)線上仍存在著“信息孤島”,為滿足移動(dòng)終端制造行業(yè)產(chǎn)品多樣化及快速投向市場(chǎng)的需求,推進(jìn)新一代信息技術(shù)與自動(dòng)化技術(shù)的融合,已成為制造行業(yè)的發(fā)展趨勢(shì)。因此要解決生產(chǎn)設(shè)備之間、生產(chǎn)設(shè)備與計(jì)劃排產(chǎn)等應(yīng)用之間的信息互通問(wèn)題,普遍在工業(yè)控制系統(tǒng)中使用OPC(Object Linking and Embedding for Process Control)協(xié)議實(shí)現(xiàn)互連,通過(guò)支持OPC標(biāo)準(zhǔn),不同廠家的設(shè)備之間可以實(shí)現(xiàn)過(guò)程控制數(shù)據(jù)的互操作。在實(shí)際應(yīng)用中,OPC通信跨越了不同系統(tǒng)的邊界,因此也帶來(lái)很多安全問(wèn)題。同時(shí),由于OPC協(xié)議的應(yīng)用數(shù)據(jù)是通過(guò)TCP協(xié)議動(dòng)態(tài)生成的端口號(hào)創(chuàng)建的連接傳輸?shù)?,給傳統(tǒng)的IT防火墻的過(guò)濾造成困難[1]。下面用黑箱分析的方法來(lái)分析OPC協(xié)議,探討解決OPC通信的安全防護(hù)問(wèn)題。
OPC通信采用客戶機(jī)-服務(wù)器的模式,服務(wù)器指擁有控制數(shù)據(jù)資源的一端,客戶機(jī)指對(duì)擁有的數(shù)據(jù)資源進(jìn)行讀寫(xiě)操作的一端[2]。通過(guò)監(jiān)聽(tīng)客戶機(jī)和服務(wù)器之間的網(wǎng)絡(luò)流,分析可得到圖1所示結(jié)果。
圖1 OPC協(xié)議的TCP動(dòng)態(tài)連接過(guò)程
如圖1顯示了OPC協(xié)議的動(dòng)態(tài)創(chuàng)建數(shù)據(jù)通信連接的過(guò)程:首先客戶機(jī)向服務(wù)器的OPC135端口發(fā)出連接請(qǐng)求,經(jīng)過(guò)大約幾十個(gè)幀后,從服務(wù)器的返回幀ISystemActivat RemoteCreateInstance response帶回OPC服務(wù)器要?jiǎng)?chuàng)建的端口號(hào),分析幀數(shù)據(jù)即可解出要?jiǎng)?chuàng)建的端口號(hào)。
針對(duì)動(dòng)態(tài)鏈接過(guò)程的分析,得到解決工控防火墻分析OPC動(dòng)態(tài)連接端口的思路:
(1)監(jiān)視出/入OPC端口(TCP135號(hào))的網(wǎng)絡(luò)幀;
(2)從TCP端口號(hào)為135的網(wǎng)絡(luò)幀中找出包含有返回動(dòng)態(tài)端口號(hào)的幀;
(3)從包含有返回動(dòng)態(tài)端口號(hào)的幀定位到包含有動(dòng)態(tài)端口號(hào)的字符串(稱(chēng)為StringBindings)的開(kāi)始位置,查找出該字符串?dāng)?shù)組的長(zhǎng)度,從StringBindings的開(kāi)始位置向后查找,解析出動(dòng)態(tài)端口號(hào);
(4)根據(jù)解析出的動(dòng)態(tài)端口號(hào),建立該端口的防火墻狀態(tài)連接表項(xiàng),放行該端口,并實(shí)時(shí)檢測(cè)該連接狀態(tài),當(dāng)遇到4次交互的結(jié)束包(FIN,ACK),或終止包(RST)或遇到防火墻的Timeout,則及時(shí)斷開(kāi)連接,撤除該端口的防火墻狀態(tài)連接表項(xiàng),以保證安全。
從截獲的TCP端口號(hào)為135的網(wǎng)絡(luò)幀中找出包含有返回動(dòng)態(tài)端口號(hào)的幀數(shù)據(jù),如下所示:
地址(十六進(jìn)制) 網(wǎng)絡(luò)幀數(shù)據(jù)(十六進(jìn)制)
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
要識(shí)別出有返回動(dòng)態(tài)端口號(hào)的幀首先需找出包含有微軟的全局唯一標(biāo)識(shí)符(Globally Unique Identifier,GUID)的幀,此幀的GUID={ a3 01 00 00 00 00 00 00 c0 00 00 00 00 00 00 46},如果是不含有VLAN和QOS標(biāo)識(shí)的普通幀,從地址0x6A(十六進(jìn)制)往后的128位即是該GUID碼。
通過(guò)查找綁定的字符串區(qū)找出端口號(hào)。在幀地址0x274取出2 B的字符串個(gè)數(shù)為0x5100,去小端后為0x51,一個(gè)字符占2 B,該綁定的字符串區(qū)長(zhǎng)度為0xA2,從幀地址0x276開(kāi)始,到幀地址(0x276+0xA2)結(jié)束,查找出包含在“[”(5b 00和“]”(5d 00)之間的字符串為{33 00 38 00 34 00 33 00},得出返回的端口號(hào)為3843。下一個(gè)要?jiǎng)?chuàng)建的用于數(shù)據(jù)傳輸?shù)倪B接是以O(shè)PC服務(wù)器的3843端口號(hào)的TCP的連接,工控防火墻可據(jù)此進(jìn)行過(guò)濾。
監(jiān)視由OPC客戶機(jī)請(qǐng)求數(shù)據(jù)通信動(dòng)態(tài)創(chuàng)建的所有TCP連接的網(wǎng)絡(luò)流內(nèi)容,下面以截獲的網(wǎng)絡(luò)幀為例說(shuō)明。
(1)在OPC客戶機(jī)請(qǐng)求數(shù)據(jù)通信動(dòng)態(tài)建立的TCP連接中,逐個(gè)掃描由OPC客戶機(jī)發(fā)出的網(wǎng)絡(luò)幀中的通用唯一識(shí)別碼 (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},在截獲的網(wǎng)絡(luò)幀中,客戶機(jī)端口號(hào)0x445,服務(wù)器端口號(hào)0xE50:
地址(十六進(jìn)制) 網(wǎng)絡(luò)幀數(shù)據(jù)(十六進(jìn)制)
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處,匹配識(shí)別出是同步操作的UUID。
(2)如果匹配了由OPC客戶機(jī)發(fā)出的網(wǎng)絡(luò)幀中的同步操作碼UUID,則繼續(xù)監(jiān)視,當(dāng)OPC服務(wù)器發(fā)回一個(gè)應(yīng)答幀之后,在下一個(gè)從OPC客戶機(jī)發(fā)出的網(wǎng)絡(luò)幀中找到一個(gè)動(dòng)態(tài)生成的16 B長(zhǎng)的同步句柄ObjectID:
地址(十六進(jìn)制) 網(wǎng)絡(luò)幀數(shù)據(jù)(十六進(jìn)制)
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開(kāi)始,長(zhǎng)度為16 B,在該TCP連接中取代了同步操作碼UUID的作用,一直到該TCP連接結(jié)束或斷開(kāi)。在幀地址0x4c開(kāi)始向后的2 B,是操作碼Opnum,Opnum=03 00表示讀操作,Opnum=04 00表示寫(xiě)操作。工控防火墻可根據(jù)設(shè)置好的安全策略據(jù)此進(jìn)行過(guò)濾保護(hù),在此幀中,是寫(xiě)操作,其值在幀地址0xAA處向后的4 B中。
可以用同樣的方法對(duì)訂閱方式進(jìn)行分析,同時(shí)可對(duì)要寫(xiě)入的數(shù)據(jù)的域做限定保護(hù),但這并不能做到安全保護(hù)[3],還存在著安全隱患:
(1)在一些OPC產(chǎn)品中,要求OPC服務(wù)器和客戶機(jī)必須配置相同的賬戶名和登錄密碼,如果OPC通信是跨越不同的廠家或是不同的安全域,這是一條可以滲透攻擊的通道。
(2) 惡意邏輯可以通過(guò)提高讀取OPC數(shù)據(jù)的頻度等操作構(gòu)成對(duì)控制器的攻擊。一般OPC服務(wù)器的數(shù)據(jù)來(lái)自于控制器或控制器采集的數(shù)據(jù)??刂破鞔蠖嗍且远〞r(shí)輪詢方式工作,在一個(gè)定時(shí)輪詢周期內(nèi)要完成輸入-控制處理計(jì)算-輸出等一系列操作,根據(jù)應(yīng)用要求周期從幾百毫秒到幾十毫秒不等,有些應(yīng)用甚至到1 ms以下,控制器在輪詢周期內(nèi)設(shè)計(jì)的網(wǎng)絡(luò)流量是確定且平穩(wěn)有序的,但是一旦增加對(duì)數(shù)據(jù)的訪問(wèn)次數(shù),即使控制器一旦接收到網(wǎng)絡(luò)中斷請(qǐng)求就做丟棄處理,仍會(huì)破壞控制器的工作節(jié)奏,例如一個(gè)強(qiáng)度達(dá)到了6 000 pps(Packet Per Second)的網(wǎng)絡(luò)訪問(wèn),可在幾秒鐘之內(nèi)就會(huì)使某些類(lèi)型的控制器復(fù)位,如果是小幀,該流量帶寬也就3 M多,網(wǎng)絡(luò)上負(fù)載的變動(dòng)會(huì)大大干擾甚至破壞控制器的正常運(yùn)行。
(3)在前面的分析中,可對(duì)OPC動(dòng)態(tài)生成的端口號(hào)的通信連接實(shí)行過(guò)濾,可對(duì)讀寫(xiě)過(guò)濾保護(hù),甚至可對(duì)數(shù)據(jù)的范圍識(shí)別過(guò)濾,但這些僅僅是OPC通信中的一小部分,作為OPC通信的基礎(chǔ),還有RPC和DCOM組件,尤其是DCOM組件,在通信中頻繁出現(xiàn),比如在上節(jié)中對(duì)OPC服務(wù)器的一個(gè)數(shù)據(jù)開(kāi)始做同步寫(xiě)操作之前,已經(jīng)來(lái)回傳遞了272個(gè)幀,這些幀的作用不像“讀”和“寫(xiě)”那樣含義明確,對(duì)這其中大量信息作分析不是件容易的事。按說(shuō)都是為OPC通信服務(wù)的,不應(yīng)阻攔,但這為會(huì)話劫持等攻擊提供了機(jī)會(huì),對(duì)這種OPC通信中不明信息流,是惡意邏輯可借以入侵和敏感信息外泄的通道,不僅可攻擊生產(chǎn)系統(tǒng),對(duì)移動(dòng)終端智能制造生產(chǎn)線來(lái)說(shuō),甚至還可能侵入到在制品中,將惡意邏輯轉(zhuǎn)移到生產(chǎn)的產(chǎn)品中。在攻與防的對(duì)抗中,如果守方對(duì)于底層計(jì)算資源的了解和掌握程度低于攻方,顯然是不能做到有效的防護(hù)。
針對(duì)上述問(wèn)題,可以現(xiàn)有的防火墻技術(shù)為基礎(chǔ),利用多端口劃分不同的安全區(qū)域,實(shí)現(xiàn)縱深安全防護(hù),如圖2所示。
圖2 對(duì)OPC通信的分區(qū)保護(hù)方案
其中,防火墻1、2口為OPC服務(wù)器一方,3、4口為OPC客戶機(jī)一方。對(duì)防火墻2-4端口配置OPC的TCP135號(hào)協(xié)議過(guò)濾和動(dòng)態(tài)生成的端口號(hào)的協(xié)議過(guò)濾,包括讀寫(xiě)過(guò)濾策略;防火墻的1-2端口僅是配置對(duì)控制器或現(xiàn)場(chǎng)設(shè)備數(shù)據(jù)的訪問(wèn)協(xié)議的放行策略,包括對(duì)訪問(wèn)頻度的保護(hù);防火墻的3-4端口僅配置請(qǐng)求訪問(wèn)對(duì)方的數(shù)據(jù)通信協(xié)議的放行策略。由于防火墻1-2端口和3-4端口數(shù)據(jù)通信含義和結(jié)構(gòu)清楚,配置過(guò)濾策略可明確有效,防火墻端口2-4是OPC協(xié)議過(guò)濾,有暴露對(duì)方機(jī)器賬戶名、密碼的問(wèn)題,還有大量不明信息流的安全隱患,是潛在的滲透攻擊的通道,但這會(huì)被防火墻1-2端口和3-4端口的安全策略所遏制,對(duì)兩邊的實(shí)際使用起到保護(hù)作用。若能增加對(duì)OPC服務(wù)器和客戶的實(shí)時(shí)監(jiān)控,還可從整體上進(jìn)一步提高安全防護(hù)能力,當(dāng)然對(duì)于雙方之間的其他含義結(jié)構(gòu)均明確的數(shù)據(jù)通信,可直接通過(guò)防火墻1-3端口實(shí)施過(guò)濾放行的策略,以減少通信的遲延。
對(duì)于移動(dòng)終端制造行業(yè),在整個(gè)生產(chǎn)線上的工業(yè)控制系統(tǒng)中用于與信息網(wǎng)互聯(lián)或各工控系統(tǒng)互聯(lián)的OPC協(xié)議,研發(fā)防火墻安全保護(hù)策略時(shí)不能僅僅考慮動(dòng)態(tài)生成TCP端口號(hào)的過(guò)濾、數(shù)據(jù)讀寫(xiě)過(guò)濾問(wèn)題,還要考慮到密碼暴露、惡意提高訪問(wèn)數(shù)據(jù)頻度等攻擊,對(duì)OPC通信中不明信息流,是惡意邏輯可借以入侵和敏感信息外泄的通道,不僅可攻擊生產(chǎn)系統(tǒng),對(duì)移動(dòng)終端智能制造生產(chǎn)線來(lái)說(shuō),甚至還可能侵入到在制品中,將惡意邏輯轉(zhuǎn)移到生產(chǎn)的產(chǎn)品中,是更大的安全隱患。安全問(wèn)題實(shí)質(zhì)上是攻防雙方在對(duì)存在的和潛在的計(jì)算資源的掌控能力上的斗爭(zhēng),如果守方對(duì)基礎(chǔ)軟件原理機(jī)制的掌握程度差于攻方,防護(hù)的效能會(huì)大打折扣。本文提出了一種用多端口防火墻分區(qū)過(guò)濾縱深防御的方案,以期在基礎(chǔ)軟件劣勢(shì)情況下得到相對(duì)的安全,這也提示我們[4],自主研發(fā)安全可控的基礎(chǔ)軟件對(duì)保障安全的重要性。
[1] 屈婉瑩,魏為民,朱蘇榕.工業(yè)控制系統(tǒng)通信協(xié)議安全研究[C].2015年全國(guó)智能電網(wǎng)用戶端能源管理學(xué)術(shù)年會(huì)論文集,北京:2015.
[2] 夏毅,李紅春.自動(dòng)控制系統(tǒng)的安全防護(hù)[J].儀器儀表用戶,2014,21(2):97-100.
[3] 尚振陽(yáng),楊瑞先.實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)安全采集方案[J].電信科學(xué),2016,32(10):175-180.
[4] 宮芳濤.基于二進(jìn)制通信的OPC UA客戶端及安全機(jī)制的研究與開(kāi)發(fā)[D].北京:華北電力大學(xué),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è)控制網(wǎng)絡(luò)互聯(lián)互通的安全問(wèn)題J.微型機(jī)與應(yīng)用,2017,36(21):1-3,7.
工業(yè)和信息化部“智能制造綜合標(biāo)準(zhǔn)化與新模式應(yīng)用”;核高基重大專(zhuān)項(xiàng)(2017ZX01030202)
2017-07-01)
傅一帆(1953-),男,碩士,研究員級(jí)高工,主要研究方向:防火墻、嵌入式系統(tǒng)、信息安全。
霍玉鮮(1990-),女,碩士,助理工程師,主要研究方向:嵌入式系統(tǒng)、信息安全。
劉金(1990-),女,碩士,助理工程師,主要研究方向:嵌入式系統(tǒng)、信息安全。