日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

西门子S7comm-plus通信过程及重放攻击分析

發布時間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 西门子S7comm-plus通信过程及重放攻击分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、概述

西門子PLC廣泛應用于工業控制系統。本文主要利用手上S7-1200 V3.0.2 固件版本的PLC和TIA13等環境進行S7comm-plus加密協議初步分析及防重放攻擊分析,本文章只做交流學習使用,禁止應用于非法用途,歡迎各路大神進行交流,共同學習進步。

二、西門子PLC介紹

西門子PLC廣泛應用于工業控制系統。西門子控制器包括S7-200、S7-300、S7-400、S7-1200以及S7-1500版本的西門子PLC,

S7-200、S7-300、S7-400系列的PLC采用早期的西門子私有協議S7comm進行通信。S7-1200/1500系列固件版本為V3.0以下的PLC采用西門子新一代的S7comm-Plus協議進行通信,該協議采用了一些特殊編碼規范。S7-1200/1500系列固件版本為V3.0以上,采用了最新的S7comm-Plus協議,S7comm-plus協議引入了會話ID來防止重放攻擊。

查看S7 plc系列有哪些型號及對應的固件版本,可以參考下圖。

三、協議分析

3.1協議結構

S7Comm-plus以太網協議基于OSI模型如下:

通過抓包分析和wireshark源碼解析,可以知道S7Comm-plus協議的幀結構大致由頭部、數據域、和尾部組成,頭部和尾部是固定的,而數據域對不同的幀結構和內容均有很大的差異。幀結構示意圖如下圖所示:

3.2 頭部和尾部分析

Header和Trailer的組成是一樣的,包含協議號、PDU類型和數據長度信息,其結構如下圖所示:

其中頭部和尾部的結構一致。Protocol id為一個字節、 PDU type 為一個字節Length為雙字節。PDU type定義了該幀的類型。

3.3 數據域分析

Data域是幀結構中最復雜也是變化最多的區域,通過分析可以將Data域分為Integrity part 、D_header和Data三個部分。具體結構如下圖所示:

(1)D_Head

當PDU type為0×01和0×02,數據包中沒有32位 Integrity part,當pdu type為0×03,數據包中有32位Integrity part;在數據頭中有兩處reseved和一處unknown部分,對于不同的幀其值是不一樣的,從wireshark抓包數據分析,其值分布如下所示:

(2)Data

data部分的結構、內容及格式與PDU type和opcode有關,Data部分情況種類多、較為復雜,詳細分析可以閱讀wireshark s7comm-plus協議解析代碼。

四、防重放攻擊分析

4.1 環境安裝

(1) PC1(192.168.10.101):安裝博圖軟件TIA13,用于連接S71200 plc設備,并進行啟停PLC CPU控制,主要用于抓包分析,博圖軟件添加正確的PLC設備、并配置好PLC網絡地址,確保能連接成功,如下所示:

(2)PLC (192.168.10.53):6ES7 214-1AG31-0xB0 V3.0.2,如下所示:

(3) pc2 (192.168.10.100): 該主機主要進行重放攻擊實驗。

4.2 抓包分析

(1)離線模式下,點擊博圖軟件stop 和 start 按鈕,進行抓包分析。

返回session id,以后每次請求均要帶上該session id,達到防止重放攻擊目的。

Stop 和 start cpu 啟停包長的均為121字節,操作成功響應數據包為84字節

信息泄露,不知道為什么這么設計,需要返回設備信息。

(2)session id 計算方式,s7comm_plus[24]+0×80, s7comm_plus數據包第24位+0×80,如下圖所示:

(3)stop cpu 指令分析,主要是AddressList和ValueList, 值為00000034019077000801, 將 值修改為00000034019077000803 則為 start cpu 指令

五、實施重放攻擊

經過上面分析,只要獲取到session id,并在每次請求plc的時候,添加上session id即可繞過S7comm-plus防重放攻擊,編寫如下驗證代碼,并抓包分析,觀察現象:

運行以上代碼,重放攻擊成功,當進行stop時,plc RUN/STOP 燈顯示黃色,當進行start cpu時候,RUN/STOP 指示燈顯示綠色,如下所示:

重放攻擊抓包分析如下所示:

六、總結分析

在實驗過程中還發現兩處問題,當完成COTP 連接后發送的第一個S7comm-plus CreateObject 數據包可以獲取到plc的相關信息,造成信息泄露,可以推出cpu型號及固件版本,攻擊者可以利用這些信息開展進一步攻擊。另外,當TIA13軟件在線連接上PLC,啟停腳本失效,應該是PLC只允許一個工程師站客戶端進行連接的原因。

相關資料文檔如下:

1、工控資產嗅探與分析(S7 PLC)

https://www.freebuf.com/articles/ics-articles/209786.html

2、西門子S7Comm協議分析

https://laucyun.com/3aa43ada8cfbd7eca51304b0c305b523.html#6-2-1

3、西門子S7-1200 CPU控制分析:

https://github.com/dark-lbp/isf

4、西門子S7通信過程及重放攻擊分析:

https://www.freebuf.com/articles/ics-articles/212283.html#

5、刺穿S7CommPlus協議安全保護機制的長矛

https://www.freebuf.com/column/197267.html

6、S7comm_plus wireshark解析代碼

https://github.com/QingChenHT/S7COMMM-Plus

總結

以上是生活随笔為你收集整理的西门子S7comm-plus通信过程及重放攻击分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。