利用Shikra进行硬件黑客攻击:从路由器芯片快速提取固件

本文详细介绍了如何使用Shikra设备通过SPI协议快速提取路由器芯片固件,包括引脚连接配置、flashrom命令对比,以及与传统Bus Pirate设备的性能差异分析。

硬件黑客与Shikra

设备比较:Bus Pirate与Shikra

这是《硬件黑客101》网络研讨会的后续博客文章,比较Bus Pirate和Shikra两种设备。最近我主持了一个关于使用Bus Pirate黑客路由器的网络研讨会,可在https://www.blackhillsinfosec.com/webcast-hardware-hacking-101/观看。在网络研讨会中,我提到了使用Bus Pirate从芯片转储固件所需的时间(约30分钟)。而本文将展示相同内容,但使用Shikra设备完成。

如果您不熟悉Bus Pirate,建议查看网络研讨会及Dangerous Prototypes网站:http://dangerousprototypes.com/docs/Bus_Pirate

Bus Pirate和Shikra都是使用户能够通过USB接口与不同协议交互的设备,支持JTAG、SPI、IC2、UART和GPIO等协议。

芯片隔离与连接

在网络研讨会中,我讨论了芯片隔离,示例中我将芯片从路由器上移除以实现完全隔离。本文将从连接设备开始。请注意,我已将带有固件的芯片放置在 breakout 板上,如下图所示。

接下来,我们需要检查芯片和Shikra的引脚布局,以便通过Shikra与芯片正确连接。Shikra的引脚定义和信息可在https://int3.cc/products/the-shikra找到。我们使用的芯片是MX25L6406E/MX25L6408E。快速查看数据手册提供了设备的引脚定义。

我们还观察了每个引脚的功能定义。

需要Shikra的引脚定义来确定如何将breakout板(芯片)连接到它。

连接配置

有了引脚定义后,我们可以按照下表所示将它们连接起来。

与网络研讨会中一样,使用带有电源的面包board为芯片供电,并实现上表中的连接。

固件提取命令

连接完成后,我们准备转储固件。使用Bus Pirate时,我们使用了以下命令:

1
sudo flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=1M -c MX25L6406E/MX25L6408E -r spidump.bin

flashrom命令设置了BusPirate上芯片使用的协议类型。此处,flashrom具有BusPirate_spi特定协议。命令然后识别设备位置(ttyUSB0)和读取数据的速度(注意:任何更高的速度都会变得不稳定)。-c 指定要读取的设备类型,-r 将数据写入文件。

然而,使用Shikra时,我们仍然使用flashrom,但命令是:

1
sudo flashrom -p ft2232_spi:type=232H -c MX25L6406E/MX25L6408E -r spidump.bin

其中flashrom命令设置了Shikra上芯片使用的协议类型(ft2232)和类型,-c 指定要读取的设备类型,-r 将数据写入文件。

性能对比

通过比较两种读取速度,显然Shikra读取芯片的速度要快得多。Bus Pirate需要30分钟读取的内容,Shikra仅需3分钟。

公平起见,我使用了Bus Pirate版本3.6进行测试。Dangerous Prototypes有一款新板叫Bus Blaster,使用与Shikra相同的ft2232芯片。谁知道呢…可能还需要另一篇博客文章进行比较。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计