作业 5:汽车与遥控钥匙

概述

现在几乎所有的汽车都配备了遥控钥匙(key fob),方便你打开车门和启动汽车。购买汽车时,这种便利性是一个极具吸引力的特点。你可以把遥控钥匙放在口袋里,再也不用担心携带物理钥匙的问题。这听起来很棒。但你隐含的假设是,遥控钥匙系统是安全的,不会有随便一个人花费 50 美元的硬件就能把你的车开走。你无法真正判断汽车公司是否合理地设计了他们的系统,所以你只能信任他们。不幸的是,这种信任并非总是可靠的。只有当人们尝试破解这些系统时,问题才会暴露出来。而那些缺乏道德的人可能已经在利用这些问题了。

你汽车的遥控钥匙

有很多不同的遥控钥匙系统。我们将首先了解我的 2006 款 Prius 的遥控钥匙。遥控钥匙使用一种叫做 Remote Keyless System (RKS) 的东西。在美国,这些系统的工作频率为 315 MHz,+/- 2.5 MHz。我的 Prius 钥匙的频率是 312.590 MHz。所有的遥控钥匙都列在 FCC 数据库中。关注新的条目是人们预测新款车型何时推出的方法之一。这些信息会在官方发布之前很久就出现。你可以使用你的 SDR 和 GQRX 或 SDR# 监控频谱,从而确定你的遥控钥匙的发射频率。当你按下遥控钥匙上的按钮时,你应该会看到频谱出现短暂的跳动。你可能需要将频带上下移动几个 MHz 才能找到信号,我的频率比标准的低了将近 2.5 MHz。需要提醒一点:不要过度地按按钮! RKS 系统使用滚动的伪随机生成的代码。遥控钥匙和汽车都会保持同步,以便汽车能够识别下一个代码。但是,如果遥控钥匙在序列中领先太多(按了几百次按钮),汽车将无法识别它。这会使钥匙(以及汽车)的用处大大降低! 如果我们捕获信号,结果如下所示:

该图的总宽度为 10 秒,因此你可以看到在 2 秒后不久有一次按键,在 5 秒后不久有另一次按键。如果我们绘制从 2 秒开始的 100 毫秒,我们可以看到我们正在寻找的数字信号:

放大到前几个比特,我们得到:

这些比特很容易识别。 15 的决策阈值将提供几乎完美的检测。如果我们这样做,然后绘制两个按键的数字数据的第一部分,我们得到这个:

虽然两者开头相同,但它们迅速发散。这很幸运,因为如果每次信号都相同,你现在就有足够的信息来偷我的车了! 该数据再次是 on-off keying (OOK)。它也几乎肯定是 split phase (或 Manchester) 编码。信息不是通过 “1” 为高电平,“0” 为低电平来编码,而是通过从高到低或从低到高的转换来编码。“0” 比特是上升沿跳变,“1” 比特是下降沿跳变。识别 split phase 编码的好方法是,你最多只能有连续一个或两个低或高电平段。Manchester 编码的优点是,每个符号都有一个跳变,这比信号在高或低电平持续几个间隔时更容易找到。这个例子是 OOK,它是汽车遥控器最常见的编码方式。有些使用 frequency-shift keying (FSK),其中每个比特都以不同的频率传输,并且包络线是恒定的。

针对汽车遥控器的攻击

有很多不同的攻击可以用来对付汽车遥控器,这取决于它们的工作方式以及你想要什么样的访问权限。最简单的攻击只是让你打开汽车。更彻底的攻击则通过克隆遥控器来让你完全控制汽车。大多数遥控钥匙都使用滚动密钥。这会产生一个新的波形,它取决于遥控钥匙的 ID、一个随机种子以及钥匙被按下的次数。汽车会跟踪它收到的最后一个代码,并知道接下来的几百个代码可能是什么。如果它检测到其中一个预期的未来代码,它就会打开汽车。如果它收到以前使用过的代码,它就会停止响应遥控钥匙。对于 Prius,你必须做 "Chicken Dance" 才能让它再次工作,前提是你还有另一个可以工作的遥控钥匙。否则,你必须让经销商重新对汽车进行钥匙匹配,这要花费数百美元。我现在已经这样做了几次(因为其他原因)。 有几个攻击方向。一种是简单地记录遥控钥匙在远离汽车或汽车受到干扰时的输出。有了记录下来的未使用代码,你就可以打开汽车。另一种是逆向工程 RKS 序列。一般来说,这应该非常困难。但是,在某些情况下,这非常容易。最后,有些汽车会在车主靠近汽车时打开车门。这是基于一种低功率信号,只有当遥控钥匙非常靠近时才能接收到。通过放大这些小信号可以击败这种机制。 还有更多的攻击方式,并且随着汽车变得更加复杂,并且有更多的嵌入式计算机系统需要攻击,这些攻击方式将会继续增多。你可以在下周寻找其中的一些攻击方式。

重放攻击

最古老、最简单的方法是记录遥控钥匙发出的波形(使用你的 rtl-sdr),然后重放它。对于使用单个固定密钥的旧式车库门开启器来说,这种方法效果很好。现在仍然有一些汽车的遥控钥匙以这种方式工作(例如,一些 2000 年之前的 Mercedes)。 对于使用滚动密钥的遥控钥匙,你仍然可以使用重放攻击。如果你可以在遥控钥匙远离汽车时访问它并记录几次按键,你可以重放这些按键来打开汽车。 如果你无法访问遥控钥匙,第二种方法是制造一种设备,该设备在遥控钥匙使用时记录其输出,同时干扰汽车。一种标准的方法是监听遥控钥匙的传输,然后在错误校正位在末尾传输时开始干扰。这样你就不会干扰自己。汽车将无法识别数据包,但你可以重新创建错误校正位,并在以后重新传输波形。 最后,干扰器本身会阻止遥控器锁定汽车。如果驾驶员不注意,他们可能会离开汽车,使其处于打开状态。

重传设备

所有这些都取决于你传输和接收 RF 的能力。你的 rtl-sdr 只是接收器,并且在获取信号方面做得很好。有很多传输选项。有许多基于 TI CC111X 芯片的 USB dongle,这些芯片用于遥控钥匙中,例如这个:

最近引起很多关注的另一个设备是 Flipper Zero:

它与之前的设备具有相同的芯片,但包装更易于使用。这是 RF 黑客的瑞士军刀。它引起了很多争议,你可以在本周的作业中进行研究。 一种有趣、更灵活的方法是使用你的 Raspberry PI,通过向 GPIO 端口发送精心制作的数据序列来生成 RF。此处详细描述了这一点,并附有视频和代码链接: Raspberry PI transmitter 有了这个,你可以生成你想要的几乎任何数字数据包波形。功率水平足以模拟遥控钥匙。rtl-sdr 在 Raspberry PI 上也得到了很好的支持,因此两者结合在一起为你提供了一个总价约为 50 美元的完整遥控钥匙破解系统,我们很快就会看到。

攻击 Passive Keyless Entry and Start (PKES) 系统

许多高端汽车使用被动系统,以便在驾驶员靠近时打开车门。汽车会发出低功率信号作为质询。然后,遥控钥匙会通过身份验证进行响应。由于功率非常低,汽车会假设如果它收到响应,驾驶员一定在附近。可以通过构建一个放置在汽车附近的转发器来破解这些系统。它捕获汽车的信号并以更高的功率重新传输它。遥控器可以在几百米范围内的任何位置,它仍然可以听到信号。遥控器会响应,转发器会再次捕获该响应并重新传输。汽车认为遥控钥匙就在附近并打开车门。

这种方法的好处是,你不需要知道关于遥控钥匙的任何信息,除了它的频率。你不需要逆向工程它使用的协议,你实际上只是使用了真正的钥匙! 这是关于一些汽车窃贼使用这种方法偷窃 Tesla 的视频 Passive Remote Attack, Tesla Model 3 如何降低这种风险?

攻击滚动密钥系统

接下来的攻击针对的是滚动密钥系统本身。其通常的工作方式是,遥控钥匙发送一个 ID,以及一个密钥被按下的次数的计数器。这会被加密,并在你按下按钮时传输到汽车。

如果加密很强,则很难弄清楚用户 ID 和计数器是什么。有几个有趣的案例。一个是关于 VW (和 Audi, Porsche 等) 的 20 年历史的案例,我们将在接下来的内容中研究。另一个是关于 Subaru 的案例,你可以在本周的作业中研究。此处给出了 VW RKS 系统的描述 VW Hack 这指向一篇 Wired 文章(不幸的是,目前需要付费订阅才能阅读),并包含一篇技术论文,其中详细介绍了它的工作原理。该技术论文的作者研究了过去 20 年的 VW RKS 系统。 对于最新的系统,加密相对较强,相当于 90 比特的密钥。但是,事实证明他们在每辆车中都使用了相同的密钥! 1 亿辆! 那么,挑战就是弄清楚密钥是什么,以及加密算法是什么。汽车本身可以帮助你解决这个问题。当按下按钮时,汽车会收到信号,然后在车载计算机 (ECU) 中解码它。密钥和算法存储在 ECU 固件中。作者在 EBay 上购买了一些 ECU,下载了固件,并逆向工程了加密(这些通常是相当简单的按位运算,很容易识别)。 有了这些知识,在获取来自单个按键的信号后,可以解码用户 ID 和计数器,并且可以克隆遥控钥匙,从而完全控制汽车。 这里有几个有趣的事情。一是每辆 VW 汽车都会解码每个遥控钥匙,因此通过监视你的 ECU 的执行,你可以找到你周围所有汽车的用户 ID 和计数器。有报道称,人们使用这样的系统来窃取其他品牌的汽车。 只有你的汽车才会响应你的遥控器的原因是,你的汽车有一个它响应的遥控钥匙 ID 的“允许列表”。这是你在重新对汽车进行钥匙匹配时设置的内容。 所有这些听起来都非常令人担忧。但情况会变得更糟,我们将在下周看到。

作业

本周的作业你有几个选择。对于每个主题,生成大约 5 张幻灯片来描述你的想法或结果。在此处注册 Signup 并在此处上传你的幻灯片: Week 5 Slides

  1. 本文涉及 Subaru RKS 系统。阅读它,观看视频,并描述你发现的内容。 Subaru RKS
  2. Flipper Zero 引起了很多关注。你能找到哪些争议?该设备实际上可以做什么?是否应该禁止它?
  3. 能偷推土机的时候为什么要偷车! 阅读这篇文章,观看视频,看看它是如何工作的。 Hacking Industrial Machines
  4. 还有很多其他的汽车破解。看看你能不能找到一些有趣的东西,并描述它。寻找你可以弄清楚它是如何运作的故事。娱乐系统是一种常见的访问模式(查看 Jeeps 的 Uconnect 破解)。 Tesla 和黑客之间有着长期的猫捉老鼠游戏。这里有很多有趣的例子。最近的两个是 TeslasHondas

最后,如果你还没有,请给我发一封电子邮件,告诉我这门课对你来说怎么样。我感谢你的想法。 谢谢!