誰動了我的汽車之車聯網安全探討
以前,汽車是孤立的,物理隔離的,因此黑客很難遠程入侵汽車內部電腦(ECU),除非進行物理入侵,而這個是需要很高的犯罪成本。隨著互聯網的進化,當golo3這樣的車聯網產品通過OBD(On Board Diagnostics)診斷座將汽車內部ECU聯網之后,汽車受到的遠程網絡攻擊就不再是猜想。可以預見,一旦車聯網產品普及,關于汽車被攻擊的現實案例就會出現并越來越多。
試想一下,在高速公路上汽車發動機被人為控制突然熄火,會是怎么樣的一場結局?你,害怕了嗎?
一 OBD診斷座與ECU拓撲結構
在詳細探討車聯網安全之前,首先我們來了解下OBD診斷座,如下圖是SAE J1962標準對OBD診斷座的定義:

OBD診斷座是一個包含16pin的母座,除上圖給出的引腳的定義,其它沒有給出的引腳都由汽車廠商自己定義。不同的ECU通信協議可能采用不同的引腳, KWP(key word protoctol)關鍵字協議采用的是7號引腳或者15號引腳,目前最普遍的500kbaud的iso15765協議(高速CAN)采用的是6號引腳和14號引腳。OBD診斷座一般位于汽車方向盤的下面,不同的車型具體位置可能不一樣,下圖給出的是豐田凱美瑞2011經典版OBD診斷座的具體位置:

圖2 豐田凱美瑞2011經典版診斷座位置
接下來我們需要了解ECU和ECU之間的拓撲結構。ECU(Electronic Control Unit)電子控制單元,通俗的的說,它其實就是一些用于控制,記錄或者改變汽車的狀態的單片機或者ARM芯片。一般現在汽車內部都會有十幾個到幾十個不等的ECU,不同的ECU掌管不同的模塊,比如,發動機控制模塊(PCM)會接受傳感器信號,通過復雜的計算來控制燃油的供應量,空氣的配給(電子節氣門),噴油及點火的時機,進氣壓力的調整,還要根據溫度、負荷、爆震、燃燒狀況等來決定發動機的補償控制系數。按照功能的不同,我們又可以把ECU分為動力,車身,底盤,其它等幾大類。下表列舉了高配置的2011款經典版凱美瑞的一些ECU模塊。

表1 2011款經典版凱美瑞的一些ECU模塊
汽車內部除了ECU之外,還會有大量的傳感器以及執行器等部件,通過它們的協調工作共同完成復雜的智能化操作。那么ECU與ECU,ECU與其它部件又是如何通信的呢?如下圖是汽車內部各個部件之間的拓撲結構

圖3 CANBUS拓撲結構
實際情況比上圖中復雜的多,不同車型之間也會有差別,各部件之間可能還會出現直接相連接,總體來說原理是差不多的,所有部件平等的連接在CAN總線上。CAN總線具備低成本,總線利用率極高,可靠的容錯機制,高速的傳輸速率等物理特性。它是基于廣播形式的,也就是說同一總線上的任何一個節點往總線上發消息,總線上其它的節點都可以收到該消息,然后根據消息的頭部來判斷是否是發給自己的消息。不同波特率的總線之間通過網關來完成信號適配。#p#
二 通過OBD診斷座我們能做什么
我們知道OBD診斷座的設計初衷是用于汽車診斷,它是汽車ECU與外部進行交互的唯一接口,也就是說汽車診斷儀能做的我們都能做,我們先來看看符合市場要求的診斷儀應該具備的功能:
1. 能夠讀取汽車ECU的信息,比如17位vin碼,ECU的硬件信息等。
2. 能夠讀取汽車的當前狀態,比如當前的車速,胎壓等等。
3. 能夠讀取汽車的故障碼,快速定位汽車的故障位置,并且清除故障碼。
4. 能夠對汽車進行一些預設置的動作行為測試。比如車窗升降等
5. 除上述基本的診斷功能之外,還可能具備刷動力,里程表修改,鑰匙匹配,安全氣囊復位等復雜的特殊功能。
除此之外,我們知道CAN總線是基于廣播的形式來發送消息的,并且消息一旦發送到CAN總線上,接收到此消息的ECU是無法確定該消息是從哪個節點發來的,即消息不包含源地址或者目標地址,消息頭部僅僅是個標識符,ECU僅僅是根據這個標識符來辨認是否是發給自己的。這樣的設計缺陷自然就能導致消息偽造和欺騙攻擊。OBD診斷座作為總線上的一個節點,不僅能監聽CAN總線上面的消息,而且還能偽造消息(比如傳感器消息)來欺騙ECU,從而達到改變汽車行為狀態的目的。
綜合上述的兩種情況,我們可以把CAN總線上的消息分為如下兩種:
1. 診斷儀與汽車ECU之間通信的消息叫做診斷消息。
2. 汽車內部各部件之間通信的消息叫做內部消息。
通過精心構造上面定義的任何一種消息序列發往總線,惡意攻擊者都有可能改變汽車的狀態。
這里可以列舉幾種攻擊以及攻擊帶來的后果。比如惡意攻擊者可以通過對車身系統發送消息序列來解鎖汽車車門和尾箱,從而達到竊取車主財物的目的;再比如攻擊者可通過構造消息序列發送給OBD診斷座強制讓跑在高速上的車輛發動機熄火,從而達到車毀人亡的目的。
三 對車聯網的攻擊途徑
OBD車聯網產品由云端服務器、手機APP、盒子三大基本要素構成,攻擊其中的任何一個要素以及要素之間的通信,都能夠給車聯網帶來毀滅性的打擊。我這里例舉幾點:
1. 入侵云服務端,篡改服務端的診斷數據邏輯,達到改變汽車行為的目的
2. 通過逆向工程獲知手機APP和盒子之間的通信邏輯,偽造成車聯網產品的手機APP向盒子發送惡意的消息序列。
3. 通過WIFI、藍牙等通信渠道進行攻擊等等。#p#
四 案例演示
這里選擇2011款的豐田凱美瑞經典版作為演示對象,如下圖:

1. 獲取當前車速:http://v.qq.com/page/m/3/m/m0130i9zr3m.html
2. 欺騙汽車儀表盤::

詳細視頻演示:http://v.qq.com/page/r/q/h/r0130lc5fqh.html
3. 欺騙ABS警告燈:
點亮ABS警告燈,讓車主認為防抱死系統有問題。

詳細視頻:http://v.qq.com/page/x/5/i/x0130inc45i.html
4. 殺死發動機(kill engine):
向OBD診斷座發送特定指令后,點燃的發動機瞬間熄火。
詳細視頻演示:http://v.qq.com/page/j/j/n/j0130x1x4jn.html
五 總結
和PC時代一樣,破壞總是會伴隨著創造而誕生,它會稍微落后于創造,但是車聯網的安全問題遠遠比以前要重要很多,因為它與人們生命息息相關!可以想象,當汽車不再孤立,安全問題絕對是最先需要考慮的領域!
未完待續,敬請關注。
【附錄】
https://law.resource.org/pub/us/cfr/ibr/005/sae.j1962.2002.pdf
http://en.wikipedia.org/wiki/ISO_14230
http://www.ebn.din.de/sixcms_upload/media/1995/9601556.pdf
【編輯推薦】