欢迎光临海盗茶馆,大家好,我是海盗。
序
对于能上网的车有多种叫法,联网车、网联车、智能网联汽车,不要被迷惑了,归根结底,都是具备了联网功能的车。后面关于联网的汽车的安全,我会统称为车安全。如果你看的资料比较多,你会发现车安全其实还分两部分:safety跟security。你可以笼统的理解成,不联网的跟联网的安全的区别。我们后面说的车安全都是指网络相关的安全,即是security。后面这个专栏可能大部分的文章都跟车安全有关。如果偶尔有一些别的,也别奇怪,茶馆嘛!有茶,有瓜子,可能还有相声。
车联网简史
弱网车时代
随着近几年传统车辆纷纷顺应潮流加**网的功能,似乎一夜之间,不能上网的车都不好意思出门了。你买车的时候4S的销售也会把联网功能当做噱头给你讲一大堆。但其实车联网的历史,可以往前推若很多年。96年的时候凯迪拉克的三款车上就部署了onstar,之后的一段时间内,部分汽车就已经具备联网的功能了,只是当时的设计主要是车辆运行状态信息的收集,帮助车主了解车辆状况等。这个时代可以称之为弱网车时代。一个是由于通讯基础设置的限制,一个就是联网技术及需求的限制。当通讯基础设置提高之后,即网络速度得以提升之后,就有越来越多的需求开始以网络的方式实现,如远程车辆的开启等。
网联车时代
而我们认知里面的网联车,其实开始于2013年左右。车厂为了提升自己座舱的逼格,尤其是特斯拉的大屏出现之后,车机的屏幕出现了越来越大的趋势,大了之后,车厂就开始琢磨希望放入更多的应用来增加车机的功能。另外也随着国内4G网联的普及以及移动应用的快速发展,原本车机最基本的音乐视频播放(Audio、Video)、导航(Navigation)之外,使车机具备如在线音乐播放软件在内的诸多在线服务的功能也变得可能。这样就慢慢形成了现在我们所认知的网联车的样子。车辆加入了网络,随之而来的本来就存在于网络之上的各种攻击也被带入了进来。
网联车的攻击面
虽然网联车接入网络的同时也引入来自网络的攻击,但是,千万别以为车安全就是网络安全的问题。从使用的角度来看车的应用场景,大致就能明白具体都有哪些攻击面了。
接触式
在使用车机时,HMI(人机交互接口,可以理解成车机的系统UI交互界面)就是最常见的攻击入口。举个HMI攻击的简单的例子,前几年出现各种ATM或者商场的自主查询机器的CMD界面被唤起就是典型的HMI攻击的样板。再往前看,windows的3389输入法入侵,也可以划到HMI交互的范畴。这类攻击的典型特征就是只依托现有的界面与功能,通过一些特殊的方法绕过HMI的限制从而实现与系统的直接交互。其次,就是常见的USB接口,OBD接口了。OBD接口可能很多人都不太了解,详细的信息可以自行搜索。通俗的的讲OBD就是一个可以直接与CAN网络进行交互的外置接口,通常被4S用来进行车辆状态诊断或CAN信息的提取。USB没有什么异议,就是我们电脑及其他的电子设备上的的那个USB接口,通常用来给用户提供一个外置存贮或与系统交互的通道。
近场
近场与远程属于互反的一组描述。近场是指距离车辆较近,但是又不物理接触的状态。远程就是物理不可见的状态。理清楚近场的定义,就能大致想象出都有哪些攻击面了。常见近场的交互方式如WIFI,蓝牙,NFC,无线电等。这些都可以归类到近场的攻击面中。随着自动驾驶以及辅助驾驶等功能的引入,雷达、摄像头等各种传感器被继承到车上,也引入了一些不常见的近场交互方式,这也同样带来安全风险。
远程
远程的攻击面乍想下可能比较少,因为看起来只有GSM/4G网络这一个网络通道。但是除了这个网络通道,其实还有隐藏于网络通道另一端的如移动应用、车厂的服务平台、车上应用的服务平台等隐藏的攻击面。另外还有GPS也属于远程攻击面的范畴。不过也有把GPS列入近场攻击面的分类方法。
QA
因为下面要介绍的内容比较杂切乱,所以不太好归纳,所以使用QA的方式会比较好。
1. 我如何开始搞?是不是需要有辆车才可以?
搞车安全研究,最理想的情况下是不止有辆车,还需要有若干车内模块的实验室环境。就是所谓的测试台架。在实验室环境下进行各种问题的研究、漏洞的挖掘、效果的验证,最后在真车上进行整体或最终的效果验证。而研究车安全需要很多的知识储备,比如二进制分析、业务安全、网络协议分析、移动安全、系统分析、CAN网络分析等等,很明显一个人其实是很难全部掌握的,这也是车安全不如web安全常见的原因。但是,这不代表个人就无法进行车安全的研究。我在19年做了一个18年网联车攻击事件的汇总,根据汇总的结果显示,12起攻击事件中,团队只占5次,个人占7次;对整车的攻击事件只有3次,攻击车钥匙2次,攻击车机3次,攻击TSP2次,攻击APP2次。但是这12起攻击事件中,实现root车机的只有3次。其余的9次都不同程度的实现了车身控制(开关车门等)。从上面的数据可以看出,虽然研究的方向不一样,投入也不一样,但是个人研究很大程度也可以取得不错的结果。如车机(系统安全)、TSP(Web安全)、APP(移动安全)、车钥匙(无线安全)都属于个人可以投入研究的领域。
2. 搞车的目标如何界定是否完成?如何选择研究方向?
回答这个问题,需要先了解车辆的内部功能划分。我习惯把车辆的内部网络划分为3个子域。分别是娱乐域、车身控制域域动力控制域。
娱乐域
就是指多媒体的部分。如车机就是娱乐域的重要组成。只完成给车内人员提供娱乐相关或者车辆相关信息的功能。
车身控制域(舒适域)
包括常见的网络传输控制模块(通常叫Tbox或TCU)。主要包括常见的如车门车窗的远程开关以及车辆信息的远程获取功能。
动力控制域
包括CAN网络以及网络上的各种小的电子控制模块(ECU)。这部分会实现如油门、刹车、转向等操作的控制。
了解车内网络之后可以看到,只实现攻击娱乐域(如root车机)跟实现对动力控制域的攻击,在结果上存在较大的差别。后者可以实打实的影响到车内人员的安全,而前者甚至都无法对车辆引起较大的影响。目前看到的较多的攻击案例都集中在车身域,攻击APP与TSP等基本都属于对车身控制域的攻击。搞清楚上面的分布,再分析车辆的具体业务功能(去4S或者下载车辆说明文档),根据自身的技术储备,即可选择自己的研究方向了。
3. 还有其他的疑问怎么办?
请关注我这个专栏的后续文章。:)