国产91九色_日本68xxxx_欧美高清另类自拍视频在线看_欧美人禽_99久久婷婷国产综合精品青牛牛_亚洲射情

中國自動化學會專家咨詢工作委員會指定宣傳媒體
新聞詳情
gkongbbs

新型PLC蠕蟲病毒及應對策略

http://www.sharifulalam.com 2016-09-21 15:27 來源:

隨著“互聯網+制造”的工業4.0概念的提出,獨立、隔離的傳統工控領域迎來了新的大數據互聯時代。與此同時,工控安全的問題,也隨著互聯,被更廣泛的暴露在了Internet中。在Shodan、ZoomEye等搜索網站中,可以很容易的搜索到真實工控現場工控設備的IP地址,并且可以利用組態軟件訪問到對應的設備。近幾年來,越來越多的工控設備被暴露在了互聯網上。

在Black Hat2011,Dillon Beresford等人在他們的報告《Exploiting Siemens Simatic S7 PLCs》中演示了如何通過西門子S7Comm協議的權限缺失漏洞來遠程操作PLC。在Black Hat2015,Johannes Klick 等在他們的報告《Internet-facing PLCs – A New Back Orifice》中演示攻擊者如何通過代理,來發現內網中更多的PLC設備。本文將展示的是一種新型的PLC蠕蟲病毒,該病毒可以不借助上位PC機,僅通過PLC之間進行互相傳播。該病毒的實現思路,適用于多個廠家的PLC設備,并且可以在一定規則范圍內相互進行傳播。本文采用西門子PLC舉例進行說明。

西門子PLC簡介

PLC全稱為Programmable Logic Controller,即可編程邏輯控制器,是一種采用一類可編程的存儲器,用于其內部存儲程序,執行邏輯運算、順序控制、定時、計數與算術操作等面向用戶的指令,并通過數字或模擬式輸入/輸出控制各種類型的機械或生產過程。西門子作為全球PLC市場占有率最高的PLC設備廠家,其產品系列主要包括S7-200、S7-300、S7-400、S7-1200、S7-1500等。其中S7-200、S7-300、S7-400系列的PLC采用早期的西門子私有協議S7Comm進行通信。S7Comm協議已被研究者完全掌握,并且在github上可以下載到該協議的插件。S7-1200系列固件版本為V3.0以下的PLC采用西門子新一代的S7Comm-Plus協議進行通信。該協議采用了一些特殊編碼規范,并且做了抗重放攻擊的防護。但是其安全防護仍然較弱,已被基本破解。S7-1200系列固件版本為V3.0以上,以及S7-1500系列的PLC,采用了最新的S7Comm-Plus協議,該協議對比之前S7Comm-Plus協議,采用了加密算法,目前仍未被研究透徹。

西門子PLC通過Step7以及WinCC軟件進行組態,目前最新版本為TIA Portal V13。其中使用Step7進行下位機組態,WinCC進行上位機組態。

在Step7組態軟件中,用戶通過編寫POU程序塊來完成工業現場的控制以及工藝流程的實現。西門子POU程序塊包括:

OB(Organization Block ):組織塊,為用戶程序的入口程序塊

FB(Function Block):功能函數塊,實現一些封裝好的函數功能

FC(Function):函數塊,為用戶編寫的程序

DB(Data Block):數據塊,用來存放全局變量

SFB(System Function Block):系統功能函數庫,系統內部封裝的函數塊

SFC(System Function):系統函數庫,系統內部封裝的函數

Step7程序塊的組態語言包括LD(梯形圖),FBD(功能塊圖)、SCL(結構化控制語言)、STL(語句列表)。

西門子PLC在進行程序下裝的過程中,首先會在下裝前停止PLC的運算,下裝程序完成后再重新啟動PLC。

病毒的實現

對于病毒的實現流程,首先選擇IP嘗試建立連接,如果連接建立成功,則檢查目標PLC是否已被感染。如連接未建立成功,或目標PLC已被感染,則選擇新IP重新嘗試建立連接。如目標PLC未被感染,則停止目標PLC,下裝病毒程序,最后重新啟動目標PLC。流程如圖1所示。

2016091409480682

病毒實現流程

尋找目標

所有的西門子PLC通過102端口進行TCP通信,因此可以通過嘗試建立102端口的TCP通信來進行目標的尋找。Step7組態軟件中提供了兩個FB塊,TCON以及TDISCON,如圖2所示。TCON用來建立TCP連接,其中REQ輸入管腳通過上升沿信號觸發,CONNECT輸入管腳配置TCON建立連接的如對端IP、對端端口號,本機端口號,通信方式等相關參數。TDISCON用來斷掉TCP連接,REQ上升沿觸發。

2016091409480783

圖3為嘗試建立連接的FC塊,首先使用TCON塊建立連接,如果建立成功,即輸出管腳DONE為TRUE時,則置狀態字con_state為20,繼續下一步病毒的傳播感染操作。如連續200次建立連接不成功,則置狀態字con_state為0。

2016091409480784

使用TCON塊嘗試建立連接

如連接未成功建立或病毒傳播完成,即狀態字con_state為0時,則使用TDISCON做斷開連接操作,如果輸出管腳ERROR或輸出管腳DONE為TRUE時,將TCON輸入管腳CONNECT中的對端IP末位加一,并使用該新IP再次嘗試建立連接。實現過程如圖4所示。

2016091409480785

使用TDISCON進行連接的斷開并更改IP

成功建立連接后,首先判斷目標PLC是否已經感染該病毒,通過TSEND功能塊發送相關數據報文,并對返回的報文進行判斷,如未被感染,則繼續執行病毒的傳播過程,如已感染,則置狀態字con_state為0,重新更換IP嘗試建立連接。

2016091409480786

檢測目標PLC是否已感染病毒

傳播感染

正常情況下,博途軟件會對PLC進行程序的下裝操作,而下裝過程正式利用了西門子私有的S7協議。在西門子PLC簡介章節中提到西門子S7Comm協議以及早期的S7Comm-Plus協議已可以被研究者熟悉利用。因此在傳播感染階段,可以根據S7協議的內容,通過偽造博途軟件下裝程序的報文,可以實現PLC到PLC的程序傳輸操作。也就是說已感染病毒的PLC向目標PLC發送下裝程序塊的報文,而目標PLC識別到報文后,誤以為是博途軟件對其進行下裝,最后會將報文中的相關功能塊存儲在PLC中。

Step7組態軟件中使用TSEND功能塊進行數據的發送,使用TRCV功能塊進行數據的接收,如圖6所示。在TSEND塊中,REQ輸入管腳上升沿觸發,DATA為需要發送的數據區。在TRCV中,EN_R上升沿觸發,DATA為接收數據的存儲區,RCVD_LEN為實際接收到數據的長度。

2016091409480787

發送及接收數據功能塊

在程序的發送過程中,需要滿足S7協議的相關通信時序以及報文格式。圖7所示為S7建立連接的過程。首先是TCP的三次握手,接下來建立COTP連接,建立完成后進行S7協議的連接建立。建立成功后可以使用S7協議進行啟停PLC、下裝程序、PLC中數據讀寫等正常操作。

2016091409480888

S7協議通信時序

S7通信協議應用層數據封裝模型如圖8所示,其中:

TCP:即傳輸控制協議,是一種面向連接(連接導向)的、可靠的、基于IP的傳輸層協議,在IETF的RFC 793標準中進行定義。

ISO-ON-TCP:即基于TCP的ISO傳輸服務,在在IETF的RFC1006標準中進行說明。

ISO Transport protocol:即ISO傳輸協議,在ISO8073中進行說明。

2016091409480889

S7協議應用層數據分布

圖9為下裝程序塊的S7Comm數據報文,其中0x32為S7Comm協議標識符,Protocol Data Unit Reference為協議數據單元標識符,在S7Comm協議中用作通信過程的時序標記。Function標識了該數據報文的功能。Data報文區為所對應功能塊的內容。

2016091409480990

功能塊下裝數據報文

在博途軟件中,使用FC功能塊實現連接的建立,尋找新的目標IP,判斷目標PLC是否已被感染病毒,并進行病毒程序的傳播等功能。使用一個DB數據塊存放FC功能塊中所用到的所有全局變量,使用另外一個DB數據塊存放病毒感染全部過程所需要的報文內容。

激活

建立調用病毒程序的OB塊OB9999,并將其存植入到目標PLC中,用以激活病毒,并進行新的病毒傳播感染。西門子PLC在運行時,會按照從OB1到OB9999的順序進行調用。如圖10所示。

2016091409480991

西門子PLC程序調用步驟

惡意功能的實現 C&C服務器 一旦PLC被感染病毒,會基于TCP主動去連接C&C服務器。通過C&C服務器,可以遠程控制PLC,包括PLC的啟停,輸出值的改變等。 Socks4代理 一旦PLC被病毒感染,在局域網中的其他PLC,可以通過Socks4代理連接到C&C服務器。 拒絕服務攻擊 可以向PLC中下裝例如死循環、除零或者負數開方的程序,讓PLC停止工作。 改變輸出值 可以通過編寫正常的PLC程序,來改變輸出值,進而影響現場設備的正常運行。

檢測與防護病毒的檢測 利用博途軟件 博途軟件提供了PLC程序在線與離線差異的檢測功能,如圖11所示。程序塊后面的綠色圓圈表示在線程序與離線程序一致,藍色與橘黃色組成的圓形表示在線程序與離線程序不一致。

2016091409480992

博途軟件對程序在線離線一致性的檢測

觀察PLC的狀態燈 下裝程序的過程中會導致PLC的停止與啟動,在此期間,所有模擬量數值與開關量狀態會保持不變。然后該時間僅有幾秒鐘,操作員可能會忽視該細節。 使用工控漏掃設備 使用工控漏掃設備對PLC進行掃描,由于病毒程序必須利用較大編號的OB塊。因此掃描較大編號的OB塊可以對病毒進行檢測。 檢測網絡 在病毒進行傳播的過程中,網絡中會出現PLC與PLC通信的數據報文,根據該異常報文可以檢測出病毒測存在。 病毒的存活性 重啟PLC 病毒為正常的程序塊,因此重啟PLC后,該病毒仍存在于PLC中,并且正常運行。 恢復到出廠設置 恢復到出廠設置會清空PLC中的所有程序,因此病毒程序連同正常程序一起會被清空。 下裝程序

如果有正常的OB9999組織塊,或者與病毒同編號的FC塊、DB塊的下裝,則病毒會被新下裝的程序覆蓋,并且不會再次被感染

病毒的防護 設置權限密碼 工控廠商對于自己產品,在協議層設置權限密碼,沒有密碼的清空下,不可以利用協議來與PLC建立通信連接。 在工控系統中布置IDS/審計系統 布置IDS/審計系統,通過工控協議特征值的采集、分析與識別,如發現異常數據包,則記錄日志或報警 布置工控防火墻 通過工控防火墻,對異常數據包進行檢測以及隔離防護

版權所有 中華工控網 Copyright?2025 Gkong.com, All Rights Reserved
主站蜘蛛池模板: 国产精品久久综合 | 日韩欧美一区二区三区免费观看 | 四虎影院最新网址 | 亚洲男人天堂 | 亚洲精品乱码久久久久久写真 | 国产在线一级 | 亚洲免费视频一区二区 | 精品久久久免费 | 91欧美精品成人综合在线观看 | 国产一区不卡 | 成人免费视频播放 | av大片网 | 午夜国产 | 久久久久久国产精品免费免费 | 久久99精品久久 | 亚洲成人福利在线观看 | 亚洲欧美一区在线 | 欧美精三区欧美精三区 | 国产精品久久久久久网站 | 久久观看 | 久久久久久国 | 伊人久久在线 | 波多野结衣av中文字幕 | 亚洲区欧美 | 高清不卡一区二区三区 | 欧美日韩网站 | 成人午夜久久 | 亚洲区国产区 | 国产视频在线一区二区 | 成人免费淫片aa视频免费 | 国产成人精品一区二区三区视频 | 亚洲乱码视频 | 玖玖玖精品 | 日本久久久久久 | 日本精品一区二区三区在线观看视频 | 五月天久久久 | 久久久久国产精品一区三寸 | 黄视频在线播放 | 99免费精品 | 一本久久精品一区二区 | 91色乱码一区二区三区 |