郭政偉,向上,陳武,張林鵬,王勇(上海電力學院計算機科學與技術學院,上海 201000)
基于Modbus協議認證漏洞的數據包偽造方法研究
郭政偉,向上,陳武,張林鵬,王勇(上海電力學院計算機科學與技術學院,上海 201000)
Modbus 協議在工業控制系統領域應用十分廣泛,但是該協議存在認證漏洞,嚴重威脅著工業控制系統的安全性。本文提出了基于Modbus協議認證漏洞的Modbus /TCP協議數據包的偽造方法。在Modbus協議服務端模擬器Modbus Poll和客戶端模擬器Modbus Slave搭建了Modbus/TCP的實驗環境,利用偽造數據包的方法,實現對任意指定IP地址進行攻擊,并且給出了該攻擊方法的防御措施。實驗結果表明,偽造Modbus/TCP協議數據包的方法嚴重威脅到當前工業控制系統安全。
Modbus/TCP協議;工業控制網絡安全;協議分析;攻擊過程
2015年12月烏克蘭電力部門遭到BlackEnergy的攻擊,并引起了烏克蘭大規模的停電事故。由于PROFINET在工業控制系統的領域廣泛應用,數據包在以太網介質中傳輸[4],再加上Modbus/ TCP協議原理以及其本身的脆弱性,給工業控制系統帶來很大的隱患。
Modbus是一種串行通信協議標準(規約),是Modicon(現為施耐德電氣公司的一個品牌)于1979年,為使用可編程邏輯控制器(PLC)通信而發布的。按照OSI模型分,Modbus是應用層報文傳輸協議,它在連接至不同類型總線或網絡的設備之間提供服務器/客戶機通信(主機/從機)。
現階段研究大部分集中在防御策略的研究,例如:在該領域,主要開展了Modbus/TCP原理及安全性系統的闡述[1],利用攻擊圖的方法定性、定量分析了Modbus協議的脆弱性[2],設計了Modbus TCP/IP協議防火墻[3]等。本文提出了基于Modbus 協議認證漏洞的Modbus/TCP協議數據包的偽造方法。
Modbus協議采用服務器-客戶終端的結構,提供了連接不同種總線與網絡之間工業設備的通信,服務器與客戶機均可通過操作碼發送要請求的操作與請求響應。
2.1 Modbus協議格式
因為Modbus通信的對象是工業設備,設備的標準不一。所以其定義了一個與基層無關的數據單元PDU解決這個問題。并且協議通過增加附加地址與差錯校驗域進一步增強了它在不同物理通信介質上的兼容性。
實際中無論是主設備與從設備在通訊中二層協議都會選擇ASCII模式或者RTU模式其中一種作為通訊協議,以此選擇不同模式所需要的不同物理鏈路與接口,而在實驗之中是以以太網幀為基礎,傳輸三層協議TCP/IP,封裝四層Modbus數據包達到目的的。而對實際中的二層協議通過分析,我們做如下總結:
(1)ASCII模式
編碼系統:16進制,ASCII字符0-9,A-F
數據位:1位起始位,7位數據,低位先送,奇/偶校驗1位:無奇偶校驗時0位,(LRC)1位帶校驗1停止位;無校驗2停止位錯誤校驗區:縱向冗余校驗。

表1 ASCII幀
(2)RTU模式
編碼系統:16進制,ASCII字符0-9,A-F
數據位:1起始位,8位數據,地位先送,奇/偶校驗1位:無奇偶校驗時0位(LRC)1位帶校驗1停止位;無校驗2停止位錯誤校驗區:循環冗余校驗(CRC)。

表2 RTU幀
(3)以太網(TCP/IP)模式
實驗中使用的是TCP/IP模擬分析軟件,所以用到了傳統以太幀在(TCP/IP)協議之上封裝Modbus功能碼和數據。TCP/IP 模式去除了附加地址和校驗,增加了報文頭。
2.2 Modbus協議認證漏洞
協議安全研究方向主要包括兩種,一是協議自身的設計與描述引起的安全問題,另一種是協議的不正確實現產生的問題。
目前研究下Modbus協議的固有問題主要源于其設計之初只著重考慮了其功能、效率、可靠性和兼容性等方面,從而存在著安全性問題。第一種是協議安全性問題,例如它缺乏認證和授權,沒有加密措施,而且濫用功能碼與無效功能碼的識別。第二種是協議實現安全性問題,協議本身存在安全問題,容易導致設備緩沖區溢出,還有Modbus在多種基礎通信層中的安全問題等。
認證的目的是保證收到的信息來自合法的用戶,未認證用戶向設備發送控制命令不會被執行。通過上述對Modbus協議存在的安全問題的闡述,可以看出Modbus協議通信過程中,沒有任何認證方面的相關定義,攻擊者只需要找到一個合法的地址就可以使用功能碼建立一個Modbus通信會話,從而擾亂整個或者部分控制過程。實際中則可以利用TCP/IP協議并基于IP地址進行主從機的通信,但是Modbus協議卻沒有對地址來源進行認證。也就是說攻擊者可以利用IP地址欺騙或者是其他漏洞達到同時或間接與服務端通信的權利。并且可以仿冒服務端對客戶終端數據進行篡改,這樣實際設備就可能會被第三方惡意控制。
3.1 實驗平臺搭建
安裝Modbus協議服務端模擬器Modbus Poll(可設置虛擬IP地址,常用請求功能碼,任意大小的內存)客戶端模擬器Modbus Slave以及Modbus_RSsim(可讀取協議數據段數據)。
配置上述模擬軟件,進行常規通信,設置IP端口為502。以功能碼01(讀線圈)、03(讀寄存器)、15(寫多個線圈)發出請求包,此時開啟抓包軟件對數據包內容進行分析。隨后獲得返回響應包,讀出其中內容,亦對其分析。列舉常用公共功能碼以及特定功能碼內容如表3所示。

表3 公共功能碼分類
3.2 Modbus公共功能碼定義
Modbus協議定義了三種功能碼:
公共功能碼:被確切定義的、唯一的功能碼,由Modbus-IDA組織確認、可進行一致性測試且已在MB、IETF和 RFC中歸檔。
用戶定義的功能碼:用戶無需Modbus-IDA組織的任何批準就可以選擇和實現的功能碼,但是不能保證被選功能碼的使用是唯一的。
保留功能碼:某些公司在傳統產品上現行使用的功能碼,不作為公共使用。

表4 公共功能碼定義
3.3 偽裝數據包
對數據包結構進行分析,得出結果如下:
15 (0x0F) 一次對多個線圈進行改寫數據包。
解釋:

3.4 Modbus協議攻擊
根據請求響應數據包結構結合TCP/IP編寫java模擬攻擊程序
(1)添加Modbus協議庫文件jamod.jar,modbus4.jar,seroUtils.jar
(2)通過協議數據結構,編寫socket,將其IP地址設為Modbus合法地址。攻擊程序核心代碼如下:


3.5 攻擊結果分析
執行攻擊程序,將IP、端口號、設備號、開始序號傳給上述函數,通過對values數組進行修改,以達到程序運行后對攻擊目標的寄存器的值的修改,觀察程序發出包,并對比攻擊前后寄存器內容。數據包內容見表5:

表5 請求保持寄存器數據包
當上述攻擊數據包發出后,可發現網段內所有設備的內存中的值均可返回,并且得到的返回包格式見表6:

表6 返回保持寄存器數據包
上述的攻擊結果表明,普通的Modbus協議網絡有著其脆弱性,可以輕易通過偽造數據包達到控制工業設備的目的。因此,研究如何增強Modbus TCP/IP協議的網絡安全性具有十分重要的現實意義。從目前來看,可以添加一個降低風險的模型來提高Modbus TCP/IP協議的安全性[3]。主要功能模塊為:(1)內核模塊。該模塊通過直接抓取數據包,并對連接的IP地址和物理地址進行簡單的檢查認證。(2)過濾模塊。該模塊針對Modbus TCP/IP數據包文里的線圈或寄存器地址、功能碼和操作使用的數據一一在白名單核對,沒找到的一律不能通過,并剔除格式不是Modbus TCP/IP協議的通訊報文。(3)加解密模塊。使用多重加密的方式來傳輸數據。數據和加密數據的密鑰采用不同的算法。另外,使用TPM(可信計算)模塊也可以達到數據加密傳輸的效果,并且性能會更強。(4)配置模塊。實現整個程序和白名單的配置。(5)日志模塊。該模塊完成對過濾日志的記錄。
另外,為了構建安全穩定的工業控制系統,需要研究和設計一套更全面、更可靠的工業網絡控制協議,防止類似于“烏克蘭電力系統”事件的大規模工業事故的發生。現階段,為了突破傳統的通訊協議的局限性,PROFINET已逐漸創新成長為工業控制領域的新生力量[4]。PROFINET協議的一個重要特性便是可以同時傳送實時數據和標準的TCP/IP數據。為了保護現場數據的安全,PROFINET配備了專有的安全機制,通過專用的安全屏障來使工業控制系統的安全風險降到最低。因此,PROFINET必將成為新一代工業控制網絡的通信標準。
[1] 左衛, 程永新. Modbus協議原理及安全性分析[J]. 通信技術, 2013, 46(12): 66 - 69.
[2] 徐麗娟. 基于攻擊圖的工業控制網絡安全隱患分析[D]. 北京郵電大學, 2015.
[3] 高棟梁. MODBUS TCP/IP協議防火墻的研究與實現[D]. 北京郵電大學, 2015.
[4] 張利新, 徐揚. Profinet在工業自動控制系統中的應用[A]. 全國冶金自動化信息網2016年會論文集[C]. 2016.
Data Packet Forgery Method of Modbus Protocol based on Authentication Vulnerability
Modbus protocol is widely used in the field of industrial control system. However, it has authentication vulnerabilities, which seriously threaten the security of industrial control systems. In this paper, we propose a forgery method of Modbus /TCP protocol data packet based on Modbus protocol authentication vulnerability. By building Modbus / TCP experimental environment in the Modbus protocol server simulator Modbus poll and client simulator MODBUS slave and using the forged packet method, we can realize the attack on any of the specified IP address, and meanwhile give the defense measures of these attacks. Experimental results show that forging the TCP/IP Modbus data packet is a serious threat to the current industrial control system security.
Modbus/TCP protocol; Industrial control network security; Modbus protocol analysis; Attack process
A
1003-0492(2016)09-0080-03
TP393.1
上海科委地方能力建設項目(15110500700);上海市浦江人才計劃資助(16PJ1433100);上海自然科學基金(16ZR1436300)
郭政偉(1994-),男,河南安陽人,本科,就讀于上海電力學院信息安全系。
向 上(1994-),男,四川德陽人,本科,就讀于上海電力學院信息安全系。
陳 武(1993-),男,湖南郴州人,碩士研究生,現就讀于上海電力學院計算機科學與技術學院。
張林鵬(1991-),男,河北邢臺人,碩士研究生,現就讀于上海電力學院計算機科學與技術學院。
王 勇(1973-),男,河南確山人,教授,現就職于上海電力學院信息安全系。