1. 程式人生 > >物聯網硬件安全分析基礎-固件提取

物聯網硬件安全分析基礎-固件提取

識別 暴露 ges content 情況下 進一步 路由器 基礎知識 bdd

物聯網硬件安全分析基礎-固件提取

前言

上篇初步介紹一些硬件基礎知識和分析硬件所需要的基本工具,本篇將講述利用編程器直接讀取芯片固件的方法。

編程器讀取

通過夾具夾住芯片引腳,然後連接編程器讀取芯片內容,通過編程器連接芯片需要註意引腳的順序,在IC芯片上都會有一個小點,大多數情況下,小點對應的引腳即為芯片的第一腳,而連接編程器的導線也需要插入編程器上相應的引腳。

技術分享圖片

案例一:讀取中控F7門禁固件

拆掉門禁外殼,通過電路圖和芯片印字分析,在主板上有一顆FM25F04A存儲芯片,通過夾具連接芯片到編程器,在通過專用編程器軟件,對該芯片進行讀取。

技術分享圖片

連接完成,確定引腳接線正確後,打開編程器對應軟件,通過智能識別芯片ID,即可開始讀取固件工作。

如無法識別,可根據印字說明,嘗試類似的型號,一般情況下兼容。

技術分享圖片

點擊讀取,即可開始固件提取,成功之後會保存為BIN格式文件,打開即可看到16進制的內容,為下一步分析提供基礎。

技術分享圖片技術分享圖片

案例二:讀取某智能攝像頭固件

拆掉攝像頭外殼,通過分析PCB上的各個IC,找到Flash存儲芯片。

技術分享圖片

在顯微鏡下,可以看到是一顆25L64型號的Flash芯片。

技術分享圖片

用夾具連接各引腳,並和編程器連接,進行固件讀取。

技術分享圖片

識別到芯片型號為GD25Q64,點擊讀取,讀取完畢後按照提示保存到文件。

技術分享圖片技術分享圖片

打開保存的BIN文件或者查看緩沖區,即可看到固件內容。

技術分享圖片技術分享圖片

在Ubuntu中,用binwalk解包固件,做進一步分析。

技術分享圖片

案例三:讀取某智能攝像頭固件

打開外殼,在PCB背面發現一顆FLASH存儲芯片

技術分享圖片技術分享圖片

通過顯微鏡發現芯片型號為25L128。

技術分享圖片

連接編程器讀取固件並保存。

技術分享圖片

案例四:讀取某路由器固件

打開外殼,發現PCB上有一顆Flash存儲器,但廠商出於安全考慮,把芯片印字塗抹掉了。

技術分享圖片技術分享圖片

在不知道芯片型號的情況下,我們連接該芯片,讓編程器去嘗試讀取。

技術分享圖片

通過智能識別,發現編程器無法識別出具體型號,而因為Flash存儲芯片的種類多樣,通過查找又無法獲得該路由器的具體參數,這時我們通過UART串口,讀取出UBOOT啟動信息,串口輸出裏面發現了該芯片型號為W25Q128BV。(下一篇將會重點介紹關於串口調試的方法)

技術分享圖片技術分享圖片

在編程器中選擇該型號,成功提取出固件。

技術分享圖片技術分享圖片

用binwalk解包固件。

技術分享圖片

案例五:讀取某智能電飯鍋固件

拆掉外殼,背面嵌有一塊PCB,反面是WIFI處理芯片,正面為存儲器,連接編程器。

技術分享圖片技術分享圖片

通過印字分析為25芯片,存儲大小為2M字節,嘗試該型號芯片,成功讀取固件。

技術分享圖片技術分享圖片

案例六:讀取某網絡監控攝像機固件

在PCB上找到一塊25L128型號的Flash存儲芯片。

技術分享圖片技術分享圖片

通過夾具連接編程器。

技術分享圖片

識別到芯片為MX25L128,選擇其中一種,成功提取固件。

技術分享圖片技術分享圖片

用binwalk解包固件內容。

技術分享圖片

拆焊芯片讀取固件

對於某些機器,芯片引腳采用點錫絲網焊接在背面,引腳太小或沒有暴露出引腳,就需要通過拆焊芯片來讀取固件了。

通過熱風槍和錫焊配合,很容易從PCB上把芯片拆焊出來,但在拆焊過程中,可能存在芯片因為過熱被損壞,PCB上其他元器件被損壞,電路無法接通等風險,需要酌情考慮。

技術分享圖片技術分享圖片

熱風槍和錫焊拆焊芯片讀取固件

設置熱風槍溫度為400度,拆焊掉的芯片,通過轉接座與編程器連接,同樣需要註意芯片的引腳方向。

技術分享圖片

讀取芯片固件並導出。

技術分享圖片技術分享圖片

物聯網硬件安全分析基礎-固件提取