現代的汽車比以往任何時候都更加計算機化。信息娛樂和導航系統、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