行业新闻

开源硬件安全研究利器 Tigard 使用(上)

开源硬件安全研究利器 Tigard 使用(上)

概述

Tigard 是一款基于 FT2232H 芯片的多协议、多电压的开源硬件黑客工具。通过结合常用的引脚、带标签的线束、板载电平转换和逻辑分析仪进行连接,它专为连接到目标硬件上的低速接口并与之通信而设计。

image-20210629165616530

Tigard 对所有最常用的接口以及功能的支持结合到一个简单的板上。作为数十种基于 FTDI 芯片的其他硬件工具的直接替代品,它原生支持许多常用硬件工具,如 OpenOCD、FlashROM 等。

Tigard 支持 20% 的功能,这些功能支持 80% 的常见硬件黑客任务,这些任务涉及使用各种协议,这些任务涉及到使用不同的协议。无论是刚入门的硬件黑客,还是只需要一个快速简单的解决方案,Tigard 都可以作为首选。

文档和硬件文件可以在 TigardGitHub 存储库中找到。

特性和规格

USB Type C 高速 (480 Mbps) 接口

FTDI FT2232HQ 双路高速 USB 转多用途 UART/FIFO IC芯片

主端口用于 UART,包括对所有流量控制信号的访问

辅助端口用于 SWD、JTAG、SPI 和 I²C 的接头之间共享

高性能定向电平转换器(1.8v - 5.5v )

可以在板载 1.8 V、3.3 V、5.0 V 和板外 vTarget 电源之间进行选择

可以在 SPI/JTAG 和 I²C/SWD 模式之间进行选择

用于观察设备级信号的逻辑分析仪 (LA) 端口

指示灯帮助调试

软件支持

总的来说,Tigard 已经支持 x232H 系列芯片的多个工具和库。包括:

用于 UART 访问的 USB 串行驱动程序

用于 JTAG 的 OpenOCD 和 UrJTAG

Flashrom、PyFtdi/PySpiFlash、LibMPSSE 和其他 SPI 接口工具

支持 I²C 接口的 LibMPSSE 和 PyFtdi/PyI2CFlash

由于与众多工具的直接兼容性,Tigard 特定工具无需与任何目标交互。如果你确实需要使用Tigard自定义工具或脚本,它应该可以与任何其他 FT2232H 接口板配合使用。

image-20210629213555896

使用场景

连接到你在家庭自动化设备上找到的串行控制台

将 SPI 闪存芯片的内容转储到机顶盒中

通过 JTAG 引脚上使用 GDB 修改内存中的代码,这样可以通过 UART 引脚连接到拆开的儿童玩具上,从而绕过登录提示

使用 I²C 与 OLED 显示器交互,同时通过 LA 端口使用 BitMagic 逻辑分析仪观察事务

image-20210629215401940

示例

UART 串口与路由器交互

UART 有4个pin(VCC, GND , RX, TX), 用的TTL电平, 低电平为0(0V)、高电平为1(3.3V或以上),由于路由器不需要供电,在通电情况下,VCC 口可以不接。判断 GND , RX, TX 后,需要注意的是,在 TTL 电平模式下,UART 转换接口上的 RX、TX 口与路由器设备的 UART 口的RX和TX是需要反接的。

将 Tigard 的 VTGT 开关设置为5v, VTGT led 灯呈蓝色。

image-20210630143658693

Tigard 通过 type-c 口连接到计算机后,出现了两个 COM 端口,选择第一个(COM5)。

image-20210630144231481

选择COM5端口并设置波特率。

image-20210630144408575

成功与路由器进行交互。

image-20210630144200360

SPI 接口读写路由器 flash

标准的 SPI/I2C 标头的方向与标准的8针 SPI 闪存芯片上的引脚相同,另一端使用夹子连接路由器的芯片。

在模式选择开关上选择 SPI/JTAG。先将路由器断开电源,可以使用 Tigard 进行供电,将 VTGT 拨到3.3v即可。

image

将 Tigard 通过 type-c 接口连接树莓派后,使用dmesg命令可以看到 Tigard 设备。

image-20210630182432952

Flashrom 是 SPI 闪存转储常用的工具。可以看到成功找到 flash 芯片并转储 4096kB 。

time flashrom -p ft2232_spi:type=2232H,port=B,divisor=4 -r chip.bin

image-20210630221350733

利用 binwalk 工具对 dump 出来的固件进行解包提取文件系统。

image-20210701105151292

image-20210701105256906

JTAG 读写 STM32 芯片固件

JTAG 的引脚排列顺序与 FTDI I/O 引脚标记的顺序相同,以便与其他 x232H 分线板保持一致。CORTEX 接头也作为标准 ARM 10 针 JTAG 接头进行接线。在模式选择开关上选择 JTAG,这确保 TDI 和 TDO 是分开的,如果使用 SWD,则模式开关选择SWD,将 DI 和 DO 引脚与电阻器 R16 连接以形成双向 SWDIO 引脚,详细用法查看Github文档说明。

image

配合 OpenOCD 工具,用于 ARM、 MIPS 和其他体系结构的片上调试。配置文件tigard-jtag.cfg

interface ftdi
ftdi_vid_pid 0x0403 0x6010
ftdi_channel 1
adapter_khz 2000
ftdi_layout_init 0x0078 0x017b
ftdi_layout_signal nTRST -ndata 0x0010 -noe 0x0040
ftdi_layout_signal nSRST -ndata 0x0020 -noe 0x0040
transport select jtag

利用 OpenOCD 读取固件

image-20210702150909787

将读取的固件,使用 IDA 分析

image-20210702162155575

参考

https://www.crowdsupply.com/securinghw/tigard

https://github.com/tigard-tools/tigard

https://iot-security.wiki/hardware-security/debug/serial-port.html

(原创内容,转载需注明出处。)


关闭