找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 110|回复: 0

【转】芯片提取固件入门(一):硬件初识

[复制链接]

2万

主题

128

回帖

10万

积分

管理员

积分
101101
发表于 2022-10-10 17:46:52 | 显示全部楼层 |阅读模式 IP:山东省青岛市 移动

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

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

01 前言

对于工控设备或嵌入式IOT设备的安全研究,我们需要从设备的固件中分析可能存在的安全风险,但一般情况下难以从网络下载到设备的固件。在硬件层面对芯片进行分析是最常用也是最有效的办法。本文针对没有电路相关基础知识的安全研究人员,简单介绍从芯片提取固件的基本方法,让大家对设备的组成有基本的了解。


   本系列的第一篇文章会介绍设备中有哪些关键芯片,介绍芯片的不同类型与它们之间的区别,让大家对设备的主板有更清楚的认识。后续文章将分析针对现实中不同构造的主板我们该如何选择合适的手段提取出需要的固件信息。


02 硬件介绍


这里介绍一般的计算机系统硬件架构,一般由处理器、储存器、和I/O设备构成。


图1. 系统硬件架构


处理器

  处理器是系统的核心,功能主要是解释计算机指令以及处理计算机软件中的数据。目前存在各种8位,16位,32位,64位的处理器,应用在从嵌入式系统到巨型机等不同的场合中。处理器的主流的体系有ARM、MIPS、PowerPC、X86等。在我们了解处理器芯片时,会接触到CPU、MPU、MCU、SoC等缩写,下面就来简单介绍这几类处理器芯片。


  CPU是Central Processing Unit的缩写,是计算机的运算控制核心。现在的CPU通常是单芯片设计的,早期也有多芯片的CPU。CPU是由运算器、控制器和寄存器及相应的总线构成,芯片内不包括存储空间、I/O等结构。

微处理器MPU是Micro Processor Unit的缩写。MPU是CPU的一个种类,它们通常没有太大的区别,例如Intel Core i7芯片就既可以叫做CPU也可以叫做MPU。我们在嵌入式设备中常见的ARM的Cortex-A芯片属于MPU。


图2. Intel Core i7



图3.ARM MPU


  微控制器MCU是Micro Control Unit的缩写,MCU是在CPU芯片中加上一些其他片上资源,如RAM、ROM、定时器和输入输出I/O等。在MCU芯片外添加简单的电阻、电容等器件构成最小系统就可以组成一个系统运行代码,而对于只有运算功能的CPU和MPU,它们必须添加相应的RAM和ROM等结构才能运行代码。虽然MCU芯片内部有一定的存储空间,在实际应用中为了能够有更好的性能和更大的存储空间,设计者也可能会给MCU芯片配上片外的ROM或RAM存储器。MCU芯片集成了CPU与其他结构,意味着运算能力相比高性能的CPU较低,而整体的成本也相对降低,在嵌入式设备中运用广泛。


图4. Renesas MCU


  系统级芯片SoC是System on Chip的缩写。SoC是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容,可以看作是一个包含了CPU、ROM、RAM、信号处理器、网络处理器、通信功能等的集成芯片。对比SoC与MCU我们可以看到,MCU只是芯片级的芯片,而SOC是系统级的芯片,它拥有MCU内置RAM和ROM的优点,集成了更多的系统结构,可以存放并运行系统级别的代码,也就是说可以直接运行以Linux为主的操作系统。通常情况下,虽然SoC有一定空间的片上存储器,但仍会给它搭配外部RAM和ROM来构建性能更好的完整系统。


图5. Broadcom BCM2711 SoC


存储器

  存储器是用来存储程序和各种数据信息的记忆部件。存储器可分为内部存储器(又称内存或主存)和外部存储器,其中内存是CPU能直接寻址的储存空间,由半导体器件制成,在系统的结构中,内存的访问速度更快,但存储空间远小于外存。通常我们把系统和用户的程序及数据放在内存上,把数据量大的程序代码或信息储 存在外部存储器上。


  内部存储器又分为RAM和ROM两类,区别在于RAM是随机存取内存,重启或关闭设备后,暂时存储在模块中的信息会被擦除。ROM是只读内存,用于长久存储指令,关闭系统丝毫不会影响 ROM。


1.ROM

  ROM是只能读出事先所存的数据的固态半导体存储器,其存储的数据稳定,断电后数据也不会消失。固件作为担任着一个系统最基础最底层工作的软件,就存储在ROM中。但最初的ROM芯片一旦存储数据就再也无法将之改变或者删除,这不利于大批量的生产,所以后来发展出了可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)。


    相比于需要在制造时烧录进内容且无法更改的ROM芯片,PROM的可编程特性体现在出厂时内部并没有资料,用户可以用编程器将自己的资料写入,一旦写入后无法更改。可擦除可编程的EPROM解决了PROM芯片只能写入一次的弊端,可以用紫外线擦除芯片内数据。EPROM芯片的明显特征是在其正面的陶瓷封装上有一个玻璃窗口,透过该窗口可以看到其内部的集成电路,紫外线透过该孔照射内部芯片就可以擦除其内的数据。由于EPROM的数据擦除和避光存储比较麻烦,后来出现了电可擦除可编程的EEPROM,相比于EPROM的紫外线擦除,EEPROM的擦除不需要借助于其它设备,而是以电子信号来修改其内容,而且EEPROM以Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了紫外线擦除器和编程器的束缚。



图6. PROM、EPROM与EEPROM举例


2.Flash

  虽然EEPROM可以随意擦除和编程,并且能擦除单个字节,但早期EEPROM只能单字节读取数据,并且复杂的电路导致了高昂的成本,储存容量非常有限,在这种情况下出现了更廉价的Flash芯片。


  Flash芯片也称为闪存,从分类上说也是一种特殊的EEPROM,其与EEPROM的主要区别是EEPROM的数据清除单位是字节,导致早期的EEPROM抹除数据的循环相当缓慢,而Flash以区块为单位擦除与写入数据,写入大量资料时带给其显著的速度优势。


  目前Flash芯片广泛应用在硬件设备的固件存储中,根据内部存储结构不同分为NOR和NAND两种类型,根据外部接口类型不同可以分成SPI、CFI等类型。NOR Flash的每个存储单元之间是并联的,按照数据/地址总线直接访问,其读地址时序是线性结构,多用于系统程序代码的存储。NAND Flash中各存储单元之间是串联的,其全部存储单元分为若干个块,每个块又分为若干个页,它的总线位宽是有限的,每条位线下安排若干个存储单元。每次访问NAND Flash时都需要将长地址分为几部分,一点点的分布传入才能访问所需的全部数据。NOR Flash与NAND Flash相比,NOR的读取速度稍快一些,NAND的写入速度比NOR快很多,并且擦除速度远快于NOR。


  常见的Flash接口通信协议有SPI和CFI。SPI是serial peripheral interface的缩写,是一种常见的时钟同步串行通信接口,采用CPI的NOR Flash通常为8个针脚。CFI是common flash interface的缩写,是公共闪存接口,也被称为parallel接口。一般采用CFI接口的Flash针脚数量比较多,芯片也比较大。


图7. SPI NOR Flash, 8 pins


图8. Parallel NOR Flash, 48 pins


图9.NAND Flash, 48 pins



3.eMMC

  在电子设备迅猛发展的过程中,对存储器的要求也越来越高,存储器在拥有高容量、高稳定性和高读写速度的同时,还需要在主板中占有更小的空间。NAND Flash在当前纳米级芯片的发展中出现了可擦写寿命短,出错概率高,读写速度慢,稳定性差等问题,于是出现了最新的嵌入式存储芯片eMMC可以弥补NAND Flash发展的缺口。


    eMMC的全称为Embedded Multi Media Card,采用统一的MMC标准接口,把高密度NAND Flash以及MMC Controller封装在一颗BGA芯片中。针对Flash的特性,产品内部已经包含了Flash管理技术,包括错误探测和纠正,flash平均擦写,坏块管理,掉电保护等技术。采用BGA封装的eMMC用户无需担心产品内部flash晶圆制程和工艺的变化,同时eMMC单颗芯片也能为主板内部节省更多的空间。



图10. BGA153封装eMMC



4.RAM

  RAM是随机存取存储器Random Access Memory的缩写,它可以随时读写并且有很快的速度。RAM通常作为操作系统或其他正在运行中的程序的临时数据存储介质,工作时可以随时从任何一个指定的地址写入或读出信息。


  RAM与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失,所以RAM在系统中用来暂时存储程序、数据和中间结果,不会存放系统运行的关键信息。



03 其他芯片


除去控制芯片与存储芯片,电路板中还会有一些用于总线信号转换、网口信号转换、电压控制等用于控制信号或硬件接口的芯片。



04 总结分析


  从上文的介绍中我们可以得知一个设备的固件是储存在掉电不易失、系统运行时无法改变的ROM中。大部分情况下固件会储存在设备主板上独立的ROM芯片,部分情况下固件也可能储存在MCU或SoC片内的ROM空间内,我们在提取固件时需要考虑到这些情况。


本文介绍了芯片的基本知识,本系列的下一篇文章将开始介绍如何在主板上提取固件。

CN-SEC中文网


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|IOTsec-Zone|在线工具|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-4-27 09:56

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表