- 工業信息安全應急管理理論與架構
- 汪禮俊主編
- 3011字
- 2024-12-16 16:31:31
(二)工業控制網絡協議
工業網絡指安裝在工業生產環境中的全數字化、雙向、多站的通信系統,是應用于工業領域的綜合型集成網絡,涉及計算機技術、通信技術、多媒體技術、控制技術和現場總線技術等。從功能角度來看,工業網絡一般可分成兩個部分:企業信息網絡、工業控制網絡。企業信息網絡位于工業網絡的中上層,主要功能是處理工業控制系統的管理與決策信息,與傳統的信息網絡架構相同。
企業信息網絡與工業控制網絡之間的信息無縫集成依賴工業以太網。工業以太網主要指技術上與商用以太網(IEEE 802.3)兼容,但在環境性、可靠性、實時性、安全性以及設備安裝等方面滿足工業現場要求的以太網。工業以太網技術應用主要具有基于TCP/IP主流標準、易操作、可實現遠程訪問和診斷、網絡傳輸速度快、傳輸介質靈活、能有效降低投資成本等優點,但同時存在安全性及總線供電問題。
工業控制網絡位于工業網絡的中下層,主要功能是處理控制現場的實時測控信息。依據通信關系,工業控制網絡由下到上又可分為現場控制層、過程監控層,分別對應現場總線網絡、過程控制與監控網絡。現場控制層處于作業現場,主要功能是連接現場設備,如分布式I/O、傳感器、驅動器和開關設備等,實現現場設備控制及設備間聯鎖控制。過程監控層主要通過分布式SCADA系統采集和監控生產過程參數,并利用HMI實現人機交互,對現場控制層進行管理。
工業控制網絡是能夠將工業企業中各個生產流程和自動化控制系統通過各種通信設備組織起來的通信網絡。工業控制系統的現場網絡與控制網絡之間的通信、現場網絡各工業控制設備之間的通信、控制網絡各組件的通信往往采用工業控制系統特有的通信協議。目前,常見的工業控制系統通信協議主要包括Modbus、S7COMM、分布式網絡協議3(Distributed Network Protocol 3,DNP3)、IEC、OPC等。
1.Modbus協議
(1)Modbus基本介紹
Modbus是一種串行通信協議,由莫迪康公司(現在的施耐德電氣公司)于1979年為使用PLC通信而發表。Modbus協議是全球首個真正用于工業現場的總線協議,由于其具有免費性、易部署、可維護性、易應用性等特點,已經成為工業領域通信協議的業界標準,是工業電子設備之間常用的連接協議。
目前,支持Modbus協議的廠家已超過400家,支持Modbus協議的產品超過600種。因此,Modbus協議可以說是應用最為廣泛的工業控制協議之一。Modbus協議主要基于TCP/IP,幀格式簡單、緊湊,通俗易懂;用戶使用方便,廠商開發簡單。但是,其在設計之初未考慮安全性,存在缺乏認證、缺乏授權、缺乏加密等固有缺陷,這些可能會導致開發者在使用該協議的過程中出現緩沖區溢出、功能碼濫用等問題。
(2)Modbus通信方式
Modbus協議基本上遵循主從(Master-Slave)通信模式,如圖1-8所示。Modbus非常便于實現低級設備和高級設備之間的通信,它包含3個獨特的協議數據單元(Protocol Data Unit,PDU):Modbus請求、Modbus應答以及Modbus異常應答。Modbus請求中包含功能碼(Function Code)和請求消息(Query Message)。Modbus功能碼有公共功能碼、用戶定義功能碼和保留功能碼3種類型。

圖1-8 Modbus協議通信模式
在Modbus中,一方扮演主設備角色,采取主動詢問方式,發送請求消息至從設備,從設備依據接收到的請求消息內容準備響應消息并回傳給主設備。具體使用時,一般SCADA系統和HMI屬于主設備,PLC、電表、儀表等都為從設備,SCADA系統和HMI向控制設備發送請求消息,控制設備則返回請求消息所請求的數據或要求執行的命令的執行結果。
(3)Modbus請求消息及響應消息分析
Modbus通過應用層的數據報文實現各種功能,其中功能碼是Modbus消息幀(報文)的重要組成部分,是Modbus協議中通信事務處理的基礎,代表消息將要執行的動作。Modbus部分功能碼及其具體功能如圖1-9所示。

圖1-9 Modbus部分功能碼及其具體功能
使用Wireshark工具捕獲主從設備之間的通信消息。主設備向從設備發出請求消息,根據此請求消息,對照圖1-9可以分析出,其功能碼為0x03,因此其功能為讀保持寄存器,讀取的起始位置為Reference Number對應的值5,讀取的長度為Word Count對應的值2。請求消息的詳細信息如圖1-10所示。

圖1-10 Modbus請求消息分析
根據請求消息,從設備返回對應的數據,從5號保持寄存器開始讀兩個Word,獲取5、6號保持寄存器的數值分別為9和24。響應消息的詳細信息如圖1-11所示。

圖1-11 Modbus響應消息分析
2.S7COMM協議
(1)S7COMM協議的報文結構及關鍵參數
S7COMM協議指的是以太網S7通信協議,是西門子公司為其生產的PLC、SCADA系統等產品之間相互通信而設計的專屬私有協議。應用層組織的數據經過面向連接的傳輸協議(Connection Oriented Transport Protocol,COTP)、TPKT協議的進一步處理后,最終通過TCP進行傳輸。S7COMM的報文結構如圖1-12所示。

圖1-12 S7COMM的報文結構
S7COMM PDU主要由3個部分組成。
① 頭(Header):包含長度信息、PDU參考(PDU Reference)、消息類型(Message Type)常量。
② 參數(Parameter):該部分的內容和結構根據PDU的消息類型和功能代碼不同而有很大的差異。
③ 數據(Data):這是可選字段,用于攜帶數據,如內存值、塊信息、固件數據等。
S7COMM PDU一般包括以下4種類型。
① 0x01:JOB,即作業請求,如讀/寫存儲器、讀/寫塊、啟動/停止設備。
② 0x02:ACK,即確認響應,是沒有數據的簡單確認。
③ 0x03:ACK_DATA,即確認數據響應,一般是響應JOB的請求。
④ 0x07:USERDATA,即擴展協議,其參數字段包含請求/響應ID,一般用于編程/調試、讀取系統狀態列表、設置安全功能、設置時間等。
(2)S7COMM PDU——USERDATA類型
當PDU類型為USERDATA類型時,S7COMM協議的結構如圖1-13所示。S7COMM的參數部分:參數頭字段占3字節,參數長度字段占1字節,方法字段占1字節,類型字段占1/2字節,功能組字段占1/2字節,子功能碼字段占1字節,序號字段占1字節。

圖1-13 USERDATA類型的S7COMM協議的結構
其中,功能組和子功能碼的取值決定了該報文的功能,功能組字段的取值見表1-2。
表1-2 功能組字段的取值

當功能組代碼為0x4,即CPU功能時,子功能碼的取值見表1-3。
(3)S7COMM請求包及響應包分析
這里以USERDATA類型為例進行介紹,通信請求方通過發送USERDATA類型的數據包,實現讀系統狀態列表的功能。系統狀態列表用于描述PLC的當前狀態,其內容只能讀取不能修改。系列狀態列表包含了系統數據、模塊狀態數據、模塊診斷數據和模塊診斷緩沖區信息。
表1-3 子功能碼的取值

讀系統狀態列表數據請求包需要為功能組和子功能碼配置對應的值,如圖1-14所示,Parameter部分的功能組值為0x4,子功能碼為0x01。

圖1-14 S7COMM讀系統狀態列表數據請求包
S7COMM設備收到數據請求包后會根據請求內容,返回數據響應包,可以看到,返回的信息中包含了模塊的序列號、模塊類型ID等信息,如圖1-15所示。在進行資產識別時,該功能能夠提供這些信息以幫助識別S7COMM設備的具體型號。
3.DNP3
DNP3是應用于自動化組件之間的通信協議,常見于電力、水處理等行業。DNP3主要基于TCP/IP,比Modbus協議更復雜,在應用層實現了對傳輸數據的分片、校驗、控制、優先級設置等諸多功能,例如SCADA系統可以使用DNP3與主站、RTU等進行通信。此外,相較于Modbus協議,其安全性有所提高,但仍存在缺乏認證、缺乏加密等固有問題。

圖1-15 S7COMM讀系統狀態列表數據響應包
4.IEC系列協議
IEC系列協議包括IEC 60870-5-101、IEC 60870-5-104等協議,是電力行業的主要工業控制協議。IEC系列協議主要基于TCP/IP,采用平衡傳輸模式,用于調度主站的應急管理系統和子站的RTU等設備之間的通信,且終端系統不需要特殊的網絡軟件、路由功能,也無須進行網絡管理。但IEC系列協議同樣存在缺乏認證、缺乏授權、缺乏加密等固有問題,以及緩沖區溢出等漏洞。
5.OPC協議
OPC是一項應用于自動化行業及其他行業的數據安全交換可互操作性標準,由OPC基金會負責運維,同時也是微軟組件對象模型(Component Object Model,COM)和分布式組件對象模型(Distributed Component Object Model,DCOM)接口標準在工業領域的體現。但當其基于Windows操作系統時,容易受到Windows系統已知漏洞、弱口令等問題的影響;當其基于遠程過程調用(Remote Procedure Call,RPC)協議時,則易受到所有RPC協議相關漏洞的影響。