女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

西門子S7 1200/1500通信協(xié)議分析與漏洞攻擊實驗

智能制造之家 ? 來源:智能制造之家 ? 作者:智能制造之家 ? 2022-12-15 15:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

寫在前面

前面我們說了工業(yè)控制系統(tǒng)的各種通訊協(xié)議,大家肯定會想到PROFINET、ETHERNET/IP、ETHERCAT等工業(yè)以太網

最詳細的工業(yè)網絡通訊技術與協(xié)議總結解讀(現(xiàn)場總線、工業(yè)以太網、工業(yè)無線)

技術解讀PROFINET、Ethernet/IP等7種主流工業(yè)以太網

最全整理工業(yè)通訊上的領域各種總線+協(xié)議+規(guī)范+接口—數(shù)據采集與控制

對于工控協(xié)議,除了大家所熟知的modbus opcua等,西門子、施耐德等廠商也開發(fā)了自己的私有協(xié)議,如大家所熟知的西門子S7comm/S7commPlus,施耐德的UMAS等,前面我們就詳細分析過S7以及Ethernet/IP等:

S7-1200+SCADA:詳解西門子S7協(xié)議與數(shù)據讀寫

入門工業(yè)通訊之EtherNet/IP協(xié)議分析
基于S7協(xié)議對西門子PLC S7-1500的漏洞分析與復現(xiàn)(附演示視頻

今天我們來聊一聊西門子S7 PLC漏洞攻擊實驗~

近期關注了文章“Vulnerability analysis of S7 PLCs:Manipulating the security mechanism”,文章對Siemens PLC環(huán)境(特別是S7CommPlus 的通信協(xié)議)進行了深入分析。研究人員使用WinDbg和Scapy工具,對協(xié)議中使用的反重放機制進行了研究,包括創(chuàng)建有效網絡數(shù)據包所需的特定字節(jié)的標識,文章基于試驗性分析方式,對新漏洞(包括對加密密鑰的操作)進行了研究,演示了利用漏洞進行通信會話session、使工程師無法配置PLC 、對PLC工作狀態(tài)進行未經授權的更改、以及其他對完整性和可用性的破壞。原文較長,本文僅對文章區(qū)別于當前已有資料的獨到分析和總結之處進行翻譯和概括,以饗讀者。

1、相關研究

前期已有對S7-1200/S7-1500 PLC的研究文章,對S7ComPlus協(xié)議的多個版本做了分析,下圖對此作了梳理:

e5681c8c-7c2a-11ed-8abf-dac502259ad0.png

S7-1200 和 S7-1500 PLC 協(xié)議和安全性比較的基本情況如下:

e586dc94-7c2a-11ed-8abf-dac502259ad0.png

S7CommPlus協(xié)議在 TCP (TTPKT)和面向連接的傳輸協(xié)議 (COTP) 上運行,用于在 PLC 和工程軟件之間傳輸關鍵的操作和配置信息、例如 PLC 邏輯、診斷信息、配置詳細信息和數(shù)據塊值。操作員從TIA Portal初始化到 PLC連接,例如,點擊TIA 門戶中的“ Go online ”按鈕,如下圖: 以下步驟將被執(zhí)行: 1、TIA Portal 向 網絡廣播 Profinet Discovery 和基本配置協(xié)議 (PN-DCP) “Identify All”數(shù)據包。 2、所有PLC或設備都使用PN-DCP “Identify OK” 數(shù)據包回復 TIA Portal。 3、TIA Portal初始化與PLC的TCP握手,PLC將回復。 4、TIA Portal和PLC交換COTP連接信息。 5、TIA Portal發(fā)送第一個S7數(shù)據包。 6、PLC使用包含1字節(jié)和20字節(jié)反重放機制的數(shù)據包進行回復。 7、TIA Portal 會回復一個包含反重播字節(jié)和 132 字節(jié)陣列的數(shù)據包、即反重放響應。 8、TIA Portal將數(shù)據包連同請求的操作一起發(fā)送到PLC,并在每個數(shù)據包中進行20字節(jié)的完整性檢查,其中包含特殊字節(jié),如果任何 S7CommPlus反重放字節(jié)數(shù)或完整性檢查值數(shù)據不正確,連接的另一端將發(fā)送TCP重置數(shù)據包,會話將終止。

e5c2c47a-7c2a-11ed-8abf-dac502259ad0.png

圖4 S7CommPlus 會話和反重放機制

e5f1ed18-7c2a-11ed-8abf-dac502259ad0.png

圖5 S7CommPlus (連接)請求(來自 TIA 門戶)

e6294a2e-7c2a-11ed-8abf-dac502259ad0.png

圖6 S7 質詢數(shù)據包(來自 PLC )

e680ac56-7c2a-11ed-8abf-dac502259ad0.png

圖7 S7CommPlus 響應數(shù)據包(來自 TIA 門戶)(左:流量捕獲、右:字節(jié)位置表示)

1.1 抗重放字節(jié)

S7CommPlus協(xié)議在防重放機制中使用1個字節(jié)值,自S7-1200固件版本3開始使用。當TIA Portal初始化連接時,PLC發(fā)送0x06至0x7F范圍內的質詢字節(jié),TIA Portal將向PLC回復一個響應,該響應通過將值0x80添加到質詢中來計算。例如,如果PLC質詢?yōu)?x08,則TIA響應將為0x08+0x80=0x88,如圖中的標簽④所示。圖上質詢位于第25個字節(jié)位置,響應位于相應數(shù)據包的第24個和第29個字節(jié)。在PLC固件版本3中,S7響應數(shù)據包之后的后續(xù)功能數(shù)據包必須在第24個字節(jié)位置包含相同的防重放字節(jié);在固件版本4中,發(fā)現(xiàn)它是相關數(shù)據包的第57個字節(jié)或第62個字節(jié)。

1.2 響應數(shù)據包中的加密

從固件版本4開始,來自TIA Portal的響應數(shù)據包必須包括除上述單個防重放字節(jié)之外的幾個字節(jié)。2017年,Cheng[6]發(fā)現(xiàn)了數(shù)據包中涉及的兩個16字節(jié)加密,其中第二個加密依賴于第一個加密。兩個16字節(jié)的值開始于S7響應包的第235和第291字節(jié),如上圖中的標簽⑨和⑩所示。第一次加密是XOR運算,而第二次加密是通過更復雜的算法生成的。

1.3 功能包“加密”

響應數(shù)據包發(fā)送到PLC后,TIA Portal將開始發(fā)送與TIA Portal功能相關的字節(jié),本文其余部分將其命名為“功能數(shù)據包”。所有這些分組必須包括32字節(jié)的“加密”值,如下圖的標簽?所示。該“加密”被發(fā)現(xiàn)是由基于散列的消息認證碼(HMAC)促進的完整性檢查,并且與防重放字節(jié)有關。Cheng[6]提出了通過利用協(xié)議來啟動和停止PLC的可能性,但沒有提供描述協(xié)議漏洞的詳細信息,只是指出數(shù)據包完整性檢查功能是一種“加密”。隨后,Biham將S7協(xié)議中使用的底層機制確定為HMAC,并發(fā)現(xiàn)HMAC的密鑰細節(jié)是通過橢圓曲線EL-Gamal類密鑰交換來交換的。然而,沒有描述具體的協(xié)議機制,例如,反重放響應的每個字段都用偽代碼松散地標識,而算法執(zhí)行細節(jié)缺失。類似地,在函數(shù)分組HMAC計算中,發(fā)現(xiàn)先前未識別的具有兩個不同密鑰的兩組HMAC.因此,在第四節(jié)中對解決這些差距的研究進行了調查,并與相關算法一起進行了進一步介紹,其中對協(xié)議和漏洞進行了詳細分析,以提供支持加密的機制的更詳細視圖。

e6a97686-7c2a-11ed-8abf-dac502259ad0.png

圖8 S7CommPlus功能包(來自TIA門戶) 如下表,對上述幾個圖中的標號字段進行了總結:

e6c9650e-7c2a-11ed-8abf-dac502259ad0.png

2、脆弱性實驗分析

實驗環(huán)境包括運行TIA Portal V14的工程站、兩個固件版本為V4.1.3和V4.2.3的S7-1211C PLC和一臺“受損”機器,所有這些都通過交換機連接到共享LAN。

2.1 TIAPortal分析

為了了解生成反重放響應的算法,并探索可能的漏洞,使用WinDBG對TIA Portal進行了分析。本節(jié)描述了在實驗過程中進行的逐步分析過程。出于實驗目的,在TIA Portal中搜索可訪問設備的功能用于生成S7CommPlus流量。在分析過程中發(fā)現(xiàn)的結果如圖所示。下圖中的標簽A-F將在整個討論中被引用。圖中有兩個主要部分:如何處理挑戰(zhàn)數(shù)組(藍色框)和此后命名為“函數(shù)B”(黃色框)的進程,該進程是生成反重放機制的大多數(shù)字節(jié)的地方。

e6e4ba16-7c2a-11ed-8abf-dac502259ad0.png

圖9 步驟A至F,用于分析TIA門戶流程。藍框顯示“挑戰(zhàn)陣列”。黃色框顯示“功能B ” 為了支持分析,在軟件和PLC之間的通信期間設置了幾個斷點。通過手動分析發(fā)現(xiàn),每次TIA Portal發(fā)出請求時,字節(jié)數(shù)組都會發(fā)生顯著變化。通過使用SCAPY向PLC發(fā)送完全相同的連接請求數(shù)據包,可以確認該20字節(jié)塊與連接請求數(shù)據包的有效負載沒有明顯關系。從以前的工作來看,鑒于S7CommPlus協(xié)議的可用信息有限,從哪里開始逆向工程過程并不明顯。因此,對于任何進行這種分析的人來說,第一個挑戰(zhàn)是確定生態(tài)系統(tǒng)中易受攻擊的部分和分析的切入點,如下所示。為了開始分析,在沒有任何斷點的情況下使用一次TIA Portal的搜索功能,并生成一個完整的通信會話(由來自PLC的TCP重置數(shù)據包結束)。通過軟件上的WinDbg手動啟動中斷,然后使用命令“s”在存儲器中搜索來自PLC的20字節(jié),可以識別包含該20字節(jié)塊的存儲器地址。該存儲器地址可以僅通過一次“s”搜索來定位,或者通常僅定位存儲整個接收到的S7詢問分組的區(qū)域。進一步的搜索必須通過使用訪問時斷點來完成,并跟蹤該20字節(jié)數(shù)組被寫入的特定地址。一旦確定了該地址,在重新啟動TIA Portal之前,該地址不會更改。如標簽所示,在該地址上設置訪問時斷點“斷點A”。在使用TIA Portal初始化另一個S7通信后,發(fā)現(xiàn)斷點A是通過兩個不同的位置訪問的,這兩個位置都是涉及將20字節(jié)塊復制到另一個地址的功能。第一個函數(shù)復制斷點A指向的地址,而第二個函數(shù)將字節(jié)復制到特定地址,如標簽所示。因此,為了繼續(xù)調查,為兩個識別的地址中的每一個設置了另外兩個訪問斷點,即斷點B和斷點C。發(fā)現(xiàn)斷點B指向第3字節(jié)的地址,并且斷點C存儲20字節(jié)數(shù)組的第3到第18字節(jié)(圖6中的標記⑤)。這個16字節(jié)值(字節(jié)3到18),或“挑戰(zhàn)數(shù)組”,已被發(fā)現(xiàn)在字節(jié)生成過程的其余部分起著重要作用。進一步發(fā)現(xiàn),斷點B和C所指向的兩個存儲器位置分別涉及為s7commplus響應和功能分組生成字節(jié)。 此時,DLL“OMSP_core_managed.DLL”第一次出現(xiàn),斷點A、B和C指向的地址都在此DLL的范圍內。在分析過程中,確認該模塊(或DLL)是生成所有防重放字節(jié)的地方。下面將解釋S7響應分組和S7功能分組中的防重放字節(jié)的生成。

2.1.1來自TIA Portal的S7響應包

在訪問質詢數(shù)組的新S7會話中,通過跟隨斷點B,使用WinDbg中的“uf”命令識別來自模塊“ OMSP_core_ managed.dll”的“功能B”,如標簽所示?.請注意,“uf”命令返回地址所屬的整個函數(shù)。在通過回溯函數(shù)B的調用堆棧進行進一步調查后,確認其為生成S7CommPlus響應數(shù)據包的位置,響應數(shù)據包可以分為幾個部分,如下所述。

2.1.1.1可以操作的字節(jié)

在調查中發(fā)現(xiàn),至少使用了兩次哈希算法Sha-256。這些哈希的輸入由“CryptGenRandom” Windows API生成。生成的兩個哈希用作輸入的一部分,以生成響應數(shù)據包中的字節(jié)。這些字節(jié)包括:9字節(jié)和8字節(jié)塊,(分別為⑥和⑦),132字節(jié)塊⑧的前76個字節(jié),以及加密1,⑨和加密2,⑩之間的字節(jié)。如所示,可以通過使用WinDbg更改哈希函數(shù)的輸入來操作這些字節(jié)塊,例如將輸入設置為全零,并且這些字節(jié)的輸出將在每個會話中保持不變。這可能是一個非常強大的漏洞,因為一旦生成這些字節(jié),就可以在不需要TIA Portal或WinDbg的情況下生成數(shù)據包。只要其他字節(jié)也是由適當?shù)乃惴ㄉ傻?,PLC就會接受這些“特制的”數(shù)據包。該點說明了如何將散列之一標識為生成兩個16字節(jié)密鑰(圖1中的“密鑰1”和“密鑰2”)的過程的一部分。這些密鑰隨后用于S7CommPlus響應中的兩個對稱密鑰加密過程,特別是AES-128。這兩個過程將被稱為“第一次加密”和“第二次加密”,如圖9右側所示。由于可以操縱這些哈希的輸入(見?),因此可以生成輸出哈希,從而生成兩個密鑰,并根據算法的輸入而改變。因此,標簽?可以被認為是一個黑盒子。還有一些值根據哈希算法的輸入而變化,這些值由另一組函數(shù)生成。為了所呈現(xiàn)的分析的目的,不需要知道這些功能的詳細操作,并且因此它們也可以被認為是黑箱,其在上節(jié)圖中被標記?,這將在適當?shù)臅r候再次討論。目前認為,如果不訪問可編程邏輯控制器(PLC)的內存或安裝了TIA Portal的上位機,就不可能操作這些值。然而,攻擊者可能能夠使用中間人代理,例如在受危害的機器中以TIA Portal的形式,將密鑰更改為所需的密鑰。雖然Biham認了操縱哈希輸入的可能性,但我們在這里記錄并可視化(圖9)字節(jié)的操縱如何影響機制其余部分的安全性。從安全研究人員的角度來看,此信息非常重要,因為它揭示了專有協(xié)議的其他未知問題,并突出了可能存在多個TIA門戶和PLC實例的安全限制。由于本研究是根據Cheng[6]的研究進行的,因此分析的表述和術語與一致,即將主要組件確定為第一加密、第二加密和功能包完整性檢查。

2.1.1.2第一次加密

Cheng[6]首先提到了響應數(shù)據包中使用的兩種加密,然而僅給出了它們在IP分組中的位置,并且很少給出關于這兩個加密的其他信息。比Biham隨后添加了額外的信息,記錄了用于生成這些字節(jié)的底層算法,這是橢圓曲線EL-Garmal密鑰交換的專有版本。作為進一步的貢獻,我們現(xiàn)在介紹低級字節(jié)操作和操作反重放機制所需的過程。如下圖所示,第一加密是位于先前識別的132字節(jié)塊的第77到第93字節(jié)中的16字節(jié)值。發(fā)現(xiàn)通過使用?中生成的132字節(jié)塊的第61到第76字節(jié)作為明文并使用“密鑰1”作為對稱密鑰加密算法的加密密鑰來進行加密。然后,該加密的輸出將與質詢數(shù)組進行異或運算,并在發(fā)送到PLC之前存儲在處理通信的地址中。但是,由于明文和密鑰都與?中的操作哈希相關,因此可以將此加密視為16字節(jié)常量和質詢數(shù)組的簡單XOR運算。

e714f762-7c2a-11ed-8abf-dac502259ad0.png

圖10 第一次加密

2.1.1.3第二次加密

第二次加密使用與第一次加密相同的加密算法,然而,明文是由更復雜的算法生成的,該算法使用第一次加密作為輸入的一部分。完整算法的分析如下圖13所示。此外,還確定了生成明文所需的許多構建模塊。下面以詳細的偽代碼的形式呈現(xiàn)這些低級字節(jié)操作。該偽代碼旨在幫助所提出的實驗(以及[6]和[7])的再現(xiàn)性。(1)“有限域”增量算法(見圖11).有限域是具有有限階的元素的集合,并且乘法和加法的運算應該符合某些規(guī)則。域的階是域中元素的個數(shù),并且階應該是素數(shù)的冪。

e7392c22-7c2a-11ed-8abf-dac502259ad0.png

圖11“有限域”增量算法 對于該遞增,字段的順序是2128,其可以由16字節(jié)值表示。在分析過程中,不可能找到廣義不可約多項式(有限域中的運算規(guī)則),因此計算由一組運算和一組常數(shù)來表示。要開始操作,將16字節(jié)值乘以從0到255的所有整數(shù)。此16字節(jié)值是從與兩個加密密鑰相同的哈希生成的(請參閱標簽)。它采用四個4字節(jié)小字節(jié)值的形式。計算如圖11所示。在乘法過程中,如果乘數(shù)的nTH根為2,其中n為正整數(shù),即乘數(shù)為2,4,8…,輸出將與特定值xpn進行異或運算,并存儲在具有256個元素的數(shù)組或數(shù)組“ value256[]”中,其中每個元素都是16字節(jié)值。由于值必須保持在“有限域”內,乘法的其余部分不能簡單地通過將輸入值乘以乘數(shù)來實現(xiàn)。通過首先以其二進制形式表示乘數(shù)來完成計算。然后從最高有效位讀取乘法器的二進制。如果是“ 0 ”,則沒有進一步的操作。但是如果它是'1',例如,如果乘數(shù)是“9”,其在二進制中是“1001”,則value256[23]和value256[20]將被異或在一起,并且輸出被存儲在value256中。

e7665116-7c2a-11ed-8abf-dac502259ad0.png

圖12算法a480

e788e32a-7c2a-11ed-8abf-dac502259ad0.png

圖13 第二次加密(2) 算法A480。該算法以地址的存儲器偏移量命名為“算法A480 ”,取圖11中的“值256[]”?!坝邢抻颉痹隽克惴ǖ妮敵觯约白鳛檩斎氲?6字節(jié)值。16字節(jié)輸入“ B_輸入”被分成四個4字節(jié)數(shù)組,它們以小端格式表示。圖12示出了算法A480的偽代碼,算法的第一部分在循環(huán)中執(zhí)行,將依次讀取4字節(jié)值的每個字節(jié)位置。通過從B_輸入的第一元素中的第一字節(jié)位置開始讀取,到第二元素中的第一字節(jié)位置,等等。(即B_輸入[0][0],然后B_輸入[1][0],等等)。與十六進制中的任何值一樣,它可以是0x00到0xFF,這對應于value256[]中16字節(jié)值的不同256個元素。16字節(jié)值(第一個讀取值為value256[B_input[0][0]])將附加零,零的長度取決于它當前所在的元素。例如,對于元素0或B_INPUT[0],追加了16個零。類似地,對于B_輸入[1]到B_輸入[3],將分別添加12、8或4個零。結果將被存儲,并與添加了零的下一個值進行異或運算。(例如,經XOR運算的前兩個值是Value256[B_輸入[0][0]]和Value256[B_輸入[1][0]],兩者都添加了零)。在進行到下一字節(jié)位置(例如,從B_輸入[X][0]到B_輸入[X][1])之前,每一遞增的結果將被轉換成大端字節(jié)序,向右移位1個字節(jié),并且再次被轉換回小端字節(jié)序值。對于最后一個位置,不是將32字節(jié)值向右移動1個字節(jié),而是執(zhí)行更復雜的操作。操作從偽代碼中語句的左側開始。該操作包括:“<<”二進制左移、“>>”二進制右移和“^”逐位異或。在移位期間,任何方向上超過16字節(jié)限制的字節(jié)都將被丟棄。生成的32字節(jié)值將被劃分為8個不同的4字節(jié)值用于操作。在算法結束時,通過將四個4字節(jié)數(shù)組連接成字節(jié)串來獲得16字節(jié)串。(3) 明文生成。如圖13所示,在用于第二加密的明文生成過程中有五個不同的輸入。這五個輸入是:1)16字節(jié)值;2)第一次加密的結果(圖13中的紅框);3)16字節(jié)密文(圖13中的綠色框);4)從另一個密文縮減的8字節(jié)值(圖13中的藍框);以及5)用零填充的4字節(jié)計數(shù)器值。實驗已經表明,除了第一次加密的結果之外,所有這些輸入相對于點?處標識的兩個散列是恒定的。明文生成過程的每一步都涉及對兩個輸入進行XOR運算,并通過“算法A480”運行結果。(4) 完成第二次加密。在生成明文之后,使用“密鑰2 ”對其進行加密(參見圖9),使用與第一加密相同的對稱密鑰加密。密文將用作132字節(jié)塊的最后16個字節(jié),即來自TIA Portal的反重放響應。圖13示出了“有限域”增量算法、算法A480和明文生成是如何相互關聯(lián)的。輸入在132字節(jié)數(shù)組中的字節(jié)位置以及如何生成第二次加密也可以在圖中找到。與Cheng[6]的工作相比,對S7響應數(shù)據包的生成提供了更完整的描述,兩個加密的細節(jié)也提供了Biham后來工作之外的額外信息。值得注意的是,算法A480先前已被簡要地呈現(xiàn)為制表散列,但沒有圍繞用于生成第二加密的步驟的細節(jié)。由于先前描述的較低級字節(jié)計算,現(xiàn)在呈現(xiàn)該進一步分析。這允許對修補可能的操縱提出初步建議。

2.1.2來自TIA Portal的功能包

在交換S7詢問和響應數(shù)據包之后,將發(fā)送S7功能數(shù)據包。這些數(shù)據包包括通信的目的和細節(jié),圖8顯示了其中一個數(shù)據包,該數(shù)據包包含由第III.B節(jié)中給出的示例中的TIA Portal發(fā)送的控制信息。每個數(shù)據包都必須在有效載荷之前包括32字節(jié)“加密”(如Cheng[6]所稱),如同一圖中的輪廓字節(jié)所示。在該分析中發(fā)現(xiàn),該32字節(jié)塊實際上是對分組的HMAC完整性檢查。這種完整性檢查有兩個目的:確保有效載荷不被操縱;以及驗證發(fā)送方(因為只有連接中涉及的主機才知道HMAC的密鑰)。為了生成這個32字節(jié)值,需要進行兩次HMAC計算。第一個用于生成所有后續(xù)HMAC的密鑰。第二個用于對所有功能包進行簽名。兩個HMAC都基于與其余機制相同的哈希算法。圖14顯示了兩個HMAC如何生成完整性字節(jié)。

e7d94e78-7c2a-11ed-8abf-dac502259ad0.png

圖14 完整性檢查

e802143e-7c2a-11ed-8abf-dac502259ad0.png

圖15.用于生成8字節(jié)塊的偽代碼,它是第一個HMAC明文的一部分

2.1.2.1第一次HMAC

第一次HMAC的計算在S7響應分組被發(fā)送到PLC之前完成。HMAC的明文由從斷點C讀取的8字節(jié)值和16字節(jié)質詢數(shù)組組成(參見圖9).圖15示出了用于8字節(jié)生成的偽代碼,該偽代碼對于S7函數(shù)完整性檢查是關鍵的,但是在文獻中先前沒有描述。該算法未被識別為標準化算法,因此偽代碼是通過分析匯編代碼生成的。由于8字節(jié)生成算法是完整性字節(jié)生成的基本部分,因此從安全角度來看,該分析具有指導意義。然后,使用在圖9中標簽?處的黑盒中生成的24字節(jié)密鑰來對組合的24字節(jié)值進行簽名。32字節(jié)的HMAC輸出將被縮減為24字節(jié)值,該值將被存儲并用作第二個HMAC的密鑰。

2.1.3.2第二個HMAC

第二個HMAC用于生成實際的完整性校驗字節(jié),這些字節(jié)被插入到雙方發(fā)送的功能包中。這里已經首次識別了第二次HMAC的密鑰如何是第一次HMAC的結果,并且進一步識別了S7功能分組有效載荷的哪一部分被用作第二HMAC的輸入。函數(shù)數(shù)據包的長度并不總是相同的,但數(shù)據包中的32字節(jié)HMAC總是從數(shù)據包的第13個字節(jié)開始。該HMAC的輸入包括分組中HMAC之后的所有字節(jié),即從第45個字節(jié)開始,不包括分組的頁腳,該頁腳通常是最后四個字節(jié)(例如,8在數(shù)據包的末尾是“72 03 00 00”)。由于每個數(shù)據包的長度和所包含的信息可以變化,因此頁腳的長度和內容也會相應變化。然而,為了重放分組,由于密鑰是已知的,簡單的試錯法可以識別需要什么字節(jié)作為HMAC的輸入。

2.1.3總結和討論

本節(jié)記錄了獲取有關S7CommPlus協(xié)議中使用的反重放機制的信息所需的方法和實驗過程。這些新發(fā)現(xiàn)的信息,包括使用的標準化哈希和加密算法,以及用于明文和密鑰生成的專有算法,可能會被利用來創(chuàng)建生成“合法”S7通信的工具。 基于上述實驗,現(xiàn)在將討論一些有趣的實踐方面,旨在為該領域的未來研究人員提供指導,以幫助重現(xiàn)類似的實驗結果。

盡管在本次調查中未使用“IDA Pro”或新的開放式軟件“Ghidra”,但它們可能會顯著加快調查速度,尤其是發(fā)現(xiàn)軟件各個部分中使用特定功能的位置。

在存在質詢和響應機制的情況下,跟隨或回溯存儲器中質詢的存儲器位置可以為反向工程過程提供入口點。

在WinDbg中記錄“ta”(trace to address)命令的輸出提供了一種查找生成特定字節(jié)的位置的方法。雖然在這項工作中沒有使用,但自定義腳本可能有助于在跟蹤期間轉儲額外信息。

當發(fā)現(xiàn)內存中使用或存儲的各種字節(jié)是密碼函數(shù)使用的常量時,該研究中的大多數(shù)重大突破都出現(xiàn)了。例如,AES的S盒和Sha-256的初始哈希值。因此,當執(zhí)行類似的分析時,當僅有匯編代碼可用時,搜索存儲器中使用的密碼學常數(shù)可以提供識別特定算法的簡單方式。

在找到要使用的標準算法(例如AES)之后,在存儲器中的搜索和對父函數(shù)的回溯可以提供揭示使用該算法的多個實例的信息。

如果僅從通信的一方生成密碼密鑰,而沒有來自另一方的輸入,則可以操縱該密鑰

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 通信協(xié)議

    關注

    28

    文章

    1034

    瀏覽量

    41169
  • 西門子
    +關注

    關注

    98

    文章

    3173

    瀏覽量

    118244
  • S7-1200
    +關注

    關注

    11

    文章

    333

    瀏覽量

    18622

原文標題:西門子S7 1200/1500通信協(xié)議分析與漏洞攻擊實驗

文章出處:【微信號:智能制造之家,微信公眾號:智能制造之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    西門子PLC免點表數(shù)據采集方案

    西門子PLC S7-1200、S7-1500、S7-300/400型號設備,常用協(xié)議:PPI(Process Communication I
    的頭像 發(fā)表于 07-04 11:26 ?155次閱讀
    <b class='flag-5'>西門子</b>PLC免點表數(shù)據采集方案

    西門子PLC(S7-1200/1500/300/400)的數(shù)據采集與監(jiān)控方案

    西門子PLC S7-1200S7-1500S7-300/400型號設備,常用協(xié)議:PPI(Process Communication I
    的頭像 發(fā)表于 07-04 10:13 ?225次閱讀

    CANopen轉PROFINET網關:西門子S7-1200 PLC與歐姆龍NJ系列PLC通信方案

    進行通信,而另一部分則依賴 CANopen協(xié)議 。為實現(xiàn)不同協(xié)議設備之間的無縫通信與協(xié)同工作,引入高效可靠的 協(xié)議轉換網關 成為當務之急。
    的頭像 發(fā)表于 06-12 15:25 ?270次閱讀
    CANopen轉PROFINET網關:<b class='flag-5'>西門子</b><b class='flag-5'>S7-1200</b> PLC與歐姆龍NJ系列PLC<b class='flag-5'>通信</b>方案

    工業(yè)智能網關可以采集西門子PLC嗎

    、臺達等。 具體而言,工業(yè)智能網關采集西門子PLC數(shù)據的過程如下: 連接方式:通過串口或網口將工業(yè)智能網關與西門子PLC連接,并確保兩者處于同一網段內。 協(xié)議支持:物通博聯(lián)工業(yè)智能網關支持多種
    的頭像 發(fā)表于 05-26 09:14 ?250次閱讀

    西門子S7 PLC通過深控技術無點表工業(yè)網關實現(xiàn)數(shù)據采集與智能決策方案

    深控技術“不需要點表的工業(yè)數(shù)采網關”針對西門子S7系列PLC(包括S7-300、S7-400、S7-1200、
    的頭像 發(fā)表于 05-23 10:44 ?242次閱讀

    EtherCAT轉ProfiNet西門子1200PLC與伺服電機通訊案例全解

    的其它設備或連接到ProfiNetPLC上,并在正常運行中支持EtherCAT協(xié)議。本產品可作為EtherCAT主站,做為西門子S7-1200系列PLC的從站并在監(jiān)控系統(tǒng)中支持 PROFINET
    的頭像 發(fā)表于 03-21 09:42 ?715次閱讀
    EtherCAT轉ProfiNet<b class='flag-5'>西門子</b><b class='flag-5'>1200</b>PLC與伺服電機通訊案例全解

    MCGS觸摸屏與西門子S7系列PLC以太網通信

    機交互方 式,在工業(yè)控制中得到了廣泛的應用。筆者在長期的使 用過程中,發(fā)現(xiàn)很多人對于不同型號的 PLC 之間,以及 西門子 PLC 與第三方觸摸屏的數(shù)據通信比較陌生,本文 將以具體實例來說明如何采用以太網的方式實現(xiàn) MCGS 觸摸屏與西
    的頭像 發(fā)表于 03-20 14:19 ?1412次閱讀
    MCGS觸摸屏與<b class='flag-5'>西門子</b><b class='flag-5'>S7</b>系列PLC以太網<b class='flag-5'>通信</b>

    西門子PLC S7-1500系列介紹

    西門子PLCS7-1500系列是西門子自動化領域中的一款重要產品,它以其卓越的性能、強大的功能和高度的靈活性,在工業(yè)自動化控制系統(tǒng)中占據了一席之地。本文將詳細介紹西門子PLC
    的頭像 發(fā)表于 12-09 18:23 ?2742次閱讀
    <b class='flag-5'>西門子</b>PLC <b class='flag-5'>S7-1500</b>系列介紹

    Profinet 轉 EtherNet/IP 網關怎樣化解西門子 S7 - 1500 PLC 與 AB PLC 之間的通訊難題

    一、 案例背景 在一個工業(yè)現(xiàn)場,一端是AB的PLC,IP地址192.168.1.20;另一端西門子S7-1500系列,IP地址192.168.2.248。AB的PLC內有 B3、N7、F8 三個
    的頭像 發(fā)表于 12-09 16:51 ?985次閱讀
    Profinet 轉 EtherNet/IP 網關怎樣化解<b class='flag-5'>西門子</b> <b class='flag-5'>S7</b> - <b class='flag-5'>1500</b> PLC 與 AB PLC 之間的通訊難題

    基于 EtherCAT 轉 ProfiNet 網關達成西門子 1200 PLC 與伺服電機通訊連接的應用實例

    連接到ProfiNetPLC上,并在正常運行中支持EtherCAT協(xié)議。本產品可作為EtherCAT主站,做為西門子S7-1200系列PLC的從站并在監(jiān)控系統(tǒng)中支持PROFINET協(xié)議
    的頭像 發(fā)表于 12-09 16:29 ?1330次閱讀
    基于 EtherCAT 轉 ProfiNet 網關達成<b class='flag-5'>西門子</b> <b class='flag-5'>1200</b> PLC 與伺服電機通訊連接的應用實例

    西門子1200、200smart、LOGO實現(xiàn)S7通訊演示

    : 1、三臺實現(xiàn)S7通訊 2、任意一臺控制另外兩臺輸出QB0輸出狀態(tài) 3、任意一臺讀寫另外兩臺的數(shù)據VB10 VB20 VB30寄存器 4、熟悉西門子S7通訊 三、通信連接說明: 1、
    的頭像 發(fā)表于 12-05 09:31 ?1797次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>1200</b>、200smart、LOGO實現(xiàn)<b class='flag-5'>S7</b>通訊演示

    教程-西門子S7協(xié)議轉換為HTTP協(xié)議

    本章要實現(xiàn)一個流程:EG8200采集西門子S7-200Smart的數(shù)據,并組裝成JSON格式通過HTTP上報應用平臺。
    的頭像 發(fā)表于 10-12 16:18 ?1773次閱讀
    教程-<b class='flag-5'>西門子</b><b class='flag-5'>S7</b><b class='flag-5'>協(xié)議</b>轉換為HTTP<b class='flag-5'>協(xié)議</b>

    西門子S7協(xié)議PLC數(shù)據采集到MQTT物聯(lián)網平臺 ?

    ,廣泛應用于各種工業(yè)控制場合。而MQTT(消息隊列遙測傳輸)物聯(lián)網平臺則以其高效的消息傳輸機制和數(shù)據處理能力,為物聯(lián)網設備提供了強大的連接、管理和數(shù)據處理服務。 對此,物通博聯(lián)提供基于工業(yè)智能網關實現(xiàn)西門子S7協(xié)議PLC數(shù)據采集
    的頭像 發(fā)表于 09-26 10:42 ?744次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>S7</b><b class='flag-5'>協(xié)議</b>PLC數(shù)據采集到MQTT物聯(lián)網平臺  ?

    西門子 S7 通信協(xié)議大揭秘

    什么是S7協(xié)議 有網友說,如果 S7 是一輛汽車,它可能看起來像這樣: 實際上,西門子S7協(xié)議
    的頭像 發(fā)表于 08-12 14:21 ?1787次閱讀
    <b class='flag-5'>西門子</b> <b class='flag-5'>S7</b> <b class='flag-5'>通信協(xié)議</b>大揭秘

    西門子總線協(xié)議有哪些

    西門子(Siemens)作為工業(yè)自動化領域的領先企業(yè),其總線協(xié)議在自動化系統(tǒng)中發(fā)揮著重要作用。西門子總線協(xié)議主要包括了多種類型,這些協(xié)議支持
    的頭像 發(fā)表于 08-05 16:09 ?2377次閱讀