Modbus/TCP協(xié)議安全性分析與防護(hù)技術(shù)探討
掃描二維碼
隨時隨地手機(jī)看文章
引 言
隨著工業(yè)互聯(lián)網(wǎng)的大力推進(jìn),工業(yè)控制系統(tǒng)的開放互聯(lián)成為新趨勢,加之傳統(tǒng)工業(yè)控制設(shè)備、系統(tǒng)在安全方面存在諸多問題,為當(dāng)前的工業(yè)信息安全增加了更為嚴(yán)峻的風(fēng)險和挑戰(zhàn)。Modbus/TCP 協(xié)議在石油、化工、能源、電力等工業(yè)控制系統(tǒng)中的廣泛應(yīng)用,使其安全性也受到越來越多的關(guān)注。
1 Modbus/TCP協(xié)議介紹
Modbus/TCP 通過以太網(wǎng)通信,其實(shí)質(zhì)是把 Modbus 通用幀封裝到 TCP 幀中。Modbus 通用幀由三部分組成,如圖 1 所示,分別是附加地址、協(xié)議數(shù)據(jù)單元(PDU)和差錯校驗(yàn), 其中附加地址用于表示從設(shè)備的地址,PDU 用來指定應(yīng)用層的相關(guān)操作,由功能碼和數(shù)據(jù)共同組成。Modbus/TCP 幀結(jié)構(gòu)如圖 2 所示,一方面去除了通用幀中的附加地址和校驗(yàn),另一方面增加了報文頭。主設(shè)備只在應(yīng)用層將 Modbus 協(xié)議進(jìn)行修改并封裝到TCP 協(xié)議中形成 Modbus/TCP 數(shù)據(jù)包,然后從設(shè)備收到該數(shù)據(jù)包,解封后獲得 Modbus 原始數(shù)據(jù)并解析,最后將需要回傳的 Modbus 數(shù)據(jù)重新封裝進(jìn) TCP 協(xié)議中并發(fā)送到主設(shè)備。
2 Modbus/TCP協(xié)議安全分析
2.1 身份認(rèn)證安全分析
在傳統(tǒng)的信息系統(tǒng)中,身份認(rèn)證技術(shù)得到了廣泛應(yīng)用, 為用戶訪問系統(tǒng)資源提供了可靠的安全保障。但在工控系統(tǒng)中, 在 Modbus/TCP通信過程中,工程師站或者操作員站僅通過IP地址和 Modbus功能碼就能建立一個 Modbus會話,由于缺乏相應(yīng)的身份認(rèn)證機(jī)制,Modbus主設(shè)備對 Modbus從設(shè)備的惡意訪問成為安全隱患。
2.2 完整性安全分析
在對 Modbus/TCP協(xié)議進(jìn)行測試的過程中, 如果向Modbus從設(shè)備發(fā)送一個超長的畸形報文會導(dǎo)致拒絕服務(wù)的狀況出現(xiàn)。這是 Modbus/TCP協(xié)議中比較典型的安全問題。因此, 當(dāng)一個惡意者去破壞 Modbus從設(shè)備時,可采取上述格式的畸形數(shù)據(jù)報文進(jìn)行攻擊,使得 Modbus從設(shè)備的緩存區(qū)溢出導(dǎo)致設(shè)備宕機(jī),使工業(yè)控制系統(tǒng)無法正常運(yùn)行。
2.3 功能碼使用安全分析
Modbus/TCP 協(xié)議缺乏對用戶功能權(quán)限的劃分, 這會導(dǎo)致功能碼濫用的情況出現(xiàn)。功能碼是 Modbus 主設(shè)備向Modbus 從設(shè)備發(fā)送控制指令的關(guān)鍵,一旦被惡意修改,主設(shè)備可以向從設(shè)備發(fā)送一些原先不被允許的、非法的功能和操作。例如,非法請求關(guān)于 Modbus 從設(shè)備配置或其他敏感信息,非法重啟設(shè)備,強(qiáng)制清除計數(shù)器,強(qiáng)制從設(shè)備處于監(jiān)聽狀態(tài)等。
3 Modbus/TCP協(xié)議安全防護(hù)
3.1 基于深度包檢測技術(shù)的防護(hù)模型
深度包檢測技術(shù)是一種基于應(yīng)用層的流量檢測和控制技術(shù),當(dāng)IP 數(shù)據(jù)包、TCP 或UDP 數(shù)據(jù)流通過基于該技術(shù)的帶寬管理系統(tǒng)時,該系統(tǒng)會深入讀取 IP 包載荷的內(nèi)容對 OSI 七層協(xié)議中的應(yīng)用層信息進(jìn)行重組,從而得到整個應(yīng)用程序的內(nèi)容,然后按照系統(tǒng)定義的管理策略對流量進(jìn)行整形操作。
為了保障 Modbus/TCP 協(xié)議在工業(yè)控制網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)陌踩?,特建立基于深度包檢測技術(shù)的防護(hù)模型,如圖 3所示。本防護(hù)模型主要由身份合法性檢測、協(xié)議完整性檢測、功能碼使用安全性檢測組成。其中,身份合法性檢測通過對訪問地址的解析判斷訪問者身份的合法性 ;協(xié)議完整性檢測則通過對 Modbus/TCP協(xié)議特征的解析判斷數(shù)據(jù)包的規(guī)范性; 功能碼使用安全性檢測基于對 Modbus/TCP數(shù)據(jù)報文中功能碼和數(shù)據(jù)的解析,以及對應(yīng)用戶授權(quán)的操作行為判斷操作的合法性。
圖 3 基于深度包檢測技術(shù)的防護(hù)模型
3.2 身份合法性檢測
身份合法性檢測主要包括數(shù)據(jù)鏈路層檢測和網(wǎng)絡(luò)層檢測。數(shù)據(jù)鏈路層檢測通過對數(shù)據(jù)包源 MAC 地址和目的 MAC 地址的解析和過濾可以阻斷不合法設(shè)備的訪問,網(wǎng)絡(luò)層檢測則通過解析數(shù)據(jù)包中的源 IP 和目的 IP 使得合法的IP 訪問順利進(jìn)行。
3.3 協(xié)議完整性檢測
協(xié)議完整性檢測主要包括端口檢測、協(xié)議標(biāo)識符檢測和超長數(shù)據(jù)報文檢測。端口檢測通過解析數(shù)據(jù)報文的源端口和目的端口是否為 502 識別 Modbus/TCP 報文,協(xié)議標(biāo)識符檢測則通過解析協(xié)議標(biāo)識符是否為 0X0000 判斷 Modbus/TCP 數(shù)據(jù),同時對數(shù)據(jù)報文的長度進(jìn)行檢測,若數(shù)據(jù)載荷過長則判斷報文為惡意構(gòu)造的數(shù)據(jù)包。
3.4 功能碼使用安全性檢測
在功能碼的使用安全性檢測中,可以設(shè)置訪問控制規(guī)則, 允許符合規(guī)則的 Modbus/TCP數(shù)據(jù)報文通過,不符合的數(shù)據(jù)報文則丟棄。其內(nèi)容應(yīng)包括功能碼、地址范圍、閾值范圍,并且是基于白名單的工作機(jī)制,以限制主站對從站的訪問。例如: 白名單規(guī)則 :Pass[功能碼 :15][ 地址范圍 :5-9][ 閾值范圍: 50-100],默認(rèn)規(guī)則 :全部禁止。
4 結(jié) 語
針對當(dāng)前 Modbus/TCP 協(xié)議存在的比較突出的安全風(fēng)險, 本文提出了基于深度包檢測技術(shù)的防護(hù)模型,并從身份合法性檢測、協(xié)議完整性檢測和功能碼使用安全性檢測三個方面給出了具體的防護(hù)思路,相信能夠?qū)?Modbus/TCP 協(xié)議在工業(yè)控制網(wǎng)絡(luò)數(shù)據(jù)傳輸過程中的安全防護(hù)起到積極作用。