物联网安全 – 15 硬件攻击面:SPI

admin 2023年10月31日08:52:30评论6 views字数 5026阅读16分45秒阅读模式

本博客是物联网安全系列的一部分,我们将讨论有关物联网/工业物联网生态系统及其安全性的基本概念。如果你还没有看过该系列的前几篇博客,我会敦促你先看一遍。如果您只对硬件SPI感兴趣,请随时继续。

目录

物联网安全-物联网介绍及其架构

物联网安全-2.物联网攻击面

物联网安全3.物联网10大安全漏洞

物联网安全-4.低功耗蓝牙BLE

物联网安全-5.ZigBee协议物联网安全-6.ZigBee安全物联网安全-7.物联网固件逆向

物联网安全-8.软件无线电(Software Defined Radio,SDR)简介

物联网安全-9.软件无线电简介(Software Defined Radio,SDR):软件部分

物联网安全 – 10.MQTT 协议和安全简介

物联网安全 – 11 CoAP 协议和安全简介

物联网安全 – 12.MQTT 代理安全

物联网安全-13 硬件分析简

物联网安全 - 14 硬件调试端口指南:概述和识别

介绍

物联网产品生态系统包括硬件设备、固件、网络、通信协议、网络、移动、云应用程序,并且随着物联网市场的增长,生态系统呈指数级增长。
它包含广泛的攻击面。若要更好地了解 IoT 攻击面,可以参考 IoT 安全 - 第 2 部分(101 - IoT 攻击面)。嵌入式设备在硬件级别具有许多通信协议,使微处理器/微控制器能够与其外围组件进行通信。本博客将讨论其中一种硬件通信协议,即串行外设接口(SPI)。如果您是硬件黑客的初学者,并希望从基础水平开始,请继续关注,您来对地方了。

SPI是一种同步串行通信接口。它主要设计用于在位于同一PCB(印刷电路板)上的组件之间进行通信(传输数据)。它是由摩托罗拉开发的。它提供全双工通信模式(即发送方和接收方可以同时发送和接收数据)。它具有主从架构,支持单个主站和多个从站。它是一个 4 线串行接口。
它由以下四个逻辑信号组成:

  • MOSI(主输出 -> 从输入) – 主设备将数据输出到从设备。
  • SDO、DO、DOUT、SO – 这些是主设备上连接到从设备上的 MOSI 引脚的 MOSI 引脚的不同名称。
  • SDI、DI、DIN、SI – 这些是连接到主设备上的 MOSI 引脚的从设备上的 MOSI 引脚的不同名称。
  • MISO(主输入<-从输出) – 从输出将数据输出到主设备。
  • SDO、DO、DOUT、SO – 这些是连接到主设备上的 MISO 引脚的从设备上的 MISO 引脚的不同名称。
  • SDI、DI、DIN、SI – 这些是连接到从设备上的MISO引脚的主设备上MISO引脚的不同名称。
  • SS (Slave Select/Chip Select) – 主站输出。主设备使用此信号来选择从设备。
  • SCLK (串行时钟) – 来自主机的输出。为了开始与从机通信,主机配置并发送时钟信号。它还提供主站和从站之间的数据传输速度。

SPI 支持 4 种基本工作模式:

SPI模式 时钟极性 (CPOL/CKP) 时钟相位 (CPHA/CKE)
模式 0 0 0
模式 1 0 1
模式 2 1 0
模式 3 1 1

并非所有SPI器件都支持所有这些模式。不同的 SPI 器件可以在逻辑 0 或逻辑 1 上工作。它们可能具有不同的数据锁存机制。例如,它们可能支持在上升沿或下降沿锁存数据;有些可能支持低或高作为空闲状态。因此,拥有这些不同的SPI模式为不同类型的设备提供了执行SPI通信的灵活性。任何SPI器件支持的模式都可以在其各自的数据手册中找到。
这些模式的工作方式类似,但与SCK时钟边沿的时序关系不同。时序图显示了具有时钟极性(CPOL/CKP)和时钟相位(CPHA/CKE)的不同模式。(来源 - 维基百科页面
)

物联网安全 –  15  硬件攻击面:SPI

根据用于通信的模式,主机配置时钟极性和时钟相位。

  • 如果 CPOL/CKP = 0 :时钟在 0 时空闲。前缘是上升沿,后缘是下降沿。
  • 如果 CPOL/CKP = 1:时钟在 1 时空闲。前缘是下降的,后缘是上升的。
  • 如果CPHA/CKE = 0:SDO在前一个时钟周期的后沿移动数据,SDI在上升沿对数据进行采样。
  • 如果CPHA/CKE = 1:SDO在当前时钟周期的前缘移动数据,SDI在下降沿对数据进行采样。

此外,CPOL和CPHA的组合提供了不同的SPI通信模式。
下图描述了主器件和从器件之间的高级SPI通信。

物联网安全 –  15  硬件攻击面:SPI

  1. 主设备通过在 CS 信号上发送逻辑 0 来选择从设备。(CS 为低电平有效)
  2. 主站发送时钟信号
  3. 主站通过MOSI线发送数据/命令,从站读取数据/命令
  4. 从站向MISO线发送数据/响应,由主站读取

涉及两个移位寄存器,给定的字大小通常为 8 位,尽管其他字大小也很常见。一个移位寄存器存在于主机中,另一个移位寄存器存在于从机中。它们形成一个芯片间的圆形缓冲器。数据的最高有效字节 (MSB) 通常首先移出。它的详细说明可在维基百科页面上找到。

可能的攻击场景

在嵌入式设备中,SPI 协议用于与设备上的各种外设进行通信。它可以是传感器、控制设备、LCD、SD卡、EEPROM、闪存等。如果攻击者可以访问设备硬件,则他可能会发现 SPI 设备是硬件上的攻击面。

  • 嗅探SPI设备(如传感器、控制设备、存储芯片等)与控制器/处理器之间的通信。这可能会导致攻击者窃取/泄露敏感信息。例如,在一些嵌入式设备中,SPI EEPROM用于存储敏感信息、密钥、日志等。如果攻击者嗅探EEPROM和控制器/处理器之间的SPI通信,则可能会泄露此敏感信息。获取此敏感信息后,如果硬件供应商在生产中的所有硬件中使用了相同的敏感信息(如相同的密钥),攻击者可能会以多种方式进行破坏,并且可能会造成大规模破坏。
  • 从SPI存储芯片中提取固件/敏感信息。一些嵌入式设备使用 SPI 闪存将固件存储在其中。已经有工具/方法可用于读取NAND/NOR SPI/并行闪存。攻击者可以读取闪存并从中提取固件。可以进一步对固件进行逆向工程,并分析潜在的漏洞或克隆。如果固件不受保护,则 IP 很容易被盗。如果芯片包含配置或其他敏感数据(而不是固件),则提取和分析可能会导致发现新的漏洞,如上文所述。
  • 修补SPI闪存芯片中的固件。在这种情况下,如果设备上的固件未得到安全管理,攻击者可以使用后门修补固件,并使用恶意固件对 SPI 闪存进行重新编程。

物联网安全 –  15  硬件攻击面:SPI

通过 SPI 攻击硬件

攻击者可以通过多种方式通过 SPI 攻击硬件。以下部分介绍了执行攻击的几种方法。

侦察

情况 1:您没有实际的硬件,但您知道设备的 FCCID 编号。
转到 FCCID web网站,搜索设备的 FCCID 编号。如果正确,您将找到有关设备的所有内部图像和详细的内部外部信息。看到内部图像,您可能会得到硬件上 SPI 芯片的提示。是的!!一旦您知道您获得了攻击面,您就可以获取/购买该设备并执行进一步的必要步骤来攻击该设备。
例如,我们查找了 Wink 集线器设备,我们能够找到设备的 FCCID 号并对其进行搜索。我们在这里找到了它的详细内部图像。发现该器件包含一个 SPI 闪存,如下图所示。

物联网安全 –  15  硬件攻击面:SPI

瞧!!我们在设备上发现了一个 SPI 芯片。让我们走吧,获取和攻击

案例 2:您可以访问硬件。
找到设备的硬件后,第一步应该是执行侦察。检查每个芯片,印刷电路板(PCB)上的测试点。您可以在此处阅读有关硬件侦察的更多信息。

  • 如果成功识别出器件上使用的SPI芯片,请在互联网上搜索其数据表,识别给出的引脚图,并在PCB上跟踪这些引脚。使用万用表检查控制器的SPI引脚与PCB上的测试点之间的连续性。例如,我们在这里展示的是EXPLIoT DIVA板的图像。

物联网安全 –  15  硬件攻击面:SPI

它在PCB上包含一些芯片。我们在谷歌上搜索了每个芯片的数据表,发现其中一个表示为 U2 的芯片是 SPI EEPROM 25LC256 找到芯片
后,下一个任务是确定芯片的SPI引脚(MISO、MOSI、SCK、CS)是否连接到PCB上的某些点。
获取 25LC256 的数据表, 我们确定了芯片的相应引脚,如下图所示(来源 – 25LC256 数据表
)

物联网安全 –  15  硬件攻击面:SPI

使用万用表,我们检查了这些SPI引脚与PCB上其他引脚的连接性。我们发现 J5 接头上的引脚(如下图所示)连接到这些 SPI 引脚。

物联网安全 –  15  硬件攻击面:SPI

是的!!我们现在可以使用这些引脚来嗅探、提取和攻击设备

嗅探 SPI 通信

现在,一旦成功识别了硬件上的SPI引脚,我们就可以继续嗅探SPI芯片和控制器之间的通信。
像[逻辑分析仪]这样的工具可用于嗅探SPI总线上的通信。

物联网安全 –  15  硬件攻击面:SPI

逻辑分析仪显示所有四个SPI引脚(即MISO)上的信号。MOSI, CLK, CS. 根据协议时序图解码这些信号。Saleae Logic Analyzer、PulseView 等软件具有检测这些协议的功能,可直接向您显示解码数据与信号的关系。
是的!!如果数据传输是纯文本的,我们可以嗅探并获取它。

从SPI存储芯片中提取数据/固件。

为了与硬件上的SPI芯片进行通信,我们需要支持SPI协议和框架的协议适配器工具,以便在没有主机的情况下与这些芯片进行通信。(有时,我们还需要将闪存芯片从硬件上拆焊,将其焊接在性能板上或将其放入合适的 TSOP 插座中,并将回复引脚连接到适配器。
有各种工具和框架可用于从内存芯片中提取数据。下面提到了其中的一些。

  1. EXPLIoT 纳米
  2. 巴士海盗
  3. 希克拉
  4. CH341A型
  5. EXPLIoT框架
  6. 闪光灯
  7. pyspiflash(皮斯皮闪光灯)
  8. pyftdi
  9. 也可以使用 RaspberryPi(参考此处)或 Beaglebone(参考此处)。

根据我们拥有的存储芯片类型,如EEPROM或FLASH以及这些设备中的任何一个的相应支持,我们可以选择一组工具来提取日期/固件。首先,我们需要确保这些工具是否支持我们拥有的SPI芯片。如果它受支持并且电压电平匹配,我们将继续使用该工具或框架。如果适配器工具和SPI芯片的电压电平不匹配,请使用电平转换器。

案例 1:您成功找到了可以支持 SPI 存储芯片的工具或框架 假设我们在相机的硬件中找到了一个 SPI 闪存,并且我们想从芯片
中提取固件。我们的方法如下所述。

  1. 取出SPI闪存的数据表。确定所需的引脚和电压。
  2. 因此,选择可以使用的适配器工具。将 SPI 闪存的引脚连接到合适的适配器,例如,EXPLIoT Nano 根据其数据表/引脚分配手册。连接图像如下所示。

物联网安全 –  15  硬件攻击面:SPI

  1. 然后,在主机中,安装已使用的适配器支持的框架。例如,EXPLIoT Nano 与 EXPLIoT 框架一起工作,我们设置了这个框架并使用其插件从闪存中提取固件。示例图像如下所示。run spi.generic.readflash -w camera_dump.bin

物联网安全 –  15  硬件攻击面:SPI

同样,其他合适的工具和框架可用于从SPI存储器芯片转储数据/固件。

情况 2:您找不到任何可以支持 SPI 存储芯片
的工具/框架 在这种情况下,硬件设置步骤将与上述步骤相同。使用任何基于FTDI232H的适配器,匹配SPI芯片和适配器的电压电平。按照适配器和芯片的用户手册/数据表进行连接。

在这种情况下,您需要编写框架,或者甚至可以将当前不支持的闪存芯片添加到您选择的任何开源框架中。
因此,为此,您首先需要仔细阅读SPI存储芯片的数据表。数据表包含编写脚本以从存储芯片读取/写入数据所需的所有详细信息。例如,SPI闪存W25Q256JV,让我们看一下它的数据表。它提供了读取、写入和执行其他操作所需的详细说明和命令。
下图来自W25Q256JV数据表,显示了读取数据指令图。

物联网安全 –  15  硬件攻击面:SPI

同样,下图显示了 SPI 写入指令。

物联网安全 –  15  硬件攻击面:SPI

因此,按照SPI存储芯片数据表的说明,可以编写一个脚本来转储或编程芯片。也可以使用 Raspberry Pi 或 beaglebone 来完成。我们将在以后的博客中通过真实示例场景、我们在处理特定 SPI 芯片时面临的各种问题以及如何解决这些问题来发布详细的 SPI 内存提取。所以,请继续关注

可以缓解攻击的措施

  • 对存储芯片上的数据进行加密,防止敏感信息泄露。
  • 不要在内存芯片上对敏感数据进行硬编码。
  • 存储加密的固件/数据
  • 芯片的物理硬化和保护 还有一些基于加密的存储芯片
    ,如 ATAES132A 和 Microchip 网站上提供的其他一些芯片。他们的数据表声称提供身份验证和加密功能;安全的读/写访问。使用基于加密的内存芯片会增加攻击者窃取数据的复杂性。

结论

在这篇博客中,我们了解了 SPI 协议、其应用、攻击场景的可能性、攻击方法以及一些预防措施。我们希望您喜欢并从中获得一些有价值的信息。这些工具和攻击方法可以让你对在设备硬件上找到 SPI 芯片时该怎么做有一个基本的了解。有了这个,我们希望很快,你会说,“瞧!!我在硬件中发现了一个攻击面,让我们攻击”。

原文始发于微信公众号(安全狗的自我修养):物联网安全 – 15 硬件攻击面:SPI

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月31日08:52:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   物联网安全 – 15 硬件攻击面:SPIhttps://cn-sec.com/archives/2161937.html

发表评论

匿名网友 填写信息