破解特斯拉的第一人,360车联网安全中心工程师刘健皓又造出“万能车破解器”:正儿八经买的一辆新车,可以轻而易举地被他开走?!其实,在11月,刘健皓就展示了这一酷炫的技术。360 公司大楼下列阵了二十几台豪车,利用神秘的技术,刘健皓和团队轻松逐一破解了这些车。
这次,他就是来详细解密——他是如何做到的。
CAN 总线留下的 BUG一切危险的源头是因为汽车的CAN总线设计。
CAN 是控制器局域网络 ( Controller Area Network ) 的简称,是在1986 年,由以研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。
对于汽车,有很多种攻击途径:OBD 盒子、WI-FI、蓝牙、车机 APP、车联网平台……它们都要经由 CAN 总线进行控制。如果 CAN 总线安全,那么即使黑客利用上述途径,对车耍花招,汽车整体安全还是可以被保证,这些花招都仅仅是“娱乐”而已。但是,如果 CAN 总线不安全,这样的汽车就可以受到“狗带”般的攻击——你拿着车钥匙也没用,这车现在属于控制了 CAN 总线的黑客。
如何守卫 CAN 总线的安全,要从 CAN 总线的结构说起。
故事是这样开始的,很久很久以前……
传统的汽车线束结构是这样:很多控制器链接在一个东西上,控制器之间可能还会互相干扰……
直到有一天,人们忍不了了,设计出一个总线架构,就像交换机一样,所有 ECU (电子控制单元)都要经过这个“交换机”:交换信息,协调指令。
但是,现在看来,CAN 总线还有几个致命的攻击点:
1.它遵从 CSMA/CD 的交流方式,在任何一个节点搭上总线,都可以看到总线的数据,所以黑客只要找到一个点攻破,就可以看到车内所有数据;
2.它支持多路访问,网络上所有节点接收数据都经过一条总线,所有数据都在一条线上,发的数据是广播的,所以可以看到很多控制器发的控制指令,如果控制指令是明文,那么就可以通过重放的方式控制汽车的一些设备;
3.它有一个冲突检测机制,所有节点在发送数据的过程中,会不断检测所发送的数据,预防与其它节点产生冲突,由于这样的机制,只要一直在传统线中发送数据,就可以导致 CAN 总线拒绝服务,车上任何控制器都没有反应。
刘健皓介绍,只要知道 CAN 总线的数据、ID、发送周期,那么黑客就可以通过重放来判断某个控制功能。
所以,对 CAN 总线的攻击其实十分危险,可以窃听总线数据、伪造协议,实施重放攻击和拒绝服务攻击。这意味着,如果做了这些动作,车处于极度危险中。 万能车破解器真的能破解一切车?
是的,只要车有 CAN 总线设计。
先看一下理论分析——汽车 CAN 网络逆向过程主要分为4个步骤:筛选、定位、破解信号、验证和保存。
第一步:筛选
使用市面上一些 USB-CAN 的工具与汽车的 CAN 总线相连,可以获取 CAN 总线上广播的 CAN 数据包,从大量数据包中进行逆向分析,找到想要的 CAN 数据包。
第二步:定位 CAN_ID
对于车身的某一项功能的控制,只需要一个 CAN ID 的数据包即可,这时只需要单纯地重放即可达到攻击的目的,还有一些功能需要多个 CAN ID 的数据包联合才可以,还有一些 CAN ID 数据包上带有计数器,在攻击时必须加上计数器才能绕过预碰撞系统的阻碍。
第三步:破解信号
CAN_ID 的数据包里一共有8个字节,每一个字节代表什么以及这些字节上的数字都是不固定的,比如速度表上的数值是根据公式计算出来的,如果改变成想要的数值(就是电影里那样改变速度置人于死地),需要带入公式才能得到正确的结果。
在测试的过程中需要触发汽车动作,再确定 CAN_ID 的变化,然后找到对应的值,这样就可以把信号和汽车动作破解出来了。
第四步:验证和保存
结合上述结果,做成 FUZZ 工具,进而发现更多的汽车漏洞,如果需要修复的话,当然也是可以的。
实际操作起来,要不断解决一些困难。
刘健皓说:“我们拿一些传统 USB 工具接到车上面,发现刷屏非常快,分析 CAN 协议时,看执行动作,眼睛都要花掉。”
为了能清晰地分析数据,没有工具,那就自己造一个。因此,刘健皓及他的团队造出了一个“CAN—Pick”。这个“CAN—Pick”就是他们口中的“汽车安全总线测试平台”——测试汽车总线是否安全。
其实,它也是一个万能车破解器。
虽然,它的外表看上去没有那么酷炫狂拽,仅是一个可以连接车的小黑盒和一个软件平台。
那么,究竟如何操作,这辆车就会被黑掉呢?
拿着电脑和小黑盒连接到车身,车身在静止状态时也会产生一些数据,这些数据被称为干扰数据,第一步就是获得这些干扰数据。小黑盒连接上的时候,软件平台上就会出现可视化的干扰数据;然后,操作车灯,获得车灯操作时的数据包,与干扰数据进行比对,从而发现真正能够下达操作车灯的指令数据包。把这个新获得的数据包进行重放,那么就可以操作车灯。
其它操作同理。
360 车联网安全中心另一工程师严敏睿介绍:
这款软件支持全平台,有多种硬件可以进行试配,不管是市面上的,还是自己开发出来的,都会提供 SDK,让你自己自行进行试配。同时可以在线编写一些插件,这些插件可以共享到服务端,也可以从服务端下载一些别人编写的插件进行共享,多个人可以同时对这款软件进行操作。
这意味着,“全民”可以加入到“黑车”——哦,不,是测试车是否安全的平台中来。
既然 CAN 总线可以被攻击,这个工具也可以检测出一辆车是否安全,那么有没有什么方法可以阻止这一切发生?
刘健皓表示,汽车总线设计之初是在封闭网络环境中使用,并没有考虑安全问题,对于总线网络结构及控制指令的设计,要增强各 ECU 之间的验证措施,包括使用时间戳和校验的方式防止重放破解攻击,提高控制协议被逆向的成本,同时要控制好联网部件的安全性。
他们现在的思路是,对 CAN 总线进行安全加密,比如,在数据包中是否可以插入一些加密算法。刘健皓透露,目前,清华大学的研究团队也正在对这一领域进行研究。