谁动了我的汽车—车联网安全探讨

  • A+
所属分类:无线安全

作者:jmpesp

以前,汽车是孤立的,物理隔离的,因此黑客很难远程入侵汽车内部电脑(ECU),除非进行物理入侵,而这个是需要很高的犯罪成本。随着互联网的进化,当golo3这样的车联网产品通过OBD(On Board Diagnostics)诊断座将汽车内部ECU联网之后,汽车受到的远程网络攻击就不再是猜想。可以预见,一旦车联网产品普及,关于汽车被攻击的现实案例就会出现并越来越多。

试想一下,在高速公路上汽车发动机被人为控制突然熄火,会是怎么样的一场结局?你,害怕了吗?

一 OBD诊断座与ECU拓扑结构

在详细探讨车联网安全之前,首先我们来了解下OBD诊断座,如下图是SAE J1962标准对OBD诊断座的定义:

谁动了我的汽车—车联网安全探讨

OBD诊断座是一个包含16pin的母座,除上图给出的引脚的定义,其它没有给出的引脚都由汽车厂商自己定义。不同的ECU通信协议可能采用不同的引脚, KWP(key word protoctol)关键字协议采用的是7号引脚或者15号引脚,目前最普遍的500kbaud的iso15765协议(高速CAN)采用的是6号引脚和14号引脚。OBD诊断座一般位于汽车方向盘的下面,不同的车型具体位置可能不一样,下图给出的是丰田凯美瑞2011经典版OBD诊断座的具体位置:

谁动了我的汽车—车联网安全探讨

图2 丰田凯美瑞2011经典版诊断座位置

接下来我们需要了解ECU和ECU之间的拓扑结构。ECU(Electronic Control Unit)电子控制单元,通俗的的说,它其实就是一些用于控制,记录或者改变汽车的状态的单片机或者ARM芯片。一般现在汽车内部都会有十几个到几十个不等的ECU,不同的ECU掌管不同的模块,比如,发动机控制模块(PCM)会接受传感器信号,通过复杂的计算来控制燃油的供应量,空气的配给(电子节气门),喷油及点火的时机,进气压力的调整,还要根据温度、负荷、爆震、燃烧状况等来决定发动机的补偿控制系数。按照功能的不同,我们又可以把ECU分为动力,车身,底盘,其它等几大类。下表列举了高配置的2011款经典版凯美瑞的一些ECU模块。

谁动了我的汽车—车联网安全探讨

表1 2011款经典版凯美瑞的一些ECU模块

汽车内部除了ECU之外,还会有大量的传感器以及执行器等部件,通过它们的协调工作共同完成复杂的智能化操作。那么ECU与ECU,ECU与其它部件又是如何通信的呢?如下图是汽车内部各个部件之间的拓扑结构

谁动了我的汽车—车联网安全探讨

图3 CANBUS拓扑结构

实际情况比上图中复杂的多,不同车型之间也会有差别,各部件之间可能还会出现直接相连接,总体来说原理是差不多的,所有部件平等的连接在CAN总线上。CAN总线具备低成本,总线利用率极高,可靠的容错机制,高速的传输速率等物理特性。它是基于广播形式的,也就是说同一总线上的任何一个节点往总线上发消息,总线上其它的节点都可以收到该消息,然后根据消息的头部来判断是否是发给自己的消息。不同波特率的总线之间通过网关来完成信号适配。

二 通过OBD诊断座我们能做什么

我们知道OBD诊断座的设计初衷是用于汽车诊断,它是汽车ECU与外部进行交互的唯一接口,也就是说汽车诊断仪能做的我们都能做,我们先来看看符合市场要求的诊断仪应该具备的功能:

1. 能够读取汽车ECU的信息,比如17位vin码,ECU的硬件信息等。
2. 能够读取汽车的当前状态,比如当前的车速,胎压等等。
3. 能够读取汽车的故障码,快速定位汽车的故障位置,并且清除故障码。
4. 能够对汽车进行一些预设置的动作行为测试。比如车窗升降等
5. 除上述基本的诊断功能之外,还可能具备刷动力,里程表修改,钥匙匹配,安全气囊复位等复杂的特殊功能。

除此之外,我们知道CAN总线是基于广播的形式来发送消息的,并且消息一旦发送到CAN总线上,接收到此消息的ECU是无法确定该消息是从哪个节点发来的,即消息不包含源地址或者目标地址,消息头部仅仅是个标识符,ECU仅仅是根据这个标识符来辨认是否是发给自己的。这样的设计缺陷自然就能导致消息伪造和欺骗攻击。OBD诊断座作为总线上的一个节点,不仅能监听CAN总线上面的消息,而且还能伪造消息(比如传感器消息)来欺骗ECU,从而达到改变汽车行为状态的目的。

综合上述的两种情况,我们可以把CAN总线上的消息分为如下两种:

1. 诊断仪与汽车ECU之间通信的消息叫做诊断消息。
2. 汽车内部各部件之间通信的消息叫做内部消息。

通过精心构造上面定义的任何一种消息序列发往总线,恶意攻击者都有可能改变汽车的状态。

这里可以列举几种攻击以及攻击带来的后果。比如恶意攻击者可以通过对车身系统发送消息序列来解锁汽车车门和尾箱,从而达到窃取车主财物的目的;再比如攻击者可通过构造消息序列发送给OBD诊断座强制让跑在高速上的车辆发动机熄火,从而达到车毁人亡的目的。

三 对车联网的攻击途径

OBD车联网产品由云端服务器、手机APP、盒子三大基本要素构成,攻击其中的任何一个要素以及要素之间的通信,都能够给车联网带来毁灭性的打击。我这里例举几点:

1.入侵云服务端,篡改服务端的诊断数据逻辑,达到改变汽车行为的目的
2.通过逆向工程获知手机APP和盒子之间的通信逻辑,伪造成车联网产品的手机APP向盒子发送恶意的消息序列。
3. 通过WIFI、蓝牙等通信渠道进行攻击等等。

四 案例演示

这里选择2011款的丰田凯美瑞经典版作为演示对象,如下图:

谁动了我的汽车—车联网安全探讨

图4 2011款的丰田凯美瑞经典版

1.获取当前车速:http://v.qq.com/page/m/3/m/m0130i9zr3m.html

2.欺骗汽车仪表盘::

谁动了我的汽车—车联网安全探讨

详细视频演示:http://v.qq.com/page/r/q/h/r0130lc5fqh.html

3.欺骗ABS警告灯:

点亮ABS警告灯,让车主认为防抱死系统有问题。

谁动了我的汽车—车联网安全探讨

详细视频:http://v.qq.com/page/x/5/i/x0130inc45i.html

4.杀死发动机(kill engine):

向OBD诊断座发送特定指令后,点燃的发动机瞬间熄火。

详细视频演示:http://v.qq.com/page/j/j/n/j0130x1x4jn.html

五 总结

和PC时代一样,破坏总是会伴随着创造而诞生,它会稍微落后于创造,但是车联网的安全问题远远比以前要重要很多,因为它与人们生命息息相关!可以想象,当汽车不再孤立,安全问题绝对是最先需要考虑的领域!

未完待续,敬请关注。

【附录】

https://law.resource.org/pub/us/cfr/ibr/005/sae.j1962.2002.pdf

http://en.wikipedia.org/wiki/ISO_14230

http://www.ebn.din.de/sixcms_upload/media/1995/9601556.pdf

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: