汽车黑客:没有Security就没有Safety

安全
“汽车黑客”(car hacking) 的话题正越来越多地在媒体和安全公司之间讨论。曾几何时,黑客利用手中的工具黑掉一辆汽车的画面还只是出现在电影中,现如今已经在现实中成为可能,且成为了人们开始担忧的问题,这正是本文要讨论的话题。

简介

“汽车黑客”(car hacking) 的话题正越来越多地在媒体和安全公司之间讨论。曾几何时,黑客利用手中的工具黑掉一辆汽车的画面还只是出现在电影中,现如今已经在现实中成为可能,且成为了人们开始担忧的问题,这正是本文要讨论的话题。

对车辆进行大规模技术引进的影响之一就是汽车黑客的出现。汽车黑客(car hacking)这一术语特指可以破坏汽车中的某些高科技组件(technological components)的黑客。

现代汽车(译者注:这里的现代指当今的、现在这个时代的,不是特指某品牌,下同)通常包含超过50个电子控制单元(electronic control units, ECUs),用来与内部网络交换数据。汽车的安全依赖于不同ECU之间的实时交互,如撞击预警,防抱死制动等等。

前不久,著名黑客Charlie Miller与IOActive安全情报总监Chris Valasek证实了通过黑进车辆控制系统从而达到对汽车的某些控制已经成为可能。

现代汽车多是由控制车辆不同功能的大量智能组件组成的复杂系统,大规模的电子产品引进,也对汽车的整体安全产生了一些影响。

“在1970年代初,车载计算机或称电子控制单元(Electronic Control Units,ECU)的引入,帮助解决了一些燃料效率与排放等问题,进而进化成车内娱乐系统、安全控制与增强汽车功能等方方面面不可或缺的部分。

本文从一名安全研究人员的角度,测试两款汽车的控制系统。首先介绍一些分析控制区域总线(Controller Area Network bus,CAN bus)的必要工具和软件。其次,我们会用软件演示如何对CAN总线读写数据。

之后,我们会演示如何通过连接到ODB-II的设备,重放一些专有消息来执行汽车上一些危险的功能,如刹车和转向。最后,我们会讨论读取和修改安装在现代汽车上的ECU的固件,“摘自2013年8月在BlackHat安全会议上的相关演示。

安全专家的目的是以一名黑客的角度去探索汽车的安全问题,并证明能够利用多种缺陷与车辆的主要组件直接交互,包括制动系统与方向控制系统。

视频地址:https://www.youtube.com/watch?feature=player_embedded&v=ws8lSobe-sk

作为一名负责任的译者,当然要帮大家把视频搬回墙内:http://v.youku.com/v_show/id_XNjg0MzcwNDY0.html

汽车黑客:没有Security就没有Safety

图1 Charlie Miller演示控制汽车方向盘的PoC的视频

电子控制单元(ECU)与控制区域网络(CAN)

电子控制单元基于控制区域网络(CAN)标准,与一条或多条总线交互。

CAN总线作为汽车业界标准,是专门为ECU与车辆中没有主机控制的设备进行数据交换而设计的。同时CAN总线也被用在其它领域,包括航空航天与工业自动化。

在汽车中,ECU之间的交互数据为CAN数据包,每个包都会广播到同一总线上的其它所有部件,就是说每个节点都能对其进行译码。但主要问题是包中缺少发送者的ID,发送/接收协议无法完成有效的身份验证。这意味着由于ECU不会检测发送者ID,攻击者也可以捕获到所有的数据包,伪造发送者ID,并将自己认证给其它ECU。

CAN协议实现了两个不同的消息帧格式:基础帧格式与扩展帧格式。两者唯一的不同是,前者支持长度为11位的标识符,而扩展帧支持长度为29位的标识符,由11位识别(即“基础标识符”)和18位扩展(“扩展标识符”)组成。

CAN标准实现了四种帧:

数据帧:包含传输的节点数据

远程帧:用来请求指定标识符的传输

错误帧:任意节点检测出错误的帧

过载帧:在数据帧和/或远程帧之间注入一个延时

汽车黑客:没有Security就没有Safety

图2  CAN帧格式(Wikipedia)

CAN是一个简单的底层协议,没有实现任何安全特性,因此其安全必须在上层得以保障,由应用程序负责实现安全机制。

可以修改控制单元的软件使其在数据传输中使用密码机制,像软件下载或点火钥匙编码,但通常标准的交互不会这么做。

黑客通过向CAN总线上的ECU发送自己特别构造的数据包,可以修改这些组件的行为,甚至可以对整个单元组件重新编码。

黑掉汽车的艺术

当今,装配了车载电脑的汽车可能因各种目的被攻击者攻击。为了防止类似犯罪,美国汽车安全监管机构设立了一个新办公室,专门关注这种网络犯罪。

“这些相互关联的电子系统提高了车辆安全(safety)与可靠性,但同时也带来了新的、不同的安全(security)风险。”国家公路交通安全管理局负责人David Strickland表示。

汽车黑客甚至可以利用新一代汽车联接到互联网络或无线网络。我们不得不考虑这样的事实:许多公司已经开始考虑将汽车作为一种新型巨大网络中的结点,可以从周围环境中获取信息,用获得到的各种数据为智慧城市中的人们提供各种服务。现在汽车都配备了先进的控制器,可以实时管理大量信息。某些豪华汽车的控制器由多达1亿行代码编译而成,车内软件和电子产品占去了车辆几乎40%的成本。而车中的每个高科技组件和通信通道都有可能受到骇客的恶意攻击。

黑掉一辆汽车都有哪些方法?

目前广泛认可的攻击方法有:

远程信息系统攻击。有些汽车配备的系统允许其与远程服务中心通信,传输其当前所在的位置。相信在不久的未来,会有越来越多的汽车制造商可以提供遥感勘测服务作为远程诊断服务,以防止出现意外事故和电子故障。当今,黑客理论上已经可以攻破汽车上安装的类似系统,例如远程追踪被盗车辆的汽车防盗系统。一旦获得汽车的访问权,攻击者就可以通过CAN总线与车上的每个组件进行数据交互,修改它们的参数。

恶意软件攻击。攻击者可以利用恶意软件感染某些汽车部件,修改它们的行为。恶意软件可以通过不同的方式感染,例如可以通过U盘插到MP3读取器上进行传播或利用无线技术传播(WiFi或蓝牙)。

未经授权的应用程序。配备了车载电脑的汽车可以执行或下载应用程序。与普通PC类似,对于汽车来说,这些程序很有可能是恶意的非授权第三方提供的。可以想像车载电脑中任意软件在升级时,攻击者可以将恶意代码假装成更新程序,通过这种方式使未授权的软件获取其所需的权限。

OBD:专门的写入软件可以通过攻击OBD-II(车载诊断系统)端口安装恶意软件。一旦连接器通过CAN总线连接到汽车,就有可能监控每个连接到该总线的组件。

车门锁与钥匙:攻击者可以模拟这两种系统的访问码,通过这种方式控制汽车锁,并启动/停止汽车引擎。

黑掉汽车的PoC

既然明白了黑客黑掉汽车的基本原理,那么攻击向量是什么样的呢?以及车中的“智能”部件之间如何“对话”呢?下面我们看一下黑客社区给出的概念证明。我们汽车的内部总线像计算机网络一样以一种不安全的方式通信,因此很容易受到攻击。正如之前预期的那样,著名黑客Charlie Miller与安全研究员Chris Valasek已经证明了其完全有可能取得其演示所用的汽车中部分组件的控制权。

汽车黑客(Car hacking)并不是一个新的概念,从过去到现在,一直有一群研究人员在探索电子控制单元(ECU)的弱点,但Miller和Valasek发表了一份关于汽车架构的研究报告称,他们可以在某些汽车的行驶过程中控制这些汽车的制动系统、转向系统和其它功能。

安全专家通过向系统发送大量控制区域网络数据包来控制车辆的行为,简单地说,他们发送的数据包在合法数据包之前到达ECU,使其接受这些恶意数据包中的指令。

研究人员发表的论文演示了如何黑掉一辆汽车,即通过CAN总线发送的正常数据包和诊断数据包。由于某些显而易见的(法律)原因,本文只提供了一个示例来讲解,请读者来证明这项研究的有效性。

研究人员对福特翼虎(Ford Escape)和丰田普锐斯(Toyota Prius)进行了“安全测试”。一般情况下,攻击者通过正常数据包可以操作以下组件:

车速仪
里程表
车载导航
转向系统
制动系统——丰田
加速

正常数据包通过CAN总线操纵车速仪(福特 普锐斯)

两位研究者解释,如果CAN数据包通过注入的方式操纵显示给驾驶员的转速值(RPM)和车速,还是很容易检测到的。在福特汽车中,信息是通过高速CAN网络中ID为0201的数据包管理的。

包的格式为:

[AA BB 00 00 CC DD 00 00]

AABB是显示的转速(rpm),CCDD是车速。系统开发团队通过以下公式计算这些值:

Speed(mph) = 0.0065 * (CC DD) – 67
RPM = .25 * (AA BB) – 24

例如,如果CAN数据包中为以下数据,那么:

[23 45 00 00 34 56 00 00]

以下代码用来设置转速和车速:

y = pointer(SFFMessage())
mydll.DbgLineToSFF(“IDH:02, IDL: 01, Len: 08, Data: 23 45 00 00 34 56 00 00″, y)
mydll.write_message_cont(handle,y, 2000)

代码计算得到车速为0×3456 * .0065 – 67 = 20.1mph,转速为0,25* 0×2345-24= 2233 rpm,十六进制的3456为十进制的13398,十六进制的2345为十进制的9029。

 

汽车黑客:没有Security就没有Safety

图3通过PoC操纵车速

关掉引擎——通过CAN总线的诊断数据包控制福特汽车(福特 普锐斯)

通过前面的描述,我们知道可以通过数据包修改汽车内的许多组件。研究人员证明可以对这这两种车进行多种操作,包括:

安全访问(Security Access)
制动管理(Brakes management)
关掉引擎(Kill engine)
暴闪灯(Lights flashing)
喇叭开/关(Horn On/Off)
安全带电机动作(Seat Belt Motor Engage)
车门开锁/上锁(Doors Lock/Unlock)
修改燃油量计(Modification Fuel Gauge)

与正常操作不同,对ECU的诊断需要认证,但通过下文我们可以看到,其验证过程的脆弱性会将用户暴露于风险之中。

下面我们考虑停车辅助模块(PAM)ECU。福特与普锐斯中对PAM组件的认证其实很脆弱,因为其请求/响应过程总是基于该单元发送的同一个seed,这意味着响应总是相同的,所以对攻击者来说这就是一个笑话,PAM模块进行嗅探、安全访问,或者在最坏情况下进行暴力破解,简直在容易了。

通过分析验证握手过程,可以发现其总是使用同一个seed,即11 22 33,对汽车黑客来说这简直是理想的解决方案,但在其它的情况下会变得更复杂一些。不管怎么说攻击者获得了对固件进行逆向工程的key,也就相当于拿下了目标组件。

IDH:07, IDL: 36, Len: 08, Data: 02 27 01 00 00 00 00 00
IDH:07, IDL: 3E, Len: 08, Data: 05 67 01 11 22 33 00 00
IDH:07, IDL: 36, Len: 08, Data: 05 27 02 CB BF 91 00 00
IDH:07, IDL: 3E, Len: 08, Data: 02 67 02 00 00 00 00 00

研究人员发现其中一项最有趣的攻击是与操纵引擎有关,即可以调节gas

/ air比例水平,在这种特殊情况下,其用来测试的福特汽车,在某些异常情况下可以通过常规控制指令4044关掉引擎。

攻击数据包为:

IDH:07, IDL: E0, Len: 08, Data: 05 31 01 40 44 FF 00 00

加粗部分的参数所在的bit位表示要关掉的汽缸的掩码,发送FF表示关掉所有汽缸。

重复发送以上数据包,就可以通过这种阻止汽车重新启动的方式关掉引擎,直到攻击停止。

令人不安的是这种攻击不需要建立诊断会话,而且可以在任何车速情况下进行。

远程CANHacking Tools,并没有那么贵

远程黑掉一辆汽车是完全可能实现的。最近安全研究人员Javier Vazquez-Vidal和Alberto Garcia Illera已经设计了一套工具,用这种比普通智能手机还小的设备来控制一辆汽车,两位研究员为其命名为CAN Hacking Tool(CHT),并将会在新加坡举行的黑帽亚洲安全大会上向大家展示。至此我们了解了CAN总线以及汽车中各个组件交互数据的方式。

汽车黑客:没有Security就没有Safety

图4  CAN Hacking Tools (CHT)

黑掉一辆车从来没有这么容易与便宜。研究人员将要展示的工具不足20美元,利用它,攻击者可以完全控制一辆车,包括转向系统与制动系统(即方向盘与刹车)等。

有文章曾经指出,通过控制区域网络(CAN)总线,可以访问汽车的所有功能,包括控制锁、方向盘和刹车,在这种情况下完全由研究人员决定如何使用它们。

“这个不足20美元的小设备,可以物理连接到汽车的内部网络并注入恶意命令,其影响范围从车窗、车头灯到方向盘与刹车”,Forbes报道。

CAN Hacking Tool的设计是从CAN端口注入恶意代码,并通过附近的PC发送无线命令。

“只需要花五分钟或更就就可以把它破解并开走……我们可以等一分钟或一年,只为了将其触发,执行任意我们事先编辑好的指令”,Vazquez Vidal说。

Javier Vazquez-Vidal和Alberto Garcia Illera已经证实了使用他们的CAN Hacking Tool设备黑掉一辆汽车的可行性,并针对四种不同的汽车进行了测试,“其技术涵盖像关掉车头灯、引发警报、摇动车窗等这种单纯的恶作剧,到防抱死制动或紧急制动系统等使行驶的汽车突然停止。”

研究人员测试使用的CHT只支持蓝牙,但专家们已经准备将其升级,使其可以使用GSM蜂窝无线电,可以在千里之外控制汽车内的设备。

“曾几何时,攻击者在很多情况需要获得汽车底层的访问权限,或需要打开汽车车箱才能实施攻击,即使是最简单的情况他们也需要爬到汽车下面将设备装上。而现在,只需要通过与蓝牙设备交互,在几英尺的范围内即可完成攻击。但在两位研究人员在新加坡的安全会议上展示了他们的工具之后,他们说将会将该工具升级,使其支持GSM蜂窝无线电,届时就可以在千里之外对设备进行控制了。”

研究人员表示,现代汽车网络没有任何安全机制。

“所有的破解工具都是用现成的部件,所以即使发现什么攻击设备,也没办法作为举证的线索,基本上是完全无法追踪的。一辆汽车就是一个小型网络,并且没有任何安全防护。”

攻击检测

根据Miller与Valasek的分析,对攻击的检测也很容易做到。他们提到了一种实现异常检测机制的可行方法。

首先定义车内所有组件的系统

“正常”行为,那么就有可能检测到任意可疑行为并激活相应的对策。一种可能的实现方式为,基于不同时段对不同CAN数据包的分析,如Miller与Valasek给出的下图所示:

汽车黑客:没有Security就没有Safety

图5  CAN id 0201的频率分布图

“只要处于网络之中,就可以很容易检测到这些恶意指令,并将其截获。你知道什么样的汽车应该执行什么样的操作。”IOActive安全情报主管Valasek说。

例如,如果检测到有大量数据包传输时就触发警报,同样,如果诊断数据包中包含正常模式之外的信息,也将其标记出来。

对汽车制造商来说,添加这些额外的安全特性就会提高额外成本,经济危机以及相对微薄的利润是引入这些安全特性的主要阻碍。

“汽车制造商不喜欢提高汽车的复杂性。如果你尝试告诉他们修改架构,肯定会受到很强的排斥。”Miller在卡巴斯基安全分析峰会的演示结束后,Valasek表示。

尽管这个话题已经在黑客讨论了很长时间,但目前仍没有任何文档或记录显示有汽车制造商表示会实施安全措施来防止黑客的攻击。

“我们不知道他们在做什么。他们可能会(在安全措施方面)有些作为,但很可能将计划排到几年后了……汽车在设计时已经考虑到其安全性(safety)了。但是,没有security就没有safety。”Miller说。

本文的分析源自黑客的自发行为,向大众演示了汽车工业的脆弱性。我们希望在不久的将来,security会成会汽车的一项基本需求。

也许有一天,我们启动汽车之前要做的第一件事不是启动发动机,而是更新汽车的防火墙或杀毒软件。

参考

http://securityaffairs.co/wordpress/15569/hacking/car-hacking-cinematographic-fiction-reality.html

http://securityaffairs.co/wordpress/22070/hacking/can-hacking-tools.html

http://www.forbes.com/sites/andygreenberg/2013/07/24/hackers-reveal-nasty-new-car-attacks-with-me-behind-the-wheel-video/

http://illmatics.com/car_hacking.pdf

http://usblog.kaspersky.com/podcast-protecting-cars-with-av-style-detection/

http://www.zdnet.com/italians-love-of-car-and-home-turning-internet-of-things-into-900m-market-7000026141/

http://www.forbes.com/sites/andygreenberg/2013/07/24/hackers-reveal-nasty-new-car-attacks-with-me-behind-the-wheel-video/

http://threatpost.com/detecting-car-hacks/104190

http://www.forbes.com/sites/andygreenberg/2014/02/05/this-iphone-sized-device-can-hack-a-car-researchers-plan-to-demonstrate/

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

原文地址:http://resources.infosecinstitute.com/car-hacking-safety-without-security/

责任编辑:蓝雨泪 来源: FreeBuf
相关推荐

2015-12-30 10:36:59

2009-09-08 18:31:32

ITSM运维管理摩卡软件

2011-10-09 09:11:25

2021-11-02 11:15:00

机器人人工智能AI

2011-10-11 10:39:30

2022-08-04 23:41:10

零信任安全API

2019-09-26 09:34:51

网络爬虫搜索引擎大数据

2021-11-29 09:44:07

光模块光通信通信

2020-03-27 22:15:52

自动驾驶物联网大数据

2013-12-13 10:24:31

2018-05-22 08:14:34

数据中心运维

2015-10-16 11:38:40

2019-05-10 10:05:10

5G5G安全亚信安全

2022-05-07 06:04:58

光模块光通信通信

2017-10-09 12:05:57

优秀的代码代码量糟糕的代码

2017-09-15 10:18:46

云容器Google容器亚马逊

2019-06-10 15:38:19

高通芯片授权费

2011-11-21 12:30:24

2014-12-16 14:32:38

2017-12-28 10:26:31

系统CPU64位
点赞
收藏

51CTO技术栈公众号