題:
打開並重新包裝固件以用作更新版本?
kifcaliph
2014-06-16 01:04:24 UTC
view on stackexchange narkive permalink

我正在嘗試為TD-W8961ND路由器修改固件,因為存在一個漏洞,該漏洞可能使攻擊者下載路由器的配置文件,該文件暴露了路由器密碼&,使他能夠在以後控制路由器的設置。我從此處遇到了修復它的想法。它能夠使用我不可用的串行端口修改虛擬內存中的固件。

因此,是否有可能應用他在固件中建議的內容然後更新路由器?

路由器固件名為 ras ,並於2011年11月25日發布。

使用binwalk,顯然該文件是ZynOS。但是,我確實無法按照那裡的說明提取簽名,而且我真的不知道以後要做什麼。

編輯

binwalk輸出

 〜$ binwalk rasDECIMAL HEX描述--------------------------- -------------------------------------------------- -------------------------------------- 84992 0x14C00 ZynOS標頭,標頭大小:48個字節,ROM映像類型:ROMBIN,未壓縮大小:66824,壓縮大小:16870,未壓縮校驗和:0xF480,壓縮校驗和:0xF03A,標誌:0xE0,未壓縮校驗和有效,二進製文件已壓縮,壓縮校驗和有效,內存映射表地址:0x085043 0x14C33 LZMA壓縮數據,屬性:0x5D,字典大小:8388608字節,未壓縮大小:66824字節128002 0x1F402 GIF圖像數據,版本“ 89a”,200 x 50136194 0x21402 GIF圖像數據,版本“ 89a”,560 x 50326749 0x4FC5D版權字符串: “(c)2001-2011 TP-LINK TECHNOLOGIES CO 。,LTD.LOGIES CO。,LTD。”。
349184 0x55400 ZynOS標頭,標頭大小:48個字節,ROM圖像類型:ROMBIN,未壓縮大小:102400,壓縮大小:55931,未壓縮校驗和:0xC892,壓縮校驗和:0xC30C,標誌:0xE0,未壓縮校驗和有效,二進制已壓縮,壓縮的校驗和有效,內存映射表地址:0x0349235 0x55433 LZMA壓縮數據,屬性:0x5D,字典大小:8388608字節,未壓縮大小:102400字節405248 0x62F00 ZynOS標頭,標頭大小:48字節,ROM圖像類型:ROMBIN,未壓縮大小:102400,壓縮大小:59174,未壓縮校驗和:0x8D2B,壓縮校驗和:0x66BC,標誌:0xE0,未壓縮校驗和有效,二進製文件已壓縮,壓縮校驗和有效,內存映射表地址:0x0405299 0x62F33 LZMA壓縮數據,屬性: 0x5D,字典大小:8388608字節,未壓縮大小:102400字節464640 0x71700 ZynOS標頭,標頭大小:48字節,ROM圖像類型:ROMBIN,未壓縮sed大小:102400,壓縮大小:52399,未壓縮校驗和:0xA2DE,壓縮校驗和:0x917A,標誌:0xE0,未壓縮校驗和有效,二進製文件已壓縮,壓縮校驗和有效,內存映射表地址:0x0464691 0x71733 LZMA壓縮數據,屬性:0x5D,字典大小:8388608字節,未壓縮大小:102400字節517120 0x7E400 ZynOS標頭,標頭大小:48字節,ROM圖像類型:ROMBIN,未壓縮大小:102400,壓縮大小:63920,未壓縮校驗和:0xFEC9,壓縮校驗和:0xA7FD ,標誌:0xE0,未壓縮的校驗和有效,二進製文件已壓縮,壓縮的校驗和有效,內存映射表地址:0x0517171 0x7E433 LZMA壓縮數據,屬性:0x5D,字典大小:8388608字節,未壓縮的大小:102400字節
581120 0x8DE00 ZynOS標頭,標頭大小:48個字節,ROM圖像類型:ROMBIN,未壓縮大小:102400,壓縮大小:54909,未壓縮校驗和:0xF811,壓縮校驗和:0x3544,標誌:0xE0,未壓縮校驗和有效,二進制已壓縮,壓縮的校驗和有效,內存映射表地址:0x0581171 0x8DE33 LZMA壓縮數據,屬性:0x5D,字典大小:8388608字節,未壓縮的大小:102400字節636160 0x9B500 ZynOS標頭,標頭大小:48個字節,rom圖像類型:ROMBIN,未壓縮的大小:102400,壓縮大小:61051,未壓縮校驗和:0x36F3,壓縮校驗和:0x6A1,標誌:0xE0,未壓縮校驗和有效,二進製文件已壓縮,壓縮校驗和有效,內存映射表地址:0x0636211 0x9B533 LZMA壓縮數據,屬性: 0x5D,字典大小:8388608字節,未壓縮大小:102400字節697344 0xAA400 ZynOS標頭,標頭大小:48字節,ROM圖像類型:ROMBIN,未壓縮ed大小:102400,壓縮大小:54463,未壓縮校驗和:0x30D8,壓縮校驗和:0x9AB9,標誌:0xE0,未壓縮校驗和有效,二進製文件已壓縮,壓縮校驗和有效,內存映射表地址:0x0697395 0xAA433 LZMA壓縮數據,屬性:0x5D,字典大小:8388608字節,未壓縮大小:102400字節751872 0xB7900 ZynOS標頭,標頭大小:48字節,rom圖像類型:ROMBIN,未壓縮大小:12440,壓縮大小:6879,未壓縮校驗和:0x5C0A,壓縮校驗和:0x1945 ,標誌:0xE0,未壓縮的校驗和有效,二進制已壓縮,壓縮的校驗和有效,內存映射表地址:0x0751923 0xB7933 LZMA壓縮數據,屬性:0x5D,字典大小:8388608字節,未壓縮的大小:12440字節
759040 0xB9500 ZynOS標頭,標頭大小:48個字節,ROM圖像類型:ROMBIN,未壓縮大小:3914416,壓縮大小:884839,未壓縮校驗和:0xA904,壓縮校驗和:0x73E3,標誌:0xE0,未壓縮校驗和有效,二進制已壓縮,壓縮的校驗和有效,內存映射表地址:0x0759091 0xB9533 LZMA壓縮數據,屬性:0x5D,字典大小:8388608字節,未壓縮大小:3914416字節 

圖片中沒有Lzma壓縮數據,因為它看起來像是&,它只是明文中的一大塊數據。

也許發布“ binwalk”的輸出?
我添加了binwalk輸出
三 答案:
devttys0
2014-06-16 17:29:08 UTC
view on stackexchange narkive permalink

重要的是要知道並非所有的ZyNOS圖像都是一樣創建的,並且對於piotrbania起作用的確切步驟(如您的問題所述)可能對您不起作用。

首先,ZyNOS是實時操作系統,您可以將整個操作系統視為一個大內核(即,沒有用戶空間或文件系統,也沒有類似的易於處理的東西)。根據ZyNOS版本,編譯器版本,編譯器選項,目標體系結構等的不同,即使是相同的源代碼也將編譯為不同的字節和指令序列,並且不同的ZyNOS版本/風格可能會以不同的方式“打包”。 / p>

對於您而言,我幾乎可以保證這些LZMA簽名是有效的,並且可能包含一些數據/代碼。映像中也可能存在未壓縮的原始代碼(嘗試使用binwalk -A搜索原始可執行代碼)。

您需要完成一些常規步驟才能完成所需的操作:

  1. 解壓縮所有壓縮塊並確定其中哪些包含可執行代碼
  2. 反彙編所有代碼(可能從未壓縮的任何代碼開始,因為它可能用於引導系統並解壓縮固件的其他部分)
  3. 反彙編過程的一部分將標識每個代碼段的加載地址;沒有這個,數據外部參照將毫無意義。尋找對絕對內存地址的引用以獲取提示(例如,跳轉到直接地址,函數表,跳轉表等)。
  4. 現在,您可以開始實際地反轉代碼,尋找處理請求的代碼。 ras文件。如果幸運的話,您將擁有一個反彙編程序無法理解的符號表,因此您必須編寫腳本來解析符號表並重命名所有符號地址。如果您不太幸運,則必須手動識別功能。
  5. 一旦確定了需要修補的代碼,就可以用類似於piotrbania的方式對其進行修補,儘管顯然固件映像的細節可能略有不同。
  6. 重新壓縮並重新壓縮打包固件映像部件,更新所有標頭校驗和,然後上傳到您的設備,並希望它不會變成鎮紙。 :)
  7. ol>

    所以要回答您的問題,是的,這當然是可能的。但是我不知道預構建的解決方案可以使您輕鬆提取/修補/重新構建固件,因此需要一定的努力才能完成。顯然,piotrbania的工作證明,對設備進行某種調試訪問(例如UART或JTAG)將大有幫助。

謝謝大家的答案。我想出了另一種使用CLI修復該問題的簡便方法,並將其發佈在http://egyptianvulture.blogspot.com/2014/06/how-to-fix-zynos-vulnerability-prevent.html.....so不需要走艱難的路:)
聽到您對ZynOS的看法真棒,Craig!
6EQUJ5
2014-06-16 05:33:36 UTC
view on stackexchange narkive permalink

您可以嘗試使用 firmware-mod-kit並查看是否有進一步的改進,儘管firmware-mod-kit專為Linux而設計,因此可能無濟於事。有時我發現它可以完成 binwalk 不能做的事情(反之亦然)

此外,您可能想從中構建 binwalk 最新來源,請重試。

Dmitry Janushkevich
2015-09-14 20:53:38 UTC
view on stackexchange narkive permalink

這有點舊,但是我無法執行與OP相同的任務-也就是說,找不到能夠正確解壓縮ZyNOS固件更新映像的工具。所以我自己滾了。請抓住並在您的圖像上嘗試一下:

https://github.com/dev-zzo/router-tools/blob/master/zynos.py

該工具目前不支持將圖像打包回去,但是我正在處理它。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...