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