2.3.1 固件提取 · 物联网安全

前言

上节初步介绍一些硬件基础知识和分析硬件所需要的基本工具,本篇将讲述利用编程器直接读取芯片固件的方法。
为了读取 Flash 芯片的内容,有以下两种常用方式:

1、直接将导线连接到芯片的引脚,在通过飞线连接编程器,进行在线读取固件;

图片[1]-2.3.1 固件提取 · 物联网安全-安全小百科

2、把芯片拆焊下来,通过烧录座编程器,离线读取固件。

图片[2]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[3]-2.3.1 固件提取 · 物联网安全-安全小百科

飞线法读取

通过夹具夹住芯片引脚,然后连接编程器读取芯片内容,通过编程器连接芯片需要注意引脚的顺序,在 IC 芯片上都会有一个小点,大多数情况下,小点对应的引脚即为芯片的第一脚,而连接编程器的导线也需要插入编程器上相应的引脚。

图片[4]-2.3.1 固件提取 · 物联网安全-安全小百科

案例一:读取中控 F7 门禁固件

拆掉门禁外壳,通过电路图和芯片印字分析,在主板上有一颗 FM25F04A 存储芯片,通过夹具连接芯片到编程器,在通过专用编程器软件,对该芯片进行读取。

图片[5]-2.3.1 固件提取 · 物联网安全-安全小百科

连接完成,确定引脚接线正确后,打开编程器对应软件,通过智能识别芯片ID,即可开始读取固件工作。
如无法识别,可根据印字说明,尝试类似的型号,一般情况下兼容。

图片[6]-2.3.1 固件提取 · 物联网安全-安全小百科

点击读取,即可开始固件提取,成功之后会保存为 BIN 格式文件,打开即可看到 16 进制的内容,为下一步分析提供基础。

图片[7]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[8]-2.3.1 固件提取 · 物联网安全-安全小百科

案例二:读取某智能摄像头固件

拆掉摄像头外壳,通过分析 PCB 上的各个 IC,找到 Flash 存储芯片。

图片[9]-2.3.1 固件提取 · 物联网安全-安全小百科

在显微镜下,可以看到是一颗 25L64 型号的 Flash 芯片。

图片[10]-2.3.1 固件提取 · 物联网安全-安全小百科

用夹具连接各引脚,并和编程器连接,进行固件读取。

图片[11]-2.3.1 固件提取 · 物联网安全-安全小百科

识别到芯片型号为 GD25Q64,点击读取,读取完毕后按照提示保存到文件。

图片[12]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[13]-2.3.1 固件提取 · 物联网安全-安全小百科

打开保存的 BIN 文件或者查看缓冲区,即可看到固件内容。

图片[14]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[15]-2.3.1 固件提取 · 物联网安全-安全小百科

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

图片[16]-2.3.1 固件提取 · 物联网安全-安全小百科

案例三:读取某智能摄像头固件

打开外壳,在PCB背面发现一颗 Flash 存储芯片

图片[17]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[18]-2.3.1 固件提取 · 物联网安全-安全小百科

通过显微镜发现芯片型号为 25L128。

图片[19]-2.3.1 固件提取 · 物联网安全-安全小百科

连接编程器读取固件并保存。

图片[20]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[21]-2.3.1 固件提取 · 物联网安全-安全小百科

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

打开外壳,发现 PCB 上有一颗 Flash 存储器,但厂商出于安全考虑,把芯片印字涂抹掉了。

图片[22]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[23]-2.3.1 固件提取 · 物联网安全-安全小百科

在不知道芯片型号的情况下,我们连接该芯片,让编程器去尝试读取。

图片[24]-2.3.1 固件提取 · 物联网安全-安全小百科

通过智能识别,发现编程器无法识别出具体型号,而因为 Flash 存储芯片的种类多样,通过查找又无法获得该路由器的具体参数,这时我们通过 UART 串口,读取出 UBOOT 启动信息,串口输出里面发现了该芯片型号为 W25Q128BV。(下一篇将会重点介绍关于串口调试的方法)

图片[25]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[26]-2.3.1 固件提取 · 物联网安全-安全小百科

在编程器中选择该型号,成功提取出固件。

图片[27]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[28]-2.3.1 固件提取 · 物联网安全-安全小百科

用 binwalk 解包固件。

图片[29]-2.3.1 固件提取 · 物联网安全-安全小百科

案例五:读取某智能电饭锅固件

拆掉外壳,背面嵌有一块 PCB,反面是 WIFI 处理芯片,正面为存储器,连接编程器。

图片[30]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[31]-2.3.1 固件提取 · 物联网安全-安全小百科

通过印字分析为25芯片,存储大小为 2M 字节,尝试该型号芯片,成功读取固件。

图片[32]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[33]-2.3.1 固件提取 · 物联网安全-安全小百科

案例六:读取某网络监控摄像机固件

在 PCB 上找到一块 25L128 型号的 Flash 存储芯片。

图片[34]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[35]-2.3.1 固件提取 · 物联网安全-安全小百科

通过夹具连接编程器。

图片[36]-2.3.1 固件提取 · 物联网安全-安全小百科

识别到芯片为 MX25L128,选择其中一种,成功提取固件。

图片[37]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[38]-2.3.1 固件提取 · 物联网安全-安全小百科

用binwalk解包固件内容。

图片[39]-2.3.1 固件提取 · 物联网安全-安全小百科

拆焊芯片读取固件

一般情况下,对于 TSOP8 封装的闪存芯片,可以用上述方法来读取,但可能存在在线读取成功率不高或数据丢失的情况,对于更多引脚和封装格式的芯片,飞线的难度更高,有一定锡焊基础的建议采用拆焊芯片,用烧录座离线读取的方法。

图片[40]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[41]-2.3.1 固件提取 · 物联网安全-安全小百科

热风枪设置在适合的温度,吹下芯片,周围的元件可以用铝箔或锡箔纸适当保护。

拆下的闪存芯片放在烧录座上,在连接编程器进行读写,芯片放置的引脚方向要注意对齐编程器和烧录座的第一脚。

图片[42]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[43]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[44]-2.3.1 固件提取 · 物联网安全-安全小百科

读取完成,用点焊法把芯片焊上焊盘即可。

图片[45]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[46]-2.3.1 固件提取 · 物联网安全-安全小百科

更多芯片焊接修改操作请参考 2.4.2 硬件修改一节

jtag提取固件

拆焊芯片

首先用热风枪拆下智能锁主控芯片,该单片机型号为:Stm32F103R6。

图片[47]-2.3.1 固件提取 · 物联网安全-安全小百科

芯片第一脚对齐烧录座第一脚,然后把 Jlink 插入烧录座引出的 JTAG 接口。

图片[48]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[49]-2.3.1 固件提取 · 物联网安全-安全小百科

读取固件

电脑上安装好 Jlink 驱动,打开 J-Flash 客户端,设置好参数,主要在配置栏选择正确的芯片型号,然后点击连接,在点击 Target->Read Back->Entire trip 即可读写固件。

图片[50]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[51]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[52]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[53]-2.3.1 固件提取 · 物联网安全-安全小百科

图片[54]-2.3.1 固件提取 · 物联网安全-安全小百科

相关推荐: 7. Iot CTF · 物联网安全

Iot CTF

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享