物联网安全 - 16 硬件攻击面 - I2C

admin 2024年2月15日20:04:05评论18 views字数 5300阅读17分40秒阅读模式

在前一篇中,我们已经讨论了SPI协议。本章将讨论另一种硬件通信协议,即Inter-Integrated Circuit(I2C)。因此,如果您是硬件黑客的初学者,想要从基础开始,您来对地方了。

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

物联网安全-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 硬件调试端口指南:概述和识别

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

  1. 介绍 I2C是一种同步串行通信接口。它主要用于短距离板内通信。它由飞利浦半导体(现在是NXP半导体)开发。它提供了半双工通信模式(即发送方和接收方可以依次传输/接收数据,而不是同时)。它具有支持多个主机和多个从机的主从架构。它是一种2线串行接口。它由两个双向开集线器组成(即,设备可以将各自的线拉低,但不能将其拉高。因此,这避免了当一个设备试图将线拉高,而另一个设备试图将其拉低时的任何冲突。),通过电阻上拉(当线没有被任何设备拉低时,它将保持高电平):• 串行时钟(SCL) • 串行数据(SDA) 它支持不同的双向速度模式,包括100 kbit/s标准模式,400 kbit/s快速模式,1 Mbit/s快速模式增强版,3.4 Mbit/s高速模式,以及单向5 Mbit/s超快模式(这些比特率不包括任何时钟拉伸或其他开销)。同一总线上可以同时存在多个主机。I2C总线有两个节点:• 主节点 - • 该节点生成时钟并与从机开始通信。• 从节点 - • 如果被主节点寻址,它将接收时钟并与主节点通信。连接到I2C总线的每个设备都有唯一的地址。总线上的节点数量由地址空间和总线的总电容确定,即400 pF(来源 - 维基百科)。它具有7位或10位地址空间。在后续的内容中,我们将针对7位地址空间进行讨论。在7位地址中,可以连接到I2C总线的最大设备数量为128。除数据位外,I2C还具有指示主节点和从节点之间通信的开始和结束的START和STOP位。

下面的图片显示了I2C的一般连接图示(来源 - 这里)。

物联网安全 - 16 硬件攻击面 - I2C

  1. 主节点通过发送START位(当SCL为高电平时,SDA线被拉低,然后SCL被拉低)来启动通信,然后发送要与之通信的从节点的7位/10位地址,随后是1位指示是否要写入(0)或从(1)从节点读取的位。

  2. 如果从节点存在,它会用一个应答位ACK来响应主节点。

  3. 然后,根据读取或写入操作,主节点继续传输或接收,从节点以互补的方式操作,即分别接收或传输。传输的数据帧大小为8位。数据字节的最高有效位(MSB)首先传输。在传输过程中,数据在SCL被拉低后被放在SDA线上。在SCLK的高电平期间,SDA线上的数据应保持稳定。SDA线的高电平或低电平状态仅在SCL线为低电平时发生变化。

    • 在写入操作的情况下,主节点重复传输数据,从节点在接收每个数据字节后发送ACK位。

    • 在读取操作的情况下,主节点重复接收从节点的数据,并在接收每个字节后发送ACK位,除了最后一个字节。

    • 此事务可以包含多个消息。在I2C协议的组合格式中,主节点必须执行多次读取或写入一个或多个从节点,而不是发送STOP位时,主节点发送另一个START位来保留总线的控制权以进行另一条消息。这称为重复的START位。

  4. 如果要结束事务,主节点通过发送STOP位来终止它(在SCL被设置为高电平后,SDA线被设置为高电平)。

下面的图示显示了I2C总线上的位传输(来源 - 标准文档)。

物联网安全 - 16 硬件攻击面 - I2C

下面的图示显示了I2C总线上的START和STOP条件(来源 - 标准文档)。

物联网安全 - 16 硬件攻击面 - I2C

下面的图示显示了I2C总线上的数据传输(来源 - 标准文档)。

物联网安全 - 16 硬件攻击面 - I2C

如果从节点由于参与某些内部中断处理等其他过程而无法传输或接收另一个数据字节,它可以将SCL线保持低电平,以使主节点处于等待状态。当从节点准备好接收/传输另一个字节时,它释放SCL线,数据传输继续进行。接收方在每个接收的字节上发送应答位。ACK位(即,在传输8位数据后的第9个时钟周期中,接收方将SDA线拉低)向发送方确认数据已成功接收,随后的数据可以被传输。在以下五种情况下,当:

  1. 总线上没有接收方具有已传输的地址

  2. 接收方正忙于执行某些实时功能

  3. 接收方接收到它不理解的数据或命令

  4. 接收方无法再接收更多数据字节

  5. 主接收方必须向接收方发送传输结束信号 在这些情况下,发送方不会收到应答信号NACK(即,在第9个时钟脉冲期间,SDA线保持高电平)。然后,主节点可以发送STOP信号以结束传输,或者发送重复的START信号以开始新的传输。I2C协议包括冲突检测和仲裁,以防止数据损坏的情况发生,即多个主机同时开始数据传输。时钟同步和仲裁用于决定哪个主机将控制总线,并在多个主机同时在同一总线上开始传输时完成传输。在单主机系统的情况下,这不是必需的。关于时钟同步和仲裁的详细工作可以从标准文档中了解。I2C协议的另一个重要特点是时钟拉伸。有些情况下,主节点正在与其通信的从节点未准备好执行下一个与主节点的事务。这可能是因为从节点侧的先前操作尚未完成。在这种情况下,从节点可以执行时钟拉伸,即从节点在接收和确认字节后可以将SCL线保持低电平,使主节点等待,直到从节点将SCL线拉高。I2C协议有许多应用,用于与传感器、执行器、存储芯片、显示器、实时时钟、数字调谐、信号处理电路等控制器通信。如果对手能够访问设备的硬件部分,如果没有正确实施,I2C总线可以被多种方式利用。在本篇的后续部分,我们将讨论攻击案例和方法。攻击方法将与我们在本系列的前一篇中讨论的内容非常相似。

  6. 可能的攻击场景 • 监听I2C设备(如传感器、控制设备、存储芯片、ADC、DAC等)与控制器/处理器之间的通信。攻击者可能通过这种方式窃取或泄露敏感信息。正如在前一章中讨论的那样,例如,在某些嵌入式设备中,使用I2C EEPROM存储一些敏感信息、密钥、日志等。如果攻击者监视EEPROM与控制器/处理器之间的通信,这些敏感信息可能会泄漏。在获取了这些敏感信息后,攻击者可以以多种方式对其进行损害,如果硬件供应商在生产中使用了相同的敏感信息,如相同的密钥,那么损害可能会规模较大。• 对基于I2C的存储芯片、传感器或任何受控设备中的数据进行篡改。在这种情况下,如果设备上的数据未受到安全管理,攻击者可以操纵数据。这可能导致设备发生故障。根据应用程序,传感器数据的操纵可能对系统造成重大损害。• 还有与时钟故障相关的攻击,比如修改I2C时钟信号的频率。参考这篇研究论文(PDF) Hardware Attacks on Mobile Robots: I2C Clock Attacking (researchgate.net),以深入了解与I2C相关的攻击。

  7. 通过I2C攻击硬件 攻击者可以通过多种方式通过I2C攻击硬件。下面的部分解释了执行攻击的一些方法,与前一章中解释的方法类似。3.1 侦察 情况1:您没有实际的硬件,但您知道设备的FCCID号码。前往FCCID网站,搜索设备的FCCID号码。如果正确,您将找到有关设备的所有内部图像和详细的内部和外部信息。查看内部图像,您可能会得到有关硬件上是否存在I2C芯片或任何基于I2C的设备的提示。一旦您知道攻击表面,您可以获取/购买该设备并执行进一步所需的攻击步骤。情况2:您已获得对硬件的访问权限。一旦找到设备的硬件,第一步应该是拆解设备并进行侦察。检查印刷电路板(PCB)上的每个芯片,测试点,看看是否可以访问I2C总线。

  8. 如果成功识别了设备上使用的I2C芯片,可以在互联网上搜索其数据手册,识别给出的引脚图,并在PCB上跟踪这些引脚。使用万用表检查控制器的I2C引脚与PCB上的测试点之间的连通性。例如,我们在下面展示了EXPLIoT DIVA板的图像,这个板在我们以前的章节中也有使用过。

  9. 物联网安全 - 16 硬件攻击面 - I2C

    它的PCB上包含了一些芯片。我们通过Google搜索每个芯片的数据手册,发现其中一个芯片标记为U1,是一个I2C EEPROM 24LC256。找到芯片后,下一个任务是确定芯片的I2C引脚(SDA、SCL)是否连接到PCB上的某些点上。获取24LC256的数据手册后,我们确定了芯片的相应引脚,如下图所示(来源 - 25LC256数据手册)。

  10. 物联网安全 - 16 硬件攻击面 - I2C

  11. 使用万用表,我们检查了这些I2C引脚与PCB上其他引脚的连通性。我们发现图中的J5连接器上的引脚与这些I2C引脚相连,如下图所示。

  12. 物联网安全 - 16 硬件攻击面 - I2C

  13. 非常感谢您的好意!EXPLIoT的Bus Auditor工具听起来非常有用,可以用于扫描和识别硬件板上暴露的调试和通信接口。对于I2C的演示示例,我建议查看相关博客文章。现在,一旦成功识别了硬件上的I2C引脚,我们可以继续监视I2C芯片和控制器之间的通信。类似Logic Analyzer这样的工具可以用于监视I2C总线上的通信。

  14. 物联网安全 - 16 硬件攻击面 - I2C

  15. 使用逻辑分析仪可以显示I2C的SDA和SCL线上的信号。根据协议的时序图来解码这些信号。软件如Saleae Logic Analyzer、PulseView等具有检测这些协议的功能,可以直接显示有关信号的解码数据。

  16. 3.3 从I2C存储芯片中提取数据。要与硬件上的I2C芯片通信,我们需要支持I2C协议的协议适配器工具以及一个可以使通信这些芯片在没有主机机器的情况下变得可行的框架。(有时,我们还需要从硬件上焊下存储芯片,将其焊接到性能板上或放入适当的TSOP插座中,并连接所需的引脚到适配器。) 与前一章中讨论的类似,有各种工具和框架可用于从存储芯片中提取数据。以下是其中一些:

  17. EXPLIoT Nano

  18. Bus Pirate

  19. Shikra

  20. CH341A

  21. EXPLIoT Framework

  22. pyi2cflash

  23. 树莓派(参见这里)或贝叶斯(参见这里)也可以使用。在选择适合您需求的工具和框架后,检查工具的电压水平和芯片。如果适配器工具和I2C芯片的电压水平不匹配,请使用电平转换器。情况1:您成功找到了可以支持您的I2C存储芯片的工具和框架 在找到设备上的I2C芯片后,我们的方法如下所述:

  24. 取出I2C芯片的数据手册。识别所需的引脚和电压。

  25. 相应地,选择可以使用的协议适配器工具。按照其数据手册/引脚分布手册,将芯片的引脚连接到适当的协议适配器,例如EXPLIoT Nano。连接图像如下所示。

  26. 物联网安全 - 16 硬件攻击面 - I2C

    然后,在您的主机上,安装适配器支持的框架。例如,EXPLIoT Nano与EXPLIoT Framework一起工作,我们设置了这个框架,并使用其插件运行i2c.generic.readeeprom -c <芯片名称> -w <文件名> 来从闪存中提取固件。下面显示了一个示例图像。

  27. 物联网安全 - 16 硬件攻击面 - I2C

  28. EXPLIoT Framework还支持对这些I2C存储芯片进行补丁。它具有用于写入这些芯片的插件,运行i2c.generic.writeeeprom -c <芯片名称> -r <patched_filename>。类似地,可以使用适当的其他工具和框架来从I2C存储芯片中转储/补丁数据。情况2:您找不到任何可以支持您的I2C存储芯片的工具/框架 在这种情况下,硬件设置步骤与上述情况相同。选择任何基于FTDI232H的适配器,匹配I2C芯片和适配器的电压水平。根据适配器和芯片的用户手册/数据手册进行连接。在这种情况下,您需要编写自己的框架,或者甚至可以将目前不支持的芯片添加到您选择的任何开源框架中。因此,为此,您首先需要仔细阅读I2C存储芯片的数据手册。数据手册包含编写脚本以从/向存储芯片读取/写入数据所需的所有详细信息。例如,对于I2C存储芯片24LC256,让我们瞥一眼它的数据手册。它提供了读取、写入和执行其他操作所需的详细说明。下面的图像来自24LC256数据手册,显示了该芯片中使用的设备寻址方法。

  29. 物联网安全 - 16 硬件攻击面 - I2C

    同样,下面的图像显示了该芯片中的I2C写操作。

  30. 物联网安全 - 16 硬件攻击面 - I2C

    因此,通过遵循I2C存储芯片的数据手册说明,可以编写一个脚本来转储或编程这些芯片。有些措施可以使攻击者难以攻击:• 对存储芯片上的数据进行加密,以防止敏感信息泄漏。• 不要在存储芯片上硬编码敏感数据。• 存储加密数据。• 对芯片进行物理强化和保护。• 防止时钟故障攻击,如本章所讨论的。• 还有一些基于加密的存储芯片,如AT88SC0104CA和Microchip网站上提供的其他一些芯片。它们的数据手册声称提供身份验证和加密功能,以及安全的读/写访问。使用基于加密的存储芯片可以增加攻击者窃取数据的复杂性。

  31. 结论 在本篇中,我们学习了I2C协议、其应用、攻击场景的可能性、攻击方法和一些预防措施。希望您从中获得了一些有价值的信息,并感到满意。这些工具和攻击方法将为您提供在发现硬件上的I2C设备时该做什么的基本理解。

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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月15日20:04:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   物联网安全 - 16 硬件攻击面 - I2Chttps://cn-sec.com/archives/2176212.html

发表评论

匿名网友 填写信息