前言
无处不在的物联网设备,也可能成为无所不在的安全隐患,物联网安全问题一直是困扰物联网快速发展的一大难题。作为安全研究员在研究物联网设备的安全问题时,对设备的固件进行安全分析是必要的。固件是刷写在芯片中的嵌入式系统。固件的获取途径一般有两种:
1、从厂商那里申请获取设备的固件。
2、从硬件中提取设备固件,需要有相应的测试设备。
以下我们以提取国内一家做基于区块链的IoT设备中的固件为例。
使用工具
1.风枪(温度:有铅锡熔点是183℃,拆除理想温度是185~190℃。无铅锡熔点是217℃拆除理想温度是235℃。实际操作更复杂,要多练习才能完好的把芯片取下。)
2.助焊剂
3.镊子
4.U盘编程器
5.锡珠
6.植锡网
7.RT809-H编程器
8.放大镜
识别芯片
常见的识别芯片的方法:
1.可以通过芯片上的标签,标签中可能包含了制造商名称、型号和芯片描述
2.可以通过观察电路的设计方式,如下图(图片来自网络)
图片上系统(SoC)是右侧这块最大的芯片,中间的芯片是RAM(与SOC之间的接线是弯曲的,这是为了保证所有连线有相同的长度,因为高速RAM需要准确的定时信号),最左边这片是flash(大量平行的连线用于传输并行的数据信号)。
一. 摘取芯片
首先要分辨出PCB板上的flash芯片。由于原板已经被拆解的面目全非,找不到完整的PCB板的图,所以就只有单个芯片的图查询芯片型号找到了flash芯片,三星公司的 KLM8G1GEME -B041内存芯片,采用了eMMC技术(型号:eMMC_153)
摘取eMMC芯片是需要一个手巧,且费心力的技术活,这块板子用的还是无铅的锡来焊接的芯片,由于无铅锡比有铅锡纯度更高,所以熔点更高。但是芯片可承受的温度是不变的。
拆解芯片需要给芯片的引脚涂上助焊剂,把风枪的温度调整到350度左右,将风枪口放置在芯片上方5CM的高度来回摆动让芯片所有引脚受热均匀,注意要给周围的元器件贴上高温胶带防止被风枪吹掉或损坏。(由于经验不足,导致板子的导线都被扯了出来)
获得:废板一块、eMMC芯片一枚(废板可以用来继续练习摘取与焊接BGA芯片,而这个芯片我们就要去读取其中的固件了。)
读取固件这里我们有两个思路:
1. 使用这个eMMC芯片制作U盘,通过U盘编程器上的主控芯片和软件读出芯片中的数据
2. 使用RT809H编程器读出芯片中的固件
注:有铅锡和无铅锡的区别
二. 制作U盘编程器
1.清洗芯片引脚
首先把刚取下的芯片上的焊点清理干净,使引脚平整。
2.植球
在芯片上植入新的引脚,这个操作叫做植球。需要买来合适的钢网和锡珠才可以进行这步操作 (图片来源于网络,图中的芯片型号和测试设备中的芯片型号不同)
在芯片上抹上适量的助焊剂,助焊剂可以起到一定的固定钢网和附着锡珠的作用。再像上图那样将钢网按照芯片引脚放在芯片上,倒上锡珠,使每个引脚上都有锡珠,用风枪把锡珠吹融化附着在芯片引脚上,植珠就完成了。
3.焊接并读取U盘数据
准备U盘编程器
接下来要将植珠好的芯片焊接在U盘编程器上。将芯片对应编程器上的引脚放好,使用风枪吹芯片,让锡珠融化,焊接在编程器上,U盘编程器就做好了。
后续使用windows系统读取U盘时发现不能识别到U盘。因为芯片中的文件系统是ext4,后又使用Linux系统对U盘进行读写,也识别不到设备。然后使用一款数据恢复工具去读取U盘也是识别不到。原因猜解:U盘编程器板子到货之后测试过没有问题,eMMC芯片后来也被证实可以读出数据。电脑识别不到设备的问题可能是编程器的主控芯片对这个并不兼容,也可能是芯片焊接有问题,因为时间问题并没有深究故障原因。
三. RT809H编程器读取eMMC芯片数据
1.安装芯片
将芯片放好在专用座子里并将座子放在编程器上锁紧
使用软件对芯片进行自动识别
识别出了通用emmc芯片
2.读取芯片
点击面板上的读取来获取芯片中的固件
有时会出现引脚接触不良的情况,可以在锁紧板和芯片之间放一些柔软的物体来增加芯片和座子上引脚的贴合度
当进度条显示100%时,固件读取就完成了
BIN文件就是我们需要的固件,里面包含我们固件分析要用到的文件系统。
四.总结
这篇文章主要总结了提取固件的一般流程:识别芯片→摘取芯片→读取芯片。U盘编程器虽成本低,但是中间需要较多手动操作的环节,某一个环节操作不细致就有可能损坏芯片,造成损失或者出现一个很难排查的错误,排查错误本身也会造成时间成本浪费。
RT809H编程器加上eMMC专用的座子,省去了使用U盘编程器的焊接步骤,也不用担心编程器是否兼容芯片,甚至可以帮你在不知道芯片型号的情况下自动识别芯片型号,提高工作效率,把精力放在固件安全分析上。
领取专属 10元无门槛券
私享最新 技术干货