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