芯片提取固件入门(三):提取浅谈

admin 2022年5月26日02:51:30评论2,114 views字数 3726阅读12分25秒阅读模式

星期五实验室

阅读须知
星期五实验室的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息造成的直接或间接后果和损失,均由使用者本人负责。


星期五实验室拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经授权,不得用于其他。


芯片提取固件入门(一):硬件初识
芯片提取固件入门(二):芯片聚焦
本系列前两篇文章介绍了固件提取的前期步骤,让大家对硬件有了大致的了解,本文将开始介绍如何针对不同情况的芯片进行固件提取。




01

工具介绍

芯片提取固件入门(三):提取浅谈
RT809H编程器

RT809H是一种性价比高、可靠、快速的通用编程器,工作时直接与电脑USB2.0高速接口通讯,软件内置驱动程序,安装操作十分方便。编程器支持主流器件,类型包括 E/EPROM、MCU、EC、SPI NOR闪存、并行NOR闪存、SPI NAND、并行NAND、ONENAND、MCP、EMMC、EMCP 等,使用时可以为不同封装的芯片选用合适的芯片座进行连接。


芯片提取固件入门(三):提取浅谈



J-Link与ST-Link

J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器,是一个USB到JTAG协议的转换盒。其支持所有ARM7/ARM9/ARM11,Cortex M0/M1/M3/M4, Cortex A5/A8/A9等内核芯片的仿真,可以用JTAG接口电路通过操作寄存器直接访问到flash,实现对flash的读写。


ST-Link与J-Link相似,是专门针对意法半导体STM8和STM32系列芯片的仿真器。ST-Link具有SWIM、JTAG、SWD等通信接口,可以对STM8和STM32系列MCU进行烧写Flash、仿真调试等操作。


芯片提取固件入门(三):提取浅谈




02

Flash芯片提取

芯片提取固件入门(三):提取浅谈
拆卸提取
  • 打开热风枪调整到合适温度,对芯片的焊接处进行持续加热,加热一定时间后即可轻松用镊子取下芯片。有条件的话用隔热胶带覆盖周边的其他元件,避免过热损坏电路元件。
  • 对取下的芯片引脚进行清洗除去残留焊锡。
  • 将芯片型号输入芯片编程器的软件,根据封装选择合适的芯片座。按照软件内图示安装后,点击读取按钮,即可保存提取到的固件。

芯片提取固件入门(三):提取浅谈


读取时可能会提示部分管脚没有连接,检查芯片的方向是否正确、芯片座与编程器的连接是否正确、芯片引脚是否接触不良。如果光靠芯片座的固定部分引脚无法良好连接,可以在芯片对应的部位用力按压,让所有管脚都能与连接处有良好的接触。

芯片提取固件入门(三):提取浅谈


下面展示几种常见的芯片座,TSOP、SOP、PLCC封装的芯片座都比较便宜,而BGA封装的eMMC芯片座通常一个就要300+,并且BGA封装的芯片连接处是底部的小点,只能拆卸后通过芯片座连接编程器。


芯片提取固件入门(三):提取浅谈

芯片提取固件入门(三):提取浅谈



不拆卸提取

由于拆卸芯片可能损坏设备主板或芯片,在条件允许的情况下首先考虑不拆卸芯片的读取方法。

对于SOP8封装的Flash,我们无需拆卸芯片,可以用图示的芯片夹连接芯片的8个管脚进行固件的读取,读取时需要持续按压保持良好连接。

芯片提取固件入门(三):提取浅谈


另一种比较通用的连接方法是用极细的引脚夹夹住每个管脚,将其连接到编程器对应的接口上,如下图所示。


芯片提取固件入门(三):提取浅谈




03

调试接口介绍

芯片提取固件入门(三):提取浅谈


对于储存在MCU片内Flash空间的固件,我们可以通过调试接口对MCU控制器芯片进行调试测试,并读取出储存的固件。


调试接口介绍

(1)JTAG

 JTAG(Joint Test Action Group)是一种国际标准测试协议,主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如ARM、DSP、FPGA器件等。IEEE1149.1标准强制要求JTAG接口有TMS、TCK、TDI和TDO这4线,此外部分设备可能会有TRST、SRST、RTCK、DBGRQ等信号接口。


    在基本的JTAG接口信号里,TMS是模式选择信号,用来设置JTAG接口处于某种特定的测试模式。TCK是时钟输入信号,为测试操作提供独立、基本的时钟信号。TDI与TDO分别是数据输入信号与数据输出信号。


    在没有强制规定的信号接口中,TRST是用于对测试控制器进行初始化的复位信号,由于通过TMS信号也可以进行复位所以TRST不是强制要求的信号接口。SRST、RTCK、DBGRQ等则是更加少见的信号接口,SRST是对系统进行复位的信号,RTCK是时钟返回信号,DBGRQ是目标板上工作状态的控制信号,只在个别目标板中会有。完整的JTAG信号接口如下图所示。


芯片提取固件入门(三):提取浅谈


(2)SWD
    SWD(Serial Wire Debug)代表串行线调试,是ARM设计的协议,用于对其微控制器进行编程和调试。相比于JTAG,SWD使用更少的信号接口,结构简单,但使用范围没有JTAG广泛。SWD在高速传输的情况下比JTAG更加可靠。


SWD接口最少只需要SWDIO与SWCLK两个引脚就可以进行调试,SWCLK是输入的时钟信号,SWDIO同时作为数据的输入和输出信号接口。在使用SWCLK、SWDIO与SWO三根信号线时,SWCLK依旧作为时钟信号输入,SWDIO作为单独的数据输入接口,由SWO作为数据的输出接口。部分编程器同时支持SWD与JTAG,标准的20个信号接口如下图。


芯片提取固件入门(三):提取浅谈



MCU不拆卸提取

下图为某PLC主板,经过上篇文章判断该设备固件储存在MCU的片内空间中,该MCU芯片是STMicroelectronics公司生产的STM32F207ZGT6芯片,拥有1Mb的片内Flash空间。


芯片提取固件入门(三):提取浅谈

下载MCU芯片的datasheet,STM32F20x系列支持JTAG和SWD调试,为了方便连接本文选用SWD调试。该MCU芯片引脚对应的功能如下图。

芯片提取固件入门(三):提取浅谈


使用树莓派的3.3V接口供电,连接芯片的VCC、VDD引脚,再将芯片的SWDIO、SWCLK、NRST、VCC、VDD连接到ST-Link对应的接口上。这里要注意引脚夹的夹取技巧,避免将不用引脚连接到一起造成短路,也要防止引脚夹松动脱落。完成连接通电后如下图。


芯片提取固件入门(三):提取浅谈


打开ST-Link配套的STM32CubeProgrammer软件进行连接,连接成功如下图。


芯片提取固件入门(三):提取浅谈


注意到当前使用的是默认的Flash读取范围,在保存固件文件前我们需要选定正确的读取范围。在芯片的数据手册中可以找到下图所示的存储空间划分,其中Flash在芯片空间内0x08000000到0x080FFFFF的地址范围内。


芯片提取固件入门(三):提取浅谈


修改地址范围如下图所示,重新读取数据后即可将数据保存为固件文件。


芯片提取固件入门(三):提取浅谈



STM32拆卸提取

有些情况下芯片上的测试引脚靠的太近,就算是极细的引脚夹也很难成功连接,这时候可以将MCU芯片拆卸下来,放入专用的烧录器。烧录器板上配备标准的20pin JTAG测试接口和UART接口,芯片的每个引脚也有对应的接口,便于我们对固件进行读取与烧录。


芯片提取固件入门(三):提取浅谈



提取经验总结

在针对MCU的固件提取中,芯片的数据手册起到了非常大的作用,仔细阅读可以找到调试该芯片需要的连接方法。调试工具的使用也非常重要,对于stm32这种常用的芯片,我们用很多软件都能进行连接读取,本文使用的STM32CubeProgrammer是其中操作比较简单的,但这些软件支持的芯片型号有局限性。开源软件OpenOCD在MCU固件的提取中使用非常广泛,后续将尝试用它来提取固件。


阅读网上的资料我还发现并不是所有的MCU都能提取出固件,现在有的芯片开启了代码读取保护(CRP/RDP),CRP 这一机制就是为了防止固件被提取而设计的,如果有条件后续将对这个机制进行研究。




04

小结

芯片提取固件入门(三):提取浅谈

本文简单介绍了我目前成功提取固件的几种方法,由于设备材料与能力限制暂时没能实现网上其他的方案。


总的来说从独立的Flash芯片里提取文件难度并不大,需要一定的拆卸与焊接技巧,尤其是BGA封装的芯片,由于连接点全在芯片底部,对于焊接新手很难成功植锡与焊接。拆卸引脚很细的芯片时要耐心等热风枪加热一定时间后再轻轻取芯片,否则拿镊子撬开容易让引脚移位,手工拨动引脚很容易会拨断。


    提取MCU片内的Flash则需要花时间翻datasheet和查找合适的连接方法,提取常见的STM32等芯片相对容易,而手头的汽车MCU尝试了很多办法都无法成功连接调试,可能要更高版本的编程器才适配。


    无论是单独的Flash芯片还是MCU芯片,正确的连接都很重要。Flash芯片和芯片座可能会连接不稳定,我的解决方法是在芯片上用力按压。引脚在一百或以上的MCU芯片即使用极细的引脚夹都很难良好连接,并且容易短路,通电时要格外注意。


    后续在尝试其他固件提取方法之后,我将继续更新本系列的文章,感谢大家的关注。


FRIDAY LAB

星期五实验室成立于2017年,汇集众多技术研究人员,在工业互联网安全前瞻技术研究方向上不断进取。星期五实验室由海内外知名高校的学院精英及来自于顶尖企业的行业专家组成,且大部分人员来自国际领先、国内知名的黑客战队——浙大AAA战队。作为木链科技专业的技术研发团队,星期五实验室凭借精湛的专业技术水平,为产品研发提供新思路、为行业技术革新探索新方向。
芯片提取固件入门(三):提取浅谈
芯片提取固件入门(三):提取浅谈
芯片提取固件入门(三):提取浅谈
芯片提取固件入门(三):提取浅谈
芯片提取固件入门(三):提取浅谈

扫二维码|关注我们

星期五实验室
FRIDAY LAB


原文始发于微信公众号(星期五实验室):芯片提取固件入门(三):提取浅谈

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月26日02:51:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   芯片提取固件入门(三):提取浅谈https://cn-sec.com/archives/1049926.html

发表评论

匿名网友 填写信息