汽车“变身”游戏神器:网络安全专家的疯狂实验
英国知名网络安全公司Pen Test Partners(PTP)的专家们,凭借着对汽车安全研究的执着与热爱,成功将一辆真实的汽车改造成了游戏控制器,为赛车模拟器带来了前所未有的真实体验。
PTP拥有一辆用于各类汽车安全研究的内部车辆。这次,他们把目光投向了从总部附近经销商处购入的2016款雷诺Clio。这辆车看似普通,却成为了他们展示汽车数据操作技巧的绝佳“道具”。他们想通过这种看似“愚蠢”却充满创意的方式,向那些怀揣着汽车网络安全梦想的有志之士,生动地展示如何与汽车数据打交道。毕竟,谁会拒绝这种游戏化的学习方式呢?
在汽车内部,控制器区域网络(CAN)数据通过电子控制单元(ECUs)在车辆各部件之间穿梭,它们就像汽车的“神经信号”,指示着诸如制动、加速等不同操作的进行。对于想要投身汽车网络安全领域的人来说,深入理解如何收集和操纵这些CAN数据是至关重要的。
PTP的专家们开始了他们的“魔法”之旅。他们首先精准地隔离了那些发送到初始化Clio刹车、转向和加速功能的CAN数据信号。接着,将这些控制巧妙地映射到了SuperTuxKart这款类似FOSS马里奥卡丁车的游戏上,而实现这一神奇转换的“魔法棒”,正是Python语言。
居民硬件黑客大卫·洛奇(David Lodge)是这次实验的关键人物。他先用廉价的电线连接器小心翼翼地连接了CAN线,试图隔离由Clio各项功能发送的消息。这可不是一件轻松的事,需要他勤奋地查阅大量文档,借助开源的Clio代码解密工具,还要亲自踩踏踏板、转动方向盘,通过不断尝试来确定哪些仲裁ID对应着需要映射的控制。
洛奇在记录中写道:“一旦你掌握了正确的电气状态并知道总线速度(我使用了Kvaser Leaf Pro),就会发现一个标准的CAN数据包由11位的仲裁ID、8个字节的数据以及关于该数据包的标志和元数据组成。因为CAN报文很小(8字节有效载荷),仲裁ID也只有少数几个(0x800或十进制中的2048),而且较小的仲裁ID优先级更高,所以消息通常会深入到报文内的特定比特。几种CAN数据库格式将报文称为比特流而不是使用字节,但我更习惯用字节来思考。”
在将CAN信号转换为视频游戏控制器输入的过程中,洛奇遇到了不少挑战。他发现,仅仅使用一个简单的Python输入设备远远不够。方向盘的转动会产生大量的上下左右按钮按压信号,导致游戏中的响应出现延迟,就像在高速驾驶时突然遇到了交通堵塞。为了解决这个问题,他决定重新设计CAN总线,将按键注入改为使用CAN数据更新状态机。
刹车功能的映射相对容易,因为刹车本质上就是一个开/关功能,就像一个简单的开关,一按就启动,一松就停止。但转向功能却让洛奇头疼不已。由于Clio处于静止状态,那些在游戏中想要像在真实赛道上一样疯狂转向的玩家,只能在展示厅里徒劳地磨损轮胎。为了解决这个尴尬的问题,洛奇将转向阈值调小,就像给汽车的转向系统装上了一个“温柔”的调节器。
洛奇原本还梦想着把Clio的按钮映射到游戏中使用的物品上,比如香蕉和加速道具。他甚至幻想着利用Clio的号角来发射这些物品,就像给汽车赋予了神奇的魔法力量。然而,现实却有些残酷,该按钮并没有使用CAN数据传输信号,这个美好的想法只能暂时搁置。
由于时间紧迫,洛奇没能给汽车安装速度表。但如果时间充足的话,他完全可以通过向克莱奥的仪表盘发送信息来实现这一功能,让游戏中的速度与汽车的实际状态更加同步。
在实验过程中,团队也遇到了不少麻烦。电池耗尽、频繁的系统崩溃以及克莱奥发动机在五分钟之后自动关闭等问题,就像一个个小怪兽,不断干扰着他们的实验进程。但团队成员们凭借着顽强的毅力和专业的技术,成功消除了这些障碍,最终得以进行了一场精彩绝伦的演示。
此外,值得一提的是,在网络安全领域,类似这样充满创意和挑战的实验并不少见。比如,研究人员曾远程利用用于管理飞机安全起降的设备,发现其中存在安全隐患;费舍尔·普莱斯对学龄前儿童手机蓝牙的重新启动存在成人隐私漏洞;渗透测试合作伙伴还发现波音747飞机通过3.5英寸软盘接收关键软件更新;Pen Test Partners更是表示,航运领域的安全状况令人担忧,仿佛可以开着油轮随意离开。