馬納 章維 陸衛軍 羅冰 浙江中控技術(shù)股份有限公司
摘要:針對OPC通訊中存在安全隱患的問(wèn)題,本文通過(guò)分析OPC通訊原理,闡述了通過(guò)部署OPC安全網(wǎng)關(guān)對OPC通訊進(jìn)行協(xié)議深度解析實(shí)現OPC通訊的安全防護,進(jìn)一步討論了OPC動(dòng)態(tài)端口跟蹤方法,可解決傳統防火墻無(wú)法跟蹤OPC動(dòng)態(tài)端口,同時(shí)分析了OPC指令過(guò)濾的方法,可有效解決OPC指令的訪(fǎng)問(wèn)控制。
關(guān)鍵詞:OPC;安全防護;動(dòng)態(tài)端口;指令過(guò)濾
隨著(zhù)信息化與工業(yè)化深度融合的快速發(fā)展,工業(yè)控制系統越來(lái)越多地采用開(kāi)放的通信協(xié)議標準,通信協(xié)議所存在的安全隱患日益突出。其中OPC Classical規范(以下稱(chēng)OPC規范)作為一種工業(yè)標準為現場(chǎng)設備、自動(dòng)控制應用、企業(yè)管理應用軟件之間提供了開(kāi)放、統一的標準接口,其已在控制領(lǐng)域得到廣泛應用,許多工業(yè)控制領(lǐng)域的公司都推出了符合OPC技術(shù)規范的產(chǎn)品。OPC規范(其協(xié)議層次如圖1所示)基于Microsoft的DCOM分布式組件技術(shù)進(jìn)行開(kāi)發(fā)設計,由于DCOM技術(shù)是在網(wǎng)絡(luò )安全問(wèn)題被廣泛認識之前設計的,極易遭受網(wǎng)絡(luò )攻擊[1]。
圖1 OPC協(xié)議層次[2]
1 OPC安全風(fēng)險分析
DCOM技術(shù)是一種提供面向組件對象的服務(wù),其通過(guò)DCE/RPC協(xié)議進(jìn)行網(wǎng)絡(luò )數據封裝。由于DCOM技術(shù)、DCE/RPC協(xié)議本身的諸多漏洞,導致OPC技術(shù)規范存在嚴重的安全隱患,如今已引起了工控行業(yè)的普遍擔憂(yōu),其問(wèn)題主要體現在以下兩方面。
(1)DCOM以及其底層協(xié)議DCE/RPC已經(jīng)發(fā)現多個(gè)漏洞,表1列舉了幾個(gè)常見(jiàn)漏洞。攻擊者一般都利用畸形的RPC數據包使得被攻擊對象的RPC服務(wù)出現錯誤,進(jìn)而使其執行惡意代碼,授權攻擊者相關(guān)權限,最后控制攻擊對象,執行安裝、刪除軟件程序,甚至創(chuàng )建新用戶(hù)等操作。雖然微軟公司已經(jīng)推出了相關(guān)漏洞補丁,但是許多計算機并未安裝漏洞補丁,這使得這部分計算機依然存在安全風(fēng)險[4]。
表1 已知的DCOM漏洞[3]
(2)OPC通訊端口由DCOM機制動(dòng)態(tài)協(xié)商所得,其端口范圍為1024~65535。若OPC通訊采用傳統的防火墻進(jìn)行安全防護,則需最大限度地開(kāi)放通訊端口,將形成較高的安全風(fēng)險[5]。
針對上述問(wèn)題,本文通過(guò)分析OPC通訊協(xié)議原理,提出OPC通訊安全防護方法,實(shí)現OPC通訊的動(dòng)態(tài)端口跟蹤、非法OPC指令過(guò)濾,提高OPC通訊的安全性。
2 OPC通訊原理分析
OPC規范的底層通訊協(xié)議——DCOM協(xié)議采用客戶(hù)服務(wù)器(C/S)模型,通過(guò)RPC(Remote Procedure CaII)實(shí)現遠程過(guò)程調用,實(shí)現了COM技術(shù)的網(wǎng)絡(luò )化,因此DCOM技術(shù)也稱(chēng)為OPRC服務(wù)(對象ORPC)??蛻?hù)創(chuàng )建一個(gè)DCOM 服務(wù)器對象時(shí),通過(guò)指定服務(wù)器IP地址或計算機主機名等指定被調用DCOM組件的位置,激活DCOM組件對象后,即可調用DCOM組件相關(guān)的接口進(jìn)行遠程過(guò)程調用。
圖2為DCOM實(shí)現架構,其中客戶(hù)通過(guò)135端口的對象解析服務(wù)(Object Reslover Service )完成DCOM組件對象的激活、服務(wù)器查詢(xún)、對象?;罴盎厥眨≒inging機制)等任務(wù),客戶(hù)激活DCOM組件對象后,其可通過(guò)服務(wù)端返回的信息獲取動(dòng)態(tài)端口。服務(wù)器通過(guò)該動(dòng)態(tài)端口向客戶(hù)提供DCOM組件服務(wù)(ORPC服務(wù)),即客戶(hù)通過(guò)該動(dòng)態(tài)端口可實(shí)現DCOM組件相關(guān)接口的遠程過(guò)程調用。因此當OPC通訊時(shí),OPC服務(wù)器將通過(guò)動(dòng)態(tài)端口提供OPC組件相關(guān)服務(wù)。
圖2 DCOM實(shí)現架構
在DCOM服務(wù)中,DCOM對象是客戶(hù)與服務(wù)器間進(jìn)行信息交互的實(shí)體,其由對象管理服務(wù)(ObjectExporter)負責管理實(shí)現,客戶(hù)對某個(gè)對象只能通過(guò)該對象實(shí)現的接口進(jìn)行信息請求。每一個(gè)DCOM接口規定了一組方法用于實(shí)現具體的邏輯功能,每一個(gè)邏輯功能規定了一套輸入輸出參數。每個(gè)DCOM接口都具有唯一標識IID,其所包含的方法(即函數接口)采用操作數(Operation Number)表示, 因此OPC規范所提供的OPC標準接口為OPC客戶(hù)與OPC服務(wù)器間的一組協(xié)議。OPC客戶(hù)程序通過(guò)提供OPC接口IID獲取OPC接口指針(又稱(chēng)IPID),即可通過(guò)IPID調用接口相關(guān)OPC方法(以下稱(chēng)OPC指令),從而實(shí)現OPC指令對應的邏輯功能[6]。
圖3 OPC通訊協(xié)議層次
DCE/RPC協(xié)議作為DCOM的底層通訊協(xié)議使得DCOM能夠通過(guò)網(wǎng)絡(luò )進(jìn)行信息交互,其支持多種傳輸層協(xié)議,包括UDP、TCP、SMB2等。由于DCOM技術(shù)采用了面向連接的通訊機制,其采用TCP協(xié)議(通訊協(xié)議層次如圖3所示)。
若DCE/RPC采用TCP作為傳輸層協(xié)議,其數據包由首部(PDU Header)、數據包主體信息(PDU Body) 以及數據包安全信息(Authentication Body)組成,如圖4所示。其中PDU Header描述了數據包結構組成信息,PDU body 描述了數據包的基本內容,Authentication Body則描述了數據包所采用的安全協(xié)議的相關(guān)信息。DCE/RPC包括Bind、Bind_ack、Bind_nak、Alter_context、Alter_context_response、Request、Response、Fault、Shutdown、Cancel、Orphaned9種類(lèi)型的PDU數據包。其中Request數據包以及Response數據包用于DCOM方法的遠程過(guò)程調用,即服務(wù)器從客戶(hù)的Request包中獲取DCOM方法的輸入參數,在本地執行DCOM方法后,將相應的輸出參數通過(guò)Response包返回給客戶(hù),其DCOM方法的輸入輸出參數信息采用NDR32編碼方式進(jìn)行信息封裝[7-8]。
圖4 RPC數據包結構
3 OPC安全防護具體實(shí)現的討論
為了解決OPC通訊存在安全防護薄弱的問(wèn)題,絕大多數工控安全廠(chǎng)商通過(guò)將OPC安全網(wǎng)關(guān)以串聯(lián)方式部署在OPC服務(wù)器與OPC客戶(hù)端的通訊鏈路上(如圖5所示),通過(guò)隊列緩存每包OPC通訊數據包, 使用OPC通訊安全防護算法對每一組OPC數據包進(jìn)行深度解析,將符合OPC通訊安全規則的數據包進(jìn)行轉發(fā),同時(shí)丟棄非法的OPC數據包。本文將從DCE/RPC數據包基本格式檢查、OPC動(dòng)態(tài)端口跟蹤、OPC非法指令過(guò)濾三方面實(shí)現對OPC通訊的有效監控,保證OPC通訊的安全性。
圖5 OPC網(wǎng)關(guān)部署結構
3.1 OPC動(dòng)態(tài)端口跟蹤
OPC客戶(hù)通過(guò)135端口連接至OPC服務(wù)器后,通過(guò)發(fā)送IActivation::RemoteActivation()方法的Request數據包請求OPC組件的連接信息,OPC服務(wù)器將通過(guò)相應的Response數據包返回包含了動(dòng)態(tài)端口、OPC服務(wù)器計算機名、OPC服務(wù)器IP地址等內容的OPC通訊連接信息。因此OPC安全網(wǎng)關(guān)通過(guò)監控IActivation::RemoteActivation()方法的遠程調用過(guò)程獲取OPC動(dòng)態(tài)端口,然后建立相應的OPC通訊訪(fǎng)問(wèn)控制規則(ACL),其OPC的ACL規則包括源地址、目的地址、OPC服務(wù)端口(即動(dòng)態(tài)端口)信息,若數據包無(wú)法從ACL規則庫中找到匹配的ACL規則,數據包丟棄,否則數據包將繼續進(jìn)行TCP狀態(tài)檢測,最后完成OPC應用層協(xié)議解析。OPC安全網(wǎng)關(guān)打開(kāi)動(dòng)態(tài)端口后,實(shí)時(shí)監控OPC通訊以判斷動(dòng)態(tài)端口的有效性。若OPC通訊長(cháng)時(shí)間保持無(wú)連接狀態(tài),OPC安全網(wǎng)關(guān)將刪除OPC連接相應的ACL規則,從而關(guān)閉無(wú)效的OPC通訊動(dòng)態(tài)端口,OPC動(dòng)態(tài)端口識別軟件流程如圖6所示。
圖6 OPC動(dòng)態(tài)端口識別
3.2 OPC指令過(guò)濾
OPC客戶(hù)在OPC服務(wù)器建立OPC組件服務(wù)的TCP連接后,將調用相應的OPC指令獲取相應OPC服務(wù)。因此OPC安全網(wǎng)關(guān)通過(guò)實(shí)時(shí)跟蹤OPC客戶(hù)端向OPC服務(wù)器發(fā)起的OPC方法調用過(guò)程,檢查客戶(hù)所調用OPC指令的合法性,若OPC指令為非法指令,則OPC安全網(wǎng)關(guān)丟棄數據包,同時(shí)刪除OPC連接相應的ACL規則以中斷相應的OPC通訊。為了提高系統的靈活性,OPC安全網(wǎng)關(guān)可在內部建立OPC指令白名單作為OPC指令合法性檢查的依據,用戶(hù)可根據自身需求,配置OPC指令白名單,實(shí)現不同OPC客戶(hù)的訪(fǎng)問(wèn)控制,這樣可進(jìn)一步限制OPC遠程過(guò)程調用行為,提高了系統的安全性。OPC指令過(guò)濾的軟件流程如圖7所示。
圖7 OPC指令過(guò)濾
4 結語(yǔ)
本文分析了OPC通訊存在的安全風(fēng)險及OPC通訊原理。重點(diǎn)討論了OPC通訊安全防護方法,分別針對OPC通訊動(dòng)態(tài)端口的跟蹤、OPC指令過(guò)濾等作了進(jìn)一步的分析與闡述,通過(guò)部署OPC安全網(wǎng)關(guān)實(shí)時(shí)跟蹤OPC通訊動(dòng)態(tài)端口,保持OPC通訊端口打開(kāi)數量的最小化,解決傳統防火墻無(wú)法有效地進(jìn)行OPC動(dòng)態(tài)端口防護的問(wèn)題。與此同時(shí),通過(guò)OPC指令過(guò)濾算法,過(guò)濾非法OPC指令,進(jìn)一步降低了OPC通訊的安全風(fēng)險。目前OPC安全防護相關(guān)應用還處于起步階段,國內幾家工控安全廠(chǎng)商分別推出了OPC安全防護產(chǎn)品,但尚未得到廣泛應用,OPC安全防護相關(guān)技術(shù)方案、產(chǎn)品還需進(jìn)一步論證、優(yōu)化。
作者簡(jiǎn)介
馬納(1989-),男,浙江慈溪人,現就職于浙江中控技術(shù)股份有限公司,主要從事工業(yè)控制系統信息安全相關(guān)技術(shù)研究。
參考文獻:
[1] OPC Foundation. OPC Overview 1.00[M]. 1998: 6.
[2] Microsoft. Distributed Component Object Model (DCOM)[A]. Remote Protocol[M], 1998.
[3] 趙麗敏, 童舜海. 基于RPC的安全問(wèn)題研究[J]. 麗水學(xué)院學(xué)報, 2007, 29 (05) : 85.
[4] OSIsoft. DCOM Security and Configuration Guide [M], 2012: 1.
[5] 伍光勝, 鄭明輝等. COM/DCOM技術(shù)的分析及應用[J]. 計算機應用研究. 2001 (9) : 65.
[6] 高立濤. Windows 網(wǎng)絡(luò )下的RPC攻擊檢測方法研究[D]. 北京: 北京交通大學(xué), 2007.
摘自《工業(yè)控制系統信息安全》專(zhuān)刊第三輯