查看原文
其他

侠盗猎车 — 玩转固定码

星舆实验室 看雪学苑 2022-07-01


本文为看雪论坛优秀文章
看雪论坛作者ID:星舆实验室


上篇


1


信号101


无线信号安全是个很深的研究领域,需要掌握的知识点很多。笔者在这推荐Michael Ossmann的Software Defined Radio with HackRF 系列教程。这里先来了解些研究无线钥匙安全必要的基础知识。
首先需要知道无线钥匙通常工作在ISM频段,比如 315Mhz, 433Mhz 和868/915Mhz。在信号调制方面则以OOK/ASK/FSK为主。这几种调制方案应用非常广泛,如无线基站,遥控钥匙和胎压系统TPMS都有它们的身影。
在无线钥匙领域OOK的简单性是其它调制方案所不及的,仅需要将载波信号发送到功放和天线,即可表现“1”或不发射任何信号即代表“0”。下图为ASK和FSK在频谱上的表象。

无线钥匙在发了一串1和0 后,还需要正确的编码方式,收发双方才能正常交互。其中NRZ, PWM 和Manchester 是较为常见的编码格式。

工欲善其事,必先利其器。拥有得心应手的工具,对研究无线钥匙安全尤为重要。每个人喜好不同,偏爱的工具也见仁见智。
笔者在无线信号硬件上推荐支持RTL-SDR的电视棒,带有PortaPack模块的HackRF以及可以通过Python交互的Yardstick1。

在软件方面大名鼎鼎的GNURadio 则是必备软件。同时无线钥匙发出的指令有固定码和滚动码的区别。
固定码顾名思义就是每次的内容都相同,但因为这种方式太不安全,厂商通常都会选择每次都有所变化的滚动码。



2


信号干扰


在了解无线钥匙的基础知识后,我们来看看黑客会如何对其进行攻击呢。其中射频信号干扰是无线攻击中最常见的方式之一。

攻击者使用更强的功率在与目标相同的频道内发送噪音信号,以期压制原信号达到干扰目的。通俗的理解就是用更大的喊声压过了你,至于喊的是什么并不重要,反正别人听不到你说话就可以。

以下是干扰攻击在信号频谱图上的表象,可以看到在发起攻击后,通讯频道都被占用了。

针对遥控钥匙信号的干扰攻击,也是盗贼最喜欢的方式之一。在海淀区花园路某停车场内,曾有两名男子从一辆宝马X5车内盗走装有手机和大量现金的电脑包。警方后来在他们身上找到了一个收音机大小的仪器。这就是一款所谓的锁车干扰器。两名不法分子利用这种设备,隐蔽在角落干扰车主锁车,当车主离开后,轻松打开车门,再将车内财物一扫而空。

然而这并不是个例,在全国甚至全世界范围内屡次发生同类盗窃案件。因此各位车主在按下遥控器锁门按钮后,最好再拉下门把手,确认真实上锁后才离开。

有趣的是某些高功率电子产品所产生的电磁场,竟也可能成为了干扰信号源。近日河南周口某地有居民的汽车钥匙经常无故失灵,在无管委的工作人员进行了大量排查后发现罪魁祸首竟是一个电热水壶。
为了检验干扰攻击的真实效果,笔者在征得车主同意后,用HackRF 对某款汽车做了测试。从视频(https://v.qq.com/x/page/h32756atqlx.html)中可以看到在开始干扰攻击后,汽车对遥控钥匙立刻失去反应。

值得一提的是某些厂商在产品中会设计信号干扰检测机制。比如某款智能警报器一旦检测到有干扰信号,就会自动触发警报。因此高阶的黑客会采用更智能的干扰方式,比如Reactive Jamming,跟传统的干扰方式不同之处在于,其并不是简单粗暴的占用整个频道,而是将干扰信号“隐藏”在真实的发送信号中,以便绕过目标的检测机制。



3


信号重放


当然只是对遥控信号进行干扰是不够的,攻击者还希望能取得控制权。这就需要对目标有足够的了解。对目标的情报收集是安全研究中一项至关重要的基本功。这里的情报指的是与目标系统相关的有用信息,比如工作频率,编码方式,芯片型号等等。

如下图我们可以从使用手册中找到所需的目标工作频率信息。
 
然而现实中往往受条件限制,无法获取更多有用信息。这就要考验测试人员的实战经验和耐心了。幸运的是除了汽车无线钥匙外,工作在315Mhz 或433Mhz,且以固定码模式为主的遥控设备在现实中仍占了很大的比例。

所以我们可以把相关设备如HackRF放在合适的位置进行抓包,耐心等待遥控开锁指令被按下的那一刻。一旦获取所需的解锁指令,就可以通过信号重放的方式得到控制权。

以下是重放演示视频 (https://v.qq.com/x/page/v3275nakwi1.html)。需要注意的是,这个时候我们对目标设备,如信号指令结构等信息其实仍是知之甚少。不过对于攻击者来说,能把闸机打开这就足够了。



4


信号简析


但从安全研究人员的角度来说,想找到设计缺陷或安全漏洞。就得更深入的了解目标。这里笔者以小牛电动车钥匙为例,对其无线信号进行简单的逆向分析。

首先需要知道小牛钥匙的工作频率。常见的方式可查找FCC ID或CMIIT ID,即无线电发射设备型号核准码相关文档获取。也可以用频谱分析软件如GQRX来确定。

因为是在实验室环境中,所以笔者选择直接将其拆开一探究竟。在小牛钥匙的PCB板上清楚看到晶振 (26.250M)和IC (CMT2150L) 这两个关键部件。
通过查看芯片文档,得知钥匙的工作频率为315Mhz。默认采用的是1527的编码方式。

从文档中还可以找到IC的每个管脚定意,这大大方便了逆向分析工作。

根据IC管脚定意,接上示波器,可以用来分析的小牛钥匙的脉冲信号就展示在面前。


除了物理访问,我们也可以通过软件无线电来抓包分析,这里给大家推荐名为 RTL_433的开源软件,其自带大量无线遥控器信号解析库,甚至可以解析某些警报器密码。

不过其默认无法解析小牛钥匙的信号,所以我们还需要自行分析。以下是通过RTL_433 获取的小牛原始信号数据。可以看到数据中含有大量重复出现的部分。

 

在把相关参数编写成配置文件后,RTL_433就可以自动解析了。从视频 (https://v.qq.com/x/page/y3275usojth.html)里可以清楚看到小牛钥匙每次所发出的解锁或上锁等指令。

不过大家一定已经意识到一个问题,小牛钥匙所发出的解锁或上锁指令在解析后,每次得到的值都是一样的。其实在得知小牛钥匙使用的编码方式是1527的时候,就已经可以判断小牛使用的是固定码了。

是的,我们可以对其进行重放攻击。不过有时我们手中没有HackRF。这里笔者跟大家推荐RPITX,这是运行在树莓派上通过GPIO口进行RF传输的软件。通过这个软件可使树莓派瞬间变成无线电台。

以下便是星舆研究员小海,在树莓派上通过RPITX解锁小牛电动车的演示视频(https://v.qq.com/x/page/c32750sl0g1.html)



5


总结


本文作为侠盗猎车系列的开篇,相信让大家对无线钥匙信号分析有了初步了解。但精彩的旅程才刚刚开始,接下来我们会分享更多无线信号分析技巧,以及对信号指令进行爆破攻击等测试。


参考文献:

https://www.rtl-sdr.com/

https://github.com/F5OEO/rpitx

https://github.com/merbanan/rtl_433

https://greatscottgadgets.com/sdr/8/



下篇

让我们继续侠盗猎车的旅程,学习更多固定码信号逆向分析的姿势。为了方便读者理解,笔者将用以下无线门锁进行针对性讲解。

首先拆开无线门锁及遥控器进行信息收集,通过PCB板上的关键字”HFY535F”,得知此款无线门锁采用了深圳华方圆的解决方案。再利用频谱分析软件确定其工作频率为常见的315Mhz。
 

在锁的接收端与遥控器部分都带有一个8 bits的DIP开关。只有当两边的bits位相匹配时,遥控器才能将门锁打开。

相对传统不可更改的固定码而言,使用这类拨码设计,用户可随时更改编码,安全性有所提升,不过这仍属固定码的范畴。

通过专业的无线钥匙设备可以了解到,此款无线门锁采用了PT2262 芯片,最终显示的地址码1FF01F10 和键码1000与DIP开关位相吻合。



1


采样


在确定无线门锁的工作频率后,第一步便是获取信号样本,这里列举几个笔者常用的方式。其中最简便的是osmocom_fft,根据个人喜好可选择不同的界面,如下图的示波器和频谱FFT模式。

只要设置好目标频率,点击REC便可自动记录下信号样本,需要注意的是此时保存下的是信号原始IQ格式,文件容量分分钟过百兆。
如果想有更多的灵活性,则GnuRadio-Companion是必选之一。在用示波器模式分析信号的同时,还可捕获门锁信号并输出Wave格式的音频文件,以及原始IQ文件。
通过示波器模式显示门锁信号,使我们有更直观的感受。如下图分别是遥控器上锁和解锁2个按钮所输出的波形。
将捕获到的音频信号倒入Audacity后,显示的结果与示波器波形完全吻合。

我们还可以用上篇提到RTL-433进行采样,以下是解锁指令的信号解析,可以看到与上面音频,示波器结果相同,且以二进制等方式显示,使其更加一目了然。



2


分析


在对信号采样后,接下来就需要对其近一步分析。比如我们想要获取信号的波特率,通常的方法是套用已知公式 (1/ (最短波形长度/采样率))。如下图音频信号中 1/(542/2000000) 波特率大概是3690左右。
 

笔者这里推荐一款名为Inspectrum的开源软件。其界面友好,操作简单。如下图可以看出门锁遥控器的信号是典型的OOK模式。

通过自动化解析得到我们所需的波特率,跟之前音频分析得到的结果一致。

还可以将脉冲信号自动转换成相对应的二进制格式。这大大提高了分析工作效率。



3


发送


在分析完信号样本后,可以尝试回放信号攻击,之前提到的GnuRadio-Companion可以帮助我们将捕捉到的门锁信号,原封不动的发送出去。
需要注意这里发送的是门锁遥控信号原始数据,如果有任何噪音也同样一并发送出去。以下是信号发送演示视频 (https://www.youtube.com/watch?v=2Uszj0Wc8Zs)。

这里再跟大家推荐这款名为 Yardstick1 的无线神器。加上Python框架RFCat,我们可用脚本的方式来达到门锁信号回放的目的。
 
下图为攻击脚本,需要注意的是波特率以及数据包之间的间隔等参数一定要设置正确。

以下是使用 Yardstick1发送解锁指令信号演示视频 (https://www.youtube.com/watch?v=bDQ3YtoY8GA)。



4


总结


针对固定码的分析与破解就此告一段落。对汽车钥匙安全研究来说只是热了个身,接下来有更多烧脑的挑战在等着我们 (视频: https://www.youtube.com/shorts/m71ZGKYPKlo)。

参考文献:

http://samy.pl/opensesame/

https://www.audacityteam.org/

https://github.com/miek/inspectrum

https://github.com/atlas0fd00m/rfcat




 


看雪ID:星舆实验室

https://bbs.pediy.com/user-home-937445.htm

*本文由看雪论坛 星舆实验室 原创,转载请注明来自看雪社区




# 往期推荐

1.Java正则表达式笔记总结

2.二进制漏洞挖掘学习——MS09-050

3.Kernel从0开始

4.进程隐藏技术

5.基于模糊加权随机森林算法的恶意软件检测

6.Windows内核不触发PG Hook NtDeviceIoControlFile



公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com



球分享

球点赞

球在看



点击“阅读原文”,了解更多!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存