汽车钥匙
不久前在HackPWN的启动仪式上,安全人员仅用2分钟就通过无线钥匙破解了一辆奔驰汽车,看起来黑客要偷走一辆汽车很容易。真的这么简单吗?作为无线安全研究者,在这里给大家做一点简单的汽车无线钥匙通信安全的科普。
先从汽车无线钥匙的“信号”长什么样说起吧?
常见的汽车无线钥匙一般工作在两个频点,315MHz和433MHz。调制方式比较常见的有两种,ASK和FSK。复杂一点的有双频点FSK,还见过多频点ASK的。
可以用俗称电视棒的一种小硬件来观察汽车钥匙的无线信号。在网络上搜索“RTLSDR”,”电视棒”,就可以找到。它本来是用来插在电脑上,收看电视节目的。大概50块钱就可以买到。
把它接上天线,然后插到电脑上,使用一些观察频谱的软件就可以看到,比如:
- HDSDR (http://www.hdsdr.de/) - SDR# (http://sdrsharp.com/) - Gqrx (http://gqrx.dk/)
把频点设在汽车钥匙使用的频点上,就可以看到像下图这样的频谱。
这是一辆奔驰车的钥匙信号频谱。频段是433MHz。中心频点是433.96MHz。
这是一辆奥迪车钥匙的信号。
从图中可以看出,信号的频段是315MHz频段。中心频点是315.04MHz。
这里使用的软件是HDSDR。我们将这段信号存为波形文件。
使用音频分析软件打开波形文件。
这就是一次按键发出的信号。有两段信号。如果按的时间长一点,就会是这样。
出现好几段信号。按下的时间内,钥匙持续发出一段一段的信号。这里面的每一段信号都是一样的,重复发送。我们来仔细看一下每一段信号的样子。
把信号放大展开,可以看到每一段信号,前面部分是一些重复的脉冲,就叫它同步引导序列吧,它用来提示接收机有信号即将到来,还可以获得时钟信息。后面的部分是有效的数据。
我们把一次按键的两段信号拖到一起,比较一下。
可以看到是完全一样的。如果把两次按键的信号放在一起比较。
可以发现,两个信号是不一样的。也就是说汽车钥匙每次按键,发射的信号是不一样的。
这就是大名鼎鼎的“滚动码”,“Rolling code”。
滚动码的原理大致是这样滴:
1.滚动码是一个周期很长的伪随机码。例如有240。意思就是码的长度有40个bit。现在大部分车钥匙的码长都比40bit长。 2.车钥匙里存有当前的滚动码。当车钥匙按下时,滚动码加上功能码(比如是开锁,解锁,还是开后备箱)一起发送给汽车。 3.汽车也存有当前的滚动码。当它收到同样的滚动码时,它就执行相应的开锁之类的操作。如果收到的码不匹配,它就不做任何动作。 4.车钥匙和汽车里的滚动码是保持同步的。 5.当车钥匙距离车很远的时候,有人不小心按了几次车钥匙,车钥匙的随机码就会前进好几步。此时跟车内的码就不同步了。为了解决这个问题,汽车允许接收当前码之后的(比如)几百个码。只要车钥匙发送的码在这个窗口之内,汽车都认为是有效的。 6.如果车钥匙被误按超过设定的几百次,那么车钥匙和车就彻底失去同步了。这时,需要查找汽车的使用手册,找到恢复同步的方法了。
从上面这个原理可以看出来,如果我们能得到汽车当前滚动码“之后”的一个码,只要在窗口之内,就可以把车打开。怎样才能得到一个有效的,未被使用的码呢?比较简单的方法是这样的:
录制一段信号,然后到汽车那边去播放。
或者是,一边录,一边播……
不管怎样都需要接触到车钥匙,所以这并不是那么容易的事情啊。录音工具呢,有很多种,用前面讲到的电视棒就可以了。播放工具呢,也有很多种,比如rfcat (http://int3.cc/products/rfcat)
再比如,使用TI的C1111自己做一个RF收发分析器,比如UnicornTeam做的下面这个东西(增加了PA和SMA)
那有没有不需要接触钥匙,就能得到一个有效码的方法呢?
当然也是有的,那就是一些高级方法了。下面进入密码学的学术领域……
http://www.cosic.esat.kuleuven.be/keeloq/
这个链接是2007年以色列和比利时的几个研究者,找到的一种破解滚动码的方法。它需要先花大约一个小时的时间对钥匙进行65536次试探,解出64bit中的36个bit,然后再花几秒钟就可以完全破解钥匙的滚动码。完全破解的意思就是,这个伪随机码的全部规律都已经被破解了,可以知道下一个码是什么。
在实践中,它需要用相应的芯片(也就是汽车端配对的芯片)伪造一个transponder and encoder,让它工作在IFF(IDENTIFY FRIEND OR FOE)模式,对车钥匙发出试探信号(challenge),车钥匙发回一个response。车钥匙每产生一次response需要60ms或90ms。因此,收集65536个challenge/response消息对,需要65或者98分钟的时间。而且,车钥匙能够支持IFF模式的距离是多远呢?应该是非常近的距离。所以场景差不多是这样滴:
http://www.emsec.rub.de/keeloq
2008年,德国鲁尔大学的几个研究者使用了side-channel attack(中文有翻译为,旁路攻击,也有叫边信道攻击)的方法,通过分析解码控制器的功耗来解出KeeLoq密码。因为控制器在做不同运算时消耗的功率是不一样的。通过测量控制器的功耗,结合KeeLoq的算法,这种算法基本上是很成熟和固定的,可以推导出控制器中存储的密钥是什么。他们的研究成果,把破解KeeLoq密码的时间缩短到了几秒钟。
看起来这个方法是最牛最高效的了。但是你仍然要接触到钥匙,还要懂得怎么测量控制器的功耗,能分析出啥时候在算乘法啥时候在算加法……估计全世界懂这个技术的人也不多了。
所以!开车门也不是那么容易的。实践中,小偷们的开门方法其实是这样的。
以上说的都是通过钥匙的无线信号解锁的方法。现在的车越来越智能,出现了用蓝牙连接,用手机APP通过蜂窝网络连接,等等各种新的开车的方法。就不在本文讨论的范畴了。一个系统越复杂,可能出现的漏洞就越多。
另外,开关车门和发动汽车又是两码事,分别有两个系统管理。所以即使打开了门,也很难把车开走。你以为扯出两根电线短路一下就能发动汽车吗?那都是电视剧!
Hack,这个词有拆开来,钻进去,看看里面究竟是怎么回事,这样的意思。所以我们常常说破解XX,未必是有漏洞能利用,也有分析内部原理的意思。HackPWN的“真极客,放胆破”,这句文案,我觉得不错。:) @Alin
*作者:360UnicornTeam(团队账号),转载须注明来自FreeBuf黑客与极客(FreeBuf.COM)
- 上一篇:揭秘:比特币赌博网站Primedice如何被黑客坑走100万美元的
- 下一篇:用面包和无线接收器黑一台电脑
0daybank
已有 35 条评论
科普系列
科普系列
画功不错,简单明了
言之有理 晚辈受精了
哈哈 不需要啊 研究精神 所以叫安全人员 据说360的安全成员年薪百万
感觉有这技术 还需要盗车么
为什么今早摇不到流量?
一起学习下,如何优雅的破解一辆汽车
转发,提升逼格! 一起学习下,如何优雅的破解一辆汽车
转发,提升逼格!
百万豪车舒适进入,不用掏钥匙出来,有效距离只有2米左右,请问你拿锤子破解吗
看样360准备进入汽车领域。
是哒!!
cc1111emk可以用普通的315,433超再生发射模块可以吗?
一起学习下
一起学习下,如何优雅的破解一辆汽车
转发,提升逼格!
一起学习下,如何优雅的破解一辆汽车
转发,提升逼格!一起学习下,如何优雅的破解一辆汽车
转发,提升逼格!
一起学习下,如何优雅的破解一辆汽车
转发,提升逼格!
。。。
优雅的!一起学习下,如何优雅的破解一辆汽车
转发,提升逼格!
受了什么刺激了这是
秘密通道即可实现心中所愿……一起学习下,如何优雅的破解一辆汽车
转发,提升逼格!
rfcat要700大洋
来破我那速腾试一试?破完等30秒,你懂的!
单向验证的滚动码确实非常不安全,奥迪有过双向验证的钥匙,奔驰新钥匙硬件也是支持无线收发的,估计是钥匙端接收电路做不远还是为了兼容旧的EIS吧。
看你妹!我不是你们用户,是病毒流氓软件受害者。我只问一句:请问如何在正常的日常网络使用中避开贵公司的全家桶流氓软件?
@ 小白叁月玖 用企鹅的即可,还有,别老是乱喊,360惹你什么了?
请看下用户反馈
谢谢科普
工作居住证可以2个月
昨天在紫金港约妹纸,我不就是和妹纸去学校里厕所做了十分钟羞羞的事情嘛,谁特喵的把我放车里的TT取出来放到了我Tesla的车顶上!
这方法有些车不可用但是对于国内的很多车都是可行的..
但是还有个方法..信号隔离..
但是现在高档车都是指纹 声纹..识别..好吧
后面的高手去研究..
学习了 挺好如果到外地钥匙锁到车里了 可以通过电话用备用 钥匙按下门就开了
技术贴
最后一招才是大招呢

unicorn team 的工具,如果大家馋
的话,欢迎加入UT都是免费用~免费
@ 米特尼克 到哪能买到?也不给个连接 期待中
真极客,放胆破