freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

开源硬件安全研究利器 Tigard 使用(上)
FreeBuf_343260 2021-07-05 11:34:29 195913

概述

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

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


# web安全 # 数据安全
本文为 FreeBuf_343260 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
FreeBuf_343260 LV.1
这家伙太懒了,还未填写个人描述!
  • 11 文章数
  • 9 关注者
KillBee框架的使用(上)
2021-02-22
加密设备攻防(二)- 智能设备篇
2021-02-04
可完全分离的二维矢量图加密域鲁棒可逆水印算法(一)
2021-01-14
文章目录