0x01 前言
???? 隨著云計(jì)算的發(fā)展,不單單針對主機(jī)、數(shù)據(jù)庫、網(wǎng)站的漏洞利用攻擊愈來愈多,且隨著汽車的智能化、網(wǎng)聯(lián)化、自動(dòng)化快速發(fā)展,汽車的安全問題正面臨前所未有的復(fù)雜挑戰(zhàn),帶來暴露面引致汽車攻擊面的增加,不少漏洞遭紕漏,其中包括埋藏在系統(tǒng)、設(shè)備中多年未被發(fā)現(xiàn)的漏洞,影響面非常廣泛。
?????因此,汽車安全也值得關(guān)注。
?????我們來看看,隨著汽車的智能化、網(wǎng)聯(lián)化、自動(dòng)化快速發(fā)展給汽車安全帶來了哪些變化,同學(xué)我個(gè)人覺得汽車的安全問題正面臨前所未有的復(fù)雜挑戰(zhàn),其中最大挑戰(zhàn)是網(wǎng)聯(lián)化帶來暴露面增加。
?????那么,要攻擊一輛汽車,物理接觸已非必經(jīng)之路。從網(wǎng)絡(luò)安全角度看,智能網(wǎng)聯(lián)汽車身處“人車路云”構(gòu)成的復(fù)雜網(wǎng)絡(luò)中,每一個(gè)點(diǎn)、每一個(gè)暴露面,包括產(chǎn)生的大量數(shù)據(jù)都可能成為風(fēng)險(xiǎn)點(diǎn)、“投毒點(diǎn)”。
?????當(dāng)汽車進(jìn)入智能網(wǎng)聯(lián)時(shí)代,數(shù)據(jù)不僅成為驅(qū)動(dòng)汽車發(fā)展的重要價(jià)值點(diǎn),還深度融入社會(huì)生活的方方面面,成為重要的基礎(chǔ)資源。
?????這些車具有網(wǎng)絡(luò)連接功能,通常還具有Wi-Fi熱點(diǎn)功能用于和其他設(shè)備分享車載網(wǎng)絡(luò)連接。具有網(wǎng)絡(luò)連接功能的汽車通常還會(huì)擴(kuò)展出其他功能來充分利用網(wǎng)絡(luò)連接帶來的優(yōu)勢,例如車禍自動(dòng)報(bào)警求救、遠(yuǎn)程控制、遠(yuǎn)程升級(jí)[Over the Air(OTA)Update]、安全預(yù)警等。
我們來看看汽車的攻擊知識(shí)圖譜,如下:
?????
這張圖是從攻擊者視角車聯(lián)網(wǎng)安全會(huì)關(guān)注的點(diǎn),我們來看看主要的攻擊點(diǎn)。比如說車機(jī)是很主要的入口,WIFI、藍(lán)牙、USB,然后還有Tbox,負(fù)責(zé)與云端后臺(tái)通信,然后再往底層有一個(gè)網(wǎng)關(guān),前幾年可能還是傳統(tǒng)的防火墻,現(xiàn)在可能會(huì)變成智能網(wǎng)關(guān)這樣的概念,下面就是不同的域,基本走的是CAN協(xié)議,以及包括周邊的一些設(shè)施,比如說充電樁、ADAS,V2X等等
1.1 常見的汽車攻擊特征
1)物理接觸
?????通過OBD端口向連接的CAN總線發(fā)送未授權(quán)指令到CAN總線,從而非法控制車輛。
2)近身攻擊
?????利用移動(dòng)應(yīng)用的安全漏洞,破解WIFI或者藍(lán)牙,發(fā)送未授權(quán)指令到CAN總線,從而非法控制車輛。
3)遠(yuǎn)程控制
?????通過破解WIFI進(jìn)入車載娛樂信息系統(tǒng),再利用車載系統(tǒng)的漏洞進(jìn)行權(quán)限升級(jí),刷寫惡意固件,發(fā)送未授權(quán)指令到CAN總線,從而非法控制車輛。
0x02 網(wǎng)聯(lián)汽車
?????聯(lián)網(wǎng)的車(Connected Car):又稱網(wǎng)聯(lián)汽車,即這些車具有網(wǎng)絡(luò)連接功能,通常還具有Wi-Fi熱點(diǎn)功能用于和其他設(shè)備分享車載網(wǎng)絡(luò)連接。具有網(wǎng)絡(luò)連接功能的汽車通常還會(huì)擴(kuò)展出其他功能來充分利用網(wǎng)絡(luò)連接帶來的優(yōu)勢,例如車禍自動(dòng)報(bào)警求救、遠(yuǎn)程控制、遠(yuǎn)程升級(jí)[Over the Air(OTA)Update]、安全預(yù)警等。
0x03 車端基礎(chǔ)概念知識(shí)
3.1 V2X
???? V2X(Vehicle to X)通信:表示車與X通信,X可以是車(Vehicle)、路(Road)或者其他相關(guān)基礎(chǔ)設(shè)施,相應(yīng)地也就有了V2V(Vehicle to Vehicle,車與車通信)、V2I(Vehicle to Infrastructure,車與基礎(chǔ)設(shè)施如道路、服務(wù)器等通信)、V2P(Vehicle to Pedestrian,汽車與行人通信)等概念。V2X的典型應(yīng)用有左轉(zhuǎn)輔助、緊急剎車提示、闖紅燈警告、過彎速度警告、施工路段提醒、實(shí)時(shí)天氣信息提醒等。
3.2 高級(jí)輔助駕駛系統(tǒng)
?????高級(jí)輔助駕駛系統(tǒng)(ADAS,Advanced Driver Assistance System):ADAS是在駕駛過程中輔助駕駛員的系統(tǒng),它的功能包括安全告警功能、自適應(yīng)控制功能、信息提示功能等,可在通過傳感器檢測到可能的危險(xiǎn)時(shí)對駕駛員發(fā)出告警或者接管汽車某些控制功能(比如緊急剎車功能),以及根據(jù)環(huán)境自動(dòng)對汽車的某些功能進(jìn)行控制,比如根據(jù)環(huán)境亮度自動(dòng)調(diào)節(jié)車燈亮度、自適應(yīng)巡航控制、盲點(diǎn)警告、自動(dòng)變道
3.3 自動(dòng)駕駛汽車
?????自動(dòng)駕駛汽車(Automated Driving Car):自動(dòng)駕駛汽車依靠人工智能、視覺計(jì)算、雷達(dá)、監(jiān)控裝置和全球定位系統(tǒng)的協(xié)作,讓計(jì)算機(jī)在沒有任何人主動(dòng)操作的場景下,通過汽車線控(X-By-Wire)系統(tǒng)自動(dòng)安全地操作機(jī)動(dòng)車輛。
?????自主駕駛汽車(Autonomous Car):作者刻意避免使用自動(dòng)駕駛汽車這個(gè)概念,是想將現(xiàn)在的汽車所具備的智能駕駛功能與自動(dòng)這個(gè)概念做些區(qū)別,自動(dòng)可以定義為根據(jù)預(yù)先設(shè)定的程序?qū)Νh(huán)境做出預(yù)先設(shè)定的反應(yīng),而自主駕駛汽車能體現(xiàn)出汽車可以在一定的權(quán)限內(nèi)自主做出一些決定,因?yàn)槠嚥捎昧撕芏嗳斯ぶ悄芾锏膶W(xué)習(xí)算法,這些算法模型會(huì)在汽車整個(gè)生命周期中不斷自我學(xué)習(xí)升級(jí),會(huì)越來越“聰明”。
?????汽車在智能化、聯(lián)網(wǎng)化、自動(dòng)化等趨勢下必須要考慮到被黑客攻擊的可能性,汽車采用或者將要采用的技術(shù)如傳感器、無線網(wǎng)絡(luò)連接、云服務(wù)器等都可能遭到黑客攻擊
3.4 汽車網(wǎng)絡(luò)安全
?????為什么汽車網(wǎng)絡(luò)攻擊這個(gè)話題近幾年這么火?是什么造成汽車受到網(wǎng)絡(luò)攻擊的威脅?面對汽車網(wǎng)絡(luò)安全威脅我們可以做些什么?
3.4.1 汽車電子及網(wǎng)絡(luò)系統(tǒng)的發(fā)展
?????縱觀汽車一百多年的發(fā)展歷史,表面上看汽車沒有太大的變化,一個(gè)內(nèi)燃機(jī)、一個(gè)變速器、四個(gè)輪子,加上通用的操作接口(一個(gè)方向盤、一個(gè)剎車踏板、一個(gè)油門踏板、一個(gè)離合器、一個(gè)變速桿等)。但其實(shí)在過去這幾十年,汽車內(nèi)部的控制系統(tǒng)發(fā)生了巨大變化。今天的汽車已經(jīng)不再是簡單的機(jī)械系統(tǒng),今天的汽車配備了各種各樣的電子控制模塊(ECU,Electronic Control Unit)及傳感器。這些電子控制模塊相互協(xié)同,通過各種傳感器和執(zhí)行器對車輛的各部件、道路狀況、駕駛員和乘客等進(jìn)行持續(xù)的感知和控制。傳統(tǒng)汽車上由機(jī)械控制的部件越來越依賴于電子系統(tǒng)來輔助控制(即線控,X-By-Wire),前者甚至?xí)缓笳呷〈?/p>
?????傳統(tǒng)的汽車生產(chǎn)廠家其實(shí)一直非常重視汽車安全的研究,在汽車的安全方面投入了大量的人力物力進(jìn)行研發(fā)。他們關(guān)注的往往是汽車本身的性能安全及操作安全,所以開發(fā)了很多功能來保證駕駛安全,如剎車防抱死系統(tǒng)(ABS)、安全氣囊、預(yù)緊安全帶等,這些都是安全功能(Safety Features),但是他們沒有對汽車在越來越電子化、網(wǎng)絡(luò)化的趨勢下是否會(huì)遭受到同樣可以威脅到汽車安全的網(wǎng)絡(luò)攻擊(Cyber Attack)引起足夠重視。隨著現(xiàn)代汽車集成越來越多的復(fù)雜的網(wǎng)絡(luò)服務(wù)和通信功能,汽車所暴露的攻擊面也越來越大,例如通過標(biāo)配的OBD接口可以直接訪問汽車內(nèi)部網(wǎng)絡(luò),多媒體系統(tǒng)與汽車控制器內(nèi)網(wǎng)之間的接口、藍(lán)牙、Wi-Fi、SubGHz、蜂窩網(wǎng)(GPRS、3G、4G)等都提供了潛在的汽車內(nèi)網(wǎng)入口。從網(wǎng)絡(luò)的另一端來看,聯(lián)網(wǎng)后的汽車和我們的PC或手機(jī)沒有太大區(qū)別,將要面對來自世界任何地方的黑客的考驗(yàn)。
?????在功能不斷增多,網(wǎng)絡(luò)連接越來越普遍的發(fā)展趨勢下,我們要看到汽車在這個(gè)發(fā)展過程中會(huì)暴露出越來越多的攻擊點(diǎn),并提出相應(yīng)的預(yù)防措施,因?yàn)槠嚥恢幌裎覀兊膫€(gè)人電腦,汽車遭受網(wǎng)絡(luò)攻擊后可能會(huì)威脅到駕駛員的生命安全
3.4.2 汽車網(wǎng)絡(luò)安全威脅的原因
原因有很多,如下列出部分原因
設(shè)計(jì)之初缺乏安全考慮
越來越廣泛和深入的網(wǎng)絡(luò)化
越來越多的功能依賴軟件控制
3.5 汽車網(wǎng)絡(luò)安全攻擊面
?????安全是一個(gè)體系,需要從系統(tǒng)的角度來保護(hù),就像木桶原理一樣,任意一個(gè)環(huán)節(jié)都不能出錯(cuò)。
從兩個(gè)角度分析汽車攻擊向量
技術(shù)能力
可操作性
?????技術(shù)能力是指我們假設(shè)攻擊者了解目標(biāo)車輛及攻擊者有能力開發(fā)出針對目標(biāo)車輛的惡意利用。
?????可操作性是指攻擊者通過某攻擊向量發(fā)起攻擊需要克服的條件限制。也就是說,可以通過某方式來攻擊,但是要這樣攻擊需要有條件限制(比如通過 OBD 接口來攻擊就需要物理進(jìn)入汽車)。這些限制條件可以分為三種:間接物理訪問、短距離無線訪問和遠(yuǎn)距離無線訪問。
3.5.1 間接物理攻擊面
?????汽車的眾多攻擊面中最普遍的攻擊面就是間接物理攻擊面。之所以稱其為間接物理攻擊面,是因?yàn)橥ㄟ^這些攻擊面發(fā)起攻擊通常涉及對與這些攻擊面進(jìn)行交互的設(shè)備、媒介進(jìn)行攻擊,例如要通過OBD或者播放器進(jìn)行攻擊就要對診斷設(shè)備、多媒體光盤等進(jìn)行惡意修改。
OBD-II
???? OBD是在線診斷接口(On Board Diagnostic interface),是汽車上最重要的一個(gè)物理接口,汽車維修人員可以使用專用診斷設(shè)備通過這個(gè)接口讀取汽車的運(yùn)行狀態(tài)數(shù)據(jù)、進(jìn)行主動(dòng)測試(例如控制噴油器或者點(diǎn)火器)等功能,但是攻擊者也可以通過這個(gè)接口直接訪問汽車內(nèi)網(wǎng)關(guān)鍵的CAN總線進(jìn)而完全控制汽車的物理功能,造成威脅,OBD盒子通常利用蜂窩網(wǎng)與服務(wù)器通信,或者利用藍(lán)牙或Wi-Fi與手機(jī)通信,再由手機(jī)將數(shù)據(jù)傳給服務(wù)器。這些通信鏈路如果被攻擊就會(huì)使攻擊者獲得OBD接口的訪問權(quán),進(jìn)而對汽車發(fā)起攻擊。
PS:控制器局域網(wǎng)
?
CAN(Controller Area Network)是控制器局域網(wǎng)的英文縮寫,CAN的誕生只是為了實(shí)現(xiàn)更大范圍的協(xié)同功能和全局控制。
?
娛樂系統(tǒng)
?????汽車娛樂系統(tǒng)會(huì)與光盤、USB 接口、手機(jī)等進(jìn)行交互,幾乎所有的汽車都具有這些接口,光盤播放器可以解碼音頻、視頻等,通過USB等接口用戶可以播放可移動(dòng)存儲(chǔ)設(shè)備里的多媒體文件、升級(jí)汽車軟件等,一些汽車還允許通過手機(jī)進(jìn)行屏幕投射,如支持Android Auto、蘋果CarPlay等的汽車。
?????攻擊者可能通過在光盤或者其他可移動(dòng)設(shè)備中植入惡意程序,然后通過社會(huì)工程學(xué)的方式說服用戶播放惡意光盤、插入惡意 U 盤等。攻擊者還可能通過攻擊用戶的手機(jī)來安裝惡意程序。
?????現(xiàn)代汽車的娛樂系統(tǒng)還具有Wi-Fi、藍(lán)牙、蜂窩網(wǎng)絡(luò)連接等功能,這些也是非常危險(xiǎn)的攻擊入口,但這些是無線攻擊入口,但是現(xiàn)代汽車的娛樂系統(tǒng)不是孤立的模塊,而且很多娛樂系統(tǒng)都與CAN總線相連,且采用了Linux或Android操作系統(tǒng)的娛樂系統(tǒng),都存在被攻擊。
3.5.2 短距離無線攻擊面
?????間接物理訪問有一系列缺點(diǎn),如操作復(fù)雜、無法控制攻擊時(shí)間(例如CD什么時(shí)候播放取決于用戶)等,而短距離無線攻擊要靈活得多。汽車的短距離攻擊向量包括藍(lán)牙、Wi-Fi、無鑰匙進(jìn)入、RFID、胎壓管理系統(tǒng),以及DSRC[專用短距離通信(Dedicated Short Range Communication),專為汽車安全應(yīng)用通信而制定]等,對于這些攻擊向量我們假設(shè)攻擊者可以獲取到對應(yīng)的收發(fā)設(shè)備在汽車附近的收發(fā)數(shù)據(jù)。
藍(lán)牙
無鑰匙進(jìn)入系統(tǒng)(PKE 鑰匙)
FID&Hitag(廣泛采用的一種被動(dòng)RFID,類似雙因子認(rèn)證)
胎壓管理系統(tǒng)TPMS
Wi-Fi
用短距離無線通信DSRC或V2X
3.5.3 遠(yuǎn)距離無線攻擊面
?????汽車上的遠(yuǎn)距離攻擊向量包括 GPS、衛(wèi)星接收機(jī)、數(shù)字廣播接收機(jī)等公用的通信鏈路,還包括蜂窩網(wǎng)、遠(yuǎn)程協(xié)助系統(tǒng)(如OnStar)、遠(yuǎn)程控制系統(tǒng)(如Jeep Uconnect和寶馬ConnectedDrive)等專用的通信鏈路。這些遠(yuǎn)距離攻擊向量是最大的威脅,因?yàn)楹诳涂梢栽谌魏蔚胤桨l(fā)起攻擊。
3.6 物聯(lián)網(wǎng)時(shí)代的汽車電子
?????在物聯(lián)網(wǎng)時(shí)代,所有接入網(wǎng)絡(luò)的設(shè)備都面臨安全威脅
?????除了汽車內(nèi)網(wǎng)以外,汽車和其他物聯(lián)網(wǎng)設(shè)備有很多共通的地方,例如利用了共同的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,采用了相同的網(wǎng)絡(luò)架構(gòu),如果發(fā)現(xiàn)了公共的網(wǎng)絡(luò)基礎(chǔ)設(shè)施的漏洞,那么這些漏洞非常有可能同時(shí)影響到汽車和其他物聯(lián)網(wǎng)終端的安全。
汽車是由許多子系統(tǒng)組成的一個(gè)大系統(tǒng)
?
?????上圖中的每個(gè)子系統(tǒng)都由單獨(dú)的或共享 ECU 進(jìn)行控制,這些 ECU 相互之間又經(jīng)過汽車內(nèi)部網(wǎng)絡(luò)(如CAN)相互連接,共同實(shí)現(xiàn)對汽車的整體控制
3.6.1 什么是ECU?
???? ECU 類似于我們的個(gè)人電腦,是一個(gè)閉環(huán)控制系統(tǒng)。個(gè)人電腦通過鍵盤、鼠標(biāo)等輸入設(shè)備感知用戶的意圖或命令,并去驅(qū)動(dòng)顯示器、喇叭等輸出設(shè)備執(zhí)行命令,用戶通過監(jiān)測輸出設(shè)備看是否達(dá)到控制預(yù)期。如果沒有達(dá)到,就修正輸入設(shè)備的輸入最終實(shí)現(xiàn)目的,整個(gè)控制過程形成一個(gè)閉環(huán)。ECU 也是一樣的道理,它通過傳感器采集到被控制設(shè)備的各種參數(shù)(比如壓力、轉(zhuǎn)速、車速等),如果這些參數(shù)不符合要求則驅(qū)動(dòng)執(zhí)行器去改變這些參數(shù),這樣就形成了一個(gè)閉環(huán)控制系統(tǒng)。
?????通常我們所說的ECU指的不是某一個(gè)具體模塊,而是指一類模塊,是一個(gè)統(tǒng)稱,比如控制發(fā)動(dòng)機(jī)的ECU叫ECU(Engine Control Unit)或者EMU、控制變速器的ECU叫ETC(Electronic Transmission Control)等,這些都稱為ECU,所以將來看到某些資料里提到某模塊縮寫時(shí),要根據(jù)上下文判斷具體是在講什么。例如,要根據(jù)上下文分清楚資料里提到的ECU到底是指發(fā)動(dòng)機(jī)控制單元還是泛指電子控制單元。汽車的某些功能需要控制各個(gè)功能模塊的ECU協(xié)同工作才能實(shí)現(xiàn),比如電子穩(wěn)定控制系統(tǒng)(ESP,Electronic Stability Control)。
3.6.2 V2V 需要保護(hù)嗎?
???? V2V 網(wǎng)絡(luò)需要數(shù)據(jù)交換,數(shù)據(jù)交換的車參與主體必須要能夠信任對方,這就要求接收數(shù)據(jù)的V2V設(shè)備能夠?qū)崟r(shí)地對收到的數(shù)據(jù)進(jìn)行驗(yàn)證。
那么此時(shí),我想大家應(yīng)該也能想到,V2V系統(tǒng)是否需要擁有能抵御來自內(nèi)部和外部的攻擊了吧?
需保護(hù)部分:
?????(1)通信[傳輸媒介、傳輸車輛消息或數(shù)據(jù),證書(后面講解),以及其他數(shù)據(jù)交換所依賴的模塊],例如前面提到的V2V安全應(yīng)用,如果攻擊者可以偽造這些告警數(shù)據(jù),將會(huì)導(dǎo)致安全隱患。
?????(2)設(shè)備(車載設(shè)備、路基設(shè)備等)。要保證通信安全,勢必會(huì)涉及前面介紹的加密、證書等安全機(jī)制,設(shè)備中存儲(chǔ)著證書、密碼等敏感信息,因此需要保護(hù)好。
?????(3)運(yùn)營組織(如管理后臺(tái)、V2I 基礎(chǔ)設(shè)施等),通過管理后臺(tái)來攻擊可能造成很大的影響,就像已經(jīng)出現(xiàn)過的針對國內(nèi)某品牌汽車的管理后臺(tái)進(jìn)行攻擊的案例表明的那樣,攻擊者可以通過管理后臺(tái)打開車門,獲取車輛信息、車主信息等。
3.7 在線診斷系統(tǒng)(OBD)
?????由于OBD初期是為排放測試而生,所以排放相關(guān)數(shù)據(jù)必須通過DLC提供,大多數(shù)廠家將DLC作為查詢或診斷汽車數(shù)據(jù)的唯一接口,不僅通過OBD接口傳輸與排放相關(guān)的數(shù)據(jù),還利用其實(shí)現(xiàn)其他功能,通過OBD接口可以訪問發(fā)動(dòng)機(jī)控制單元ECU的數(shù)據(jù),這些數(shù)據(jù)可以為汽車故障診斷提供非常有用的信息。
?????此時(shí),我們可以看出通過OAD接口可以請求自定義的數(shù)據(jù),由此看出OBD是一個(gè)潛在攻擊點(diǎn),原因是通過OBD可以對汽車進(jìn)行控制。
?????通過OBD獲取的信息量可能因?yàn)椴煌钠囆吞?hào)而不同,最早的OBD在檢測到故障時(shí)只是簡單地點(diǎn)亮故障燈而不提供具體的故障信息,而現(xiàn)代的OBD提供了一個(gè)標(biāo)準(zhǔn)的數(shù)字通信接口(也就是常說的OBD接口)來獲取汽車的更多實(shí)時(shí)數(shù)據(jù)及一些標(biāo)準(zhǔn)的診斷故障碼(DTC,Diagnostic Trouble Code),這些數(shù)據(jù)一般都是通過汽車解碼器(或者叫診斷儀)連接OBD接口來獲取的。這樣車主或者維修人員就可以快速定位故障。
???? OBD-II是OBD1的升級(jí)版,OBD標(biāo)準(zhǔn)除了規(guī)定了數(shù)據(jù)接口(DLC,Data Link Connector,也就是OBD接口)的引腳、數(shù)據(jù)通信協(xié)議、消息格式等,DLC有專門的電源引腳為解碼器提供電源,OBD-II還提供了一個(gè)可擴(kuò)展的故障碼列表,可根據(jù)提供的標(biāo)準(zhǔn)來查詢?nèi)魏纹嘐CU數(shù)據(jù)以及可對ECU 固件進(jìn)行篡改。
3.8 汽車總線協(xié)議
?????汽車內(nèi)網(wǎng)采用了多種協(xié)議,例如FlexRay、MOST、CAN、LIN等,這些協(xié)議的速率和成本不同,因此有各自的應(yīng)用場景,如圖6-1所示。例如,MOST常用于多媒體系統(tǒng)中高速傳輸數(shù)據(jù),F(xiàn)lexRay用于實(shí)時(shí)性要求較高的X-By-Wire,CAN常用于連接控制器,LIN則用于門窗開關(guān)等。
3.8.1 為何使用高低速CAN總線呢?
?????為了節(jié)約成本(例如:發(fā)動(dòng)機(jī)系統(tǒng)的總線對數(shù)據(jù)的傳輸率要求就比舒適系統(tǒng)的要求高,而舒適系統(tǒng)的總線一般離連接設(shè)備較遠(yuǎn),比較更容易收到干擾或損壞),不同子系統(tǒng)采用了不同速率的總線(高速CAN總線和低速CAN總線)
?????高速CAN總線(High Speed CAN,CAN-C):CAN-C的標(biāo)準(zhǔn)是ISO11898-2,速率是 125bit/s 到 1Mbit/s,因此這個(gè)速率可以滿足驅(qū)動(dòng)系統(tǒng)的實(shí)時(shí)性數(shù)據(jù)傳輸要求。CAN-C經(jīng)常被用于連接以下子系統(tǒng):
· 發(fā)動(dòng)機(jī)控制單元
· 變速器控制單元
· 車身穩(wěn)定控制
· 儀表系統(tǒng)
?????低速CAN總線(Low Speed CAN,CAN-B):CAN-B的標(biāo)準(zhǔn)是ISO11898-3,速率是 5~125kbit/s,對汽車舒適系統(tǒng)和車身控制系統(tǒng)(如天窗、車門等)的一些應(yīng)用來說這個(gè)速率是足夠的,CAN-B應(yīng)用的例子如下:
· 空調(diào)系統(tǒng)(AC)
· 座椅調(diào)節(jié)
· 電動(dòng)車窗
· 天窗控制
· 后視鏡調(diào)節(jié)
· 燈光系統(tǒng)
· 導(dǎo)航系統(tǒng)控制
?????我們之前提供CAN 總線也被應(yīng)用于汽車診斷系統(tǒng),汽車的各個(gè)ECU(電子控制單元)通過跟CAN總線連接,那么診斷汽車的設(shè)備可以直接接收診斷所需的數(shù)據(jù)。
?????有些ECU還可能和多條總線相連,ECU之間通過發(fā)送CAN數(shù)據(jù)包進(jìn)行通信。CAN數(shù)據(jù)包是廣播到網(wǎng)絡(luò)上每個(gè)ECU的,而且CAN數(shù)據(jù)包沒有源地址和目的地址,只有一個(gè)消息ID,收到數(shù)據(jù)的ECU根據(jù)這個(gè)ID判斷是否對這個(gè)數(shù)據(jù)感興趣,從而傳輸?shù)綉?yīng)用層進(jìn)行處理。因此,如果攻擊者取得了CAN總線的訪問權(quán),他很容易就可以監(jiān)聽網(wǎng)絡(luò)上的數(shù)據(jù)或者偽造數(shù)據(jù)。同時(shí),也提高了逆向分析的門檻,因?yàn)楹茈y直接判斷到底是網(wǎng)絡(luò)上哪一個(gè)ECU發(fā)出了某個(gè)ID的數(shù)據(jù),導(dǎo)致溯源困難。
?
3.8.2 CAN 協(xié)議特點(diǎn)
去中心
?????CAN協(xié)議不需要中央控制節(jié)點(diǎn)來協(xié)調(diào)通信
基于消息的尋址
???? CAN不對網(wǎng)絡(luò)中的節(jié)點(diǎn)進(jìn)行尋址而對消息進(jìn)行尋址,每個(gè)消息都有一個(gè)消息ID,根據(jù)ID判斷是什么數(shù)據(jù)(例如速度消息、車窗控制消息等),但是各ID的消息里也可以有多個(gè)信號(hào),所以每個(gè)節(jié)點(diǎn)發(fā)送消息時(shí)都是廣播的,接收節(jié)點(diǎn)只接收那些感興趣的ID的消息。
3.8.3 CAN消息協(xié)議
CAN總線上傳輸?shù)挠幸韵?種幀
數(shù)據(jù)幀:消息中包含發(fā)送節(jié)點(diǎn)的數(shù)據(jù)(如發(fā)動(dòng)機(jī)轉(zhuǎn)速)
遠(yuǎn)程幀:一個(gè)節(jié)點(diǎn)向其他節(jié)點(diǎn)請求數(shù)據(jù)
錯(cuò)誤幀:當(dāng)一個(gè)節(jié)點(diǎn)檢測到錯(cuò)誤時(shí),將發(fā)送錯(cuò)誤幀通知其他節(jié)點(diǎn)
超載幀:當(dāng)一個(gè)節(jié)點(diǎn)無法及時(shí)處理數(shù)據(jù)時(shí),即正在處理之前發(fā)送的數(shù)據(jù),發(fā)送這種幀來告訴其他節(jié)點(diǎn)延遲發(fā)送下一個(gè)數(shù)據(jù)
3.8.4 CAN的上層協(xié)議
3.8.4.1 ISO-TP
?????ISO-TP 是CAN的上層協(xié)議用于發(fā)送大于8個(gè)字節(jié)的數(shù)據(jù)
3.8.4.2 CANopen
?????CANopen 是一種架構(gòu)在控制局域網(wǎng)絡(luò)上的高層通信協(xié)議
?????當(dāng)傳輸數(shù)據(jù)發(fā)生沖突時(shí),CAN總線的仲裁機(jī)制會(huì)使COB-ID最小的信息繼續(xù)傳送,不用等待或重傳。COB-ID的前4位是CANopen的功能碼,因此數(shù)值小的功能碼表示對應(yīng)的功能重要,允許的延遲時(shí)間較短。
CANopen設(shè)備間的通信可以分為三種通信模型
主從(master/slave)模型:一個(gè)CANopen設(shè)備為主設(shè)備(master),負(fù)責(zé)發(fā)送或接收其他從設(shè)備(slave)的數(shù)據(jù)
客戶端服務(wù)器(client/server)模型:在SDO協(xié)定中,SDO 客戶端(client)將對象字典的索引及子索引傳送給 SDO 服務(wù)器,因此會(huì)產(chǎn)生一個(gè)或數(shù)個(gè)請求數(shù)據(jù)(對象字典中,索引及子索引對應(yīng)的內(nèi)容)的SDO封包
生產(chǎn)者/消費(fèi)者(producer/consumer)模型:數(shù)據(jù)產(chǎn)生者與數(shù)據(jù)消費(fèi)者,模型采用了心跳信號(hào)(心跳協(xié)議)
心跳協(xié)議(Heartbeat Protocol)用來監(jiān)控網(wǎng)絡(luò)中的節(jié)點(diǎn)及確認(rèn)其正常工作。心跳信息的生產(chǎn)者(一般是slave設(shè)備)周期性地送出功能碼1110、ID為本身節(jié)點(diǎn)ID的信息,信息的資料部分有一個(gè)表示節(jié)點(diǎn)狀態(tài)的位。
?????心跳信息的消費(fèi)者負(fù)責(zé)接收上述資料,若在指定時(shí)間(于設(shè)備的對象字典中定義)內(nèi),消費(fèi)者均未收到信息,可采取相關(guān)行動(dòng)(例如,顯示錯(cuò)誤或重置該設(shè)備)。
?????由一個(gè)生產(chǎn)者送出數(shù)據(jù)給消費(fèi)者,同一個(gè)生產(chǎn)者的數(shù)據(jù)可能給一個(gè)以上的消費(fèi)者。又可分為推送和拉取兩種:
推送(push-model):生產(chǎn)者會(huì)自動(dòng)送出數(shù)據(jù)給消費(fèi)者。
拉?。╬ull-model):消費(fèi)者需送出請求信息,數(shù)據(jù)生產(chǎn)者才會(huì)送出數(shù)據(jù)。
3.8.5 統(tǒng)一診斷服務(wù)
???? UDS 規(guī)定了診斷系統(tǒng)的要求,它定義了一系列診斷服務(wù)(service),這些診斷服務(wù)允許診斷儀(client 客戶端)控制ECU(server服務(wù)器)的診斷功能,這些功能包括電子燃油噴射、自動(dòng)變速箱和ABS系統(tǒng),而這些控制單元都是通過車上的串行數(shù)據(jù)鏈路(如CAN總線)連接起來的。說它是獨(dú)立于數(shù)據(jù)鏈路層的也就是說它可以基于各種數(shù)據(jù)傳輸協(xié)議實(shí)現(xiàn),如基于CAN、Wi-Fi、FlexRay等?;贑AN的UDS的具體實(shí)現(xiàn)標(biāo)準(zhǔn)是ISO15765-3。
3.9 CAN分析工具及逆向分析方法
?????要對汽車發(fā)起攻擊,攻擊者要通過CAN總線使汽車執(zhí)行剎車、轉(zhuǎn)向等危險(xiǎn)操作前了解CAN總線上的控制數(shù)據(jù),這就需要對CAN數(shù)據(jù)進(jìn)行逆向分析,破解控制協(xié)議。
???? CAN 協(xié)議的分析可以使用汽車行業(yè)所采用的標(biāo)準(zhǔn)工具。
?????例如,VehicleSpy、BusMaster、CANSpy等,還有一些安全研究人員使用的開源工具如CANToolz。
1.VehicleSpy
???? VehicleSpy是美國英特佩斯控制系統(tǒng)有限公司的產(chǎn)品,是一款集成了診斷、節(jié)點(diǎn)/ECU仿真、數(shù)據(jù)獲取、自動(dòng)測試和車內(nèi)通信網(wǎng)絡(luò)監(jiān)控等功能的工具,支持標(biāo)準(zhǔn)的CAN數(shù)據(jù)庫(即.dbc 文件),與配套的接口適配器硬件結(jié)合還可以支持 CAN 以外的其他協(xié)議,如FlexRay、LIN、汽車以太網(wǎng)等。
?????它支持的硬件有很多,分析CAN協(xié)議使用ValueCAN就可以。能同時(shí)查看、篩選、分類、定制和記錄多種總線網(wǎng)絡(luò)的信號(hào)和消息。它的自動(dòng)消息高亮顯示能準(zhǔn)確清晰地指示車輛總線上正在變化的數(shù)據(jù),這在對CAN進(jìn)行逆向分析時(shí)非常方便。消息編輯界面能讓用戶方便地設(shè)定汽車網(wǎng)絡(luò)通信的發(fā)送或接收消息和信號(hào)。VehicleSpy還有非常強(qiáng)大的圖形化數(shù)據(jù)分析功能,包括復(fù)合Y軸、復(fù)合X軸、數(shù)據(jù)文件重疊、圖表、復(fù)制到剪貼板、多種指針儀表等
???? VehicleSpy還支持腳本編程,功能非常強(qiáng)大,具體可以查看其用戶手冊。
2.BusMaster
???? BusMaster是一款開源的免費(fèi)軟件,支持多家廠商的硬件,例如Kavaser、Vector等廠家的硬件。圖6-13所示為BusMaster支持的硬件。
???? BusMaster支持CAN數(shù)據(jù)的重放、記錄、圖形化顯示、模擬,以及加載CAN數(shù)據(jù)庫(但不是標(biāo)準(zhǔn)的DBC文件而是后綴名為.dbf的文件)等,功能非常強(qiáng)大。由于它是免費(fèi)的,所以非常適合入門學(xué)習(xí)。Kavaser Leaf Light與BusMaster一起使用非常穩(wěn)定
3.SocketCAN
???? SocketCAN是大眾公司向Linux內(nèi)核貢獻(xiàn)的CAN驅(qū)動(dòng)及協(xié)議棧實(shí)現(xiàn),支持虛擬CAN設(shè)備、內(nèi)置CAN芯片、USB或者串口CAN接口設(shè)備。
?????傳統(tǒng)的Linux CAN驅(qū)動(dòng)程序采用的是字符設(shè)備模型,通常情況下只支持單個(gè)進(jìn)程發(fā)送或者接收CAN數(shù)據(jù)。SocketCAN采用的是網(wǎng)絡(luò)設(shè)備模型
4.CANToolz
???? CANToolz又叫YACHT(Yet Another Car Hacking Tool),是一個(gè)分析CAN和設(shè)備的框架。該工具基于不同的模塊組裝在一起,可以被安全研究人員和汽車業(yè)/OEM的安全測試人員用來進(jìn)行黑盒分析等,可以使用 CANToolz 發(fā)現(xiàn)電子控制單元(ECU)、中間人攻擊測試、模糊測試、暴力破解、掃描或R&D測試和驗(yàn)證。
3.10 LIN總線
?????在汽車內(nèi),還有許多ECU的控制并不需要CAN這樣高速率和高安全的通信,本地互聯(lián)網(wǎng) LIN 就是為適應(yīng)這類應(yīng)用而設(shè)計(jì)的低成本解決方案。LIN 是一個(gè)公開的協(xié)議,它基于SCI(UART)串行通信的格式,結(jié)合了汽車應(yīng)用的特點(diǎn)。
???? LIN的傳輸速率最高可到20kbit/s,主要受EMI和時(shí)鐘同步的限制。LIN 器件很常見,幾乎所有的 IC 都帶有 SCI(UART)接口,LIN很快就在車內(nèi)低端控制器領(lǐng)域取得領(lǐng)先地位。典型的LIN應(yīng)用有車門、后視鏡、導(dǎo)向輪、馬達(dá)、照明及其他智能傳感器。LIN不但定義了物理層和數(shù)據(jù)層,還定義了相關(guān)的應(yīng)用軟件層。
???? LIN支持單線雙向通信,采用廉價(jià)的由RC振蕩器驅(qū)動(dòng)的單片機(jī),可以省掉晶體振蕩器或陶瓷振蕩器的費(fèi)用。但在時(shí)間和軟件上卻要付出代價(jià),每條報(bào)文必須經(jīng)過一個(gè)自動(dòng)確定波特率的過程。LIN協(xié)議支持最高20kbit/s的傳輸速率,以及一個(gè)低功耗休眠模式,此時(shí)總線將被關(guān)閉,不再消耗汽車電池。采用8位單片機(jī)并結(jié)合外部或內(nèi)部RC有助于降低系統(tǒng)成本,減少PCB實(shí)際的面積。
?????當(dāng)任意一個(gè)節(jié)點(diǎn)將總線拉低時(shí),總線處于低電平,意味著總線進(jìn)入占用狀態(tài);當(dāng)所有節(jié)點(diǎn)都使總線浮空時(shí)總線處于電池的電壓,意味著總線處于非占用狀態(tài)(Recessive State);在空閑狀態(tài)下浮空的總線通過電阻被上拉到高電平??偩€工作在9V~18V的電壓下,但所有連接到總線上的器件必須能承受40V的電壓。一般情況下,微控制器通過線路驅(qū)動(dòng)器或接收器與總線隔離??偩€上的每一個(gè)節(jié)點(diǎn)被上拉電阻上拉到Vbat(電池電壓),主節(jié)點(diǎn)通過一個(gè)1kΩ的上拉電阻上拉,而從節(jié)點(diǎn)則通過一個(gè)阻值為20kΩ~47kΩ的上拉電阻上拉,通常是30kΩ??偩€最大長度為40米。
?????位錯(cuò)誤:正在發(fā)送的節(jié)點(diǎn)應(yīng)該對希望發(fā)送的數(shù)據(jù)與總線上實(shí)際出現(xiàn)的數(shù)據(jù)進(jìn)行比較,控制器必須等待足夠時(shí)間以確保總線對發(fā)出的數(shù)據(jù)做出反應(yīng),然后才可以測試這一數(shù)據(jù)。假定總線響應(yīng)信號(hào)的最小邊沿變化速率為1V/μs,最大總線電壓為18V,那么發(fā)送器應(yīng)等待18μs后才可進(jìn)行測試。
3.11 MOST總線
MOST:媒體導(dǎo)向系統(tǒng)傳輸(MOST,Media Oriented Systems Transport)是一種用于汽車的高速多媒體網(wǎng)絡(luò)技術(shù),可以用于汽車及其他領(lǐng)域。串行MOST總線采用環(huán)形拓?fù)?,同步?shù)據(jù)傳輸機(jī)制,采用光纖傳輸音頻、視頻等。
???? MOST主要用于汽車的信息娛樂系統(tǒng)的聯(lián)網(wǎng),例如CD播放器、收音機(jī)等,除了這些還有更新的功能(如DVD視頻播放等),這些都需要較高的數(shù)據(jù)傳輸速率。
?????信息娛樂系統(tǒng)對數(shù)據(jù)傳輸?shù)乃俾室筝^高,例如傳輸音頻、視頻等多媒體數(shù)據(jù)要求數(shù)據(jù)發(fā)送方和數(shù)據(jù)接收方支持較高的傳輸數(shù)據(jù)速率及較準(zhǔn)確的同步性。另外,要將MOST應(yīng)用于汽車這種高電磁干擾的環(huán)境中還要求其滿足電磁兼容性、抗干擾性等。
MOST 特點(diǎn):
MOST總線幾乎只用于影音娛樂系統(tǒng)的連接
MOST總線最多可以連接64個(gè)設(shè)備
MOST有多個(gè)版本,不同版本的速率不同:MOST25的速率是24.8Mbit/s,MOST50的速率是50Mbit/s,MOST150的速率是150Mbit/s。
MOST采用環(huán)形拓?fù)?/p>
MOST總線的信道分為控制、同步和異步3種。
MOST 總線系統(tǒng)中一個(gè)節(jié)點(diǎn)壞掉就會(huì)癱瘓整個(gè)網(wǎng)絡(luò),所以可以采用直接旁路某節(jié)點(diǎn)的方式檢查故障,MOST節(jié)點(diǎn)的接口可以被拔掉進(jìn)行旁路。
3.12 FlexRay 高速總線
???? FlexRay:FlexRay是高速總線,在汽車上主要用于開環(huán)或閉環(huán)控制系統(tǒng),主要特點(diǎn)是可靠性高、容錯(cuò)性好、實(shí)時(shí)性好。主要用于對可靠性和實(shí)時(shí)性要求比較高的應(yīng)用場景,如電控轉(zhuǎn)向、電控剎車、電控驅(qū)動(dòng)等系統(tǒng)、電控油門,以及其他主動(dòng)安全系統(tǒng)。這些系統(tǒng)可能沒有機(jī)械備用系統(tǒng),也就是說,如果電子系統(tǒng)故障將無法補(bǔ)救,所以對可靠性要求較高,并且X-By-Wire是一種趨勢
?????靜態(tài)部分使用TDMA(Time Division Multiple Access)方法,每個(gè)節(jié)點(diǎn)會(huì)均勻分配時(shí)間片,每個(gè)節(jié)點(diǎn)只有在屬于自己的時(shí)間片里才能發(fā)送消息,即使某個(gè)節(jié)點(diǎn)當(dāng)前無消息可發(fā),該時(shí)間片依然會(huì)保留(也就造成了一定的總線資源浪費(fèi))
?????靜態(tài)部分使用TDMA(Time Division Multiple Access)方法,每個(gè)節(jié)點(diǎn)會(huì)均勻分配時(shí)間片,每個(gè)節(jié)點(diǎn)只有在屬于自己的時(shí)間片里才能發(fā)送消息,即使某個(gè)節(jié)點(diǎn)當(dāng)前無消息可發(fā),該時(shí)間片依然會(huì)保留(也就造成了一定的總線資源浪費(fèi))
3.12.1 FlexRay拓?fù)?/p>
?????點(diǎn)對點(diǎn):這是最簡單的配置,即兩個(gè)FlexRay節(jié)點(diǎn)直接相連,最大距離為24米。
?????總線結(jié)構(gòu):FlexRay系統(tǒng)配置為總線結(jié)構(gòu)時(shí)可以支持4~22個(gè)節(jié)點(diǎn),任意兩個(gè)節(jié)點(diǎn)間的距離小于24米。還有星形、混合型、級(jí)聯(lián)型等結(jié)構(gòu)。
3.12.2 FlexRay硬件
???? FlexRay節(jié)點(diǎn)由主控制器(Host)、通信控制器(Communication Controller)和總線驅(qū)動(dòng)器組成,每個(gè)節(jié)點(diǎn)還可能包括總線保護(hù)器(BUS Guardian)用于監(jiān)控總線驅(qū)動(dòng)器。
?????在Metasploit Framework 6大模塊中有一個(gè)Payload模塊,在該模塊下有Single、Stager、Stages這三種類型,Single是一個(gè)all-in-one的Payload,不依賴其他的文件,所以它的體積會(huì)比較大,Stager主要用于當(dāng)目標(biāo)計(jì)算機(jī)的內(nèi)存有限時(shí),可以先傳輸一個(gè)較小的Stager用于建立連接,Stages指利用Stager建立的連接下載后續(xù)的Payload。Stager和Stages都有多種類型,適用于不同場景。
???? FlexRay采用的傳輸介質(zhì)是雙絞線,屏蔽和非屏蔽的都可以。通信控制器用于實(shí)現(xiàn)FlexRay協(xié)議的功能(如同步、調(diào)度、控制總線訪問等)。總線驅(qū)動(dòng)器的功能是將比特流轉(zhuǎn)換為電平信號(hào)發(fā)送到總線上或者將總線上的電平信號(hào)轉(zhuǎn)換為比特流。總線監(jiān)控器負(fù)責(zé)控制節(jié)點(diǎn)在允許通信的情況下才能訪問總線。
3.12.3 FlexRay數(shù)據(jù)幀格式
?????FlexRay 在每個(gè)周期的靜態(tài)段或者動(dòng)態(tài)段的時(shí)間槽中進(jìn)行數(shù)據(jù)傳輸所采用的實(shí)際數(shù)據(jù)報(bào)文包含幾個(gè)部分
FlexRay幀結(jié)構(gòu)
FlexRay的每個(gè)數(shù)據(jù)包可以傳輸254個(gè)字節(jié)的數(shù)據(jù)(因?yàn)閿?shù)據(jù)長度域只有7個(gè)比特,而且FlexRay的載荷數(shù)據(jù)總是以2個(gè)字節(jié)組成的字為單位進(jìn)行傳輸?shù)模?/p>
幀頭 | 載荷 | CRC | ||||
5 比特狀態(tài)位 | 11比特幀ID | 7 比特載荷長度 | 11 比特幀 | 周期計(jì)數(shù)器 | 載荷長度 x2個(gè)字節(jié) | 3 字節(jié) |
案例一
假設(shè),如果我們能入侵車機(jī)就能訪問CAN IHS(中速CAN)和CAN-C(高速CAN)網(wǎng)絡(luò)上的ECU。
可以,嘗試把信息發(fā)送到所有的ECU上,而這些ECU控制著車輛的各種物理特性。
最后能入侵車機(jī)后,并沒能直接訪問CAN總線而是還需要利用漏洞更新一個(gè)固件。
CAN-C(高速總線) | CAN IHS 總線 |
---|---|
ABS 模塊: 防抱死制動(dòng)系統(tǒng) | AMP 放大器: 無線電廣播 |
AHLM模塊: 大燈高度調(diào)整 | BCM 模塊: 車身控制模塊 |
ACC模塊: 自適應(yīng)巡航控制 | CCB 連接器 |
BCM模塊: 車身控制模塊 | CCIP 連接器 |
CCB 連接器: 星形CAN-C 主體 | DDM 模塊 |
CCIP 連接器: 星形CANCIP | DLC 診斷接口 |
DLC 診斷接口 | EDM 模塊 |
DTCM 模塊: 驅(qū)動(dòng)系統(tǒng)控制 | HSM模塊: 座椅加熱 |
EPB 模塊: 電子駐車制動(dòng)器 | HVAC 模塊:A/C 加熱器 |
EPS 模塊: 電子助力轉(zhuǎn)向系統(tǒng) | ICS 模塊: 集成中心棧開關(guān) |
ESM 模塊: 電子變速 | IPC 模塊 |
FFCM 攝像頭: 前置攝像頭模塊 | LBSS 傳感器: 盲點(diǎn)左后方 |
IPC 集群 | MSM 模塊: 記憶座椅驅(qū)動(dòng) |
OCM 模塊: 乘客分類模塊 | PDM 模塊: 乘客門 |
ORC 模塊: 安全控制器 | PLGM 模塊: 電動(dòng)尾門 |
PAM 模塊: 泊車輔助模塊 | 車機(jī): 無線電廣播(非橋接) |
PCM 模塊: 動(dòng)力系統(tǒng)控制 | RBSS 傳感器: 盲點(diǎn)右后方 |
車機(jī): 無線電廣播 | ? |
RFH 模塊: 射頻模塊 | ? |
SCM 模塊: 轉(zhuǎn)向柱 | ? |
SCLM 模塊: 轉(zhuǎn)向柱鎖控制模塊 | ? |
TCM 模塊: 變速器控制模塊 | ? |
被動(dòng)防盜系統(tǒng)(PATS)
汽車的點(diǎn)火鑰匙中都植入了一個(gè)小芯片,與車輛上的傳感器通信。
胎壓監(jiān)測系統(tǒng)(TPMS)
汽車上每個(gè)輪胎都有一個(gè)胎壓傳感器,會(huì)時(shí)刻測量胎壓并把數(shù)據(jù)通過無線傳輸給對應(yīng)的ECU。
遙控進(jìn)入(RKE)
無鑰匙進(jìn)入,也就是遙控鑰匙中有一個(gè)短距離的無線收發(fā)器,可以與車輛上的ECU 通信,這個(gè)無線電收發(fā)器會(huì)發(fā)送認(rèn)證信息數(shù)據(jù)給汽車,然后汽車會(huì)判斷這些認(rèn)證信息是否有效,從而決定是否執(zhí)行上鎖、解鎖和啟動(dòng)引擎等指令。
0x04 遠(yuǎn)程攻擊入口
攻擊者可能選擇的一些切入點(diǎn)。很多人在看到這些項(xiàng)目時(shí)想到的都是各種技術(shù)術(shù)語,但是對于攻擊者來說,每項(xiàng)與外界交互的技術(shù)都是一個(gè)潛在的攻擊切入點(diǎn)。
攻擊入口及對應(yīng)的總線
入口 | ECU | 總線 |
---|---|---|
RKE | RFHM | CAN-C |
胎壓管理系統(tǒng) | RFHM | CAN-C |
藍(lán)牙 | Radio | CAN-C,CAN IHS |
車機(jī) | 車機(jī) | CAN-C,CAN IHS |
蜂窩網(wǎng) | 車機(jī) | CAN-C,CAN IHS |
物聯(lián)網(wǎng)/應(yīng)用程序 | 車機(jī) | CAN-C,CAN IHS |
4.1 藍(lán)牙
大多數(shù)汽車都能夠通過藍(lán)牙與設(shè)備同步數(shù)據(jù),如打電話、發(fā)短信、播放音樂等,藍(lán)牙不同于現(xiàn)有的其他信號(hào),藍(lán)牙棧很龐大,同時(shí)也存在著大量的攻擊漏洞,所以攻擊面很大。一般來說,涉及藍(lán)牙棧的攻擊方案有兩種。第一種是利用未配對的設(shè)備。這種攻擊的危險(xiǎn)程度最高,因?yàn)槿魏喂粽叨伎梢垣@取設(shè)備的代碼。第二種利用方法是在配對完成后,因?yàn)樯婕傲擞脩艚换ィ酝{性沒那么大。曾經(jīng)就有研究人員演示了如何利用藍(lán)牙接口入侵一輛汽車。Codenomicon的研究人員還發(fā)現(xiàn),汽車中常用的藍(lán)牙接收器有很多崩潰的情況。
4.2 Wi-Fi
無線電接收機(jī)不僅可以接收聲音信號(hào),也可以接收數(shù)據(jù)。無線電接收機(jī)可以接收多種無線輸入,比如GPS、AM/FM廣播和衛(wèi)星廣播。多數(shù)情況下,這些信號(hào)被簡單地轉(zhuǎn)換成音頻輸出,數(shù)據(jù)解析的數(shù)量也不大,這就說明其中不太可能有可以利用的漏洞。但是,一個(gè)可能的例外是無線電數(shù)據(jù)系統(tǒng),這種系統(tǒng)在傳輸FM模擬信號(hào)的同時(shí)傳輸如歌曲名、電臺(tái)名字等數(shù)據(jù)。因此就涉及對數(shù)據(jù)的解析從而可能出現(xiàn)安全漏洞。
有些具備蜂窩數(shù)據(jù)連接的汽車會(huì)通過Wi-Fi熱點(diǎn)的方式和乘客共享網(wǎng)絡(luò)連接
4.3 車載通信系統(tǒng)/互聯(lián)網(wǎng)/應(yīng)用程序
如今許多汽車都配備了蜂窩網(wǎng)功能(如GPRS、3G、4G等),一般叫作車載通信系統(tǒng),用于將車輛連接到數(shù)據(jù)網(wǎng)絡(luò),例如通用安吉星系統(tǒng)。蜂窩連接也可以用于接收交通或天氣信息等數(shù)據(jù)。
這套系統(tǒng)是最重要的攻擊入口,因?yàn)楣艟嚯x很廣,廣到只要目標(biāo)汽車上有蜂窩通信就可進(jìn)行。即使車載通信系統(tǒng)沒有被直接連接到CAN總線上,這個(gè)通信單元仍然可以用來傳輸如數(shù)據(jù)、聲音等數(shù)據(jù)。有的研究人員此前就在沒有涉及用戶交互的情況下,遠(yuǎn)程利用過汽車上的通信單元。
4.4 硬件信息收集方法
首先對系統(tǒng)進(jìn)行分析,找出可能的攻擊向量,然后再研究特定的攻擊向量,首先是物理攻擊向量。
可能會(huì)存在的物理攻擊向量:
CID有兩張可插拔的存儲(chǔ)卡
CID有一個(gè)USB接口
一個(gè)4針的以太網(wǎng)接口
各種測試點(diǎn)和調(diào)試診斷接口
其他可能存在的攻擊向量:
瀏覽器:不僅CID運(yùn)行的操作系統(tǒng)是老版本的Ubuntu系統(tǒng),其運(yùn)行的瀏覽器也是比較老的版本,瀏覽器基于WebKit 534.34,這個(gè)版本的瀏覽器引擎有幾個(gè)比較知名的漏洞。通過這些漏洞可以讓瀏覽器崩潰但是沒有實(shí)現(xiàn)代碼執(zhí)行。
藍(lán)牙:沒有找到漏洞。USB:可以通過CID的USB接口讓CID重啟進(jìn)入NVIDA Tegra的Recovery模式,但是bootloader是通過密碼保護(hù)的,所以沒有辦法通過這種方式提取固件。
存儲(chǔ)卡:其中一張存儲(chǔ)卡上有一個(gè)名叫 carkeys.tar 的文件,其中包含了這輛Model S的OpenVPN認(rèn)證信息,也就是一個(gè)X509標(biāo)準(zhǔn)證書、一個(gè)RSA私鑰和一個(gè)OpenVPN靜態(tài)密鑰,這些相當(dāng)于車鑰匙,所以未來汽車的鑰匙可能都是基于密碼算法的。
Wi-Fi:將Model S連入Wi-Fi后并沒有發(fā)現(xiàn)開放的端口,但是當(dāng)Model S連上Wi-Fi后首先會(huì)通過向一些服務(wù)器發(fā)起http請求確定網(wǎng)絡(luò)連通性,在確定網(wǎng)絡(luò)連通性后嘗試通過 OpenVPN 連接特斯拉服務(wù)器(地址是 vpn.vn.teslamotors.com)。
以太網(wǎng)接口:
通過這個(gè)接口可以與汽車的娛樂信息系統(tǒng)網(wǎng)絡(luò)通信,接入信息娛樂系統(tǒng)網(wǎng)絡(luò)后使用Nmap等工具對內(nèi)網(wǎng)掃描就可以發(fā)現(xiàn)3個(gè)設(shè)備,一個(gè)是CID、一個(gè)是IC、另一個(gè)是網(wǎng)關(guān)。
三個(gè)設(shè)備發(fā)送了大量(約 1000 個(gè)包每秒)的 UDP 廣播包(目的地址192.168.90.255),根據(jù)數(shù)據(jù)類型的不同使用不同的端口,這就與CAN總線的機(jī)制非常類似,網(wǎng)絡(luò)上每個(gè)節(jié)點(diǎn)將數(shù)據(jù)廣播到網(wǎng)絡(luò)上,需要數(shù)據(jù)的節(jié)點(diǎn)就接收需要的數(shù)據(jù),猜測這里的端口號(hào)類似于CAN的消息ID。
可以通過掃描發(fā)現(xiàn)開放的端口及對應(yīng)的服務(wù)。
4.5 固件升級(jí)步驟
4.5.1 汽車一般升級(jí)固件大致步驟
首先,汽車廠家發(fā)布新版本固件到升級(jí)服務(wù)器,新版本固件包含了對漏洞的修復(fù)或者對性能的改進(jìn)。
汽車從服務(wù)器下載新固件
汽車對新固件進(jìn)行驗(yàn)證
汽車更新固件
4.5.2 OTA 升級(jí)中的安全性
1、廠家發(fā)布新固件到升級(jí)服務(wù)器
服務(wù)的安全
汽車對服務(wù)器的認(rèn)證(數(shù)字證書)
2、汽車下載固件
網(wǎng)絡(luò)通信安全,加密傳輸
斷點(diǎn)傳輸
防止固件泄露導(dǎo)致知識(shí)產(chǎn)權(quán)泄露
3、汽車驗(yàn)證并升級(jí)固件
固件簽名:防止攻擊者利用篡改過的固件來更新系統(tǒng)
固件新鮮性:防止黑客利用存在漏洞老版本固件來更新系統(tǒng)然后利用漏洞發(fā)起攻擊
固件加密:可以防止黑客通過抓包來竊取固件從而造成知識(shí)產(chǎn)權(quán)泄露(比如輔助駕駛控制算法)
4.5.3 安全的OTA升級(jí)系統(tǒng)
典型的固件升級(jí)過程如下
開發(fā)人員開發(fā)出新版本的固件
廠家對新版本的固件進(jìn)行加密并用私鑰進(jìn)行簽名
簽名后的新版固件被上傳到廠家的升級(jí)服務(wù)器
汽車同服務(wù)器建立安全的通信鏈路(例如,通過驗(yàn)證服務(wù)器證書來防止服務(wù)器被偽造)
汽車通過安全通信鏈路下載固件
汽車對固件進(jìn)行解密
汽車驗(yàn)證固件簽名
汽車?yán)霉碳M(jìn)行升級(jí)
密鑰和證書這類重要信息最好引入防破解的硬件安全模塊 HSM(Hardware Security Module)來安全保存和處理。為了防止一輛汽車被破解而影響其他車輛的情況出現(xiàn),每輛汽車需要有自己的密鑰,密鑰的管理問題也需要解決。
回滾需要用到的固件需要備份并加密保存,當(dāng)更新出現(xiàn)問題時(shí)能夠保證回滾到可以運(yùn)行的老版本固件,防止由于升級(jí)失敗而使汽車變磚。
固件更新程序(例如bootloader)控制遠(yuǎn)程更新,而其本身一般無法更新,所以代碼的安全只能通過安全開發(fā)及測試保證。
0x05 汽車傳感器安全
應(yīng)用 | 技術(shù) | 傳感器類型 |
---|---|---|
發(fā)動(dòng)機(jī)診斷 | 霍爾、磁阻等傳感器 | 轉(zhuǎn)動(dòng) |
汽車和發(fā)動(dòng)機(jī)診斷 | 壓阻、電容 | 壓力 |
轉(zhuǎn)向、剎車、變速 | 霍爾、攝像頭 | 角度和位移 |
導(dǎo)航、安全 | GPS、壓阻 | 線性加速 |
安全、舒適系統(tǒng) | 超聲波、毫米波雷達(dá) | 近距離障礙檢測 |
安全 | 毫米波、Lidar、攝像頭 | 近距離障礙檢測 |
非智能駕駛的汽車上這些傳感器的攻擊或者干擾因?yàn)橛旭{駛員的控制可能并不能造成嚴(yán)重的后果。這些傳感器只是被用于輔助駕駛系統(tǒng),駕駛員會(huì)始終處于主導(dǎo)地位,但是智能汽車完全依賴于這些傳感器控制汽車時(shí)就要求這些傳感器采集的環(huán)境數(shù)據(jù)高度可靠,如果這些數(shù)據(jù)受到干擾,甚至偽造,則會(huì)威脅到駕乘人員的生命安全。所以非常有必要在智能汽車大規(guī)模應(yīng)用之前對這些傳感器的安全性進(jìn)行研究,無論是抗干擾還是抗偽造攻擊等都值得研究。
5.1 GPS安全
智能汽車采用GPS主要是定位,然后結(jié)合地圖進(jìn)行導(dǎo)航及結(jié)合其他傳感器數(shù)據(jù)感知環(huán)境,但是定位不光可以用 GPS,還可以用國產(chǎn)的北斗、俄羅斯的 GLONASS等。
5.1.2 GPS安全性分析
GPS 的安全性威脅主要分兩種,一種是干擾、另一種是欺騙。
GPS干擾
GPS欺騙
5.2 超聲波傳感器安全
超聲波傳感器根據(jù)發(fā)送出去的超聲波信號(hào)和接收到的反射信號(hào)的時(shí)間差計(jì)算出傳感器與物體間的距離
如果攻擊者要干擾這種傳感器可以通過不斷發(fā)射超聲波達(dá)到目的,如果要進(jìn)行欺騙可以通過計(jì)算目標(biāo)傳感器發(fā)射的超聲波的時(shí)間,有針對性的延時(shí)或者超前將超聲波信號(hào)發(fā)送給目標(biāo)傳感器來偽造反射信號(hào),從而使其計(jì)算出指定的距離,而且用于攻擊的設(shè)備成本也非常低,一個(gè)Arduino就可以搞定
5.3 攝像頭安全
智能器依靠攝像頭來識(shí)別障礙物、車道、甚至計(jì)算出與前車的距離,所以是非常重要的傳感器。例如,來自以色列的高級(jí)輔助駕駛系統(tǒng)廠商MobileEye就僅僅基于攝像頭實(shí)現(xiàn)了車輛識(shí)別、距離計(jì)算、車道識(shí)別等
前碰撞預(yù)警(Front Collision Warning,F(xiàn)CW)
行人探測與防撞警示(Pedestrian Collision Warning,PCW)
車道偏離預(yù)警(Lane Departure Warning,LDW)
車道保持與危險(xiǎn)預(yù)警(Vehicle Distance Monitoring Warning,HMW)
城市前碰撞警告(Urban Forward Collision Warning,UFCW)
智能遠(yuǎn)光燈控制(Intelligent High Beam Control,IHC)
5.4 Lidar安全
無人駕駛汽車?yán)肔idar探測障礙物,Lidar即激光雷達(dá)傳感器,Lidar是個(gè)合成詞,取自“l(fā)ight”(光)和“radar”(雷達(dá))。輔助駕駛系統(tǒng)將 Lidar 的數(shù)據(jù)與其他傳感器的數(shù)據(jù)融合后來控制汽車。由于Lidar是汽車探測環(huán)境主要依賴的傳感器之一,所以Lidar被干擾或者欺騙的影響非常大
Lidar的原理
Lidar發(fā)射激光束并經(jīng)空氣傳播到地面或物體表面,再經(jīng)表面反射,反射能量被Lidar接收并記錄為一個(gè)電信號(hào)。如果將發(fā)射時(shí)刻和接收時(shí)刻的時(shí)間精確記錄,那么激光器至地面或者物體表面的距離(R)就可以通過以下公式計(jì)算出來R=ct/2(c表示光速,t表示發(fā)射時(shí)刻和接收時(shí)刻的差)。
攻擊方法
最簡單的攻擊方法就是發(fā)送干擾信號(hào)來擾亂Lidar,使其無法檢測到障礙物,更高級(jí)的攻擊可以讓Lidar檢測到不存在的障礙,也就是欺騙
0x06 汽車遙控器及PKE系統(tǒng)安全
隨著汽車數(shù)量的增多,汽車被盜數(shù)量也逐年上升,車輛防盜器的安全已成為車主關(guān)注的問題,汽車采用的防盜技術(shù)有多種,例如在鑰匙里植入RFID、采用滾動(dòng)碼遙控器,以及采用PKE(Passive Keyless Entry)系統(tǒng)等。汽車遙控器及PKE系統(tǒng)都是汽車防盜系統(tǒng)的關(guān)鍵技術(shù),其安全性值得研究。
6.1 汽車遙控器安全
簡單來說,汽車遙控器的工作原理是將指令通過無線電發(fā)送給汽車,汽車在接收到指令后執(zhí)行開門、關(guān)門等操作
由于無線信號(hào)的廣播特性,任何人只要在信號(hào)接收范圍內(nèi)都可以接收到這個(gè)無線信號(hào),所以如果不對遙控信號(hào)進(jìn)行加密就存在被攻擊的危險(xiǎn)。按照信號(hào)加密和不加密把遙控器分為兩類,即固定碼和滾動(dòng)碼遙控器。
固定碼遙控器的編解碼電路目前已經(jīng)朝著高度集成化發(fā)展,普通的固定碼遙控器已經(jīng)被廣泛用于眾多領(lǐng)域,如遙控車庫門、無線門鈴、門禁、遙控玩具、遙控開關(guān)、防盜報(bào)警器、車位鎖等,然而這些采用固定碼的芯片并不能保證系統(tǒng)的安全,因?yàn)椴捎霉潭ùa的這些芯片的無線遙控每次發(fā)送的數(shù)據(jù)都是一模一樣的,可以被重放攻擊。鑒于固定碼的脆弱性,其慢慢被滾動(dòng)碼(Rolling Code)遙控器代替。
6.2 滾動(dòng)碼
滾動(dòng)碼是指采用了某種加密算法加密后的遙控器信號(hào)。
審核編輯:劉清?
評論
查看更多