首页
社区
课程
招聘
[原创]D-Link firmware 分析
发表于: 2016-4-26 17:20 18139

[原创]D-Link firmware 分析

2016-4-26 17:20
18139

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初略分析 謝謝!!!

    有任何問題歡迎發問、也請多多指教補充  謝謝!!!  


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 3
支持
分享
最新回复 (9)
雪    币: 47147
活跃值: (20460)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
欢迎台湾朋友,帖子我从 『临时会员版』转到『智能设备应用』 版块,并且己帮你转为正式会员了。
希望以后多多交流。
2016-4-26 19:09
0
雪    币: 6790
活跃值: (4441)
能力值: (RANK:600 )
在线值:
发帖
回帖
粉丝
3
欢迎台湾的朋友,辛苦,感谢分享,不知道楼主这个固件是那个版本的,看起来有些另类
2016-4-26 19:51
0
雪    币: 41
活跃值: (39)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
DI-704P喔 還請多多指教!!!
2016-4-26 19:57
0
雪    币: 6790
活跃值: (4441)
能力值: (RANK:600 )
在线值:
发帖
回帖
粉丝
5
共同学习,下一个来共同学习,不过楼主要是能够写个脚本把文件系统提取出来就完美了。
2016-4-26 20:28
0
雪    币: 5596
活跃值: (2173)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢分享!
2016-4-27 08:34
0
雪    币: 55
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看雪老大对于人才很爱惜
大家都欢迎台湾朋友
希望以后多多交流。
2016-5-7 15:46
0
雪    币: 219
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
先顶再认真看!
2016-5-9 08:38
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
分析的不错
2016-5-9 11:31
0
雪    币: 243
活跃值: (247)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
欢迎台湾朋友
2016-5-9 15:39
0
游客
登录 | 注册 方可回帖
返回
//