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