第三章 物联网硬件层安全讲解
0x01 物联网硬件层安全讲解
1. 硬件简介
1.1 物联网硬件
1.2 物联网硬件组成
印刷电路板
存储芯片可分为
- ROM芯片(PROM,EPROM,EEPROM,FLASH-ROM)
- RAM芯片(静态RAM,动态RAM)
- Flash芯片(SPI/NAND/eMMC)
电子元器
二极管、三极管、电阻、电解电容、贴片电容、贴片电阻
调试接口
UART、JTAG、I2C、SPI等
模块
蓝牙模块、WiFi模块等
2. 硬件模块详解
2.1 印刷电路版
印制电路板(PCB线路板),又称印刷电路板,是电子元器件电气连接的提供者。它的设计主要是版图设计;采用电路板的主要优点是大大减少布线和装配的差错,提高了自动化水平和生产劳动率。
印刷电路板的组成
- 线路与图面(Pattern):线路是作为原件之间导通的工具,在设计上会另外设计大铜面作为接地及电源层。线路与图面是同时做出的。
- 介电层(Dielectric):用来保持线路及各层之间的绝缘性,俗称为基材。
- 孔(Through hole / via):导通孔可使两层次以上的线路彼此导通,较大的导通孔则做为零件插件用,另外有非导通孔(nPTH)通常用来作为表面贴装定位,组装时固定螺丝用。
- 防焊油墨(Solder resistant / Solder Mask):并非全部的铜面都要吃锡上零件,因此非吃锡的区域,会印一层隔绝铜面吃锡的物质(通常为环氧树脂),避免非吃锡的线路间短路。根据不同的工艺,分为绿油、红油、蓝油。
- 丝印(Legend /Marking/Silk screen):此为非必要之构成,主要的功能是在电路板上标注各零件的名称、位置框,方便组装后维修及辨识用。
- 表面处理(Surface Finish):由于铜面在一般环境中,很容易氧化,导致无法上锡(焊锡性不良),因此会在要吃锡的铜面上进行保护。保护的方式有喷锡(HASL),化金(ENIG),化银(ImmersionSilver),化锡(ImmersionTIn),有机保焊剂(OSP)方法各有优缺点,统称为表面处理。
印刷电路板的分类
2.2 存储芯片
ROM
ROM全称Read Only Menory ,顾名思义,它是一种只能读出事先所存的数据的固态半导体存储器。ROM中所存数据稳定,一旦存储数据就再也无法将之改变或者删除,断电后所存数据也不会消失。其结构简单,因而常用于存储各种固化程序和数据。
RAM
RAM又称随机存取存储器,存储单元的内容可按照需要随机取出或存入,且存取的速度与存储单元的位置无关。这种存储器在断电时,将丢失其存储内容,所以主要用于存储短时间使用的程序。
Flash
Flash存储器(FLASH EEPROM)又称闪存,快闪。它是EEPROM的一 种。它结合了ROM和RAM的长处。不仅具备电子可擦除可编辑( EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据。它于EEPROM的最大区别是,FLASH按扇区(block)操作,而EEPROM按照字节操作。FLASH的电 路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因此适合用于做程序存储器。
2.2.1 ROM的种类
ROM(不可擦写);PROM、EPROM、EEPROM、快闪存储器(Flash Memory)(可擦写)
ROM芯片示例
2.2.2 RAM的种类
- 静态随机存储器SRAM:
以触发器为基本存储单元,所以只要不掉电,其所存信息就不会丢失。该类芯片的集成度不如DRAM,功耗也比DRAM高,但它的速度比DRAM快,也不需要刷新电路。一般用于构成高速缓冲存储器 - 动态随机存储器DRAM:
一般用MOS型动态存储单元构成,结构简单,集成度高。但是,如果不及时进行刷新,极间电容中的电荷会在很短时间内自然泄
漏,致使信息丢失。所以,必须为它配备专门门的刷新电路。
RAM芯片示例
2.2.3 Flash种类
NOR Flash
- CFI Flash
- SPI Flash
NAND Flash
- MLC Flash
- SLC Flash
- TLC Flash
- TFNAND
- EMMC
NOR Flash
NOR Flash的读取和我们常见的SDRAM 的读取是类似,用户可以直接运行装载在NOR FLASH 里面的代码,这样可以减少SRAM的容量从而节约成本。NOR的特点是芯片内执行( XIP,eXecute In Place ),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是其很低的写入和擦除速度大大影响了它的性能。
NOR flash分为串行传输和并行传输。
NOR Flash和CPU的接口属于典型的类SRAM接口,不需要增加额外的控制电路。NOR Flash的特点是可芯片内执行(eXecute In Place,XIP ),程序可以直接在NOR内运行
CFI
公共闪存接口( Common Flash Interface ,CFI )是一个从NOR Flash器件中读取数据的公开、标准接口。它可以使系统软件查询已安装的Flash器件的各种参数,包括器件阵列结构参数、电气和时间参数以及器件支持的功能等
CFI接口,也被称为parallel接口,并行接口;另外,CFI接口是JEDEC定义的,所以,有的又成CFI接口为JEDEC接口。
简单理解为:对于Nor Flash来说,CFI接口=JEDEC接口=Paralle1接口=并行接口
SPI Flash
SPI Flash : serial peripheral interface串行外围设备接口,是一种常见的时钟同步串行通信接口。有4线(时钟,两个数据线,片选线)或者3线(时钟,两个数据线)通信接口,由于它有两个数据线能实现全双工通信,读写速度上较快。拥有独立的数据总线和地址总线,能快速随机读取,允许系统直接从Flash中读取代码执行;可以单字节或单字编程,但不能单字节擦除,必须以Sector为单位或对整片执行擦除操作,在对存储器进行重新编程之前需要对Sector或整片进行预编程和擦除操作。
NAND Flash
- SLC Single-Level Cell,意味着每个存储单元只存放1bit讯息,靠浮置闸里电子捕获状态的有或无来输出成数据(即使在0的状态浮置闸里其实还是有电子,但不多),也就是最简单的0与1
- MLC Multi-Level Cell ,意味着每个存储单元可存放2bit讯息,浮置闸里电子的量会分为高、中、低与无四种状态,转换为二进制后变成00、01、 10、 11
- TLC Triple-Level Cell ,更进一步将浮置闸里的电子捕获状态分成八种,换算成二进制的000、 001、 010、 011、 100、 101、110、 111 ,也就是3bit
NAND Flash接口
- I/0总线:地址、指令和数据通过这组总线传输,一般为8位或16位。
- 芯片启动( Chip Enable , CE# ) : 如果没有检测到CE信号,NAND器件就保持待机模式,不对任何控制信号做出响应。
- 写使能( Write Enable ,WE# ) : WE#负责将数据、地址或指令写入NAND之中。
- 读使能(ReadEnable,RE#):RE#允许数据输出。
- 指令锁存使能( Command Latch Enable , CLE ) :当CLE为高电平时,在WE#信号的上升沿,指令将被锁存到NAND指令寄存器中。
- 地址锁存使能( Address Latch Enable , ALE ) :当ALE为高电平时,在WE#信号的上升沿,地址将被锁存到NAND地址寄存器中。
- 就绪/忙( Ready/Busy , R/B# ) : 如果NAND器件忙, R/B#信号将变为低电平。该信号是漏极开路,需要采用上拉电阻。
SLC/MLC/TLC比较
EMMC
EMMC是embedded MultiMediaCard的简称。 MultiMediaCard,即MMC,是一种闪存卡(Flash Memory Card)标准,它定义了MMC的架构以及访问Flash Memory的接口和协议。而eMMC则是对MMC的一个拓展,以满足更高标准的性能、成本、体积、稳定、易用等的需求。
EMMC内部分为:Flash Memory、Flash Controller、Host Interface
EMMC-Flash Memory
Flash Memory是一种非易失性的存储器,通常在嵌入式系统中用于存放系统、应用和数据等,类似与PC系统中的硬盘。
EMMC-Flash Controller
NAND Flash直接接入Host时,Host端通常需要有NAND Flash Translation Layer,即NFTL或者NAND Flash文件 系统来做坏块管
理、ECC等的功能。
EMMC-Host Interface
eMMC与Host之间的连接如下图所示:
2.2.4 芯片识别网站
- https://www.21icsearch.com
- https://www.datasheets.com/zh-cn
- https://www.datasheetlocator.com/zh-cn
- https://www.datasheet-pdf.com
- https://www.ifixit.com
- https://fccid.io
2.3 模块
蓝牙模块是一种集成蓝牙功能的PCBA板,主要用于无线网络通讯,按功能可分为蓝牙数据模块(HY-40R201P、HY- 40R204P)和蓝牙语音模块
- 医疗领域:低周波按摩器、温度计、血压计、电子秤等
- 体育领域:智能穿戴设备、运动器材、心率监测仪器等
- 工业领域:物料跟踪、资产管理等
- 智能家居领域:智能锁、窗帘、小电器等
- 其它领域:信标、胎压监测、移动支付等
0x02 物联网通信接口调试
1. 常见通信接口
1.1 通信接口
通信接口是指微型计算机系统与其他系统直接进行数字通信的接口电路。通常分串行通信接口和并行通信接口两种,即串口和并口。
1.2 异步/同步通信
同步通信
异步通信
1.3 基本概念
波特率:每秒传送的二进制位数
国际上规定了一个标准波特率系列:110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、28.8Kbps、33.6Kbps、56Kbps
发送/接收时钟
波特率因子
在波特率指定后,输入移位寄存器/输出移位寄存器在接收时钟/发送时钟控制下,按指定的波特率速度进行移位
2. UART接口
2.1 UART
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,通常称作UART) 是一种串行异步收发协议,应用十分广泛。UART工作原理是将数据的二进制位一位一位的进行传输。
2.2 UART原理
- 第一设备的UART发送引脚连接到第二设备的接收引脚,接收引脚连接到发送引脚
- UART 是一种异步串行传输,所以它不使用时钟,使用波特率进行预定速度传输数据
空闲位、起始位、数据位、奇偶校验位、中止位
2.3 现实中的UART接口
2.4 电脑设备如何使用UART通信接口
硬件设备:TTL转USB
软件工具:minicom / SecureCRT
使用minicom连接UART接口
使用Secure CRT连接UART接口
3. JTAG接口
3.1 JTAG
JTAG(Joint Test Action Group,联合测试工作组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
SWD是ARM公司提出的另一种调试接口,相对于JTAG接口,使用更少的信号。
3.2 JTAG接口信号
标准的JATG接口定义了以下一些信号管脚:
TMS:测试模式选择信号,输入,IEEE 1149.1标准强制要求
TCK:测试时钟信号,输入,IEEE 1149.1标准强制要求
TDI:测试数据输入信号,输入,IEEE 1149.1标准强制要求
TDO:测试数据输出信号,输出,IEEE 1149.1标准强制要求
TRST:内部TAP控制器复位信号,输入,IEEE 1149.1标准不强制要求,因为通过TMS也可以对TAP Controller进行复位
STAG:时钟返回信号,IEEE 1149.1标准不强制要求
DBGRQ:目标板上工作状态的控制信号,IEEE 1149.1标准不强制要求
3.2 TAP
TAP(Test Access Port)(测试访问端口)的缩写,是芯片内部一个通用的端口,通过TAP可以访问芯片提供的所有数据寄存器(DR)和指令寄存器(IR),对整个TAP的控制是通过TAP控制器(TAP Controller)完成的。
TAP控制器有16个同步状态,TAP控制器作为一个被TMS信号控制转换的状态机,控制着JTAG系统的行为
TAP状态机
3.3 JTAG接口指令集
JTAG接口指令集包含以下常用指令:
EXTEST指令、SAMPLE/PRELOAD指令、BYPASS指令、IDCODE指令
3.4 现实中的JTAG接口
3.5 JTAG接口调试
软件工具:st-link / J-Link Commander(jLink)
硬件设备:J-Link / ST-Link等
注:J-Link具有下载和调试功能,而ST-Link仅有下载功能。
0x03 物联网硬件渗透测试流程
1. 工具准备
1.1 硬件准备
万用表、硬件拆解套装
USB转串口转换器:Shikra,CP2102等
JTAG接口转换器:Shikra,JTAGulator等
逻辑分析仪:Saleae Logic等
等等
2. 物联网硬件渗透测试
2.1 物联网硬件渗透测试
- 设备的外部和内部分析
- 信息收集和侦查
- 确定通信接口
- 利用硬件通信技术获取数据
- 硬件后门
2.2 物联网硬件渗透测试-设备的外部和内部分析
- 设备的各种接口,例如USB端口,SD卡插槽或以太网端口等
- 设备的供电方式,例如电池,PPoE或适配器供电等
- 设备上的标签信息
2.3 物联网硬件渗透测试-信息收集和侦查
- 设备基于什么开发:例如8051,PLC等
- 设备运行的操作系统,例如Arm-Linux,嵌入式Linux,Windows CE等
- 设备支持哪些外设,例如AFE,ADC/DAC ,USB,CAN总线等
- 设备使用的芯片组,例如cortex-M0,FPGA,ARM9等
- 设备中使用的存储和内存的详细信息,例如AT24C02、FM24C02等
- 设备的任何其他相关技术信息,例如设备上市时间等等
2.4 物联网硬件渗透测试-确定通信接口
2.5 物联网硬件渗透测试-利用硬件通信技术获取数据
JTAG:
UART:
2.6 物联网硬件渗透测试-硬件后门
不同厂商可能使用相同的芯片,如果硬件出现漏洞,影响范围通常会非常大。