本博客是物联网安全系列的一部分,我们将讨论与物联网/工业物联网生态系统及其安全性相关的基本概念。如果你还没有看过该系列的前几篇博客,我强烈建议你先看一遍。如果您只对硬件调试端口感兴趣,请随时继续。
本周天(2023/10/29)直播
直播内容
-
了解二进制安全行业
-
课程内容介绍
-
提问
了解详情扫微信群
目录
物联网安全-物联网介绍及其架构
物联网安全-2.物联网攻击面
物联网安全-5.ZigBee协议物联网安全-6.ZigBee安全物联网安全-7.物联网固件逆向
物联网安全-8.软件无线电(Software Defined Radio,SDR)简介
物联网安全-9.软件无线电简介(Software Defined Radio,SDR):软件部分
物联网安全 – 10.MQTT 协议和安全简介
物联网安全 – 11 CoAP 协议和安全简介
物联网安全 – 12.MQTT 代理安全
在之前的博客中,我们讨论了如何在硬件上执行侦察。在这篇博客中,我们将讨论硬件调试端口、不同的调试端口是什么,以及如何使用不同的方法查找调试端口。
查找硬件调试端口过程包括几个步骤,例如查看各种测试焊盘、引脚排列和接头。这些引脚很少在PCB上标记,因此我们必须手动识别引脚。微控制器数据表中有关引脚和使用万用表进行简单连续性检查的信息对于 DIP/TSOP、TQFP 等 IC 封装来说已经足够了,但对于 QFN、BGA 等封装,如果引脚在 PCB 上无法触及,则很难手动识别。
对于无法进行连续性检查的情况,Bus Auditor 或 Jtagulator 等工具非常方便。一旦在PCB上识别出JTAG/SWD、UART、I2C引脚,就可以访问微控制器、固件提取、根外壳访问。
为什么 PCB 必须调试端口?
硬件调试端口可以直接与微控制器通信。JTAG/SWD端口在开发过程中用于下载、调试固件源代码、恢复砖砌硬件、执行边界扫描。边界扫描是一种测试印刷电路板 (PCB) 上互连的方法。这是对设备进行故障排除的最简单方法。另一方面,UART 端口通常用于通过控制台访问设备,以调试硬件上运行的应用程序。在这篇博文中,我们将使用 Bus Auditor 在 DIVA 板上找到 UART、JTAG/SWD、I2C。
总线审核员:
Bus Auditor 是一款紧凑的多协议工具,用于扫描和识别暴露在任何硬件板上的调试端口和通信接口,它可以暴力破解多种硬件协议,包括 JTAG、Arm SWD、UART、I2C。
该器件具有 16 个独立通道,用于连接到目标 PCB 上的接头引脚。内置的USB端口用于与PC上运行的EXPLIoT框架连接。
特征:
-
USB 2.0高速接口。
-
IEEE 1149.1 JTAG和arm SWD支持。
-
UART RX、TX 引脚和波特率检测。
-
I2C 引脚和 I2C 地址检测。
-
可调目标电压电平1.2V-3.3V。
-
16 个 I/O 通道,具有电平转换和输入保护功能。
因此,让我们看一下调试端口的类型,并使用 Bus Auditor 对其进行识别。
注:
16 个 IO 通道标记为 CH0 至 CH15,以便于识别。
DIVA:
DIVA(该死的不安全和易受攻击的应用程序)物联网板是 EXPLIoT 产品之一。DIVA Board 是一种连接的物联网设备和易受攻击的目标板,旨在教授物联网安全的基础知识。
该板提供标准JTAG调试接口以及SWD接口,该接口可用作固件调试的调试端口和UART端口,用于在终端上发送调试消息的自定义控制台。
DIVA 板上有 3 个分线接头,我们将扫描分线并找到调试端口。
我们可以在照片中看到DIVA板布局,所有外设和分支都标记了。
我们将识别 breakout1、breakout2 和 breakout3 上的 JTAG/SWD、UART、I2C 端口。
JTAG(联合测试行动组):
如今,PCB和SOC已经变得更小和先进。随着时间的流逝,PCB在生产后变得复杂且难以调试和编程。为了便于测试、调试和编程电路板的后期生产,业界开发了一种称为联合测试行动组(JTAG)的接口。它用于测试、调试和编程接口,使用PCB板上的引脚排列(Header)或测试焊盘。
后来,该接口被采用为IEEE 1149.1标准。该标准定义了具有JTAG接口的处理器中使用的测试访问端口(TAP)控制器逻辑。
JTAG接口需要5个引脚。在许多系统中,未实现可选的 TRST 引脚,因此 TRST 是可选的。导致其四线接口
,JTAG引脚是,
-
TMS – 测试模式选择
-
TCK – 测试时钟
-
TDI – 测试数据输入
-
TDO – 测试数据输出
-
TRST – 测试复位(可选引脚)
我们即将发布的博客将更详细地介绍JTAG接口。
识别DIVA上的JTAG端口:
我们将扫描或 J3 接头以查找可能的 JTAG 接口,到目前为止,我们还不知道哪个引脚是 JTAG 端口的引脚。breakout 1
1) 识别 GND(接地引脚)。
检查连续性时,应关闭 DIVA 板的电源。识别任何金属片区域(通常金属片区域在板上接地)或识别 DIVA 板输入直流电源的 GND 引脚。
2) 如果万用表发出哔哔声,则表示引脚排列已接地,即它是 GND 引脚。
现在让我们将总线审计器 GND 引脚连接到 diva GND 引脚,将 CH0-CH8 引脚连接到接头(总线审计器引脚标记为 0 到 15)Breakout 1
3) 使用 USB 转 Micro USB 电缆将两个设备连接到 PC。
4) 运行 EXPLIoT 框架(如果您的系统不允许用户进程连接到 tty* 设备,请使用 root/sudo)。
-
$ expliot
5) 运行 Busauditor 插件
-
ef> run busauditor.generic.jtagscan -v 3.3 -p /dev/ttyACM0 -s 0 -e 10
-v 用于设置电压。
-p dev/tty* 端口。
-s 起始通道。
-e 结束通道。
等待插件完成JTAG端口扫描。
总线审计结果:
以下是一些JTAG引脚和ID代码
TCK:CH0
磁敏反应:CH1
TDO:CH3
TDI:CH2
TRST:CH4
ID CODE 是
身份证号码 :0x4ba00477
身份证号码 :0x06431041
ID CODE是一个32位数字的唯一制造商ID,用于标识JTAG链中的器件类型。ID 代码因供应商而异。在这里,我们找到了 2 个 ID 代码,一个来自 STM electronics 的主控制器,一个是 SOC 中的 JTAG 控制器。
SWD(串行线调试器):
JTAG连接器在许多应用中需要四个引脚:引入了JTAG的一个变体,称为串行线调试(SWD),它仅使用2个引脚,带有时钟和双向数据引脚,SWDIO和SWCLK覆盖在TMS和TCK引脚上。
识别 DIVA 上的 SWD 端口:
我们将保持相同的连接以识别 SWD 引脚,
运行命令:
-
ef> run busauditor.generic.swdscan -s 0 -e 10
(注意:电压和设备端口默认为3.3v和ttyACM0)
总线审计结果:
在这里,我们找到了 Pin 图
SW_CLK:CHO
SW_DIO:CH1
和ID代码:0x2ba01477
我们找到了 SWD 引脚和 ID 代码。利用这些信息,攻击者可以提取固件,对逻辑进行逆向工程,并在设备上刷写恶意固件。
JTAG/SWD在调试微控制器时增加了重要的功能 但是,它们需要访问处理器上的JTAG/SWD引脚。GDB 和 OpenOCD(开放式片上调试器)等调试工具可以通过 JTAG/SWD 用于调试/操作代码/执行。
I2C(内部集成电路):
I2C 是一种异步、多主、多从、串行通信总线,这意味着多个芯片可以连接到同一总线,每个芯片都可以通过启动数据传输来充当主芯片。I2C 用于在同一块板上的短距离内在低速外设 IC 和处理器/微控制器之间进行通信。
与 UART 通信一样,I2C 仅使用两根线在设备之间发送和接收数据。
-
SDA(串行数据) – 主站和从站发送和接收数据的线路。
-
SCL(串行时钟) – 承载时钟信号的线路。
识别 Diva Board 上的 i2c
我们将总线审计器连接到 diva 排针breakout 2
1) 将接地引脚识别为我们之前使用万用表连续性测试发现的相同。
将 GND 和其他 CHO-CH8 通道连接到排针分线板
,如下图所示 连接已建立
2) 使用 USB 转 Micro USB 电缆将两个设备连接到 PC。
3) Open EXPLIoT framework
Run command:
-
run busauditor.generic.i2cscan-v 3.3 -p /dev/ttyACM0 -s 0 -e 10
Bus Auditor Result :
We can see that the bus auditor identified 2 pins out of 8 pins and found the device address.
SCL: CH1
SDA: CH8
Device Address : (0x48)
Device Address : (0x50)
I2C 的用例之一是连接到微控制器 I2C 引脚的 EEPROM 芯片,通常存储数据或代码。典型的攻击包括篡改数据、提取敏感信息、破坏数据等。我们应该分析EEPROM芯片上的静态数据,并通过嗅探I2C通信来执行运行时分析,以了解其行为和安全影响。
UART(通用异步接收器-发送器):
UART(通用异步接收器发送器)是一种硬件组件,允许两个硬件组件之间的异步串行通信。这可以位于相同的设备(连接到设备上的任何传感器的微控制器)或两个不同的设备(设备微控制器通过外部 UART 硬件与 PC 通信)
在 DIVA 上识别 UART:
在这里,当我们不知道微控制器的UART引脚和微控制器的数据表时,我们将识别PCB板上的UART引脚。
1) 我们将总线审计器通道引脚连接到 diva 上的排针分线 3。
2) 首先,如前所述,我们将使用万用表识别接地引脚。一个引脚是 VCC,无需连接它,为了识别 TX、RX,我们将连接总线审计器的 CH0 和 CH1。
3) 使用 USB 转 Micro USB 电缆将两个设备连接到 PC。
4)打开EXPLIoT框架
运行命令:
-
run busauditor.generic.uartscan -v 3.3 -p /dev/ttyACM0 -s 0 -e 1
总线审计结果:
我们找到了正确的波特率和正确的 RX、TX 引脚、
波特率为9600
接收:CH1
发送:CH0
这是一个有趣的攻击面,因为它可能允许通过串行对设备上运行的应用程序进行读/写访问。在许多设备中,板上的UART端口保持开放状态,任何人都可以通过串行连接和访问,以获得某种控制台,即简单的shell,自定义命令行控制台,日志输出等。
设备通常有一组引脚连接到微控制器 UART RX 和 TX 引脚,用于发送和接收串行数据。在这里,我们使用总线审计器识别了 UART 端口,在接下来的博客文章中,我们将了解如何访问设备上的 UART 端口。
结论:
我们希望这篇博文能让您大致了解硬件调试端口,以及总线审计器如何扫描和识别PCB测试焊盘和引脚排列接头上暴露的调试和通信接口。这为您提供了执行硬件评估的有用信息。在后面的博客文章中,我们将介绍每个硬件调试端口的更多详细信息。
更多详细内容添加作者微信
原文始发于微信公众号(安全狗的自我修养):物联网安全 - 14 硬件调试端口指南:概述和识别
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论