大家好, 我是星舆车联网实验室Kevin2600。星舆取 “星辰大海, 舆载万物”之意, 是专注于车联网技术研究, 漏洞挖掘和工具研发的安全团队。团队成员在漏洞挖掘, 硬件逆向与AI大数据方面有着丰富经验, 连续在GeekPwn等破解赛事中斩获奖项, 并获众厂商致谢。团队研究成果多次发表于DEFCON等国内外顶级安全会议。并成功入选特斯拉漏洞名人堂。
让我们继续上篇侠盗猎车的旅程, 学习更多固定码信号逆向分析的姿势。为了方便读者理解, 笔者将用以下无线门锁进行针对性讲解。
首先拆开无线门锁及遥控器进行信息收集, 通过PCB板上的关键字”HFY535F”, 得知此款无线门锁采用了深圳华方圆的解决方案。再利用频谱分析软件确定其工作频率为常见的315Mhz。
在锁的接收端与遥控器部分都带有一个8 bits的DIP开关。只有当两边的bits位相匹配时, 遥控器才能将门锁打开。相对传统不可更改的固定码而言, 使用这类拨码设计, 用户可随时更改编码, 安全性有所提升, 不过这仍属固定码的范畴。通过专业的无线钥匙设备可以了解到, 此款无线门锁采用了PT2262 芯片, 最终显示的地址码1FF01F10 和键码1000与DIP开关位相吻合。
在确定无线门锁的工作频率后, 第一步便是获取信号样本,这里列举几个笔者常用的方式。其中最简便的是osmocom_fft, 根据个人喜好可选择不同的界面, 如下图的示波器和频谱FFT模式。只要设置好目标频率, 点击REC便可自动记录下信号样本, 需要注意的是此时保存下的是信号原始IQ格式, 文件容量分分钟过百兆。
如果想有更多的灵活性, 则GnuRadio-Companion是必选之一。在用示波器模式分析信号的同时, 还可捕获门锁信号并输出Wave格式的音频文件, 以及原始IQ文件。
通过示波器模式显示门锁信号, 使我们有更直观的感受。如下图分别是遥控器上锁和解锁2个按钮所输出的波形。
将捕获到的音频信号倒入Audacity后, 显示的结果与示波器波形完全吻合。
我们还可以用上篇提到RTL-433进行采样, 以下是解锁指令的信号解析, 可以看到与上面音频, 示波器结果相同, 且以二进制等方式显示, 使其更加一目了然。
在对信号采样后, 接下来就需要对其近一步分析。比如我们想要获取信号的波特率, 通常的方法是套用已知公式 (1/ (最短波形长度/采样率))。如下图音频信号中 1/(542/2000000) 波特率大概是3690左右。
笔者这里推荐一款名为Inspectrum的开源软件。其界面友好, 操作简单。如下图可以看出门锁遥控器的信号是典型的OOK模式。
通过自动化解析得到我们所需的波特率, 跟之前音频分析得到的结果一致。
还可以将脉冲信号自动转换成相对应的二进制格式。这大大提高了分析工作效率。
在分析完信号样本后, 可以尝试回放信号攻击. 之前提到的GnuRadio-Companion可以帮助我们将捕捉到的门锁信号, 原封不动的发送出去.
需要注意这里发送的是门锁遥控信号原始数据, 如果有任何噪音也同样一并发送出去。以下是信号发送演示视频 (https://www.youtube.com/watch?v=2Uszj0Wc8Zs)
这里再跟大家推荐这款名为 Yardstick1 的无线神器。 加上Python框架RFCat, 我们可用脚本的方式来达到门锁信号回放的目的。
下图为攻击脚本, 需要注意的是波特率以及数据包之间的间隔等参数一定要设置正确。
以下是使用 Yardstick1发送解锁指令信号演示视频 (https://www.youtube.com/watch?v=bDQ3YtoY8GA)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2022-1-11 12:18
被星舆实验室编辑
,原因: