逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

逆向和破解外部自加密驱动器是我的老爱好。 过去,我有机会练习Zalman VE-400、Zalman ZM-SHE500、Zalman ZM-VE500等型号。 就在最近,一位同事给我带来了另一件展品:爱国者(爱国者)SK8671,它是按照典型的设计建造的——一个液晶显示屏和一个用于输入PIN码的键盘。 这就是结果……

1。 介绍
2. 硬件架构
– 2.1。 主板
– 2.2。 液晶显示板
– 2.3。 键盘板
– 2.4。 看着电线
3. 攻击步骤顺序
– 3.1。 从 SPI 闪存驱动器获取数据转储
– 3.2。 嗅探通信

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分


1。 介绍

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分
Корпус

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分
填料

输入 PIN 码后即可访问存储在磁盘上的数据(据称这些数据已加密)。 关于该设备的一些介绍性说明:

  • 如需更改PIN码,必须在解锁前按F1;
  • PIN 码必须包含 6 至 9 位数字;
  • 15 次错误尝试后,磁盘将被清除。

2. 硬件架构

首先,我们将设备分解成多个部分,以了解它由哪些组件组成。 最繁琐的任务是打开外壳:大量的微型螺丝和塑料。 打开外壳后,我们看到以下内容(注意我焊接的五针连接器):

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

2.1. 主板

主板很简单:

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

它最值得注意的部分(从上到下看):

  • LCD 指示器连接器 (CN1);
  • 高音扬声器 (SP1);
  • PM25LD010(规格)SPI闪存驱动器(U2);
  • 智微JMS539控制器(规格) 用于 USB-SATA (U1);
  • USB 3 连接器 (J1)。

SPI闪存驱动器存储JMS539的固件和一些设置。

2.2. 液晶显示板

液晶板上没有什么值得注意的地方。

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分
逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

仅有的:

  • 来源不明的 LCD 指示器(可能带有中文字体集); 具有顺序控制功能;
  • 用于键盘板的带状连接器。

2.3. 键盘板

当检查键盘板时,事情发生了更有趣的转变。

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

在背面,我们看到一个带状连接器,以及一个 Cypress CY8C21434 微控制器 PSoC 1(以下我们简称为 PSoC)

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

CY8C21434 使用 M8C 指令集(参见 文件)。 在[产品页面]( (http://www.cypress.com/part/cy8c21434-24ltxi)表示支持该技术 电容感应 (赛普拉斯的解决方案,适用于电容式键盘)。 在这里您可以看到我焊接的五针连接器 - 这是通过 ISSP 接口连接外部编程器的标准方法。

2.4. 看着电线

让我们弄清楚这里有什么联系。 为此,只需用万用表测试电线:

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

画在膝盖上的图的解释:

  • PSoC 在技术规范中进行了描述;
  • 下一个连接器,即右侧的连接器,是 ISSP 接口,命运的安排,它与互联网上的描述相对应;
  • 最右边的连接器是带状连接器连接键盘板的端子;
  • 黑色矩形是 CN1 连接器的图,用于连接主板和 LCD 板。 P11、P13 和 P4 连接到 LCD 板上的 PSoC 引脚 11、13 和 4。

3. 攻击步骤顺序

现在我们知道该驱动器由哪些组件组成,我们需要:1)确保基本加密功能确实存在; 2)了解加密密钥是如何生成/保存的; 3) 找到将检查 PIN 码的具体位置。

为此,我执行了以下步骤:

  • 从 SPI 闪存驱动器获取数据转储;
  • 尝试从 PSoC 闪存驱动器转储数据;
  • 验证 Cypress PSoC 和 JMS539 之间的通信实际上包含击键;
  • 我确保更改密码时,SPI闪存驱动器中没有任何内容被覆盖;
  • 懒得从JMS8051逆向539固件。

3.1. 从 SPI 闪存驱动器获取数据转储

这个过程非常简单:

  • 将探针连接到闪存驱动器的引脚:CLK、MOSI、MISO 和(可选)EN;
  • 使用逻辑分析仪与嗅探器进行“嗅探”通信(我使用 Saleae Logic Pro 16);
  • 解码SPI协议并将结果导出到CSV;
  • 利用 解码_spi.rb解析结果并获取转储。

请注意,这种方法在 JMS539 控制器的情况下尤其有效,因为该控制器在初始化阶段从闪存驱动器加载所有固件。

$ decode_spi.rb boot_spi1.csv dump
0.039776 : WRITE DISABLE
0.039777 : JEDEC READ ID
0.039784 : ID 0x7f 0x9d 0x21
---------------------
0.039788 : READ @ 0x0
0x12,0x42,0x00,0xd3,0x22,0x00,
[...]
$ ls --size --block-size=1 dump
49152 dump
$ sha1sum dump
3d9db0dde7b4aadd2b7705a46b5d04e1a1f3b125 dump

从 SPI 闪存驱动器中进行转储后,我得出的结论是,它的唯一任务是存储内置于 8051 微控制器中的 JMicron 控制设备的固件。 不幸的是,对 SPI 闪存驱动器进行转储结果是没有用的:

  • 当 PIN 码更改时,闪存驱动器转储保持不变;
  • 初始化阶段之后,设备不会访问 SPI 闪存驱动器。

3.2. 嗅探通信

这是查找哪个芯片负责检查感兴趣的时间/内容的通信的一种方法。 我们已经知道,USB-SATA 控制器通过连接器 CN1 和两个焊带连接到 Cypress PSoC LCD。 因此,我们将探头连接到三个相应的腿:

  • P4,通用输入/输出;
  • P11,I2C SCL;
  • P13,I2C SDA。

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

然后我们启动Saleae逻辑分析仪并在键盘上输入:“123456~”。 结果,我们看到了下图。

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

在它上面我们可以看到三个数据交换通道:

  • P4通道上有几个短突发;
  • 在 P11 和 P13 上 - 几乎连续的数据交换。

放大通道 P4 上的第一个尖峰(上图中的蓝色矩形),我们看到以下内容:

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

这里你可以看到 P4 上有近 70ms 的单调信号,乍一看我觉得它扮演了时钟信号的角色。 然而,在花了一些时间检查我的猜测后,我发现这不是时钟信号,而是按下按键时输出到高音扬声器的音频流。 因此,这部分信号本身并不包含对我们有用的信息。 但是,它可以用作指示符来了解 PSoC 何时记录按键操作。

然而,最新的 P4 音频流有点不同:它是“无效 PIN”的音频!

返回击键图,放大最后一个音频流图(再次看到蓝色矩形),我们得到:

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

这里我们在 P11 上看到单调的信号。 所以看起来这就是时钟信号。 P13是数据。 请注意蜂鸣声结束后模式如何变化。 看看这里发生的事情会很有趣。

使用两根线的协议通常是 SPI 或 I2C,Cypress 的技术规范指出这些引脚对应于 I2C,我们在我们的案例中看到了这一点:

逆向和破解爱国者自加密外置硬盘驱动器。 第 1 部分:剖析成部分

USB-SATA 芯片组不断轮询 PSoC 以读取密钥的状态,默认情况下为“0”。 然后,当您按下“1”键时,它会变为“1”。 如果输入错误的 PIN 码,按“~”后的最终传输会有所不同。 然而,目前我还没有检查那里实际传输的内容。 但我怀疑这不太可能是加密密钥。 无论如何,请参阅下一节以了解我如何删除 PSoC 内部固件。

来源: habr.com

添加评论