前言
2014年,OpenGarages——對汽車安全技術的共享與協作感興趣的一群人,發布了第一本CarHacker’sManual(《汽車黑客手冊》),作為汽車黑客培訓班的教材。原書被設計為可放入汽車手套箱的小開本,在一兩天的汽車安全課程中涵蓋汽車黑客技術的基礎內容。我們幾乎沒有預料到它會引起讀者如此濃厚的興趣:在第一周它就被下載了超過30萬次。實際上,該書如此熱門,甚至讓我們的Internet服務提供商癱瘓兩次!,讓他們對我們頗有微詞(還好,最後他們原諒了我們,這好極了,因為本人很喜歡這家小的Internet服務提供商HiSpeedSpan.net!),讀者反饋基本上也是好評如潮;主要的批評集中在於該手冊篇幅太短,沒有足夠多的細節。本書就是應這些批評而生的。這本《汽車黑客大曝光》深入到汽車黑客技術的大量細節,甚至涵蓋了與安全並不直接相關的內容,例如性能調校以及理解與操作汽車的有用工具。
圖書簡介
現代的汽車比以往任何時候都更加計算機化。信息娛樂和導航系統、Wi-Fi、軟體自動更新,以及其他一些創新都以使駕駛更加便利為目標。然而,汽車技術尚未適應當今更加充滿敵意的安全環境,令數以百萬計的人受到攻擊威脅。
《汽車黑客大曝光》能夠深化你對現代汽車中計算機系統和嵌入式軟體的理解,以脆弱性檢測以及對CAN匯流排上和設備/系統間通信的詳解開始。理解了汽車的通信網路之後,本書接著介紹如何攔截數據並執行特定的黑客手段,以跟蹤車輛、解鎖車門、進行發動機時鐘脈衝干擾攻擊及泛洪通信攻擊等。
目錄
1.2.1Level0級:鳥瞰視圖3
1.2.2Level1級:接收端3
1.2.3Level2級:接收端分解4
1.3威脅識別6
1.3.1Level0級:鳥瞰視圖6
1.3.2Level1:接收端7
1.3.3Level2級:接收端分解9
1.4.1DREAD分級體系10
1.4.2CVSS:DREAD之外的另一選擇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.2SAEJ1850協定20
2.2.1PWM協定21
2.2.2VPW協定21
2.3關鍵字協定和ISO9141-222
2.4局域網際網路協定23
2.5MOST協定24
2.5.1MOST網路層25
2.5.2MOST控制塊25
2.5.3破解MOST26
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-utils37
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.5Kayak46
3.6本章小結48
第4章診斷和日誌49
4.1故障診斷代碼50
4.1.1DTC格式51
4.1.2用掃描工具讀取DTC52
4.1.3清除DTC52
4.2統一診斷服務52
4.2.1利用ISO-TP和CAN
傳送數據53
4.2.2深入理解模式和PID55
4.2.3暴力破解診斷模式56
4.2.4保持車輛處於診斷狀態58
4.3事件數據記錄器日誌59
4.3.1讀取EDR中的數據60
4.3.2SAEJ1698標準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使用Wireshark65
5.2.2使用candump66
5.2.3分組can匯流排數據流66
5.2.4使用錄製/回放69
5.2.5創造性數據包分析72
5.2.6獲得轉速表讀數74
5.3使用儀器總成仿真器
創建背景噪聲76
5.3.1設定ICSim76
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改造OpenXC81
5.5CAN匯流排模糊測試83
5.6排除問題83
5.7本章小結84
6.1.1J2534:標準化車輛通信API86
6.1.2使用J2534工具87
6.1.3KWP2000及其他早期協定87
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獲得ECU104
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.3Nexus121
8.3利用ChipWhisperer進行
旁路分析121
8.3.1安裝軟體122
8.3.2設定VictimBoard124
8.4使用功率分析攻擊方法
暴力破解安全引導程式125
8.4.1使用AVRDUDESS
進行測試準備126
8.4.2設定ChipWhisperer
以進行串列通信126
8.4.3設定自定義密碼128
8.4.4復位AVR130
8.4.5設定ChipWhispererADC130
8.4.6 輸入時的功耗130
8.4.7ChipWhispererPython
腳本編程133
8.6本章小結142
第9章車載信息娛樂系統143
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.1GENIVIMeta-IVI154
9.4.2AutomotiveGradeLinux157
9.5獲取實驗用OEMIVI158
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將彙編代碼轉換為
shellcode183
11.1.3刪除NULL184
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.2.1使用射頻接收器監聽196
12.2.2TPMS數據包197
12.2.3激活信號197
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創建自己的
OpenGarages237
術語表243