<nobr id="zkazv"></nobr>

      午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
      中國自動化學會專家咨詢工作委員會指定宣傳媒體
      新聞詳情

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

      http://www.kblhh.cn 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
      主站蜘蛛池模板: 国语自产精品视频在线看| 欧美老少配性行为| 免费国产一级特黄aa大片在线| 国产短视频一区二区三区| 天天澡日日澡狠狠欧美老妇| 亚洲免费成人av一区| 亚洲女同精品久久女同| 国产91麻豆精品成人区| 日本精品一区二区不卡| 国内精品伊人久久久久影院对白| 亚洲人成网站在小说| 日韩精品中文字幕有码| 天堂网在线观看| 黄色舔女人逼一区二区三区| 亚洲最大成人免费av| 成全我在线观看免费第二季| 日韩精品一区二区三区不卡 | 五月婷之久久综合丝袜美腿| 亚洲精品二区在线播放| 成人福利国产午夜AV免费不卡在线 | 午夜免费视频国产在线| 一区二区三区综合在线视频| 亚洲高潮喷水无码AV电影| 国产精品制服丝袜第一页| 国产午夜福利免费入口| 久久99国内精品自在现线| 自拍偷区亚洲综合第二区| 人妻中文字幕精品系列| 亚洲精品亚洲人成人网| 精品视频不卡免费观看| 亚洲AV永久中文无码精品综合| 加勒比无码人妻东京热| 久久久无码精品国产一区| 国产视频一区二区三区麻豆| 熟妇人妻不卡中文字幕| 日韩女同一区二区三区久久| 高清自拍亚洲精品二区| 色丁香一区二区黑人巨大| 四虎在线播放亚洲成人| 久久天天躁狠狠躁夜夜躁| 亚洲精品美女一区二区|