使用Shikra进行硬件黑客攻击:快速固件提取实战

本文详细比较了Bus Pirate与Shikra在硬件黑客中的性能差异,通过实际案例演示如何使用Shikra连接MX25L6406E芯片并提取固件,读取速度比Bus Pirate快10倍。

硬件黑客与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 board 上。

现在需要检查芯片和Shikra的引脚布局以正确连接。Shikra的引脚定义见:https://int3.cc/products/the-shikra。我们使用的芯片型号为MX25L6406E/MX25L6408E,数据手册提供了设备的引脚定义:

同时还需要确认每个引脚的功能定义:

Shikra的引脚布局也需要确定如何连接breakout board(芯片):

接线与固件提取

获得引脚定义后,按下表所示进行连接:

与网络研讨会中相同,我们使用带电源的breadboard为芯片供电并完成上表中的连接。

连接完成后即可提取固件。使用Bus Pirate时的命令为:

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

flashrom命令设置BusPirate上芯片使用的协议类型(此处为buspirate_spi),指定设备位置(ttyUSB0)和数据读取速度(更高速度会导致不稳定)。-c指定读取的设备类型,-r将数据写入文件。

而使用Shikra时仍使用flashrom,但命令改为:

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

此命令设置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 设计