技术细节首度公开,2016汽车安全破解案例最详复盘

  • 360
  • 发表于: 2017/05/04 08:26:00 来源:车云网

论黑客是怎样炼成的。

随着汽车产业正在不断的发展,增加更多的便利和个性化的驾驶体验的能力特点。消费者希望不断地加以连接,甚至在他们的车辆,这是推动汽车制造商增加车辆和个人设备之间进行更多的整合,如智能手机等。以前,汽车是孤立的,物理隔离的,因此黑客很难远程入侵汽车内部控制器,除非进行物理入侵,而这个是需要很高的犯罪成本。随着互联网的进化,当TSP这样的车联网产品通过T-Box与汽车内部网络联网之后,汽车受到的远程网络攻击就不再是猜想。可以预见,一旦车联网产品普及,关于汽车被攻击的现实案例就会出现并越来越多。

进口聆风电动汽车破解案例分析

就在日产于MWC 2016(世界移动通讯大会)上发布聆风电动车最新手机APP后不久,澳大利亚网络安全研究专家Troy Hunt发现,软件开发者借助任何一辆日产聆风前挡风玻璃上的VIN码,便可通过Nissan Connect(日产车载系统)手机客户端的身份验证,获取车主身份及车辆充电量信息,并获得车内空调的操控权。虽然这一网络安全漏洞还未涉及油门、刹车等车辆控制关键功能模块,但对续驶里程本已相对有限的纯电动汽车来说,仅远程开启空调这一潜在威胁危害也十分巨大。下面我们来分析一下Hunt的攻击过程:

     

Hunt的学生Jan通过聆风的手机App Carwings查看到车辆的基本信息,包括预测的剩余可行驶里程 、电池充电状态,充满电所需时间等。并且Jan发现充电与空调控制相关,空调界面,可以远程控制空调的开启,并设定时间。

在回复的内容中,不仅告诉命令发送者空调已经被打开,其中还有Jan的个人信息,包括用户名,VIN码也随之返回。

  

Hunt打算在其他车辆上复现这个漏洞,于是利用VIN码发送了一个电池状态的命令,只会回复电池状态信息,但是被驳回了,反馈结果只提到了TCUID错误,Hunt随后利用了VIN码的最大漏洞——穷举。 

因为只有最后五位数不同,所以Hunt选择Burp Suite这个工具来进行穷举并发送命令。Hunt在Jan与这位不知名车主最后五位都在的号段选择了两万个数据,随机取整。如果电池状态能够获得,那么只要更换请求内容,同样可以打开空调并得知用户ID信息。而唯一需要的VIN码要么去人家底盘上看,要么可以根据VIN码的命名规则进行穷举,穷举并不限于最后五位,也可以是更多,只不过花的时间不一样而已。

特斯拉汽车自动驾驶功能攻击案例分析

随着智能控制应用的增加,汽车上越来越多的部件可以被黑客攻击,甚至非法控制。2016年5月7日,特斯拉发生了第一起自动驾驶死亡案例,这之后大批研究员试图寻找特斯拉自动驾驶功能的缺陷。最终我们成功地扰乱了特斯拉自动驾驶系统的传感器,实现了对特斯拉自动驾驶系统的攻击,并在2016 Defcon24黑客大会上公布了相关测试细节。

1.特斯拉自动驾驶系统传感器配置

特斯拉Autopilot1.0自动驾驶系统配备超声波传感器12枚,摄像头一枚,毫米波雷达一枚。其中毫米波雷达安装在特斯拉的前部,用以探测远距离的障碍物,最远可以识别到150米的障碍物;超声波传感器遍布汽车周身,用以感知车身周围大概五米范围的障碍物,主要被用于停车辅助功能;高清摄像头被放置在汽车前面,是特斯拉自动驾驶传感器中唯一可识别可见光的设备,用来识别车道线和交通标志。研究人员的攻击思路为:通过对传感器的干扰和欺骗,使错误的数据进入系统则会使自动驾驶系统产生错误决策,从而实现对特斯拉自动驾驶功能的攻击。

2.干扰超声波传感器

超声波发射仪发射信号,遇到障碍物后返回,通过发送信号与接收信号的时间差可以计算出障碍物与汽车的距离。超声波传感器有其固有的弱点:环境中若有其他超声波发射源发射同样频率的超声波,则会严重的影响接收端的信噪比。利用超声波传感器此弱点可以对其进行“噪声攻击”(jamming attack)。简单来说就是利用超声波发射仪播放更大强度的同样频率的超声波,这样就使得超声波感应器无法回收自己发出的信号,从而无法检测出汽车周围的物体。

相比于简单粗犷的噪声攻击,“欺骗攻击”(spoofing attack)则要精细的多,对播放时间、信号频率、信号强度都有较高要求。超声波传感器主要用于汽车的辅助停车系统,其主要功能是检测距离汽车最近的障碍物,即只有第一个超声波的返回信号会被接收处理,所以让噪声源在合适的时机播放适当频率和强度的超声波便可实现对超声波传感器的欺骗攻击。在实际实验中,研究人员成功的骗过了超声波传感器,将障碍物的距离“拉近了”。

除了以上提到的两种攻击手段以外,研究员还进行了“隐身攻击”(acoustic quieting)。超声波可以被超声波吸附材料吸收,导致没有超声波被返回。在实际实验中,笼罩了超声波吸附材料的障碍物无法被检测出来。

3.干扰毫米波雷达

毫米波雷达工作在77GHz频段,为了对信号进行分析,研究员首先对77GHz超高频信号进行降频,随后利用信号分析仪对信号进行分析,得到了信号的具体频段、带宽、调制方式等数据。对于毫米波雷达,同样可以实现噪音攻击和欺骗攻击。也就是说,可以让特斯拉在高速行驶中,完全忽略前面的障碍物,也可以凭空让特斯拉紧急制动。在实验中,当毫米波雷达被“噪音攻击以后”,原本显示在系统中的汽车就突然消失了,研究人员成功的骗过了特斯拉汽车的毫米波雷达。

4.干扰高清摄像头

在特斯拉自动驾驶系统Autopilot1.0中,高清摄像头就是自动驾驶系统的“眼睛”。摄像头中的MCU可以对拍摄到的画面进行处理和识别,识别结果将通过CAN总线传输给ADAS(高级驾驶辅助系统)ECU,ECU控制致动器采取相应的驾驶措施。研究员发现,如果对摄像头实施“致盲攻击”(Blinding Attack)破坏掉摄像头的输入图像,ADAS ECU对致动器下达的指令也会受到影响。实验中,研究员利用LED灯对摄像头进行照射,使得摄像头短暂“失明”,而使用激光对摄像头进行照射则会对摄像头造成不可修复的破坏。

在第一起特斯拉自动驾驶事故中,毫米波雷达因为识别的原因失效了。当时车辆的状态应该是在基于高精地图信息识别车道线的前提下,高速行驶,这样才会从卡车底部穿过,从而不会减速,我们也经常碰到自动驾驶识别不到前面物体,并且冲出去的情况。假使当时车辆发生是正面撞击或追尾事故,即便在高速行驶条件下,Model S先进的防撞系统都极有可能避免人员伤亡的发生,因为在此前的很多起事故中,Models都有过如此表现。特斯拉的自动驾驶系统在传感器部署还是欠缺全面的考虑,不过特斯拉把传感器的不足以强壮的自动驾驶算法来进行了弥补。但是在传感器遭受到攻击或者意外情况下,算法自然就失效了。

对于特斯拉的建议有两点。其一,增加传感器的数量,增加几个毫米波雷达来判断车周的障碍物,或者增加激光雷达(虽然目前没有采取激光雷达方案)进行扫描。其二,加强对自动驾驶的算法,提高传感器的弹性设置,增加摄像头滤镜等。 

特斯拉汽车车联网系统攻击案例分析

2016年的CSS安全领袖峰会“国际安全技术峰会”上,腾讯安全科恩实验室的安全研究人员介绍了远程破解特斯拉的技术。目前车联网和自动驾驶还在初级阶段,绝大部分汽车行车电脑不接入车联网和互联网,这种在信息上落后的汽车行业反而保护了大多数汽车安全。而特斯拉不同,特斯拉的核心系统是接入互联网的,尽管核心控制部门是实时操作系统,与车机的Linux是两个系统,但是两者之间是有传输通道的,而利用这个通道就可以控制汽车的核心权限。研究人员利用漏洞直接攻入特斯拉汽车模块并拿到CAN 总线的权限,从而向汽车发送伪造的指令,实现了远程攻击。

在2105年的Defcon大会上,研究人员 Kevin Mahaffey和 Marc Rogers的演示表明,他们能够远程对Model S车门解锁,发动汽车,将车开走。

几处漏洞的暴露,让两位黑客得以借助物理接触的方式,获取了进入仪表显示器(Instrument Cluster,简称“IC”)和17寸中控显示屏(Center Information Display,简称“CID”)的管理员权限。

Kevin和搭档Marc首先对车子内部的物理硬件环境进行了勘察,并最终确定了一些可以入手的潜在物理漏洞。经过第一轮分析后,二位有了如下发现:CID上装有两枚可移除的存储卡、CID上有一个USB接口、一个作用未知的四针接口、很多功效不同的测试点和诊断界面。下面给出分析过程:

 

紧接着Kevin和Marc对汽车攻击面进行了探索,其中包括浏览器、蓝牙模块、USB接口、CID上的内存卡、WiFi通信模块以及上文提到的未知接口。其中浏览器方面,特斯拉Model S使用的依然是基于WebKit的浏览器,版本号534.34,属于很旧版本的车载浏览器,而且为了适应其他系统,其自身存在很多可能被攻破的漏洞。Kevin和Marc曾试图利用其中两个漏洞作为“安全”入侵Model S的武器,但不进行任意内存的读写。但如果不接入系统的调试器,只是盲目搜索,很难发现可被利用的漏洞。在两个可移除的内存卡中,发现其中一枚内存卡中有一个名为“carkeys.tar”的文件夹,包含了Model S的OpenVPN证书(x509认证级别),一枚RSA私人密钥和一枚OpenVPN静态密钥。另一枚内存卡中则是大容量的地图数据。WiFi通信模块这里并没有任何暴露的开放端口,每次系统在甄别是否存在活动的网络连接时,它都会尝试连接一个OpenVPN服务器。随后他们研究了发现的未知接口,这个接口其实是以太网接口,不过由于接口形式没有采取标准设计,因此不太容易辨认。Kelvin和Marc最后剥开一根标准Cat-5 UTP线,来确定引脚配置,以便能够和内部网络进行通信。

特斯拉Model S车载娱乐系统所有组件的信息沟通均透过车载局域网完成。但为了能和车内CAN总线实现信息互换,所有指令必须经由车载局域网和CAN总线之间的网关传递。

两位发现,CID和IC都在没有设置任何访问限制的情况下可以运行X11(执行Unix程序的图形窗口环境),Kelvin、Mac定位了两项分别运行在IC和CID上的服务:ic-updater和cid-updater。当系统发出状态指令后,它们会共享很多有关车载娱乐系统内部技术状态的信息。IC也属于系统网络的一部分,而且它有一根类似的4脚以太网线缆。二位先是在IC的以太网后门建了一个端口,然后将其和一枚外部以太网开关(处于IC和内部以太网开关之间)相连。这样虽破费周折,但最终还是顺利进入了Model S的内部局域网。

Model S内部局域网属于相对高速运转的网络系统,UDP每秒钟传输信息的频率高达500——1000次。在旁人看来,要从这些数据中找出对控制车辆真正有用的信息,简直是一项不可能完成的任务。为了达到这一目的,Kelvin、Marc利用github的开源数据,自己搭建了一个探测工具。它能够“潜伏”在特定的端口,实时监控UDP发送的数据包,旦出现异常数据,会立刻进行甄别。

对比发自CID端和手机端不同的车辆控制命令,找到CID上负责发送该指令的服务类别,对服务的代码进行逆向编译,发现Model S不会从车载娱乐系统发送CAN总线的数据帧到车辆控制系统,否则,CID通过一个VAPI端口可以要求网关执行任何指令中的一条或几条。这样严密运行机制中的一个小小的网关对汽车安全可谓意义重大。即便车载娱乐系统的内部局域网已经被入侵,黑客也无法将CAN总线的数据帧发送给车辆控制系统。发现网关安全的重要性之后,二位在IC的固件中发现一个加密文件,并破解了这个文件,IC的用户账户包含非常脆弱的密码,利用这个漏洞可以登录到IC,之后发现帐户是一个sudoer,能够成为root用户。下一步是获得访问CID,这是最重要的的信息娱乐系统,据进一步的固件分析,发现CID包含一个密钥轮换方案,汽车将从特斯拉服务器每24小时收到一个新的随机安全令牌。CID然后将“tesla1”帐户密码设置为该令牌,并且通知IC新的令牌,然后IC将该令牌以明文形式存储在其文件系统上。使用IC的这个令牌登录到CID作为“tesla1”,这也是一个sudoer。然后就CID和IC上都获得了root权限。

WiFi、Bluetooth、运营商等通过USB接入特斯拉的CID和IC,而后经由以太网网关连接到汽车的CAN总线。使用获取的指令破解以太网端入口,进入汽车以太网,通过SSH(远程控制)获取汽车的CID权限,进而控制车载仪表盘显示,也可以使用SSH指令获取IC权限,也可以控制仪表盘。其实在进入车载以太网入口之后,通过LAN接入网关入口,这时,可利用VAPI端口发送熄火指令,以达到控制车辆的目的。

 

行车系统通过车电网络(CAN 总线)被控制,研究人员可以直接拿到 CAN 总线的权限,而CAN 总线相当于汽车的神经网络,而对于特斯拉来说,控制了 CAN 总线,就可以向汽车发送伪造的指令。特斯拉汽车拥有 3G、4G 连接,所以使用这种方法对于特斯拉的攻击,理论上是没有距离限制的。在科恩实验室公布的视频中,先在附近找到一个充电桩,其实就是为了利用特斯拉 Model S的自动连接浏览器的功能,可以利用一个带有欺骗性质的蜂窝网络或者恶意的WiFi热点,登入浏览器,利用Webkit的漏洞获取代码的执行能力,从而获得汽车的CID权限,随后利用VAPI网关指令,进而控制车辆,是在凯文和马克的基础上进行了进一步的挖掘和入侵。

(注:本文节选自360发布的《2016 智能网联汽车信息安全年度报告》了解报告全部内容,请联系车云菌:微信号cheyunjun2016)

相关标签:
安全
日产
特斯拉
  • 车云星
  • 空间站
  • 福特星球
  • 虫洞

加料 /

人评论 | 人参与 登录
查看更多评论