您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何PWN掉Scalance工控設(shè)備,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
在對(duì)船舶控制系統(tǒng)進(jìn)行測(cè)試時(shí),我們注意到控制系統(tǒng)對(duì)Scalance工業(yè)以太網(wǎng)交換機(jī)的嚴(yán)重依賴,因此為對(duì)其進(jìn)行了深入研究。經(jīng)過逆向發(fā)現(xiàn)可使用靜態(tài)密鑰對(duì)管理密碼進(jìn)行可逆加密,并使用不同的密鑰對(duì)用戶密碼進(jìn)行可逆加密。
以下是我們找到靜態(tài)密鑰的方法。
研究開始于配置文件,密碼看起來很不尋常,似乎不是單向哈希。 已有漏洞可用于恢復(fù)配置文件和固件,這意味著攻擊者可以訪問此信息:
密碼很短小,長(zhǎng)度取決于密碼大小,并會(huì)被填充至8個(gè)字符。 這意味著使用的是分組密碼進(jìn)行加密。
其中用于測(cè)試的64位大小的密碼表明利用DES或Blowfish作為加密算法。 另外值得注意的是,管理員帳戶有兩個(gè)密碼。
固件文件為ARM ELF文件,在ELF文件上運(yùn)行“binwalk”命令,找到“VxWorks”實(shí)時(shí)操作系統(tǒng)和LZMA壓縮數(shù)據(jù)的版本字符串。
lzma壓縮文件是設(shè)備的主要固件,對(duì)它進(jìn)行解壓縮表明它是一個(gè)二進(jìn)制文件,沒有可識(shí)別的文件簽名。hexdump解壓后的二進(jìn)制文件表明它是arm固件。
由于固件已被識(shí)別并且格式可讀,因此可以將其作為ARM Little-endian二進(jìn)制文件加載到IDA中。
對(duì)固件有效負(fù)載執(zhí)行靜態(tài)分析,并且沒有關(guān)于設(shè)備內(nèi)部的已知信息。 因此,固件的入口點(diǎn)尚不清楚。
發(fā)生這種情況時(shí),可以使用默認(rèn)地址0x00000000作為入口點(diǎn)。 但是,對(duì)函數(shù)和數(shù)據(jù)的引用將不準(zhǔn)確。
查找入口點(diǎn)非常重要,因?yàn)樗梢愿菀椎刈R(shí)別正在使用的代碼引用和跟蹤函數(shù)。有許多技術(shù)可以使用,由于固件使用VxWorks實(shí)時(shí)操作系統(tǒng),因此存在快捷方式。
VxWorks符號(hào)表提供與字符串引用匹配的函數(shù)引用,允許固件中的每個(gè)函數(shù)都有一個(gè)定義其函數(shù)的名稱。通過標(biāo)識(shí)固件啟動(dòng)時(shí)使用“sysInit”函數(shù)找到該函數(shù)的入口點(diǎn)。
ram可以通過在代碼中設(shè)置的值來識(shí)別,還可以借助ida分析固件的其余部分。
我們可以找到單詞“password”的函數(shù)引用或找到任何類似加密的函數(shù)調(diào)用,重點(diǎn)放在blowfish或des加密上。在調(diào)用參數(shù)之前跟蹤加載到參數(shù)中的值,對(duì)于arm,這些值將在寄存器r0、r1、r2等中設(shè)置。
在“clieditpasswordset”函數(shù)中標(biāo)識(shí)了blowfish函數(shù)調(diào)用,證明使用了可逆加密。blowfish測(cè)試函數(shù)是使用特定的常數(shù)來識(shí)別的,這些常數(shù)可以在網(wǎng)上搜索到,這樣就可以識(shí)別所使用的確切blowfish庫(kù),該庫(kù)可以從github下載。
可以通過標(biāo)識(shí)傳遞給寄存器r1的值來跟蹤用于blowfish的加密密鑰。寄存器r0將包含“ctx”變量,r1將包含密鑰,r2將包含密鑰的長(zhǎng)度。
分析表明,用于管理員密碼的加密密鑰是“els_key”,但是嘗試使用此字符串解密用戶密碼失敗。進(jìn)一步分析表明,加密使用了第二個(gè)密鑰,但無法靜態(tài)識(shí)別。
當(dāng)處理相對(duì)簡(jiǎn)單的軟件時(shí),或者有很多時(shí)間跟蹤每個(gè)函數(shù)調(diào)用時(shí),靜態(tài)分析非常有用。在這種情況下,我們無法通過靜態(tài)分析來識(shí)別用戶密碼的加密方法。
我們購(gòu)買了scalance交換機(jī),在主板上識(shí)別出jtag,將頭部焊接上,并將其連接到segger j-link jtag調(diào)試器。
使用segger gdb可以添加斷點(diǎn)并逐步遍歷固件的每個(gè)元素。由此,可以通過在調(diào)用函數(shù)時(shí)檢查寄存器設(shè)置來標(biāo)識(shí)加密所使用的確切變量。
確定了以下密碼加密方法:
1、管理員密碼使用靜態(tài)密鑰“els_key”加密
2、第二個(gè)管理員密碼是一個(gè)靜態(tài)字符串“elsdebug”,它使用明文管理員密碼進(jìn)行加密,用于確保管理員密碼與用戶密碼使用的加密相對(duì)應(yīng)
3、所有其他用戶密碼也用明文管理員密碼加密
上述內(nèi)容就是如何PWN掉Scalance工控設(shè)備,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。