D-Link DI-704P firmware 分析 1.前言: 剛看到會員gjden發表的分析文章,讓我也想跟大家分享一下在今年初做的一些分析,由於實力不夠有很多都是野人獻曝,還請各位大神多多包涵、指點 謝謝 目地:了解firmware結構 找尋hardcode 2.準備: 使用工具:binwalk 分析檔案:DI-704P firmware (可從D-Link官網下載) 3.firmware 分析: 對firmware執行binwalk command 什麼?? 竟然是一堆gif檔 (說好的Squashfs文件系統呢?) 那主動提取文件看看會跑出什麼 (binwalk -e) 檔建立一個_firmware.bin.extracted資料夾 裡面有兩個html header的文建 由於我對於這種文建檔真的不了解該如何下手 所以就當它是沒用的東西了(有請大神指點!!!) 說真的 當初分析進行的滿不順利的 不過我們不能放棄 讓我們來硬的好了 用hexdump 跟 strings 把 firmware 裡的 string, hex 抓出來觀察 不曉得大家有沒有對於address:0 所出現的DLA50引發興趣(傳說中的Magic Number!?) 那我們就針對DLA50進行觀察吧(加入R參數) Yeah!! 線索對了 可以很明顯的了解每0x4020會出DLA50就是Magic Number!! (終於有點分析的樣子了) 但4020到底意味著什麼呢? 我們往hexdump出來的文件來看看 看著hex檔案讓我想要猜測一些東西 紅色圈起來的是否為地址 而藍色全起來的是否為大小 為了確認我的猜測 我們來到0x4020 很明顯的紅色圈的數值變為40 00 而藍色依舊是 40 00 (要倒著看喔!!!) 我們再跳到0x8040做最後一次的確認吧 我的猜測沒錯 紅色圈的值變為80 00 而藍色依舊是40 00 下個小結論:Magic Number 每4020出現 4020 = header(20) + 檔案大小(4000) 我們的分析還沒結束 但打得滿累的 (突然覺得那些大人好厲害喔!!!) 接下來回到剛剛找出Magic Number的關鍵點 (Binwalk -R) 發現有些區間並不是4020這是否 又是另外的線索呢? 那我們就到0x28140去觀察吧! 恩.... 好像沒什麼特別的... 沒關係 我們再到下個地方觀察 來到0x286B5 !!!!!! 我好像看到有趣的東西了 那個.js啊 不就是文件嗎? (由於0x286B5跟0x286D7很近 所以才能一次觀察到) 再回到這張圖 可已知道0x286D7後又恢復0x4020的區格 來做個小結論:這裡可能是file system 最後binwalk -R的搜尋還有一個可疑點 一樣是不遵守4020區隔的點 跳到0x54837觀察 可以看到還有"javascript"的字串 是否意味者file system還沒有結束? 沒關係 我們再跳到0x56F60觀察 恩....... 沒什麼特別的 在跳到下個地方觀察吧 可惡!!! 既然這樣我們跳到hex去觀察 (0x56F60跟0x56F82又可以一起觀察) 奇怪!? 0x56f80下面的hex怎麼很多 ff !? 感覺事有蹊翹 那我們往下看看還會有什麼訊息呢? "Li" 感覺很熟悉又很陌生!? 沒關係 讓我來幫你下個結論 4.總結: Magic Number: DLA50 End of Magic Number: Li (一個區間結束時會讓Li出現在DLA50前已是區隔) Separator: 22 bytes(不知道大家有沒有發現 其中會有兩個22bytes的Separator) 故firmware的結構可能如下: 0-0x286b5:Executable code (猜測可能是執行檔 但沒有具體證據) 0x286b5-0x286d7:separator (22 bytes) 0x286d7-0x56f60:File system (有很明顯的.js文件) 0x56f60-0x56f82:separator (22 bytes) 0x56f82-0x5bdc0:Possibly configuration area (hex 顯示出 "ff" 很可能是參數) 我想有人一定有疑問既然有0x4020大小做為區隔 那22bytes又算什麼呢? 想想一間學校分為三個年級 一年級、二年級、三年級的區別顯而易見如同那22 bytes, 而那0xx4020得大小限制就如同一年一班、一年二班 必須將性質相同的檔案放在一起 而資料類型天差地遠的則用22 bytes做區別 不知道這樣有沒有了解呢? 以上是我的firmware初略分析 謝謝!!! 有任何問題歡迎發問、也請多多指教補充 謝謝!!!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)