物聯網IoT安全教程(一)-- 提取 IoT 固件

PS:本文所用到的程序見 – https://github.com/G4rb3n/IoT_Sec_Tutorial

首先我們需要安裝固件提取工具 binwalk,由於該工具的安裝流程比較繁瑣,建議直接使用Kali Linux,該系統默認安裝有 binwalk。

https://github.com/ReFirmLabs/binwalk

1

提取固件系統的參數是-e,我們可以加上-t -vv參數查看詳細的提取過程。通過輸出信息,可以得知該固件系統沒有加密壓縮,且系統爲Squashfs。

binwalk -t -vv -e RT-N300_3.0.0.4_378_9317-g2f672ff.trx

2

提取出來的文件夾爲_RT-N300_3.0.0.4_378_9317-g2f672ff.trx.extracted,其中的squashfs-root就是我們想要的該固件的文件系統。
3

那麼binwalk的是怎麼實現提取的呢?原理就是,通過自帶的強大的magic特徵集,掃描固件中文件系統初始地址的特徵碼,若匹配成功,則將該段數據dump下來,這個magic特徵集已公開。

https://github.com/ReFirmLabs/binwalk/blob/62e9caa164305a18d7d1f037ab27d14ac933d3cf/src/binwalk/magic/filesystems

4

以這個固件爲例,是Squashfs文件系統,對應的掃描特徵碼爲hsqs。
5

我們可以做個實驗,使用hexdump搜索hsqs的地址,爲0xe20c0,這個就是文件系統的初始地址。

hexdump -C RT-N300_3.0.0.4_378_9317-g2f672ff.trx | grep -i 'hsqs'

6

使用dd命令截取地址925888(0xe20c0)之後的數據,保存到rt-n300-fs。

dd if=RT-N300_3.0.0.4_378_9317-g2f672ff.trx bs=1 skip=925888 of=rt-n300-fs

7

最後,使用unsquashfs rt-n300-fs命令解析rt-n300-fs文件,得到的squashfs-root就是固件系統,這個跟上述binwalk提取的那個是一樣的。

unsquashfs rt-n300-fs

8

發佈了55 篇原創文章 · 獲贊 53 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章