BlackHat 议题解读:针对汽车远程无钥匙进入系统的新型攻击 RollBack
2022-8-25 17:45:18 Author: blog.nsfocus.net(查看原文) 阅读量:22 收藏

阅读: 23

一、引言 & 概述

汽车(特别是轿车)的偷、盗、抢案件始终存在。先看几个案例,去年奥克维尔的汽车盗窃案激增,4 周内有42 辆豪车被盗。

今年3月,安全研究人员在本田汽车中发现了一个漏洞,该漏洞允许攻击者解锁并启动汽车。

今年4 月,阿尔斯特市就已经发生了今年第六起无钥匙汽车盗窃事件。

7 月,另一个针对本田汽车的新漏洞被发现,被称为Rolling-PWN 攻击。研究人员声称,虽然他们仅在过去十年中最受欢迎的十款本田车型上进行了测试,但据信所有本田汽车都受到了影响。

这些攻击存在一个共同点,就是它们都欺骗了车辆的远程无钥匙进入 (remote keyless entre,RKE)系统。

RKE系统的用户只需按下钥匙上的一个按键就可以打开车门和关闭车门。但RKE技术带来便利性的同时也存在安全性的问题。大多数低端的RKE系统发送器在每次按下按钮时都发送一个固定的识别码,低端系统中的惟一识别码通常是一个相对较小的数字。这些缺点为老道的窃贼们创造了机会,使他们能制造出一个能“截获”信号并重发的设备,或能快速“扫描”所有可能的识别码直到找到正确识别码的设备。采用滚动码加密技术可以大大改善固定码方式的安全性,因为每次遥控器发出的信息都是独一无二的,而且滚动码不存在简单的变化规律,这就有效的防止了简单的重放攻击,也无法被扫描。

采用了滚动码技术的 RKE 系统也并非牢不可破,2015年DefCon 大会上Kamkar分享的RollJam 被证明可以被利用并攻击所有基于滚动码的系统。通过信号干扰、捕获和重放,攻击者可以获取到尚未使用的有效滚动码。但是RollJam需要持续的部署直到被利用,因为一旦在没有 RollJam 的情况下再次使用了遥控钥匙,RollJam捕获的信号就会失效。

本议题提出了一种针对RKE系统的新型攻击 RollBack,它的特殊之处在于即使捕获到的滚动码已失效,也可以利用其触发RKE 系统中类似回滚的机制,并使得重放的信号被成功执行。此外,受害者仍然可以使用车钥匙,而且不易发觉遭受到了攻击。

与 RollJam 不同的是,它只需要一次信号捕获,就可以在未来的任何时间利用任意次数。这种与时间无关的特性对攻击者特别具有吸引力,尤其是在汽车共享/租赁场景中。针对不同汽车制造商、车辆型号和 RKE 制造商的持续分析,其中约 70% 的汽车易受 RollBack 的影响,并预计全球范围内的影响会更大。

二、滚动码

滚动码(Rolling codes),也称为跳跃码,是一种特殊类型的加密系统,用于无线无钥匙进入装置。过去,车主只需按一下按钮,遥控器就会将解锁码传送到汽车接收器上,这种方法有一个明显的缺陷,即任何人都可以在信号传输时接收到信号,然后在未经其允许的情况下使用该代码解锁车主的汽车。为此,滚动码技术出现了,它确保了每次传输的代码都是唯一的、不规则的、且不重复。滚动码的工作流程大致如下图所示:

1、车钥匙里存有当前的滚动码。当按下车钥匙按钮时,滚动码加上功能码(比如开门,关门等)一起发送给汽车。

2、汽车也存有当前的滚动码。当汽车收到同样的滚动码时,它就执行相应的操作。如果收到的数据不匹配,就不执行任何动作。

3、车钥匙和汽车里的滚动码是始终保持同步的。

4、如果在车钥匙距离车很远时误触了几次车钥匙按钮,或者钥匙发出的信号被故意拦截未被车辆接收,那么车钥匙中的滚动码就会前进好几步,此时跟车内的码就不同步了。这种情况下,汽车允许接收当前码之后指定数量的码,只要车钥匙发送的码在这个窗口之内,汽车都认为是有效的,成功接收后,计数器会再次重新同步。

5、如果车钥匙被误按超过设定次数,车钥匙和车就会彻底失去同步,这时候就只能想办法恢复同步了。

针对该过程的一种攻击场景如下图所示:

如果攻击者能够捕捉到车辆附近意外按下按钮的信号,那么就有可能通过重放该信号来解锁车辆。但是在实际情况下,要从随机的人那里获取这些信号是相当不现实的。

三、RollJam

在介绍 RollBack 之前,先来了解下RollBack 的研究基础——RollJam。

RollJam 设备是款无线电装置,比手机还小,售价32美元,设计的目的在于破坏“滚动码”的安全性。

RollJam的工作过程如下:

当受害者首次按下钥匙按钮时,RollJam利用廉价的无线电设备在汽车使用的常见频率波段上发送噪声,拦截信号Unlock1使其不能被车辆接收,与此同时保存截获到钥匙发出的Unlock1信号。

当首个钥匙信号遭到拦截,且未能解锁车门时,车主极大概率会再次尝试。在第二次按下钥匙按钮时,RollJam会再次拦截信号Unlock2,不过也会在同时传送第一次的信号Unlock1,这次车门被解锁了,通常用户会忽视之前的解锁失败。但是RollJam却获取了第二个有效的信号。如果RollJam安装在汽车上或藏在车库附近,它就可以重复拦截信号,不管车主进行了多少次解锁,它都始终传送上一个信号,然后储存下一个信号。RollJam的安装者不管何时取回这一装置,他都会得到一个未使用且有效的滚动码信号。

不过从此过程可看出RollJam存在两个主要缺点:

1、攻击者必须非常精确的掌握时机。如果其未能及时利用获取到的滚动码信号,一旦车主再次解锁了车辆,就需要重复之前的过程再次获取新信号。

2、当攻击者想再次打开同一辆车时,必须从头开始重做所有事情。

四、RollBack:与时间无关的重新同步攻击

  • RollBack是什么

RollBack最初是在 2021年8月发现的,研究员在研究一辆使用了滚动码的日产汽车时发现,捕获并重放两个连续的解锁信号就能够解锁汽车,下面详细讲解该过程。

当受害者首次按下钥匙按钮时,RollBack设备发送噪声拦截信号Unlock1,与此同时截获该信号。

当首个信号遭到拦截未能解锁车门时,受害者极大概率会再次尝试。在第二次按下钥匙按钮时,RollBack不会拦截信号Unlock2,只会捕获它,因为车辆顺利接收到了Unlock2,车门被解锁了。

接下来,车主如往常一样使用车钥匙开锁、关锁,可能会重复 n 次。

接下来攻击者控制 RollBack设备重放之前捕获的两个连续“解锁”信号 Unlock1和 Unlock2,当重放Unlock1时,车门还是处于锁定状态,但是重放Unlock2 之后,车门被打开了。

在上述场景中,滚动码的变化过程如下图所示:

可以发现在攻击者重放了连续的两个滚动码之后,车辆中的滚动码计数器重新同步到了之前的滚动码n,因此会响应 n+1 次发送的命令。

可以看出,RollBack 与时间无关,它的两个明显特点是:

一旦攻击者捕获到信号,无论车主使用钥匙解锁关锁汽车多少次,都可以在未来的任何时间启动 RollBack。

RollBack 成功利用一次后,它还可以根据需要再重新利用多次,而无需从头开始重做任何事情。简而言之,一次捕获两个信号,就可以无限期地访问该车辆。

  • 不同的RollBack变体

但是对于不同的汽车,执行RollBack的过程并不完全相同,通过测试不同的车辆和系统,研究人员发现有以下几个因素是视情况而定的。

首先是需要重放的信号数(SIGNALS)。在上面的例子中重放的信号数是2,然而,其他易受攻击的系统可能需要更多。因此,RollBack的第一个(也是最重要的)属性是攻击者必须捕获(和重放)的信号数量。

其次观察到的现象是,对于有些车辆比如马自达,攻击者必须严格按照相同的、连续的顺序重放信号,也就是说,不能错过中间的任何信号。但是也发现有些易受攻击的车辆(比如起亚)并不特别关心这个问题,捕获的任意两个非严格连续信号重放都是有效的。因此,把第二个需要注意的属性称为SEQUENCE,它可以是严格的(就像前面提到的日产汽车的情况,必须是连续的两个信号);也可以是松散的,即只要是按照捕获的顺序重放信号即可。

第三个属性称为TIMEFRAME,表示重放时相邻两个信号之间可以经过的最大秒数。一些车辆对此进行了限制;有些车辆则无限制。捕获信号后,使用Universal Radio Hacker等应用程序在给定的时间范围内重放它们(即修剪信号间的“空噪声”)很容易。

目前发现的变体组合如下:

  1. 需要重放2条信号、2条信号无需一定是连续的、信号发送的间隔无要求。
  2. 需要重放2条信号、2条信号必须是连续的、信号发送的间隔不能超过N秒。
  3. 需要重放3条信号、3条信号必须是连续的、信号发送的间隔无要求。
  4. 需要重放5条信号、5条信号必须是连续的、信号发送的间隔无要求。

到目前为止还没有发现 (2,严格,U)、(2,松散,y秒)的组合情况。

  • 哪些车辆受到影响

在分享RollBack的影响范围之前,研究人员先做了免责声明,表示:

“在整个研究过程中,他们没有在野外使用 RollBack 进行任何尝试。所有测试均在隔离环境中执行,附近没有其他车辆和钥匙。所有捕获的信号只是临时存储的,在捕获信号并重放它们后,数据立即被永久删除。

此外,无论是否容易受到RollBack的影响,重放信号都不会对车辆、车钥匙和整个电子生态系统造成任何损害。

研究人员调查了在新加坡有售的几款流行的亚洲汽车,所检查的车辆及其相关信息详见下表:

表中车辆型号被故意混淆了,制造日期是测试车辆的实际制造日期,这些信息是通过车辆的标识符(即VIN 号码)获得的。

RKE制造商、芯片版本以及序列号在当前表中也被故意混淆了,这些信息是通过手动拆卸钥匙扣后获得的,不过当拆卸钥匙扣不可行或印刷电路板上的芯片信息被遮挡时,可通过钥匙扣的FCC ID来查询,或在零售商的网站上寻找备用钥匙扣来获取相关信息。如果实在无法通过上述任何一种方式获得RKE的制造商,就在上表中留空。

表中最后一列记录车辆RKE系统是否容易受到RollBack的影响。

最终,通过实验得出的结论如下:

  • 车辆的年龄无关紧要。新款汽车可能与老款汽车一样脆弱。
  • 传动系统(混合动力与汽油)无关紧要。尽管混合动力或纯电动汽车使用更多的软件(因此可能更容易引入应对措施),但 RKE 系统本身似乎是独立的。
  • 大多数测试的亚洲汽车都易受攻击。例如,所有经过测试的马自达、本田和起亚汽车都易受攻击。但是,所有经过测试的丰田汽车都不易受到RollBack的影响。
  • 所有使用2和 Mfr.3制造商提供钥匙的车辆都受到影响,而且它们都只需要两个信号。
  • 大多数使用 Mfr.1 制造商提供钥匙的车辆会受到影响。马自达汽车需要3个信号,本田汽车需要5个。
  • 使用4 制造商提供钥匙的车辆似乎是安全的

五、原因 & 缓解

研究人员明确表示,RollBack能够成功的根本原因尚且未知,猜测问题存在于钥匙的学习过程中,这就涉及到跳码编码器的工作原理了,虽然并不确定是学习过程中哪个环节出现了问题,但是可以以Microchip HCS201为例来简单了解下“学习”的过程。

在允许系统使用发送器之前,发送器必须首先被接收器“学习”。学习包括计算发送器的相应密钥、将接收到的跳码解密,并将序列号、同步计数值和密钥存储在EEPROM 中。

解码器(将从编码器接收到的数据解码的器件),接收并验证第一次发送 (第一次按下按钮时)。验证包括生成相应的密钥、解密、通过识别位验证密钥使用是否正确并缓存计数值。接收并验证第二次发送。最后,检查计数值是否与上一次连续 (按下按钮是连续的)。如果成功完成了学习,解码器就会将已被学习的发送器的序列号、当前同步计数值和相应的密钥保存起来。此后在正常操作中,就能从 EEPROM 获取密钥,而不用在每次接收到发送时重新计算密钥。

缓解措施也暂未能提供,但为信号添加时间戳(并在接收时检查它们)可能会有所帮助。

参考链接

版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。


文章来源: http://blog.nsfocus.net/blackhat/
如有侵权请联系:admin#unsafe.sh