物联网安全 – 16 硬件攻击面 - UART
2023-11-4 09:33:38 Author: 安全狗的自我修养(查看原文) 阅读量:9 收藏

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

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

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

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

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

如果您是硬件黑客的初学者,并正在寻找一些要点,那么本文章系列可以为您提供帮助。如前所述,UART 作为 IoT 攻击面文章中的硬件攻击面。在这篇文章中,我们将详细讨论它。通用异步接收器-发送器 (UART) 用于大多数嵌入式设备。在攻击任何设备时,如果能在硬件上找到UART端口,那就欢呼吧!!你有办法闯入设备。在这篇文章中,我们将介绍UART的介绍,为什么从硬件攻击的角度来看它很有趣,在设备上找到UART端口后如何与之交互,以及可能的攻击场景。

介绍

UART接口是用于异步串行通信的硬件设备(控制器中的物理电路或独立IC)。它支持使用移位寄存器在串行和并行接口之间转换数据。它是嵌入式设备中最常用的。通信直接在两个UART之间进行。发送端的UART接口接收并行数据,并以串行形式将其隐藏。然后,它将数据串行传输到接收端的UART接口。接收UART接口接收串行数据,并转换回并行数据,将其提供给接收方的控制设备。它使用两条信号线 RX(接收器)和 TX(发射器)进行通信。来自发送UART接口上的TX引脚的数据在接收UART接口上的RX引脚上接收。图像如下所示(图片来源 - 这里)

在数据包传输过程中,添加了 START(始终逻辑低电平)和 STOP(始终逻辑高电平)位,用于定义数据包的开始和结束。UART 通信具有 5 个起始位、8 至 9 位数据(如果没有使用奇偶校验位,则为 1 位)和 8 个停止位,这意味着一旦信号从高到低,就会传输 <> 位数据。

数据框的图像如下所示(图片来源 - 此处)

每个要传输的数据字节都有一个逻辑低电平起始位、数据位、可选奇偶校验位、一个或多个停止位。在大多数情况下,首先发送数据位的最低有效 (LSB)。起始位指示接收器的新数据字节的到来,后跟 5 到 9 位数据。在所有数据位之后会出现一个可选的奇偶校验位,后跟一个或多个始终为逻辑高电平的停止位。STOP位指示接收器对发送器发送的数据字节的完成情况。更多细节可以从这里阅读。数据位的传输速率,即每秒比特数,称为波特率。发送和接收UART接口应具有相同的波特率、数据长度、奇偶校验位和停止位,以便正常运行。

UART接口在微控制器中用于与外围设备进行通信。它用于各种通信设备,如调制解调器、wifi 芯片、蓝牙模块、GPS 模块、路由器、相机和许多其他应用。UART 还用作嵌入式设备的替代调试接口,这些设备没有用于调试的键盘或显示器等接口。在后面的章节中,我们将研究可能的攻击场景。我们将向您简要介绍可用于通过 UART 攻击设备的工具和一些方法。

可能的攻击场景

从硬件安全的角度来看,UART 端口如此有趣的重要方面之一是如何使用它连接到设备嵌入式操作系统的调试 shell 或控制台。如果保护不当,则攻击者可以通过访问根 shell 来入侵设备。

通过访问设备根 shell,攻击者可以(来源 - 此处):

  • 在文件系统中搜寻,并查找一些易受攻击的二进制文件或正在运行的服务,这些二进制文件或服务可能很容易被攻击者模糊化。有时,访问调试或与网络相关的二进制文件可能会使远程访问危及设备。

  • 对正在运行的系统执行修改

  • 可以在设备上刷新已修补的固件。

  • 浏览文件系统以查找一些敏感和硬编码的值,例如加密密钥、配置、凭据等。获取此敏感信息,使攻击者更容易执行进一步的攻击。

除了访问 root shell 之外,攻击者还可以嗅探外围设备和控制器之间通过 UART 串行通信发生的通信。此外,如果设备控制台输出连接到 UART,它会在控制台上提供大量与调试和系统日志相关的信息。它对对手进行逆向工程和了解系统行为非常有用。

通过UART接口攻击硬件

要通过UART端口攻击设备,我们首先需要识别硬件上的UART引脚RX,TX。下面是几张图片,显示了硬件上大多数UART端口测试点/引脚排列的外观。

来源 - 这里

侦察

情况 1:您没有实际的硬件,但您知道设备的 FCCID 编号。转到 FCCID web网站,搜索设备的 FCCID 编号。如果正确,您将找到有关设备的所有内部图像和详细的内部外部信息。看到内部映像,您可能会收到有关硬件上具有 UART 接口的设备的提示。是的!!一旦您知道自己拥有攻击面,就可以获取/购买该设备并执行进一步所需的步骤来攻击该设备。

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

如上图所示,UART 端口通常有 4 个引脚 RX、TX、Vcc 和 GND。如果我们找到一组 4 个引脚,我们希望它是一个 UART 端口。下面提到了几种手动识别器件上 UART 端口引脚的方法:

  1. 数字万用表电导率测试 – 识别设备中使用的微控制器,取出其数据表,并识别微控制器的 UART 引脚。例如,我们将以EXPLIoT DIVA板为例。

PCB上标记为U7的diva板中使用的微控制器是STM32F411x,我们可以在其数据表中找到有关具有UART接口连接的引脚的信息。下图显示了数据表的该部分。

根据器件中使用的 IC 封装(此处为 LQFP64),我们确定控制器上的 UART 端口引脚。然后,我们将万用表设置为连续模式,如下图所示:

然后,我们将一个探针放在控制器上的UART端口引脚上,将另一个探针放在PCB上怀疑是UART端口引脚的测试点/接头引脚上。重复该测试,直到识别出引脚。Vcc 和接地引脚也可以类似地识别。

  1. 使用电压测量进行识别 – 在这种情况下,即使我们没有设备中使用的控制器的数据表,我们也可以通过测量可疑引脚/测试点上的电压来识别 UART 端口引脚。

    • 打开设备电源

    • 将万用表旋转设置为直流电压tage 如 V (20)(考虑 20 v 范围以下的设备),如下图所示:

    • 将黑色探头放在设备的接地引脚上,将红色探头放在可疑的 Vcc 引脚上。如果万用表上的电压读数显示恒定的 3.3v 或 5v(取决于器件电压),则为 Vcc 引脚。如果没有,则对疑似 UART 端口引脚组中的其他引脚重复上述步骤。

    • 打开器件后,我们寻找可能的 UART 端口引脚/测试点组。通常,它们是组中的四个或更多引脚,如上图所示。标记所有此类可疑的 UART 端口引脚组以测试所有引脚组。

    • 从识别 GND 引脚开始,将万用表设置为连续模式。将万用表的红色探头放在可疑的接地引脚上,将另一个探头放在设备输入电源的接地引脚或设备上存在的任何金属屏蔽层上。如果万用表发出哔哔声,即如果设备上的可疑接地引脚和实际接地引脚之间存在连续性,则表示该接地引脚可用于 UART 端口连接。如果没有,则对疑似 UART 端口引脚组中的其他引脚重复上述步骤。

    • Vcc 通常不用于连接到 UART 接口,但识别它可以缩小搜索范围,找到其他两个引脚 Rx 和 Tx。

  • 要识别 Tx 引脚,请打开设备电源,将万用表设置为直流电压tage 如上一点所述。将黑色探头放在设备的接地引脚上,将红色探头放在可疑引脚上。在万用表上的读数显示变化的电压,这意味着它是 TX 引脚。这是因为该器件一直在 TX 引脚上传输。当设备启动时,它会发送日志消息,因此数据传输时电压会发生变化。因此,请在设备通电后立即执行此测试。

  • 通常,如果我们成功识别三个引脚 Tx、Gnd、Vcc,则更容易识别第四个引脚 Rx。虽然像我们在上一点中所做的那样测量电压,但有时在不同情况下会显示不同的结果。有时它显示恒定的低电压或高电压,在某些情况下甚至变化电压。

  1. 自动扫描 – 有一些工具可以执行自动扫描,例如 Bus Auditor,用于扫描和识别任何硬件板上公开的调试和通信接口。UART接口的演示示例可以在文章中阅读。Jtagulator,基于 Arduino 的 UARTFuzz 也可用于扫描 UART 端口引脚。除了扫描,这些工具还可以检测波特率。

UART端口接口、通信嗅探和设备访问

在识别出硬件上的UART端口引脚后,现在是攻击的时候了。

嗅探通信

逻辑分析器等工具可用于嗅探具有UART接口的设备与控制器之间的通信。

逻辑分析仪显示UART端口的RX和TX线路上的信号。如上所述,这些信号符合 UART 通信协议结构。Saleae Logic Analyzer、PulseView 等软件具有检测这些 UART 通信信号的功能,可直接向您显示解码后的信号数据。

通过UART接口访问设备控制台

如上所述,在大多数嵌入式设备中,UART端口用作调试接口。它连接到设备的串行控制台,可以访问根外壳,日志消息。要通过 UART 端口访问设备的控制台,我们需要一个支持 UART 接口的适配器。在将任何外部工具与设备一起使用之前,我们需要匹配它们的电压。此外,在连接外部工具和目标设备时,请使它们的接地相同。可用作 UART 接口的 USB 到 UART 转换器的几种工具是:

  • Expliot 纳米

  • 巴士海盗

  • 希克拉

  • CH341A型

  • CP2102 USB 转 TTL 盖板

选择工具后,按照数据表进行正确的连接。例如,在这里我们将使用 Expliot nano 进行演示。我们将按照其数据表/引脚分配手册进行连接。器件的 UART 端口引脚和 Expliot nano 之间的连接图如下所示。

设备的 RX 连接到适配器的 TX,设备的 TX 连接到适配器的 RX。两个设备的接地都已连接。现在,可以使用 minicom、picocom、putty 和 teraterm 等串行终端访问设备的串行控制台。在连接之前,我们需要知道波特率。如果使用总线审计器和jtagulator等自动化工具完成UART端口扫描,我们会自动获得波特率。但是,如果使用万用表或电压测量手动完成UART扫描,则需要找到波特率。例如,使用 Expliot nano,我们有 EXPLIoT 框架,可用于使用插件查找 UART 波特率。在手动情况下,我们需要进行命中和试验以找到波特率。run uart.generic.baudscan -p <device_port> -v

一旦检测到波特率,转换器就会通过串行终端连接到主机,以访问设备的串行控制台。如果未在设备中安全地实现身份验证,则攻击者可以在访问根 shell 后直接进入设备。它可用于以多种方式攻击设备,如上文“可能的攻击方案”部分所述。请继续关注我们未来的文章,我们将在文章中演示在某些物联网设备中使用上述方法进行攻击。

结论

在这篇文章中,我们了解了 UART 接口、其应用、攻击场景的可能性以及攻击方法。我们希望您喜欢并从中获得一些有价值的信息。这些工具和攻击方法可以让你基本了解当你在硬件上找到一个UART接口并用它来攻击某些设备时该怎么做。

引用

  • https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter

  • https://cs140e.sergio.bz/notes/lec4/uart-basics.pdf

  • https://media.blackhat.com/us-13/US-13-Kohlenberg-UART-Thou-Mad-WP.pdf

  • https://jcjc-dev.com/2016/04/08/reversing-huawei-router-1-find-uart/

其它课程

windows网络安全一防火墙

windows文件过滤(更新完成)

USB过滤(更新完成)

游戏安全(更新中)

二进制漏洞(更新中)

ios逆向

还有很多免费教程(限学员)

更多详细内容添加作者微信


文章来源: http://mp.weixin.qq.com/s?__biz=MzkwOTE5MDY5NA==&mid=2247489464&idx=1&sn=a2bd64e3216172cfcc231a2c72716090&chksm=c13f24f1f648ade7f99c0d3a7d651bc55299175d2c471bcb4e96a47177914232657436f50324&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh