指纹锁的硬件逆向工程

71423-gnhd5akdm07.png

今天介绍的这把锁只能通过指纹来解锁,但是....它貌似不喜欢我的指纹,因为十次解锁可能只有两次成功,一气之下,我打算把它拆了。

首先,我们看一下电子挂锁的工作方式有几种:

  • 电机转动主轴释放/解锁卸扣
  • 电磁铁吸住物理螺栓

    如果设计不当,第一种方式往往容易受到暴力破解,第二种方式则是使用强力磁铁。而今天这个挂锁,使用磁铁+轻轻的摇晃生拉硬拽便弹了出来。
    98495-7gkuc6vfw0w.png

开锁的部分我们搞定了(老虎钳),接下来看看它里面有什么?
71641-ncpn7gvb0bs.png
用钳子搞了一个小时,突然闻到了锂电池的气味,锁体也变得非常热。
09326-nh8gi4ool.png
为了不损坏锁内的芯片,得停下来让它冷却一下。但最终还是狠心把它切开了,可以看到内部被一层切割粉末覆盖:
79802-cr1v68mqehc.png
可以看到它使用带锁闩的电机(注意锁闩下面有一个小电路板)
08103-a90fpgjsoz8.png
这个是挂锁的微动开关:
48564-olk1ysfnnwj.png
电机和锁闩(我感觉我刚刚拆的时候把它弄坏了)

75060-rp3n8fsik4g.png
我承认拆的很丑,但下一次我肯定会拆的更漂亮

49387-j5gl1mbwdq.png

电池就是冒火的原因
46827-zri5rqlrll.png

整个电路板都是非常粘的胶水,我用镊子去掉一些残留物后可以看到一个MCU和几个放大器。左边是蜂鸣器。它使用USBC供电
90912-dug8mdzdu.png

电路板的反面是一个指纹模块子板

97151-unoqhwzjs3.png)
通过电路板, 我们可以看到MCU型号是 STM32F411(ARM Cortex M4)
10414-o240pd5qwg.png
可以看到电路板上有两个测试焊盘。顶端是SWD界面。焊盘标注有:

  • VSS
  • Not
  • Connected
  • SWDCLK
  • SWDIO
  • Vdd

Not Connected焊盘最有可能与RESET引脚相连,但其他组件可能没有标注出来

99344-zsq0lvpjno.png
在底部焊盘看到它们连接到了PA10,PA9和VSS。从这里可以看出这是UART
[图片上传中...(15050-6gxwmdxhd9d)]

我们把杜邦线焊到UART接口上
49753-7h5nh1hcnoo.png

我们将UART连接到Saleae逻辑分析仪。虽然电池刚刚着火了,但是现在居然还能用

71518-80kk8ebd92r.png

尝试识别指纹,查看TX口的数据
75854-l1zmmi5dkpf.png

然而这些东西并没有什么卵用,我觉得有可能是它设置了管理员打印。不过还是发现了一个Title信息:"由microzero设计"。貌似这是广州Microzero公司的设计(该公司是指纹识别算法系统的制造商)
49819-2ssjfdgnv1g.png)

最后,我们来试试使用SWD脚读取MCU的闪存
37155-dl490dsarub.png

现在将它连接到ST-Link上,尝试复制flash内容,但在Linux下获取到的flash空间为0,这很奇怪

07757-7zu61x1zoeu.png

再用 Windows 上的官方软件试试。好吧,原来它启用了代码读出保护

75040-7hncuw4kdze.png

针对这个情况,我觉得已经无法继续破解下去了,我使用最少的工具拆开了它,拆解的过程本身就很有意思,但如果没有办法读取flash,我不知道自己还能做什么

[下篇文章我们将介绍在某些情况下绕过代码读出保护的例子]

原文地址:https://www.pentestpartners.com/security-blog/hardware-reverse-engineering

本文经授权后发布,本文观点不代表立场,转载请联系原作者。
tcpscan 端口扫描工具
« 上一篇 05-04
ParamSpider url参数挖掘机
下一篇 » 05-05