使用毛刺绕过微控制器中的复制保护

逆向工程 硬件 复制保护
2021-06-18 00:31:44

ATmega 微控制器通常有两个锁定位,LB1 和 LB2。一个防止进一步编程,另一个防止闪存被读回。如果两者都设置,则芯片需要擦除才能再次编程。这可以防止闪存被读出和逆向工程。类似的机制可以在许多其他微控制器系列中找到。

某些其他处理器已广泛记录绕过,例如 PIC 18F452,其中可以擦除单个块并写入固件以读取其他块(记录在“黑暗之心 - 探索 HID iCLASSTM 安全性的未知死水”中)。

不时,论坛帖子由提供服务的公司发布,以读取受保护的 ATmega 芯片。还有一些网站,通常是 .ru,提供这些服务。价格往往在 500-1500 美元左右,周转时间为几周。

我怀疑在这些成本下,他们没有拆封芯片并使用激光探针来重置保险丝位。我问过他们是否完好无损地退回芯片,但没有得到回应。

在这项研究(“现代微控制器中的复制保护”)中,“对微控制器的非侵入性攻击”一节中提到,许多微控制器可以使用时钟、电源或数据故障绕过复制保护。但是,我还没有看到这方面的任何实际例子或进一步的研究。

几年前,为了绕过卫星电视接收器中使用的智能卡的保护,毛刺非常流行,但同样,除了毛刺的一些电路图之外,我在这里找不到太多信息。

有没有人有关于使用故障绕过复制保护的更多信息?

4个回答

您正在寻找什么样的进一步信息?我假设您的目标是读出 ATmega 微控制器的闪存内容。您找到了有关故障器如何工作的信息,现在我想您想在承诺构建故障之前确认这通常是可能的?在这种情况下,是的,这是可能的。我无法为您提供任何论文,因为它基于实践经验(不一定在 ATmega mcu 上)。

由于通常无法自己为嵌入式板提供核心时钟(与智能卡不同),因此您必须进行电源、激光或电磁干扰。假设您要供电,您基本上必须用您提供的核心电源替换目标的核心电源。在这里,您可以注入电源故障(负面或正面)。

复制保护可能被绕过的原因有很多,这取决于保护机制的实现。您可以尝试的一些时刻是:

  • 就在冷重置之后。假设复制保护位的值存储在 OTP 中。系统在复位后立即执行一些初始化。这可以包括将保护位值传输到内部寄存器。例如,此时的毛刺可以“取消”传输、更改总线上的值或阻止将值存储到目标寄存器中。
  • 运行期间的任何时间运行期间的毛刺会影响任何寄存器。这是一个疯狂的镜头,但有趣的事情可能会发生(你好 JTAG 解锁!)
  • 在权限检查期间如果闪存读取受到保护,这意味着它必须在某个时候验证您是否有权限。如果您可以影响此决定的结果,则它可以授予您检索内容的权限
  • 还有更多你能想到的,但也有很多阻止成功的原因(例如 JTAG 接口与反熔丝等的永久物理断开)

它并不直接针对绕过复制保护,但 Jasper van Woudenberg 对通过故障注入对嵌入式系统造成故障进行了大量研究。他的研究应用包括操纵分支决策和泄露指令和加密密钥,因此也有可能将其应用于您的目标。

他在 2012 年的演讲幻灯片可以在这里找到:http : //www.riscure.com/news-events/fault-injection-attacks-on-embedded-chips(可以在这里找到该公司的更多出版物

他最近在 Infiltrate 2013发表了一次涉及该领域的重要演讲,因此请留意其中的幻灯片和视频。

此外,了解Xbox 360 故障黑客及其涉及的过程可能是值得的

为了读取 Atmel AVR ATmega MCU 的 flash 内容,您可以断开主控芯片。它不会返回完好无损的芯片,而是提供代码和程序。

这并不是您问题的真正答案,而是我几个小时以来一直在考虑的不同方法。

根据我的经验,JTAG端口的锁定是由软件通过将特定寄存器设置为特定值来完成的。这些信息可以很容易地从微控制器的手册中获得。

我的想法是从软件方面进行攻击,而不是从硬件方面进行攻击。

假设:

  1. 该设备允许使用 USB、UART 等进行现场固件更新。

  2. 固件未加密(好吧,根据我的经验,有时不是)。

我的想法是改变固件文件,并注入清除锁定寄存器的特定操作码。

这只是一个想法,我以前从未尝试过,但我想这是可能的......