MyException - 我的异常网
当前位置:我的异常网» 行业应用 » 侵入特斯拉——智能汽车安全性分析

侵入特斯拉——智能汽车安全性分析

www.MyException.Cn  网友分享于:2013-12-18  浏览:0次
入侵特斯拉——智能汽车安全性分析

<div class="iteye-blog-content-contain" style="font-size: 14px"><p class="blog-summary" style="background: #f9f9f9; margin: 30px 0px 10px; padding: 16px 30px; color: #333333; text-transform: none; line-height: 32px; text-indent: 0px; letter-spacing: normal; overflow: hidden; font-family: PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif; font-size: 16px; font-style: normal; font-weight: normal; word-spacing: 0px; white-space: normal; table-layout: fixed; word-break: break-all; box-sizing: border-box; orphans: 2; widows: 2; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px;"><em style="font-style: normal; font-weight: bold; box-sizing: border-box;">摘要:</em><span class="Apple-converted-space">&nbsp;</span>特斯拉汽车一直受到黑客的关注,很多安全研究人员都尝试过挖掘特斯拉汽车的漏洞,主要原因是特斯拉是纯电动汽车并且有网络连接,可以通过网络对汽车进行控制,而且特斯拉本身也非常依赖电子控制系统。本文就来分析特斯拉已经出现过的问题。</p>
<div class="content-detail" style="margin: 0px; padding: 40px 0px; color: #333333; text-transform: none; line-height: 32px; text-indent: 0px; letter-spacing: normal; overflow: hidden; font-family: PingFangSC, 'helvetica neue', 'hiragino sans gb', arial, 'microsoft yahei ui', 'microsoft yahei', simsun, sans-serif; font-size: 16px; font-style: normal; font-weight: normal; word-spacing: 0px; white-space: normal; position: relative; word-wrap: break-word; box-sizing: border-box; orphans: 2; widows: 2; background-color: #ffffff; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px;">
<blockquote style="margin: 0px 0px 20px; padding: 10px 20px; font-size: 16px; border-left-color: #eeeeee; border-left-width: 5px; border-left-style: solid; box-sizing: border-box;">
<p style="margin: 0px; padding: 0px; box-sizing: border-box;">特斯拉汽车一直受到黑客的关注,很多安全研究人员都尝试过挖掘特斯拉汽车的漏洞,主要原因是特斯拉是纯电动汽车并且有网络连接,可以通过网络对汽车进行控制,而且特斯拉本身也非常依赖电子控制系统。本文就来分析特斯拉已经出现过的问题。此漏洞已经修复,本文只是为了让读者了解漏洞原理以便应用到工作中,使汽车变得更安全。</p>
</blockquote>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">一直以来特斯拉被认为比其他具有网络连接功能的汽车更安全,可以作为联网汽车的楷模,尽管特斯拉时不时被爆出一些小BUG。例如,2015年8月的黑客大会DEFCON上,安全研究人员Marc Rogers和Kevin Mahaffey分享了他们对特斯拉Model S的研究成果,他们在研究过程中找到了6个问题,通过这些小BUG可以以物理入侵(不是远程入侵)的方式控制汽车。接下来,我们就介绍他们这项研究的过程。</p>
<h2 id="1" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">1 系统架构</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">图1所示为特斯拉Model S的信息娱乐系统架构。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17111978762a599d9753" alt="" /></a><br style="box-sizing: border-box;" />图1 特斯拉Model S信息娱乐系统架构(图片来源lookout.com)</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">Model S的娱乐及信息系统和控制器CAN网络是隔离的,娱乐信息系统的各个模块之间通过一个局域网进行通信,而汽车的各个控制器(如动力刹车等)通过CAN通信,娱乐系统与CAN之间通过网关连接。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">首先来看看Model S信息娱乐系统的几个模块,分别是仪表板、中央信息显示和网关,其中仪表板和中央信息显示两个模块都运行版本比较老的Ubuntu操作系统,网关运行开源的实时操作系统FreeRTOS。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(1)仪表系统又叫仪表盘IC(Instrument Cluster),是位于方向盘正前方的一个8英寸的屏幕,运行Ubuntu Linux操作系统,处理器是NVIDIA Tegra3,如图2所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17115e56c0d7da302bc5" alt="" /></a><br style="box-sizing: border-box;" />图2 被拆下来的仪表</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(2)中央信息显示模块CID(Central Information Display),就是汽车中央的17英寸大屏,运行Ubuntu Linux操作系统,处理器是NVIDIA Tegra4,如图3和图4所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17116bb77b772d075c4a" alt="" /></a><br style="box-sizing: border-box;" />图3 CID 内部<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711962a97207b9342b8" alt="" /></a><br style="box-sizing: border-box;" />图4 CID背面</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(3)网关(Gateway):连接信息娱乐系统与控制器网络,与CID集成在一起,运行FreeRTOS操作系统。图5所示为Model S整个网络的架构。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711151a46efb264551a" alt="" /></a><br style="box-sizing: border-box;" />图5 Model S的网络架构</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">这种将汽车的控制器网络与娱乐信息系统进行隔离的网络架构是非常优秀的设计,因为娱乐信息系统有丰富的网络连接,当黑客入侵娱乐系统后还需要通过网关才能控制汽车的关键部件[例如,行驶安全相关的部件(如电动转向、电子刹车等)]。</p>
<h2 id="2" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">2 信息收集</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">首先对系统进行分析,找出可能的攻击向量,然后再研究特定的攻击向量,首先是物理攻击向量。通过分析找到了如下可能的物理攻击向量。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(1)CID有两张可插拔的存储卡。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(2)CID有一个USB接口。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(3)一个4针的以太网接口。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(4)各种测试点和调试诊断接口。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">然后对找到的物理攻击向量与其他攻击向量进行测试,测试结果如下。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">浏览器:不仅CID运行的操作系统是老版本的Ubuntu系统,其运行的浏览器也是比较老的版本,浏览器基于WebKit 534.34,这个版本的浏览器引擎有几个比较知名的漏洞。通过这些漏洞可以让浏览器崩溃但是没有实现代码执行。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">蓝牙:没有找到漏洞。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">USB:可以通过CID的USB接口让CID重启进入NVIDA Tegra的Recovery模式,但是bootloader是通过密码保护的,所以没有办法通过这种方式提取固件。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">存储卡:其中一张存储卡上有一个名叫carkeys.tar的文件,其中包含了这辆Model S的OpenVPN认证信息,也就是一个X509标准证书、一个RSA私钥和一个OpenVPN静态密钥,这些相当于车钥匙,所以未来汽车的钥匙可能都是基于密码算法的,如图6所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17114b925975d19d8786" alt="" /></a><br style="box-sizing: border-box;" />图6 carkeys文件解压结果</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">另外一张卡存储了地图数据和一个以root权限运行的脚本。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">Wi-Fi:将Model S连入Wi-Fi后并没有发现开放的端口,但是当Model S连上Wi-Fi后首先会通过向一些服务器发起http请求确定网络连通性,在确定网络连通性后尝试通过OpenVPN连接特斯拉服务器(地址是vpn.vn.teslamotors.com)。由于OpenVPN配置正确,不能进行中间人攻击。图7所示为特斯拉VPN的配置。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711e71570d5532edaf6" alt="" /></a><br style="box-sizing: border-box;" />图7 特斯拉VPN的配置</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">特斯拉的OpenVPN使用UDP协议,并启用了tls-auth,这就是CarKey.tar中包含的那个静态密钥的用处,即用于对数据包加入HMAC(Keyed-Hashing for Message Authentication)用于消息认证、用于防止DoS攻击、端口扫描、未授权的SSL/TLS握手和初始化等。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">因为特斯拉服务器与汽车的证书链都是由同一个根证书机构签发的,所以如果配置得不好可能出现漏洞,图8所示为特斯拉的证书链。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711c53f7cf51ac12e52" alt="" /></a><br style="box-sizing: border-box;" />图8 特斯拉的证书链</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">特斯拉有一个根证书认证机构(root CA),根证书机构下面链接了一个Policy CA(策略证书认证机构,这个机构自己的证书由root CA签发),然后Policy CA还签发了一个Issuing CA(签发CA),最后这个CA被用于签发服务器的证书和汽车的证书(汽车的证书是用于服务器验证汽车的),由于服务器和客户端都由同一个CA签发,如果对证书的认证只检查证书的签发CA就会出现安全问题。x509v3EKU(Extended Key Usage是个扩展标准,指定了公钥用途)中规定了一个证书中的公钥的用途,也就是说,一个证书只能被用于特定的目的,比如VPN服务器的证书就只能用于服务器认证,而CarKey的证书只能被用于客户端认证。OpenVPN中可以设定是否要对EKU中指定的密钥用途进行验证,所以我们的问题是万一特斯拉汽车配置OpenVPN时没有开启这个对公钥(比如CarKey.tar里包含的和VPN服务器传来的证书里包含的公钥)的用途验证呢?所以如果搞个假的服务器FauxpenVPN(记住我们说过要中间攻击),当这辆车和我们的冒牌FauxpenVPN通信时,它向FauxpenVPN发送hello,这时冒牌服务器就把汽车CarKey.tar里那个证书返回给车,如图9所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17116cbdb398976721fd" alt="" /></a><br style="box-sizing: border-box;" />图9 假想的利用客户端证书伪造成服务端证书攻击场景</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">CarKey里的证书和真的VPN服务器的证书的认证链相同,如果特斯拉在配置OpenVPN服务时没有检查前面说的EKU证书用途(因为我们发给服务器的是从汽车中名为CarKey.tar的文件中提取出来的证书,而这个证书是用于客户端认证的证书),那么汽车会信任FauxpenVPN,就可以进行中间人攻击了,如图10所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711caf5781a378a47dc" alt="" /></a><br style="box-sizing: border-box;" />图10 利用客户端证书伪造服务器示意图</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">由于Model S验证了服务器EKU,所以并不能用CarKey.tar里的证书(用于客户端认证的)来伪造服务器(因为需要用于服务端认证的证书)与汽车交互。如果能找到一个由Issuing CA签发的证书而且这个证书的EKU指定用途为服务端认证,就可以伪造一个VPN服务器进行中间人攻击。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">以太网接口:如图11所示,以太网接口先是由一个特斯拉车主发现并发布在特斯拉车主论坛,在这之前大家都觉得这个接口比较奇怪,因为它和常规的以太网接口不同。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711de4cf92b8e0e780d" alt="" /></a><br style="box-sizing: border-box;" />图11 Model S的以太网接口及导线</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">通过这个接口可以与汽车的娱乐信息系统网络通信,接入信息娱乐系统网络后使用Nmap等工具对内网扫描就可以发现3个设备,一个是CID、一个是IC、另一个是网关。这三个设备发送了大量(约1000个包每秒)的UDP广播包(目的地址192.168.90.255),根据数据类型的不同使用不同的端口,这就与CAN总线的机制非常类似,网络上每个节点将数据广播到网络上,需要数据的节点就接收需要的数据,猜测这里的端口号类似于CAN的消息ID。通过扫描还发现了一些开放的端口及对应的服务,如表1所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/171147b5b74ef5a29c74" alt="" /></a><br style="box-sizing: border-box;" />表1 娱乐信息系统的扫描结果</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">扫描到的服务中有两个是已经被爆出有漏洞的老版本,分别是DNS Proxy: runs dnsmasq 2.58和HTTP Service: mini_httpd 1.19。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">另外,如扫描结果显示的那样,CID和IC都运行了X11服务器,并且没有任何认证,因此可以随意更改显示内容,如图12所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/17114e0b56f5582596bd" alt="" /></a><br style="box-sizing: border-box;" />图12 通过没有认证的X11服务更改仪表板和中控屏的显示(来源lookout.com)</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">最后,他们还找到了分别运行于IC和CID上的两个程序ic-updater和cid-updater,从字面意思理解这两个程序分别为IC和CID的升级程序,功能是获取诊断信息、上传文件或者固件,这两个程序的大部分命令都有认证保护,但是其中也有些没有,例如&lsquo;status&rsquo;,这两个程序在输入&lsquo;status&rsquo;状态命令时会打印出许多信息娱乐系统的关键信息,属于信息泄露漏洞,图13所示为ic-updater status显示出的信息。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/171140a18becae6b7030" alt="" /></a><br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711c8aa5d331e97d073" alt="" /></a><br style="box-sizing: border-box;" />图13 仪表板IC升级工具打印出的固件VRL信息</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">事实上,后面整个研究的突破点就是这个漏洞导致的,通过这个漏洞打印出来的信息里给出了下载固件的URL。</p>
<h2 id="3" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">4 测试中遇到的挫折</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">正当Marc Rogers进行研究时,其他研究人员找到了那个以太网接口,特斯拉通过远程升级将这个端口加入了认证机制,原本接上网线就可以与内网进行通信,现在却不行了,但是由于知道IC和CID都在内网上,所以可以通过直接将网线接到CID或者IC的以太网接口接入内网,如图14所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711b203a75a1528c92c" alt="" /></a><br style="box-sizing: border-box;" />图14 直接将网线接入CID</p>
<h2 id="4" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">5 测试中的突破</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">通过cid-updater服务的status状态命令打印出来的信息里包含了一个比较特别的URL:firmware_download_url=hxxp://firmware-bundles.vn.teslamotors.com:4567/&hellip;,其字面意思是下载固件的URL。由于之前尝试对OpenVPN进行中间人攻击时已经弄清楚了特斯拉的OpenVPN配置,并且已经从存储卡里的CarKeys.tar文件中找到了特斯拉客户端的证书及密钥,所以可以与特斯拉的服务建立VPN连接来下载固件。下载下来的固件约600多兆,是一个SquashFS文件系统,解压后尝试寻找私钥和Shadow文件(Linux系统里存储用户名和密码哈希等相关信息的文件),结果找到了IC的Shadow文件。下一步就是尝试破解这个Shadow文件获得密码(如彩虹表、字典、暴力破解等方法),特斯拉设置的这个密码是弱密码,很容易就被破解。实际上,通过Shadow文件破解出来的好几个账号都是弱密码。有了秘密码和账号后就可以通过SSH接入IC,而且被破密码的账号是sudoer的(虽然不是root,但是可以通过sudo以root权限执行命令),就这样取得了IC的root权限,如图15所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/171191625bb17fdf4690" alt="" /></a><br style="box-sizing: border-box;" />图15 root权限接入IC</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">IC的root权限已经搞定了,下一步要搞定CID的root权限,由于没有CID的shadow文件,所以只有继续分析固件,通过分析固件发现CID每隔24小时就会从一个名为mothership的服务器获取一个安全令牌(Security Token),然后将一个名为tesla1的账号的密码设为这个安全令牌。CID还会将安全令牌发给IC,IC则将安全令牌明文存储。通过在IC的文件系统中找到这个安全令牌可以登录CID上的tesla1账号,而且这个tesla1账号也是一个sudoer,就这样,IC和CID的root权限都被搞定了。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">另外,前面提到的以太网结果被加入认证机制后其实认证也用到了这个token,网关(这里是指以太网接口与信息娱乐网络之间负责认证的&ldquo;网关&rdquo;)每隔30秒会对通过这个以太网接口对接入信息娱乐网络的设备进行认证,认证方式是由需要接入网络的设备根据token、VIN,以及一个salt计算一个哈希值以广播的方式发送出去,图16所示为自动认证代码。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/171108a7a426ae3759fb" alt="" /></a><br style="box-sizing: border-box;" />图16 以太网接口自动认证代码</p>
<h2 id="5" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">6 控制汽车</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">获得了IC和CID的root权限后,下一步再来看看如何控制汽车,Model S的内网数据传输率较高,每秒约500~1000个UDP报文包,搞清楚哪些数据包包含的是控制数据比较困难,所以通过分析程序判断哪些数据是通过手机应用或者CID上面的按钮进行操作才出现的数据可以快速弄清楚哪些数据控制哪些功能。在弄清楚控制某些功能的数据后还要弄清楚是哪个服务发送了这些数据,由于是通过CID的触摸屏来控制的,所以在CID上使用strace系统调用监控命令来分析是哪个服务发送了这些数据,结果发现是一个名为QtCarVehicle的服务发送了那些控制数据包。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">QtCarVehicle包含一个叫Gateway Message Sender的类,用于通过网关发送消息的类,然后就是执行这个类的各种功能的方法。到这一步就可以通过调用这个服务来执行预设功能了。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">值得注意的是,经过逆向分析还发现Model S并不会直接通过信息娱乐系统发送CAN原始数据包控制汽车,而是采用了API调用的方式,即CID通过功能调用接口请求网关执行某个功能的操作,这些功能操作都是预先定义好的允许执行的操作。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">娱乐系统通过功能接口请求网关执行特定操作的设计非常重要(这里指CID通过API请求网关),这种设计可以保障在信息娱乐系统被黑客攻陷后,不能直接往CAN总线发送原始CAN数据,只能执行预先设置好的&ldquo;允许&rdquo;的功能。当然,这是在网关没有被攻破(例如,Jeep案例中,攻击者将被修改后的固件刷入V850后)的前提下。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">经过测试发现了一系列的预设功能调用,其中影响最大的可能就是关闭汽车(VAPIPoweroff)这个功能,当汽车以低于5迈的速度行驶时,调用这个功能会使汽车突然刹车并停下来,而在高于5迈时调用这个功能则会使汽车不能加速,但是刹车和转向都受驾驶员正常控制。其他可以通过CID的触摸屏控制的功能也都可以被控制。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">为了实现远程控制,在CID与一个控制服务器之间建立一个SSH隧道连接,然后就可以利用之前找到的token通过SSH接入CID,如图17所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711fbcdda9f50425c9c" alt="" /></a><br style="box-sizing: border-box;" />图17 接入CID</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">接入CID后调用QtCarVehicle服务提供的功能可以控制汽车的一些功能,例如关闭电源,如图18所示。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/1711847eb46d2d824db6" alt="" /></a><br style="box-sizing: border-box;" />图18 执行关闭电源脚本</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">还可以控制如下功能。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(1)关闭汽车。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(2)启动汽车。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(3)开关门。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(4)开关天窗。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(5)开关前后行李箱。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(6)控制大灯。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(7)控制减震器。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(8)控制空调。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(9)鸣笛。</p>
<h2 id="6" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 30px; font-weight: 500; box-sizing: border-box;">7 本文小结</h2>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">图19所示为整个研究过程的总结图。<br style="box-sizing: border-box;" /><a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="" src="http://download.broadview.com.cn/Original/171161ece026eca8a7c7" alt="" /></a><br style="box-sizing: border-box;" />图19 整个研究过程的流程图</p>
<h3 id="7" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 24px; font-weight: 500; box-sizing: border-box;">7.1 特斯拉做得比较好的地方</h3>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(1)远程升级:当出现安全漏洞时,特斯拉只需要远程推送补丁即可,不需要召回或者向Jeep Uconnect漏洞那样需要寄送U盘。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(2)VPN配置正确:特斯拉使用的VPN配置正确,不会有常见的(如中间人攻击等因为配置缺陷而造成的)漏洞。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(3)账号密钥更新及时:特斯拉的密钥每隔24小时就更新一次。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(4)控制器网络与信息娱乐系统的隔离:Model S在汽车的控制器网络(CAN)与信息娱乐系统之间采用网关进行隔离,并且网关只允许预设的功能调用。</p>
<h3 id="8" style="margin: 20px 0px 10px; padding: 0px; color: inherit; line-height: 1.1; font-family: inherit; font-size: 24px; font-weight: 500; box-sizing: border-box;">7.2 需要改进的地方</h3>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(1)Wi-Fi静态密码:特斯拉服务中心名为Tesla Service的Wi-Fi(特斯拉会自动连接Wi-Fi)采用了汽车之间共享的静态密码,最好能改为WPA企业认证,这样就不用在汽车之间采用相同的静态密钥。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(2)边界安全模型:Model S具有非常强的边界安全,但是内网的安全性不高,设计者应该假设攻击者可以获得信息娱乐系统网络,虽然进入网络并不能造成太大影响。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(3)明文存储认证信息:VPN密钥和安全令牌都以明文的方式存储在文件系统中,如果将这些关键信息存储在硬件安全模块(如TPM,Trusted Platform Module)中会更安全。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">(4)信息娱乐系统网络上的节点间通信没有加密,并且有些还没有认证:网络上的节点间通信没有加密,所以攻击者可以分析网络上的所有流量。另外,只有少部分服务采用了认证机制。如果要实现节点级别的安全,那么网络上所有的节点绝对不能对网络有任何信任,任何节点间的通信都应该经过加密和认证。</p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">以上内容节选自<a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="http://www.broadview.com.cn/book/2594">《智能汽车安全攻防大揭秘》</a>,点此链接可在博文视点官网查看此书。<br style="box-sizing: border-box;" />                 <a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="图片描述" src="http://img.blog.csdn.net/20171113142919321?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="图片描述" /></a></p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">  想及时获得更多精彩文章,可在微信中搜索&ldquo;博文视点&rdquo;或者扫描下方二维码并关注。<br style="box-sizing: border-box;" />                    <a style="color: #00c1de; text-decoration: none; box-sizing: border-box; transition: color 0.2s;" href="/admin/blogs/javascript:;" target="_blank"><img style="border: 0px currentColor; vertical-align: middle; cursor: pointer; max-width: 100%; box-sizing: border-box;" title="图片描述" src="http://img.blog.csdn.net/20161128135240324" alt="图片描述" /></a></p>
<p style="margin: 0px 0px 10px; padding: 0px; box-sizing: border-box;">&nbsp;</p>
</div></div>

原文链接

 

文章评论

科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
 程序员的样子
程序员的样子
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
每天工作4小时的程序员
每天工作4小时的程序员
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
中美印日四国程序员比较
中美印日四国程序员比较
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
编程语言是女人
编程语言是女人
为什么程序员都是夜猫子
为什么程序员都是夜猫子
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
旅行,写作,编程
旅行,写作,编程
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员和编码员之间的区别
程序员和编码员之间的区别
10个调试和排错的小建议
10个调试和排错的小建议
程序员必看的十大电影
程序员必看的十大电影
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
如何成为一名黑客
如何成为一名黑客
漫画:程序员的工作
漫画:程序员的工作
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
代码女神横空出世
代码女神横空出世
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员的鄙视链
程序员的鄙视链
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
一个程序员的时间管理
一个程序员的时间管理
那些争议最大的编程观点
那些争议最大的编程观点
我的丈夫是个程序员
我的丈夫是个程序员
Java程序员必看电影
Java程序员必看电影
我是如何打败拖延症的
我是如何打败拖延症的
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有