[笔记]物联网设备固件的安全性

存储位置

固件被存储在存储器中,以方便CPU寻址、读指令、译指令等。

如何知道固件在物联网设备上的存储位置:

  1. 知道物联网设备的组成部分中,哪些元器件具备存储固件的能力
  2. 知道物联网设备固件被厂家写入的地址,因为存储器中的数据是根据地址来读取和写入的。

固件在主板上存储的方式:

  1. 集成式
  2. 分离式

固件获取方法

  1. 网络升级截获(FTP、HTTP):当物联网设备进入升级流程时,可以通过抓取升级过程的流量信息,进而得到物联网设备通过网络升级固件的具体途径,进而复现固件升级流程而获取固件。适合在设备购买回来第一时间进行抓包,因为有的设备通过静默升级的方式来升级固件,用户是感知不到的。
  2. 直接读存储芯片:将存储器焊接下来之后,用芯片编程器把固件从存储器中读取到。
  3. 通过串口等通信总线读取:通过主板上暴露的UART接口,在PC与固化在主控器中的Bootloader程序之间建立通信,进而通过控制主控器读取固件中指令的流程,把固件读取出来。
  4. 通过调试接口读取:有些产品的主板上,会暴露硬件开发调试时所用的接口,如JTAG/SWD接口。利用JTAG/SWD的接口,使PC与主控器建立连接和适配后,相当于控制整个芯片或者设备。

小结

以上,介绍了“有心人”获取固件所需的输入信息以及获取方法。究其(固件提取)本质,还是在获取Flash、RAM的访问权限,进而读取映射到内存地址中的内容。在获取方法的介绍过程中,有意对方法分类,分类的依据是该方法需要控制设备的程度。如:方法1利用升级的方法,只是利用了设备的工作模式,而没有去控制设备,即可获取固件;方法2直接读取存储器的方法,绕过了控制设备控制器(或处理器),直接控制设备的Flash芯片,直接把芯片中的整片内容读取到;方法3则需要控制MCU(或处理器)的Bootloader中读取Flash的流程,进而把数据通过通信总线输出到主机端(如PC);方法4则控制了整个MCU(或处理器),就是通常说的进入了上帝模式。

 

  • 注1:固件(Firmware),指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件。固件是担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。
  • 注2:Bootloader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
  • 注3:从启动流程上看,如果Bootloader被激活运行(一般是通过硬件上的引脚状态设置),主控芯片一定会停留在一个等待命令的状态,这个状态允许另外一台主机(如通过串口总线连接主控器的PC)通过串口通信发送命令,以下载固件到存储器或读取存储器中的内容。如果主机传入RD命令,将会进入读取存储器内部数据的流程。

 

来源:

https://mp.weixin.qq.com/s?__biz=MjM5ODYyMTM4MA==&mid=2650392674&idx=2&sn=48e826409bfc878b7fd21321fc20b7b0&chksm=beca91c989bd18df4ea48e4a53a75ef984f83996daa861ef8cc416b7f3ecb6f26d233f787610&mpshare=1&scene=1&srcid=0812FgzNVId8cJSQ4p7dA2VH&pass_ticket=TOu7TW1IqQzJaPmt317aYSFrvJx5ndHMznra14DMbGE5G4LUnOMPHF6cTeZax66a#rd

你可能感兴趣的:(安全,学习笔记,安全,物联网)