欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]D-Link firmware 分析

[原创]D-Link firmware 分析

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初略分析 謝謝!!!
    有任何問題歡迎發問、也請多多指教補充  謝謝!!!  

上传的附件 1.png
2.png
3.png
4.png
5.png
6.png
7.png
7_5.png
8.png
9.png
11.png
12.png
13.png
14.png
15.png
16.png
17.png
18.png
19.png
20.png

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功