色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

智能制造之家 ? 來(lái)源:智能制造之家 ? 作者:智能制造之家 ? 2022-12-15 15:06 ? 次閱讀

寫(xiě)在前面

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

最詳細(xì)的工業(yè)網(wǎng)絡(luò)通訊技術(shù)與協(xié)議總結(jié)解讀(現(xiàn)場(chǎng)總線(xiàn)、工業(yè)以太網(wǎng)、工業(yè)無(wú)線(xiàn))

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

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

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

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

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

今天我們來(lái)聊一聊西門(mén)子S7 PLC漏洞攻擊實(shí)驗(yàn)~

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

1、相關(guān)研究

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

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

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

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

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

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

圖4 S7CommPlus 會(huì)話(huà)和反重放機(jī)制

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

圖5 S7CommPlus (連接)請(qǐng)求(來(lái)自 TIA 門(mén)戶(hù))

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

圖6 S7 質(zhì)詢(xún)數(shù)據(jù)包(來(lái)自 PLC )

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

圖7 S7CommPlus 響應(yīng)數(shù)據(jù)包(來(lái)自 TIA 門(mén)戶(hù))(左:流量捕獲、右:字節(jié)位置表示)

1.1 抗重放字節(jié)

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

1.2 響應(yīng)數(shù)據(jù)包中的加密

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

1.3 功能包“加密”

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

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

圖8 S7CommPlus功能包(來(lái)自TIA門(mén)戶(hù)) 如下表,對(duì)上述幾個(gè)圖中的標(biāo)號(hào)字段進(jìn)行了總結(jié):

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

2、脆弱性實(shí)驗(yàn)分析

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

2.1 TIAPortal分析

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

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

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

2.1.1來(lái)自TIA Portal的S7響應(yīng)包

在訪(fǎng)問(wèn)質(zhì)詢(xún)數(shù)組的新S7會(huì)話(huà)中,通過(guò)跟隨斷點(diǎn)B,使用WinDbg中的“uf”命令識(shí)別來(lái)自模塊“ OMSP_core_ managed.dll”的“功能B”,如標(biāo)簽所示?.請(qǐng)注意,“uf”命令返回地址所屬的整個(gè)函數(shù)。在通過(guò)回溯函數(shù)B的調(diào)用堆棧進(jìn)行進(jìn)一步調(diào)查后,確認(rèn)其為生成S7CommPlus響應(yīng)數(shù)據(jù)包的位置,響應(yīng)數(shù)據(jù)包可以分為幾個(gè)部分,如下所述。

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

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

2.1.1.2第一次加密

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

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

圖10 第一次加密

2.1.1.3第二次加密

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

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

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

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

圖12算法a480

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

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

2.1.2來(lái)自TIA Portal的功能包

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

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

圖14 完整性檢查

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

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

2.1.2.1第一次HMAC

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

2.1.3.2第二個(gè)HMAC

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

2.1.3總結(jié)和討論

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

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

在存在質(zhì)詢(xún)和響應(yīng)機(jī)制的情況下,跟隨或回溯存儲(chǔ)器中質(zhì)詢(xún)的存儲(chǔ)器位置可以為反向工程過(guò)程提供入口點(diǎn)。

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

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

在找到要使用的標(biāo)準(zhǔn)算法(例如AES)之后,在存儲(chǔ)器中的搜索和對(duì)父函數(shù)的回溯可以提供揭示使用該算法的多個(gè)實(shí)例的信息。

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

審核編輯 :李倩

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

    關(guān)注

    28

    文章

    879

    瀏覽量

    40297
  • 西門(mén)子
    +關(guān)注

    關(guān)注

    94

    文章

    3034

    瀏覽量

    115780
  • S7-1200
    +關(guān)注

    關(guān)注

    11

    文章

    331

    瀏覽量

    17957

原文標(biāo)題:西門(mén)子S7 1200/1500通信協(xié)議分析與漏洞攻擊實(shí)驗(yàn)

文章出處:【微信號(hào):智能制造之家,微信公眾號(hào):智能制造之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    西門(mén)子PLC S7-1500系列介紹

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

    Profinet 轉(zhuǎn) EtherNet/IP 網(wǎng)關(guān)怎樣化解西門(mén)子 S7 - 1500 PLC 與 AB PLC 之間的通訊難題

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

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

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

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

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

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

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

    S7協(xié)議讀取西門(mén)子S7-200 Smart PLC數(shù)據(jù)

    西門(mén)子S7-200 Smart PLC因其穩(wěn)定性和易用性而廣泛應(yīng)用。通過(guò)使用S7協(xié)議,可以實(shí)現(xiàn)對(duì)PLC數(shù)據(jù)的高效讀取和控制。本文將詳細(xì)介紹如何使用S
    的頭像 發(fā)表于 07-11 11:55 ?5653次閱讀
    <b class='flag-5'>S7</b><b class='flag-5'>協(xié)議</b>讀取<b class='flag-5'>西門(mén)子</b><b class='flag-5'>S7</b>-200 Smart PLC數(shù)據(jù)

    宏集物聯(lián)網(wǎng)工控屏通過(guò) S7 ETH 協(xié)議采集西門(mén)子 1200 PLC 數(shù)據(jù)

    上周我們分享了宏集HMI通過(guò)S7 MPI協(xié)議采集西門(mén)子400 PLC數(shù)據(jù)的操作步驟。本周,我們將繼續(xù)帶來(lái)干貨,重點(diǎn)介紹宏集HMI如何通過(guò)S7 ETH
    的頭像 發(fā)表于 06-21 16:02 ?523次閱讀
    宏集物聯(lián)網(wǎng)工控屏通過(guò) <b class='flag-5'>S7</b> ETH <b class='flag-5'>協(xié)議</b>采集<b class='flag-5'>西門(mén)子</b> <b class='flag-5'>1200</b> PLC 數(shù)據(jù)

    西門(mén)子S7協(xié)議與TCP協(xié)議的區(qū)別

    在工業(yè)自動(dòng)化領(lǐng)域,通信協(xié)議的選擇對(duì)于確保設(shè)備間的順暢通信和數(shù)據(jù)的可靠傳輸至關(guān)重要。西門(mén)子S7協(xié)議和TCP
    的頭像 發(fā)表于 06-19 15:54 ?3550次閱讀

    西門(mén)子S7-1200 PLC的指令介紹

    西門(mén)子S7-1200 PLC,作為西門(mén)子自動(dòng)化控制產(chǎn)品中的一款緊湊型控制器,憑借其強(qiáng)大的功能和易用性,在工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用。S7-1200 PLC不僅具備標(biāo)準(zhǔn)的PLC功能,還
    的頭像 發(fā)表于 06-18 14:52 ?2693次閱讀

    西門(mén)子PLC產(chǎn)品系列有哪些

    、高性能、易擴(kuò)展和易于集成等特點(diǎn),廣泛應(yīng)用于各種工業(yè)自動(dòng)化控制系統(tǒng)中。本文將詳細(xì)介紹西門(mén)子PLC的主要產(chǎn)品系列,包括S7-200 Smart、S7-300、S7-400、
    的頭像 發(fā)表于 06-18 14:50 ?1647次閱讀

    干貨分享:宏集物聯(lián)網(wǎng)HMI通過(guò)S7 MPI協(xié)議采集西門(mén)子400PLC數(shù)據(jù)

    宏集物聯(lián)網(wǎng)HMI集成了多個(gè)驅(qū)動(dòng)來(lái)適配西門(mén)子200、300、400、12001500、LOGO等系列PLC,本文主要介紹宏集HMI通過(guò)S7 MPI協(xié)
    的頭像 發(fā)表于 06-13 13:39 ?571次閱讀
    干貨分享:宏集物聯(lián)網(wǎng)HMI通過(guò)<b class='flag-5'>S7</b> MPI<b class='flag-5'>協(xié)議</b>采集<b class='flag-5'>西門(mén)子</b>400PLC數(shù)據(jù)

    西門(mén)子S7-1200 PLC的優(yōu)缺點(diǎn)分析

    完美的,S7-1200 PLC也有其自身的優(yōu)缺點(diǎn)。本文將詳細(xì)分析西門(mén)子S7-1200 PLC的優(yōu)缺點(diǎn),以幫助用戶(hù)更好地了解和使用該產(chǎn)品。
    的頭像 發(fā)表于 06-13 11:33 ?3229次閱讀

    西門(mén)子S7-1200 PLC的基本功能

    西門(mén)子S7-1200 PLC(Programmable Logic Controller)是一款緊湊型、模塊化的可編程邏輯控制器,專(zhuān)為滿(mǎn)足各種自動(dòng)化應(yīng)用需求而設(shè)計(jì)。其強(qiáng)大的功能、靈活的配置以及卓越
    的頭像 發(fā)表于 06-13 11:29 ?2143次閱讀

    西門(mén)子plc模塊型號(hào)詳解

    的模塊型號(hào),以幫助您更好地了解和選擇適合自己需求的PLC模塊。 西門(mén)子S7系列PLC模塊 西門(mén)子S7系列PLC是其最經(jīng)典的PLC產(chǎn)品系列,包括S7
    的頭像 發(fā)表于 06-11 16:18 ?5868次閱讀

    透?jìng)骶W(wǎng)關(guān)基于4G/以太網(wǎng)/WIFI聯(lián)網(wǎng)實(shí)現(xiàn)西門(mén)子S7-1200/1500PLC的遠(yuǎn)程監(jiān)控和程序上下載

    【技術(shù)分享】遠(yuǎn)程透?jìng)骶W(wǎng)關(guān)-單網(wǎng)口快速實(shí)現(xiàn)西門(mén)子S7-1200/1500 PLC程序遠(yuǎn)程上下載
    的頭像 發(fā)表于 01-19 09:30 ?1562次閱讀
    透?jìng)骶W(wǎng)關(guān)基于4G/以太網(wǎng)/WIFI聯(lián)網(wǎng)實(shí)現(xiàn)<b class='flag-5'>西門(mén)子</b><b class='flag-5'>S7-1200</b>/<b class='flag-5'>1500</b>PLC的遠(yuǎn)程監(jiān)控和程序上下載
    主站蜘蛛池模板: 成人五级毛片免费播放| 国产成人刺激视频在线观看| 超级碰碰青草久热国产| 国产精品涩涩涩视频网站| 久久毛片基地| 三级网址在线播放| 有人在线观看的视频吗免费| mdapptv麻豆下载| 娇小亚裔被两个黑人| 全黄H全肉禁乱公| 一区二区三区国产| 吃奶吸咪咪动态图| 久久人人爽人人片AV人成| 色婷婷综合久久久中文字幕 | 亚洲AV怡红院影院怡春院| 51国产偷自视频在线视频播放| 国产精品v片在线观看不卡| 另类重口bdsm日本tv| 性做久久久久久久久浪潮| 97亚洲狠狠色综合久久位| 国内精品乱码卡一卡2卡三卡新区| 欧美成人免费观看久久| 亚洲乱妇88网| 俄罗斯兽交XXXXX在线| 浪潮色诱AV久久久久久久| 性色无码AV久久蜜臀| 仓井空torrent| 久久免费精彩视频| 亚洲444777KKK在线观看| 超碰人人澡人人胔| 毛片大全网站| 亚洲熟女片嫩草影院| 国产大片51精品免费观看| 欧美人成在线观看ccc36| 一个人的视频在线观看免费观看| 国产精品99久久久久久AV蜜臀| 嗯啊快拔出来我是你老师视频| 亚洲色图影院| 国产欧美另类久久久精品免费| 日韩欧美一区二区三区免费看| 97久久超碰中文字幕|