《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 電子元件 > 業(yè)界動(dòng)態(tài) > 工控安全之PLC私有協(xié)議安全

工控安全之PLC私有協(xié)議安全

2020-12-01
來(lái)源: 關(guān)鍵基礎(chǔ)設(shè)施安全應(yīng)急響應(yīng)中心

  在工業(yè)控制系統(tǒng)中,各種不同的型號(hào)系列的PLC除了使用公開(kāi)的工業(yè)控制協(xié)議(例如 modbus,opcua等),還使用了廠家自己開(kāi)發(fā)的私有協(xié)議(例如施耐德的UMAS,西門(mén)子的S7comm/S7commPlus等),這一系列協(xié)議主要用于和自家的組態(tài)軟件進(jìn)行通信來(lái)執(zhí)行一些高權(quán)限的操作,例如啟動(dòng)停止,工程的上載和下裝等。這些操作無(wú)疑會(huì)給工業(yè)現(xiàn)場(chǎng)造成巨大的安全隱患,對(duì)工業(yè)控制私有協(xié)議分析也成了工業(yè)控制系統(tǒng)安全的重點(diǎn)和難點(diǎn)。本文通過(guò)分析如今的PLC私有協(xié)議的現(xiàn)狀,提出一些研究思路和安全建議。

  私有協(xié)議實(shí)例

  施耐德UMAS

  施耐德UMAS協(xié)議是施耐德M340/M580和上位組態(tài)軟件Unity Pro通信使用的一種私有協(xié)議,由于其下層協(xié)議使用的modbus 90功能碼,所以服務(wù)端口也是502端口。通過(guò)閱讀isf(https://github.com/dark-lbp/isf/)工業(yè)控制系統(tǒng)漏洞利用框架的源碼找到針對(duì)施耐德系列PLC的啟停腳本源碼可以分析該協(xié)議的基本流程,如下:

微信圖片_20201201150940.jpg

  該攻擊腳本先是通過(guò)0x10功能碼獲取UMAS的會(huì)話key,再通過(guò)0x40(啟動(dòng)功能碼)/0x41(停止功能碼)來(lái)控制PLC設(shè)備的啟動(dòng)停止。如下即為Wireshark抓取到的數(shù)據(jù)包,UMAS協(xié)議解析插件可以自己編寫(xiě)。

微信圖片_20201201150943.jpg

  通過(guò)協(xié)議分析可以知道,該協(xié)議是未加密的狀態(tài),可以使用簡(jiǎn)單的重放進(jìn)行PLC攻擊,該種私有協(xié)議相對(duì)簡(jiǎn)單,沒(méi)有加密流量以及完整性校驗(yàn),安全性相對(duì)不足。

  西門(mén)子S7comm系列

  S7comm是S7-300/S7-400和上位組態(tài)軟件TIA通信的私有協(xié)議,下層協(xié)議為COTP,使用的服務(wù)端口號(hào)為102。通過(guò)閱讀isf框架源碼可以知道到該協(xié)議也沒(méi)有加密,也沒(méi)有完整性校驗(yàn)。

微信圖片_20201201150945.jpg

  抓取到的數(shù)據(jù)流量如下所示,這種類(lèi)型的協(xié)議也可以通過(guò)的簡(jiǎn)單的重放來(lái)控制PLC。

微信圖片_20201201150948.jpg

  但是S7-1200/S7-1500使用的是S7協(xié)議加強(qiáng)版S7commPlus,該協(xié)議握手階段使用了一系列復(fù)雜的算法來(lái)建立安全的會(huì)話鏈接,同時(shí)為接下來(lái)的每一個(gè)操作數(shù)據(jù)包都加上了完整性校驗(yàn)。

微信圖片_20201201150950.jpg

  如下選中的地方即為完整性校驗(yàn)字段:

微信圖片_20201201150953.jpg

  針對(duì)這類(lèi)復(fù)雜的算法協(xié)議可以通過(guò)逆向關(guān)鍵的dll或者直接調(diào)用核心的dll來(lái)完成對(duì)PLC的攻擊。下圖為針對(duì)S7commPlus攻擊工具。

微信圖片_20201201150955.jpg

  密碼設(shè)置

  通過(guò)上面的分析可以知道,現(xiàn)在的工業(yè)控制私有協(xié)議安全性還有很大的不足,為了在工業(yè)系統(tǒng)中限制其他人使用私有協(xié)議執(zhí)行高權(quán)限的操作,可以使用組態(tài)軟件給PLC加上保護(hù)密碼。

  施耐德unitypro設(shè)置如下:

微信圖片_20201201150957.jpg

  西門(mén)子TIA可以進(jìn)行如下設(shè)置:

微信圖片_20201201150959.jpg

  在設(shè)置密碼后,可以有效保護(hù)PLC,阻止利用私有協(xié)議發(fā)起的惡意操作。

  密碼繞過(guò)

  密碼繞過(guò)屬于工業(yè)控制系統(tǒng)安全里面的高級(jí)技術(shù),只要繞過(guò)PLC中的密碼,基本上就可以讓PLC執(zhí)行惡意操作,比如替換一個(gè)惡意工程等。在今年的看雪峰會(huì)上,已經(jīng)有工控安全研究員著手這方面的研究,通過(guò)包括物理接觸和非物理接觸方式突破了施耐德,西門(mén)子,羅克韋爾等多個(gè)PLC的密碼保護(hù)機(jī)制??偨Y(jié)如下兩點(diǎn):

  1.   不正確的校驗(yàn)方式,包括把密碼從PLC讀到組態(tài)軟件進(jìn)行比較的設(shè)計(jì)。

  2.   廠商留下的后門(mén),包括未文檔化的PLC內(nèi)存讀寫(xiě)功能。

  詳情請(qǐng)參考

  https://zhuanlan.kanxue.com/article-14166.htm

  總結(jié)

  通過(guò)分析可以看出,工業(yè)控制系統(tǒng)上私有協(xié)議有復(fù)雜的、也有簡(jiǎn)單的,種類(lèi)繁雜。不同的廠商有不同的私有協(xié)議,這對(duì)工控安全研究人員的協(xié)議逆向分析能力提出了較大的要求。同時(shí)本文還提到了通過(guò)設(shè)置密碼來(lái)阻止私有協(xié)議的濫用,然而設(shè)置PLC密碼不是萬(wàn)能的,它依賴(lài)于工業(yè)控制系統(tǒng)廠商在密碼保護(hù)機(jī)制實(shí)現(xiàn)上的安全性。為了限制私有協(xié)議的訪問(wèn),最好還是在工業(yè)現(xiàn)場(chǎng)部署專(zhuān)門(mén)針對(duì)工業(yè)控制業(yè)務(wù)環(huán)境的IDS/IPS,最大程度的提高工業(yè)現(xiàn)場(chǎng)的安全性。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。