今天介绍的这把锁只能通过指纹来解锁,但是....它貌似不喜欢我的指纹,因为十次解锁可能只有两次成功,一气之下,我打算把它拆了。
首先,我们看一下电子挂锁的工作方式有几种:
-
电机转动主轴释放/解锁卸扣
-
电磁铁吸住物理螺栓
如果设计不当,第一种方式往往容易受到暴力破解,第二种方式则是使用强力磁铁。而今天这个挂锁,使用磁铁+轻轻的摇晃生拉硬拽便弹了出来。
开锁的部分我们搞定了(老虎钳),接下来看看它里面有什么?
用钳子搞了一个小时,突然闻到了锂电池的气味,锁体也变得非常热。
为了不损坏锁内的芯片,得停下来让它冷却一下。但最终还是狠心把它切开了,可以看到内部被一层切割粉末覆盖:
可以看到它使用带锁闩的电机(注意锁闩下面有一个小电路板)
这个是挂锁的微动开关:
电机和锁闩(我感觉我刚刚拆的时候把它弄坏了)
我承认拆的很丑,但下一次我肯定会拆的更漂亮
电池就是冒火的原因
整个电路板都是非常粘的胶水,我用镊子去掉一些残留物后可以看到一个MCU和几个放大器。左边是蜂鸣器。它使用USBC供电
电路板的反面是一个指纹模块子板
通过电路板, 我们可以看到MCU型号是 STM32F411(ARM Cortex M4)
可以看到电路板上有两个测试焊盘。顶端是SWD界面。焊盘标注有:
-
VSS
-
Not Connected
-
SWDCLK
-
SWDIO
-
Vdd
Not Connected焊盘最有可能与RESET引脚相连,但其他组件可能没有标注出来
在底部焊盘看到它们连接到了PA10,PA9和VSS。从这里可以看出这是UART
我们把杜邦线焊到UART接口上
我们将UART连接到Saleae逻辑分析仪。虽然电池刚刚着火了,但是现在居然还能用
尝试识别指纹,查看TX口的数据
然而这些东西并没有什么卵用,我觉得有可能是它设置了管理员打印。不过还是发现了一个Title信息:"由microzero设计"。貌似这是广州Microzero公司的设计(该公司是指纹识别算法系统的制造商)
最后,我们来试试使用SWD脚读取MCU的闪存
现在将它连接到ST-Link上,尝试复制flash内容,但在Linux下获取到的flash空间为0,这很奇怪
再用 Windows 上的官方软件试试。好吧,原来它启用了代码读出保护
针对这个情况,我觉得已经无法继续破解下去了,我使用最少的工具拆开了它,拆解的过程本身就很有意思,但如果没有办法读取flash,我不知道自己还能做什么
[下篇文章我们将介绍在某些情况下绕过代码读出保护的例子]
原文地址:https://www.pentestpartners.com/security-blog/hardware-reverse-engineering-a-tale-from-the-workbench/
本文始发于微信公众号(渗透云笔记):指纹锁的硬件逆向工程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论