CraigSmithTheCarHacker’sHandbookEISBN:978-1-59327-703-1Copyright©2016byCraigSmith.TitleofEnglish-languageoriginal:TheCarHackersHandbook,ISBN978-1-59327-703-1,publishedbyNoStarchPress.SimplifiedChinese-languageeditionCopyright©2017byTsinghuaUniversityPressLimited.Allrightsreserved.北京市版权局著作权合同登记号图字:01-2016-9219本书封面贴有清华大学出版社防伪标签,无标签者不得销售。版权所有,侵权必究。侵权举报电话:010-6278298913701121933图书在版编目(CIP)数据汽车黑客大曝光/(美)克雷格•史密斯(CraigSmith)著;杜静,李博,敖富江译.—北京:清华大学出版社,2017(安全技术经典译丛)书名原文:TheCarHacker’sHandbookISBN978-7-302-45703-9Ⅰ.①汽…Ⅱ.①克…②杜…③李…④敖…Ⅲ.①汽车—控制系统—网络安全—研究Ⅳ.①U463中国版本图书馆CIP数据核字(2016)第281210号责任编辑:王军李维杰装帧设计:孔祥峰责任校对:曹阳责任印制:李红英出版发行:清华大学出版社网址:,地址:北京清华大学学研大厦A座邮编:100084社总机:010-62770175邮购:010-62786544投稿与读者服务:010-62776969,c-service@tup.tsinghua.edu.cn质量反馈:010-62772015,zhiliang@tup.tsinghua.edu.cn印装者:河北新华第一印刷有限责任公司经销:全国新华书店开本:185mm×260mm印张:16.5字数:381千字版次:2017年1月第1版印次:2017年1月第1次印刷印数:1~3500定价:59.80元产品编号:069501-01汽车黑客大曝光2如果你来自软件渗透测试行业,可能已对“攻击面(attacksurface)”的概念了如指掌;而对于尚不了解它的其他人而言,该术语是指攻击一个目标可以采用的所有方式,范围涵盖从单个部件的脆弱性到影响整车的脆弱性。在讨论“攻击面”时,本书并不考虑具体如何攻陷目标,而只关注攻击的切入点。可将其想象为物体的表面积和体积的对应关系,两个物体可能体积相同但表面积差异极大。而表面积越大,则意味着它暴露在风险中的概率越大。如果用物体的体积比喻其价值,则加强安全性的目标是获得更低的风险/价值比。1.1寻找攻击面在评估一辆车的攻击面时,可将自己想象为一名试图对车干坏事的间谍。为了找到车的安全缺陷,需要评估车的周界,并记录车所处的环境。在评估过程中,务必考虑数据进入车辆的所有方式,即找到车辆与外界通信的一切途径。在检查车辆的外部时,需要考虑如下问题:●该车接收哪些信号?无线电波?遥控钥匙?距离传感器?●有无物理键盘访问?●有无触控或运动传感器?●如果该车是电动的,它用什么方式充电?在检查车辆内部时,可考虑如下问题:●车载音响如何接受音频输入?是CD、USB还是蓝牙?●有没有诊断接口?●仪表盘有何功能?是否有GPS、蓝牙或Internet连接?综上可见,数据能从多种途径进入车辆。如果其中有畸形或恶意构造的数据,会有什么事情发生呢?此时就轮到威胁建模这种方法大显身手了。1.2威胁建模关于威胁建模已有多部大部头专著,不过本书在此只打算让你快速了解它,以便能够建立自己的威胁模型(如果还有一些进一步的问题或是对本节内容感兴趣,可深入阅读其他书籍)。在对汽车进行威胁建模时,需要首先收集目标的架构信息,并绘制其部件的通信关系框图。然后使用关系框图识别出高风险的输入,并创建和维护安全审计检查表;这样做有助于将可能带来最大回报的攻击入口点列为优先处理对象。威胁模型通常创建于产品的开发和设计阶段。如果某种产品的生产商有着良好的开发生命周期,它会在产品开发伊始就建立威胁模型,并随着产品开发生命周期的推进,持续更新模型。威胁模型是“活”的文档,随着建模对象发生变化以及建模者对建模对象认识的不断深入,威胁模型会随之改变,因此应当经常更新威胁模型。第1章理解威胁模型3威胁模型可以包含多个层级。如果模型中的某个过程过于复杂,应当考虑通过在模型框图中增加层级,将该过程进一步分解。但是,在建模初始阶段,你往往只能分解到Level2级。下面将从Level0级开始介绍各个不同的层级。1.2.1Level0级:鸟瞰视图进行本级建模时,需要参考在分析攻击面时建立的检查表。分析数据通过何种方式进入车辆。将车辆绘制在中心,并标注出内部空间和外部空间。Level0框图的范例如图1-1所示。图1-1Level0级输入在图1-1中,矩形框表示输入,中心的圆形代表整辆汽车,在输入到达车的过程中穿过的两条点虚线则分别表示外部和内部威胁的边界。车辆周围的圆形并不表示某个输入,而表示一个复杂过程——也就是一系列可进一步分解的任务。所有过程都有编号,如图1-1所示,图1-1中的过程被编号为1.0。如果在威胁模型中有多个复杂过程,则将编号顺延。例如,第二个过程编号为2.0,第三个则是3.0,以此类推。随着对汽车功能了解的逐步深入,对模型框图作相应的更新。如果对框图中的某些缩写感到生疏,不必担心,稍后很快就会介绍。1.2.2Level1级:接收端要继续进行Level1级框图建模,需要选择一个过程进行分析。由于图1-1中只有一个“车辆”过程,因此本节将深入该过程内部,聚焦于各个输入与哪些对象交互。图1-2中的Level1级映射图与Level0级中的几乎相同,唯一的区别是在Level1级映射图中标识出了一些接收Level0级输入的车辆数据连接。在本级中暂时不对接收端作蜂窝移动(手机)通信蓝牙车外车辆车内信息娱乐/导航控制台OBD-II连接器CAN总线接续器汽车黑客大曝光4深入分析,而只关注与输入交互的各个基本设备或区域。蜂窝移动(手机)通信蓝牙远距离车外近距离车外车内车辆内部网络信息娱乐/导航控制台OBD-II连接器CAN总线接续器TPMS接收器防盗系统近距离车外图1-2Level1输入与车辆数据连接的映射关系图请注意,在图1-2中对每一个接收端进行了编号。第一位数字代表Level0级框图(见图1-1)中的过程编号,第二位数字则代表该接收端的编号。由于信息娱乐单元既是一个复杂的过程,也是数据输入源,因此这里用一个圆形过程符号表示它。另外还有其他3个过程:防盗系统、ECU(ElectronicControlUnit,电子控制单元)和TPMS(TirePressureMonitoringSystem,胎压监测系统)接收器。Level1级框图中的点虚线表示信任域的边界。框图顶部的输入是最不被信任的,而框图底部的信任级别最高。通信信道穿过的信任边界数量越多,意味着它的风险程度越高。1.2.3Level2级:接收端分解在Level2级,对车辆内部的通信进行分析。示例框图(见图1-3)关注了某个基于Linux的信息娱乐控制台,即图1-2中的接收端1.1。它是接收端中较为复杂的之一,且往往直第1章理解威胁模型5接连接到车辆内部网络。在图1-3中,使用代表信任边界的虚线框对通信信道进行分组。现在,信息控制台内部新增了一条称为内核空间的信任边界。能直接与内核交互的外部系统的风险级别高于与系统应用程序交互的外部系统,因为前者可能绕过信息娱乐单元上的访问控制机制。例如,蜂窝移动(手机)通信信道的风险级别比WiFi信道高,因为蜂窝移动(手机)信道穿过了一条信任边界直达内核空间。另一方面,WiFi信道则与用户空间中的WPA客户端进程通信。图1-3信息娱乐控制台的Level2级映射图该系统是一个基于Linux的IVI(In-Vehicle-Infotainment,车载信息娱乐)系统,它使用与Linux环境通用的部件。在内核空间中,可以看到对udev、HSI和Kvaser这3个接收本威胁模型输入的内核模块的引用。其中,udev加载USB设备,HSI是处理蜂窝通信的串口驱动程序,而Kvaser则用于驱动车辆的内部网络。Level2级威胁模型的编号形式为x.x.x,继续沿用如前所述的标识系统。在Level0级框图中,将整辆汽车的信息处理过程标识为1.0,在对该过程进行更深入分析的Level1级框图中,将其中的过程分别标识为1.1、1.2等,依次顺延。由于在Level2级框图中选择了信息娱乐控制台过程1.1并对其进行了进一步分解,因此在Level2级框图中将复杂蜂窝移动(手机)通信蓝牙内核空间WPA客户端近距离车外远距离车外汽车黑客大曝光6过程标识为1.1.1、1.1.2等,依次顺延(在深入分析过程时,可以继续使用该编号方案。该编号方案旨在满足文档编制需求,通过它可以准确引用合适层次的某个过程)。注意:理想情况下,本阶段应能标注出哪个过程处理哪个输入的对应关系,但目前还只能依赖猜测。在现实条件下,往往需要对信息娱乐系统进行逆向工程以获取这一信息。在建造或设计汽车系统的过程中,应当对尽可能多的复杂过程进行持续“下钻”式分析。邀请开发团队参与工作,讨论每个应用程序所用的库和方法,以将这些库和方法纳入该应用程序自身的威胁框图。在进行应用程序级的建模分析时,往往会发现信任边界通常处于应用程序和内核之间、应用程序和库之间、应用程序相互之间,甚至是应用程序内部的函数与函数之间。在分析这些连接时,标出那些具有更高权限或处理更敏感信息的方法。1.3威胁识别现在已经介绍了威胁建模映射中的两个层级,可以开始进行潜在威胁的识别工作了。和一群人一起围着白板进行威胁识别往往会更有趣,不过也可以把它当成一种思维练习独自完成。下面一起进行这项练习。从Level0级“鸟瞰视图”开始,结合输入、接收端和威胁边界分析潜在的高层安全问题。本书现在将使用上述威胁模型列出所有的潜在威胁。1.3.1Level0级:鸟瞰视图在判定Level0级潜在威胁时,需要站在更高层次进行思考。尽管某些威胁似乎由于已知的额外障碍或防御措施而显得不现实,但至关重要的是将所有可能威胁都记录到威胁列表中,即使其中某些威胁已得到处理。本级威胁识别的要点在于通过头脑风暴找出各个过程和输入的所有风险。Level0级的高级威胁是指攻击者可能:●远程接管车辆●使车辆停车●偷窥车上乘员●解锁车辆●偷窃车辆●跟踪车辆●破坏安全防护系统●在车上安装恶意软件在这个阶段刚开始时,可能难以设想出很多攻击场景。邀请非工程师人员参与本阶段的工作往往会有很多益处,因为开发者和工程师常常过度关注内部细节,从而自然、无意识地忽略了某些思路。第1章理解威胁模型7为充实攻击场景,需要发挥创造力,想象一下最经典的“007电影反派”式攻击。此外,还可以运用联想思维,分析其他攻击场景是否可以应用于汽车攻击。例如,勒索软件(一种可以加密或锁定电脑或手机,直到受害者向远程控制该软件的攻击者支付赎金的恶意软件)能用于攻击汽车吗?答案是肯定的,那么就把勒索软件记入威胁列表。1.3.2Level1:接收端相对于可能直接与某个输入相连的连接,Level1级威胁的识别更关注各个接收端上的连接。列入本层级的脆弱性与某些其他脆弱性相关,这些其他脆弱性能够影响连接到车内设备的装置。按照相关连接方式,可将此层级的脆弱性分为蜂窝、WiFi、遥控钥匙(KES)、胎压监测系统、信息娱乐控制台、USB、蓝牙和CAN总线连接共8个威胁分组。从下面的列表可见,侵入汽车的可能途径多种多样、五花八门。1.蜂窝利用车辆的蜂窝连接,攻击者可以:●从任意位置访问车辆内部网络●利用处理来电的信息娱乐单元中的应用程序●通过信息娱乐单元访问SIM卡●使用蜂窝网络接入远程诊断系统(如OnStar)●监听蜂窝通信●干扰呼叫●跟踪车辆运动●