![]() |
東莞市廣聯(lián)自動(dòng)化科技有限公司
主營(yíng)產(chǎn)品: HYDAC壓力開(kāi)關(guān),BURKERT電磁閥,WAUKEE流量計(jì),ATOS油泵,德國(guó)REXROTH電磁換向閥,BERNSTEIN傳感器 |
會(huì)員.png)
聯(lián)系電話
![]() |
東莞市廣聯(lián)自動(dòng)化科技有限公司
主營(yíng)產(chǎn)品: HYDAC壓力開(kāi)關(guān),BURKERT電磁閥,WAUKEE流量計(jì),ATOS油泵,德國(guó)REXROTH電磁換向閥,BERNSTEIN傳感器 |
聯(lián)系電話
2016-9-22 閱讀(886)
隨著“互聯(lián)網(wǎng)+制造”的工業(yè)4.0概念的提出,獨(dú)立、隔離的傳統(tǒng)工控領(lǐng)域迎來(lái)了新的大數(shù)據(jù)互聯(lián)時(shí)代。與此同時(shí),工控安全的問(wèn)題,也隨著互聯(lián),被更廣泛的暴露在了Internet中。在Shodan、ZoomEye等搜索中,可以很容易的搜索到真實(shí)工控現(xiàn)場(chǎng)工控設(shè)備的IP地址,并且可以利用組態(tài)軟件訪問(wèn)到對(duì)應(yīng)的設(shè)備。近幾年來(lái),越來(lái)越多的工控設(shè)備被暴露在了互聯(lián)網(wǎng)上。
在Black Hat2011,Dillon Beresford等人在他們的報(bào)告《Exploiting Siemens Simatic S7 PLCs》中演示了如何通過(guò)西門(mén)子S7Comm協(xié)議的權(quán)限缺失漏洞來(lái)遠(yuǎn)程操作PLC。在Black Hat2015,Johannes Klick 等在他們的報(bào)告《Internet-facing PLCs – A New Back Orifice》中演示攻擊者如何通過(guò)現(xiàn)貨,來(lái)發(fā)現(xiàn)內(nèi)網(wǎng)中更多的PLC設(shè)備。本文將展示的是一種新型的PLC蠕蟲(chóng)病毒,該病毒可以不借助上位PC機(jī),僅通過(guò)PLC之間進(jìn)行互相傳播。該病毒的實(shí)現(xiàn)思路,適用于多個(gè)廠家的PLC設(shè)備,并且可以在一定規(guī)則范圍內(nèi)相互進(jìn)行傳播。本文采用西門(mén)子PLC舉例進(jìn)行說(shuō)明。
西門(mén)子PLC簡(jiǎn)介
PLC全稱為Programmable Logic Controller,即可編程邏輯控制器,是一種采用一類可編程的存儲(chǔ)器,用于其內(nèi)部存儲(chǔ)程序,執(zhí)行邏輯運(yùn)算、順序控制、定時(shí)、計(jì)數(shù)與算術(shù)操作等面向用戶的指令,并通過(guò)數(shù)字或模擬式輸入/輸出控制各種類型的機(jī)械或生產(chǎn)過(guò)程。西門(mén)子作為PLC*zui高的PLC設(shè)備廠家,其產(chǎn)品系列主要包括S7-200、S7-300、S7-400、S7-1200、S7-1500等。其中S7-200、S7-300、S7-400系列的PLC采用早期的西門(mén)子私有協(xié)議S7Comm進(jìn)行通信。S7Comm協(xié)議已被研究者*掌握,并且在github上可以下載到該協(xié)議的插件。S7-1200系列固件版本為V3.0以下的PLC采用西門(mén)子新一代的S7Comm-Plus協(xié)議進(jìn)行通信。該協(xié)議采用了一些特殊編碼規(guī)范,并且做了抗重放攻擊的防護(hù)。但是其安全防護(hù)仍然較弱,已被基本。S7-1200系列固件版本為V3.0以上,以及S7-1500系列的PLC,采用了的S7Comm-Plus協(xié)議,該協(xié)議對(duì)比之前S7Comm-Plus協(xié)議,采用了加密算法,目前仍未被研究透徹。
西門(mén)子PLC通過(guò)Step7以及WinCC軟件進(jìn)行組態(tài),目前版本為TIA Portal V13。其中使用Step7進(jìn)行下位機(jī)組態(tài),WinCC進(jìn)行上位機(jī)組態(tài)。
在Step7組態(tài)軟件中,用戶通過(guò)編寫(xiě)POU程序塊來(lái)完成工業(yè)現(xiàn)場(chǎng)的控制以及工藝流程的實(shí)現(xiàn)。西門(mén)子POU程序塊包括:
OB(Organization Block ):組織塊,為用戶程序的入口程序塊
FB(Function Block):功能函數(shù)塊,實(shí)現(xiàn)一些封裝好的函數(shù)功能
FC(Function):函數(shù)塊,為用戶編寫(xiě)的程序
DB(Data Block):數(shù)據(jù)塊,用來(lái)存放全局變量
SFB(System Function Block):系統(tǒng)功能函數(shù)庫(kù),系統(tǒng)內(nèi)部封裝的函數(shù)塊
SFC(System Function):系統(tǒng)函數(shù)庫(kù),系統(tǒng)內(nèi)部封裝的函數(shù)
Step7程序塊的組態(tài)語(yǔ)言包括LD(梯形圖),FBD(功能塊圖)、SCL(結(jié)構(gòu)化控制語(yǔ)言)、STL(語(yǔ)句列表)。
西門(mén)子PLC在進(jìn)行程序下裝的過(guò)程中,首先會(huì)在下裝前停止PLC的運(yùn)算,下裝程序完成后再重新啟動(dòng)PLC。
病毒的實(shí)現(xiàn)
對(duì)于病毒的實(shí)現(xiàn)流程,首先選擇IP嘗試建立連接,如果連接建立成功,則檢查目標(biāo)PLC是否已被感染。如連接未建立成功,或目標(biāo)PLC已被感染,則選擇新IP重新嘗試建立連接。如目標(biāo)PLC未被感染,則停止目標(biāo)PLC,下裝病毒程序,zui后重新啟動(dòng)目標(biāo)PLC。