现代的汽车比以往任何时候都更加计算机化。信息娱乐和导航系统、Wi-Fi、软件自动更新,以及其他一些创新都以使驾驶更加便利为目标。然而,汽车技术尚未适应当今更加充满敌意的安全环境,令数以百万计的人受到攻击威胁。 《汽车黑客大曝光》能够深化你对现代汽车中计算机系统和嵌入式软件的理解,以脆弱性检测以及对 CAN总线上和设备/系统间通信的详解开始。理解了汽车的通信网络之后,本书接着介绍如何拦截数据并执行特定的黑客手段,以跟踪车辆、解锁车门、进行发动机时钟脉冲干扰攻击及泛洪通信攻击等。本书专注于低成本的开源黑客工具,如Metasploit、Wireshark、Kayak、can-utils和ChipWhisperer。主要内容● 为车辆构建的威胁模型● 对CAN总线进行逆向工程,以伪造发动机信号● 利用诊断和数据记录系统中的漏洞● 黑掉ECU和其他固件,以及嵌入式系统● 通过信息娱乐系统和车辆间通信系统注入漏洞利用程序● 利用性能调校技术覆盖出厂设置● 构建物理和虚拟的测试平台,以安全地实验漏洞利用技术如果你对汽车安全技术有兴趣,有激情攻击两吨重的"计算机",可将本书作为你的站。
本书源于Open Garages社区的本汽车黑客培训教材,涵盖了汽车黑客技术的各个方面。作者深入浅出地介绍了多种汽车黑客技术,既包括相关理论介绍,又包括利用特定工具开展汽车黑客攻击的具体应用实例,还列举了实施汽车黑客技术所使用的相关硬件和软件工具。本书既适用于学习汽车黑客技术的初学者,也适用于对汽车黑客技术有一定了解的"老手"。需要注意的是,学习汽车黑客技术的目的并不是为了攻击车辆、搞破坏,而是为了深入理解汽车的工作原理,从而能够更加客观科学地对汽车进行安全性测试,以发现汽车中存在的漏洞和安全隐患,进而指导采取针对性的防护措施以防止汽车被恶意人员所攻击。
Craig Smith经营着Theia Labs,这是一家致力于安全审计和软硬件原型构建的安全研究公司。他曾就职于多家汽车厂商,为它们提供公开研究,他也是Hive13创客空间和OpenGarages.org的创始人之一。Craig是汽车黑客技术领域的活跃演讲家,曾在RSA、DEF CON以及其他一些主要的安全大会上主持研讨会。
目 录
第1章 理解威胁模型 1
1.1 寻找攻击面 2
1.2 威胁建模 2
1.2.1Level 0级:鸟瞰视图 3
1.2.2Level 1级:接收端 3
1.2.3Level 2级:接收端分解 4
1.3 威胁识别 6
1.3.1Level 0级:鸟瞰视图 6
1.3.2Level 1:接收端 7
1.3.3Level 2级:接收端分解 9
1.4 威胁分级体系 10
1.4.1DREAD分级体系 10
1.4.2CVSS:DREAD之外的
另一选择 12
1.5 应用威胁建模结果 12
1.6 本章小结 13
第2章 总线协议 15
2.1CAN总线 16
2.1.1OBD-II连接器 17
2.1.2找到CAN连接器 18
2.1.3CAN总线的数据包格式 18
2.1.4ISO-TP协议 20
2.1.5CANopen协议 20
2.1.6GMLAN总线 20
2.2 SAEJ1850协议 20
2.2.1PWM协议 21
2.2.2VPW协议 21
2.3 关键字协议和ISO9141-2 22
2.4 局域互联网协议 23
2.5MOST协议 24
2.5.1MOST网络层 25
2.5.2MOST控制块 25
2.5.3破解MOST 26
2.6FlexRay总线 26
2.6.1硬件 26
2.6.2网络拓扑 26
2.6.3实现方法 27
2.6.4FlexRay循环 27
2.6.5数据包结构 28
2.6.6嗅探FlexRay网络 29
2.7 汽车以太网 29
2.8OBD-II连接器引脚图 30
2.9OBD-III标准 32
2.10本章小结 33
第3章 使用SocketCAN与
车辆通信 35
3.1 设置can-utils以连接
CAN设备 37
3.1.1安装can-utils 37
3.1.2配置内置芯片组 37
3.1.3配置串行CAN设备 39
3.3.4设置虚拟CAN网络 40
3.2CAN实用工具套件 41
3.2.1安装附加的内核模块 42
3.2.2can-isotp.ko模块 43
3.3SocketCAN应用程序编程 43
3.3.1连接到CAN套接字 44
3.3.2设置CAN数据帧 44
3.3.3procfs接口 45
3.4socketcand守护进程 45
3.5Kayak 46
3.6 本章小结 48
第4章 诊断和日志 49
4.1 故障诊断代码 50
4.1.1DTC格式 51
4.1.2用扫描工具读取DTC 52
4.1.3清除DTC 52
4.2 统一诊断服务 52
4.2.1利用ISO-TP和CAN
发送数据 53
4.2.2深入理解模式和PID 55
4.2.3暴力破解诊断模式 56
4.2.4保持车辆处于诊断状态 58
4.3 事件数据记录器日志 59
4.3.1读取EDR中的数据 60
4.3.2SAE J1698标准 60
4.3.3其他数据获取方法 60
4.4 自动事告呼救系统 61
4.5 恶意意图 61
4.6 本章小结 62
第5章 CAN总线逆向工程 63
5.1 定位CAN总线 64
5.2 使用can-utils和Wireshark
逆向CAN总线通信 64
5.2.1使用Wireshark 65
5.2.2使用candump 66
5.2.3分组can总线数据流 66
5.2.4使用录制/回放 69
5.2.5创造性数据包分析 72
5.2.6获得转速表读数 74
5.3 使用仪器总成仿真器
创建背景噪声 76
5.3.1设置ICSim 76
5.3.2读取ICSim上的
CAN流量 78
5.3.3更改ICSim的难度 78
5.4 使用OpenXC进行CAN
总线逆向 79
5.4.1翻译CAN总线消息 79
5.4.2写入CAN总线 81
5.4.3改造OpenXC 81
5.5CAN总线模糊测试 83
5.6 排除问题 83
5.7 本章小结 84
第6章 ECU黑客 85
6.1 前门攻击 86
6.1.1J2534:标准化
车辆通信API 86
6.1.2使用J2534工具 87
6.1.3KWP2000及其他
早期协议 87
6.1.4应用前门攻击:
种子-密钥算法 88
6.2 后门攻击 88
6.3 漏洞利用 89
6.4 逆向汽车固件 89
6.4.1自诊断系统 90
6.4.2库函数 90
6.4.3通过字节比较进行
参数识别 94
6.4.4使用WinOLS识别
ROM数据 95
6.5 代码分析 96
6.5.1基础反汇编工具实战 98
6.5.2交互式反汇编器 100
6.6 本章小结 102
第7章 ECU测试平台的
构建与使用 103
7.1 基本ECU测试平台 104
7.1.1获得ECU 104
7.1.2分解ECU线路 105
7.1.3进行连线 107
7.2 搭建高级的ECU
测试平台 107
7.2.1仿真传感器信号 108
7.2.2霍尔效应传感器 108
7.3 仿真车速 110
7.4 本章小结 114
第8章 攻击ECU与其他
嵌入式系统 115
8.1 分析电路板 116
8.1.1识别型号编码 116
8.2.2解剖并识别芯片 116
8.2 使用JTAG和串行线缆
调试功能调试硬件 118
8.2.1串行线调试 119
8.2.2高级用户调试器 120
8.2.3Nexus 121
8.3 利用ChipWhisperer进行
旁路分析 121
8.3.1安装软件 122
8.3.2设置Victim Board 124
8.4 使用功率分析攻击方法
暴力破解安全引导程序 125
8.4.1使用AVRDUDESS
进行测试准备 126
8.4.2设置ChipWhisperer
以进行串行通信 126
8.4.3设置自定义密码 128
8.4.4复位AVR 130
8.4.5设置ChipWhisperer ADC 130
8.4.6监视密码输入时的功耗 130
8.4.7ChipWhisperer Python
脚本编程 133
8.5 故障注入 134
8.5.1时钟干扰 134
8.5.2设置触发线路 139
8.5.3电源干扰 141
8.5.4有损故障注入 141
8.6 本章小结 142
第9章 车载信息娱乐系统 143
9.1 攻击面 144
9.2 利用系统更新进行攻击145
9.2.1识别系统 145
9.2.2确定更新文件类型 146
9.2.3改造系统 147
9.2.4App和插件 149
9.2.5识别脆弱性 149
9.3 攻击IVI硬件 151
9.3.1分解IVI单元的连接 151
9.3.2拆解IVI单元 153
9.4 信息娱乐系统测试平台154
9.4.1GENIVI Meta-IVI 154
9.4.2Automotive Grade Linux 157
9.5 获取实验用OEM IVI158
9.6 本章小结 159
第10章 车间通信 161
10.1V2V通信方法 162
10.2DSRC协议163
10.2.1特征及用途 164
10.2.2路旁DSRC系统 165
10.2.3WAVE标准 167
10.2.4使用DSRC进行
车辆跟踪 169
10.3安全问题 170
10.4基于PKI的安全措施 171
10.4.1车辆证书 171
10.4.2匿名证书 172
10.4.3证书供应 172
10.4.4更新证书吊销列表 173
10.4.5不端行为报告 174
10.5本章小结 175
第11章 武器化CAN研究成果 177
11.1用C语言编写漏洞
利用程序 178
11.1.1改写为汇编代码 180
11.1.2将汇编代码转换为
shellcode 183
11.1.3删除NULL 184
11.1.4创建Metasploit载荷 184
11.2确定目标种类 187
11.2.1交互式探测 187
11.2.2被动式CAN总线
指纹识别 189
11.3负责任的漏洞利用 192
11.4本章小结 192
第12章 使用软件无线电
攻击无线系统 193
12.1无线系统和软件无线电 194
12.2TPMS黑客技术 195
12.2.1使用射频接收器监听 196
12.2.2TPMS数据包 197
12.2.3激活信号 197
12.2.4跟踪车辆 198
12.2.5触发事件 198
12.2.6发送构造的数据包 198
12.3攻击遥控钥匙和
防盗系统 198
12.3.1遥控钥匙黑客技术 199
12.3.2攻击PKES系统 201
12.3.3防盗器密码学 202
12.3.4对防盗器系统的
物理攻击 208
12.3.5闪回:搭线攻击 211
12.4本章小结 211
第13章 性能调校 213
13.1性能调校的取舍 215
13.2ECU调校 215
13.2.1芯片调校 216
13.2.2闪存调校 218
13.2.3独立发动机管理工具 219
13.3本章小结 219
附录A 专业工具 221
附录B 诊断代码的模式和PID233
附录C 创建自己的
Open Garages 237
术语表 243