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