91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vxworks加密漏洞的示例分析

發布時間:2021-12-22 11:21:41 來源:億速云 閱讀:300 作者:小新 欄目:安全技術

這篇文章將為大家詳細講解有關Vxworks加密漏洞的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

正文

對工控固件(一般為vxworks)的分析有固定的步驟,總結如下:

1.用binwalk查看固件基本信息并解壓固件;

2.確認解壓固件的信息如CPU類型,編譯固件使用的大頭序;

3.確定固件的加載地址,一般為0x10000(原文中未對如何找加載地址進行解讀);

4.用IDA pro反匯編程序,并修復固件中的函數名;

5.找到對應的漏洞函數進行分析。

由于原文中未對如何找出固件加載地址進行說明,也未對最后碰撞hash值的過程進行說明。在這樣的疑惑下,本人對這兩個問題進行了進一步的解析:

一是找出了靠譜的計算固件加載地址的方法(這里要感謝"工匠安全實驗室"的大哥給出的思路);

二是通過編寫程序,碰撞出多個同一hash值的多個key解。

一、計算固件加載地址

固件加載地址的計算是通過vxworks固件中的函數符號表計算得出的。在固件中,與函數字符串相關的有兩個地址,一個是在固件中字符串的存儲地址;另一個是固件中保存的函數字符串的內存地址。這兩個地址相減,就能得出固件的加載地址。因此,我們只需要定位到一個固定的字符串,找到它在固件中的位置以及在內存中加載它的地址,就能算出固件的加載地址了。在winhex中搜索APP_STATION這個字符串(該字符串有它的特殊性,它是函數字符表中的最后一個字符串,見下圖,如果搜不到該字符串,按照這種方式找到字符表的最后一個字符串也是可以的),記下它在固件中的地址為0x26656c。

Vxworks加密漏洞的示例分析

下一步還需要找到該字符串在內存中的加載地址,根據函數符號表的特點,它的內存加載地址為符號表的起始位置。在binwalk中可以查看vxworks的字符表的大致起始位置,如下圖所示,binwalk計算的符號表的起始位置為0x301E74。

Vxworks加密漏洞的示例分析

需要說明的是,這個值不一定準確,還需在winhex中進一步確認。在winhex中跳轉到0x301E74,如下圖所示。圖的右側出現了很規律的".....'e..."的列。這種規律復合函數符號表的排列方式,因此,根據排列規律,符號表的起始位置應該為0x301E64。

Vxworks加密漏洞的示例分析

在這個地址存儲的是字符串的內存地址為0x27656C,而且可以看到,字符串的地址是倒序排列,所以這個地址就是前面的最后一個字符串的內存地址。

那么,加載地址為字符串的內存地址減去字符串地址有:0x27656C - 0x26656C =0x10000

算出了固件的加載地址,當我們加載固件后,需要修復函數名該怎么辦呢?可以利用函數名修復腳本完成這一操作,使用的腳本如下圖所示:

Vxworks加密漏洞的示例分析

在對具體的工控固件進行函數名修復時,腳本中有三個值需要注意下。loadaddres即是剛剛算出的加載地址,eaStart即是函數符號表的起始地址為0x301E64,eaEnd是函數符號表的結束地址,這個地址怎么找,還是只有根據符號表的規律來找。如下圖所示,符號表會規律的排列,這種規律排列在0x3293a4結束,因此,這個地址即為符號表的結束地址。

Vxworks加密漏洞的示例分析

這樣,才可以順利地加載并運行該腳本。

二、暴力碰撞hash值

先通過固件逆向分析loginDefaultEncrypt函數,在IDA Pro中可以看到loginDefaultEncrypt函數的反匯編情況,結合vxworks給出的源碼,可重寫該函數為:

Vxworks加密漏洞的示例分析

在函數里可以看到,輸入的密碼key長度有限制,長度得大于8,小于40。而hash值cQwwddSRxS的長度為10。經分析發現,長度為9和10的key都可能會產生長度為10的hash值。因此,本人先通過編寫程序隨機生成長度為10的密碼本,代碼如下,為shell腳本。

Vxworks加密漏洞的示例分析

在大for循環中,共生成了100萬個長度為10的密碼。在shell中運行該程序:

./10pass.sh > 1.txt  #將隨機密碼輸出到1.txt文件中。

再編寫程序循環讀入密碼本中隨機生成的密碼,采用已經寫好的loginDefaultEncrypt函數算出密碼對應的hash值;最后,與題目給出的hash值進行比較,如算出的hash與題目hash的值相等,則視為碰撞出了key值。下面是給出程序的main函數,在函數中可以清楚地看到每一步的操作。

Vxworks加密漏洞的示例分析

用gcc編譯:gcc -o guesshash ./guesshash.c,運行,碰撞出的結果如下圖所示。

Vxworks加密漏洞的示例分析

可以看到,這確實是一個很弱的加密算法,100萬個隨機密碼就碰撞出11個hash值相同的結果。

關于“Vxworks加密漏洞的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

深泽县| 芜湖市| 澜沧| 山西省| 淮滨县| 和平县| 石泉县| 西华县| 循化| 东宁县| 罗定市| 五大连池市| 上蔡县| 二连浩特市| 黎平县| 宁德市| 九龙县| 托克逊县| 垫江县| 镇坪县| 沙雅县| 东山县| 株洲县| 永福县| 陆川县| 荆门市| 莱西市| 双鸭山市| 黎川县| 唐海县| 共和县| 富源县| 揭阳市| 宣化县| 华蓥市| 剑河县| 仙游县| 奎屯市| 永康市| 宁强县| 虎林市|