ADAC(全德汽車俱樂部)想深入了解內嵌移動網絡調制解調器的汽車如何向制造商發(fā)送數據。CT(德國計算機技術類的雜志)為ADAC介紹了一位安全專家。這位專家深入分析寶馬汽車ConnectedDrive系統(tǒng)的數據傳輸過程。最終,他發(fā)現一系列安全漏洞,允許未授權的攻擊。
ADAC(全德汽車俱樂部)想深入了解內嵌移動網絡調制解調器的汽車如何向制造商發(fā)送數據。C'T(德國計算機技術類的雜志)為ADAC介紹了一位安全專家。這位專家深入分析寶馬汽車ConnectedDrive系統(tǒng)的數據傳輸過程。最終,他發(fā)現一系列安全漏洞,允許未授權的攻擊者打開車門。
物聯(lián)網并不止步于控制車庫的大門:越來越多的車默認配備蜂窩調制解調器與SIM卡。根據制造商的不同,這些調制解調器可以完成不同的事情:它們可能為乘客提供互聯(lián)網訪問;它們也可以發(fā)送遙測數據或交通信息到制造商,或它們可以在發(fā)生碰撞啟動應急服務。有些品牌的汽車,一個手機APP允許車主通過移動APP控制車輛的一些功能。其中的功能可能包含輔助加熱系統(tǒng)或對電動車的主電池充電。
BMW是該領域的領導者之一,其ConnectedDrive已經在市場上使用多年。和C'T(德國計算機技術類的雜志)一樣,ADAC對ConnectedDrive系統(tǒng)傳輸數據對隱私和消費者保護的影響非常感興趣。他們委托我深入調查這個事情,而結果是令人震驚的:即使關注點起初并不是安全性,我還是發(fā)現了一些嚴重的漏洞。
科普:什么是ConnectedDrive服務?
ConnectedDrive,德國BMW公司于2006年聯(lián)手Google公司開發(fā)的“聯(lián)網駕駛”服務。ConnectedDrive 有5項服務,BMW助理,BMW在線,BMW導航,BMW電話服務和車內互聯(lián)網接入,所有這些提供給你獨一無二的移動體驗——最大化的安全、舒適和駕駛樂趣。
為了開展研究,ADAC提供了幾輛配有ConnectedDrive的寶馬車,其中有一輛寶馬320D Touring(不懂車,不知道中文名是什么款)。我并沒有從制造商獲得任何特殊的資料,只能依賴那些網上公開的信息。
為獲得第一印象,我查看了一下ConnectedDrive的控制單元,發(fā)現所謂的Combox有幾種型號。除了其他功能,Combox設備還負責車上多媒體功能,如播放U盤上的音樂文件或配對手機與車上內置的藍牙免提裝置。自2010年以來,這個設備已經部署在各種寶馬車型。
Combox內部構造:除了其他東西,控制單元會將寶馬汽車的ConnectedDrive服務連接到在線服務器。它的調制解調器可以看到位于電路板的右上角。
Combox所使用的CPU是SH-4A,一款Renesas生產的功能強大的32位RISC處理器。產自Cinterion(原屬西門子)的調制解調器完成設備的移動通信功能。同時,該設備也使用一款Renesas 生產的V850ES型微控制器。選擇V850ES想必是看中了它的低功耗,即使在車已經停下且引擎不運行的情況下,也能夠讓調制解調器接收消息。但SH-4A較大的功率需求將會很快耗盡電池存儲的電量。
[page]拆卸
剛開始,我從車上拆下COMBOX模塊,并把它連接到AC適配器,再激活模塊的應急功能,此功能通常通過駕駛艙內的按鈕觸發(fā)。通過查看主板上的模塊,我識別出電源線的管腳及連接器(connector)上的應急按鈕。互聯(lián)網上的資料搜集提供了另一種可行的路徑:通過下載面向寶馬汽車維修中心的診斷軟件,它描述了管腳配置信息。為了記錄COMBOX在移動網絡中產生的流量,我使用基站搭建了測試環(huán)境。這個基站可以支持OpenBSC,從而模擬了一個蜂窩網絡。(寶馬和基站都買不起,腫么辦?)
使用類似SysmoBTS或nanoBTS的基站來模擬蜂窩網絡,記錄控制單元的數據流
當按下應急按鈕時,Combox發(fā)送文本消息,然后發(fā)起語音呼叫。文本消息經加密處理,無法透漏任何可識別的特征。在應急模式被觸發(fā)的每次測試中,發(fā)送的數據看起來都不一樣,暗示著數據可能經過加密過處理。
為了查明數據在什么地方加密,我記錄蜂窩調制解調器與V850ES微控制器之間的傳輸數據,該流量通過串行線路傳輸。為了解調制解調器上連接器的配置,我咨詢了網上可以查到的所有型號。因為我在串行線路上記錄的數據中無法找到應急文本消息,我斷定應急消息的創(chuàng)建和加密位于調制解調器。這個假設是合理的;可以擴展蜂窩調制解調器來提供這樣的功能。
脫焊
遇到加密這種棘手情況,我不得不去獲得調制解調器的固件。調制解調器單元并不包含可獲取固件的標準化測試接口(聯(lián)合測試工作組,JTAG)。這就意味著我不得不從調制解調器上拆除閃存模塊焊點,然后使用適配器板來讀取固件。這可不是是一項簡單的工作,因為芯片經過BGA封裝-在脫焊后,還需要錫球重整(reball),然而供應商為你提供了關照。
Combox的調制解調單元加密文本消息
為了分析固件,我使用足夠多的I/O管腳和匹配的1.8伏I/O電壓把適配器板的閃存芯片連接到STM32評估電路板。只需幾行C代碼,我就通過評估電路板的串口連接器把閃存的內容提取到PC機上。為了分析固件代碼,我動用了神器IDA Pro。它可以探測匯編代碼,而且支持這款調制解調器的ARM處理器。
調制解調器的閃存經過脫焊后連接到適配器板(左側)。讀取固件的方法來可能看起來有些荒唐,但確實有效
通過IDA Pro工具,我迅速識別出固件上多種加密和哈希算法。這是因為流行加密算法使用特定的表與常數,它們可以被自動化地查找。基于這些發(fā)現,我可以查找到使用相同加密和哈希算法的其他代碼。
[page]尋找密鑰
加密秘鑰來自何處?作為樂天派,我起初推測廠商會為每輛車生成唯一的密鑰,并存儲在V850ES微型控制器上,然后再發(fā)送到蜂窩調制解調器。由于在這種假設場景下查找密鑰需要花費大量的工作,所以我決定繼續(xù)分析應急呼叫的協(xié)議。固件中的特定字符串表明,它似乎正在使用NGTP協(xié)議(下一代Telematics協(xié)議)。并不令人感到意外,因為寶馬公司是NGTP主要支持者之一。
為了定義通信協(xié)議,NGTP使用標準符號表示法ASN.1(抽象語法標記1)。經過分析得知,該固件使用開源編譯器asn1c來創(chuàng)建語法。結合asn1c工作原理來查看固件的結構,我嘗試重構接近該協(xié)議所用的ASN.1語法。這個步驟是必須的,因為NGTP只是對協(xié)議如何構建給出建議,但并未規(guī)定實際的實現細節(jié)。
按照這個思路,我再次踏上尋找加密密鑰的道路。NGTP協(xié)議包含更新密鑰的函數,讓我確信密鑰一定存在某個地方。長期以來,尋找總是徒勞無功。在最后一次嘗試中,我分析了固件中一個隨機數據塊。我嘗試把該數據塊的部分數據作為密鑰來解密記錄的緊急文本消息。經過一些失敗的嘗試后,最后獲得了成功。
這個發(fā)現愈發(fā)讓我感到怪異。他們不會真的對所有的汽車都使用同樣的密鑰材料吧?另外,我目前只能查看緊急文本消息。對那種使用場景,所有車擁有相同密鑰并不會造成什么危害。
我發(fā)現了加密使用DES(56位密鑰)算法和AES128(128位密鑰)算法。為簽名消息,固件使用了三種簽名算法DES CBC-MAC,HMAC-SHA1和HMAC-SHA256。消息的頭部指定了算法的類型和所用的密鑰對。
目前,尚不清楚寶馬公司為什么會使用DES算法,因為DES算法的破解已有一段時間了。而且相對于其他加密算法,DES數據塊的長度更短,從而生成更短的加密消息。3DES情況也一樣,但起碼3DES被多數人認為是安全的。
重組
在成功地嘗試解密與解碼應急短信后,我把注意力轉向了汽車本身。我想要查明當涉及安全相關的功能時,寶馬汽車的通信是否會受到更好的保護。為了這個目的,我開始調查車門遠程解鎖的功能。
為使用這個功能,車主首先需要在BMW網站上注冊賬戶并開啟遠程服務。駕駛員可以使用iOS和Android版的My BMW Remote移動應用來打開駕駛員旁邊的車門。為了詳細了解其工作原理,我不得不再次記錄汽車收發(fā)的數據。這需要先發(fā)送一條短信,否則不可能與已關閉引擎的汽車建立數據連接。
獲得這條短信的最簡單方法是監(jiān)聽Combox設備上蜂窩調制解調器與V850ES微控制器之間的串口連接。在只是APP打開車門后,我的確在記錄的數據中找到一條文本消息。這條消息似乎包含調試字符,因為它實際上已經蜂窩調制解調器處理過。
通過對My BMW Remote移動應用的加密算法與密鑰表的了解,我可以輕易地解碼與分析這條消息。為了查看汽車的反應,我使用模擬的蜂窩網絡向汽車發(fā)送消息的副本(重放攻擊)。
攻擊寶馬ConnectedDrive系統(tǒng)
接收到短信之后,汽車大約花費一分鐘啟動連接到主處理單元的系統(tǒng)。COMBOX通過蜂窩網向寶馬后臺服務器發(fā)起連接,并嘗試訪問服務器上的數據。如果Combox沒有接收到任何數據,連接被終止,什么事情也不會發(fā)生。這就意味著短信不足以打開車門,系統(tǒng)還需要來自后臺進一步的數據。
對于剛剛發(fā)生的事情,令人吃驚的是汽車與寶馬服務器之間的蜂窩連接可以在模擬網絡中毫無保留的記錄下來。汽車只是發(fā)送一個簡單HTTP Get請求,在傳輸過程并沒使用SSL或TLS加密。
為查明汽車期望從寶馬后臺獲得的數據,在利用短信開始重放攻擊之前,我至需通過App觸發(fā)解鎖序列。通過這種方式,服務器便會存儲有關我這輛汽車的所需信息。緊接著,車門便打開了。
新數據可以使用上面所述的方法來解密與分析。這一次所用的協(xié)議又是NGTP,但使用不同的簽名算法與加密算法:AES128而不是DES,HMAC-SHA256而不是DES-CBC-MAC,但是使用相同的加密表。
[page]破門而入
現在,我已經具備充足的知識來模擬解鎖功能的所有組件。我可以偽造打開車門的數據,而所需的設備只是一個基站和一臺筆記本,這臺筆記本將發(fā)送偽造的短信,然后再偽裝成寶馬的后臺服務器。
問題是已經提取出來的密鑰是否適用于其他的汽車。對其他幾臺寶馬汽車的測試讓我吃下定心丸。在這個測試過程,我獲知了一些額外情況。如果配備ConnectedDrive的車輛沒有激活遠程服務,遠程打開車門就不能奏效。不過,我們可以利用模擬的蜂窩網絡來激活遠程服務。
這個工作類似于前面的攻擊。汽車發(fā)送一條短信,指示它從BMW服務器上下載新的配置數據。配置數據通過HTTP Get請求加載,配置數據被格式化成未加密且易于理解的XML文件。配置文件并不能防篡改,這種問題原本可以利用數據簽名輕易解決。這就意味著我可以使用模擬網絡輕易地激活遠程服務,然后再打開車門。
至少,汽車會檢查消息的目的地址,即消息應該被發(fā)送到哪輛汽車。這個檢查是通過查看消息中的VIN(車輛標識碼)來完成的。如果VIN不能與提出質疑的汽車相匹配,它就不會執(zhí)行發(fā)送的命令。這對攻擊者來說并不是什么障礙,因為COMBOX在這方面給予攻擊者極大的幫助:如果Combox不能接收到有效的VIN碼,它實際上會發(fā)送一條錯誤消息,而這條錯誤消息會包含VIN來標識錯誤消息的發(fā)送者。
一些BMW車型中,COMBOX已經被替換成其他類型的控制單元。TCB(Telematic Communication Box)支持通用移動通信系統(tǒng)(UMTS),而且不會不泄露VIN,但仍使用已知的加密密鑰。
在接下來的研究,我也研究了幾款最新的BMW車型。其中在一些車型中,COMBOX已經被替換為其他的控制裝置。多媒體與免提功能已經整合到所謂的Headunit。而蜂窩通信已經遷移到到TCB (Telematic Communication Box),它現在除了支持GPRS/EDGE連接,還支持通用移動通信系統(tǒng)(UTM)。TCB會忽略未包含正確VIN的消息。因為它要么不回復,正確VIN碼并不像在COMBOX中一樣那么容易查明。不過,通信仍然使用了適用所有車輛的已知密鑰。
實踐
在現實中,通過模擬網絡遠程解鎖車門將會是什么樣子?這要求所需設備能夠放在一個公文包或一個背包中。模擬網絡的覆蓋范圍即使在市中心也可以超過100米。所謂國際移動用戶識別碼捕捉器(IMSI catcher)比實際的移動網絡擁有更強的信號,所以會導致手機優(yōu)選選擇偽造的移動蜂窩網絡。IMSI catcher不需要事先知道目標汽車的電話號碼。IMSI catcher使用TMSI替代。當一個移動設備接入IMSI偽造的網絡時,IMSI會給這個設備分配一個TMSI。如果目標車輛使用TCB模塊,攻擊者阻塞這個區(qū)域存在的UMTS信號,迫使控制單元退回到GSM模式。
因為不僅配有ConnectedDrive的汽車會接入到偽造的移動蜂窩網絡,通過查看IMEI碼來過濾接入的設備是個不錯的方法,IMEI碼是分配給所有移動設備與蜂窩調制解調器的唯一序列碼。IMEI碼的前8位數字指示設備的類型(手機型號代碼,TAC)。攻擊者可以利用這個方法區(qū)分Combox與TCB。
獲知某個汽車配備了Combox,攻擊者可以查找到VIN,然后激活遠程服務并打開駕駛員旁的車門。如果汽車裝備了TCB,VIN可以通過另一種方式獲取。根據汽車所銷往的國家,VIN可以在擋風玻璃上看到或出現在門框的銘牌上,因此當有人離開汽車時,攻擊者可以使用相機拍下來。解鎖車門并沒有留下任何痕跡,即使在擁擠的街道也不顯眼。
結論
在初步調查時,我發(fā)現了ConnectedDrive上的6歌安全漏洞:
①BMW在所有的車輛上使用相同的對稱密鑰
②一些服務并沒有在汽車與寶馬公司后臺的傳輸過程中加密消息
③ConnectedDrive配置數據不能防篡改
④COMBOX在NGTP錯誤消息中泄露VIN碼
⑤通過短信發(fā)送的NGTP數據使用不安全的DES加密算法加密
⑥COMBOX沒有實施保護措施來防御重放攻擊
這些問題本來可以被輕易地避免。例如,在傳輸過程中執(zhí)行加密的組件都已具備,但僅僅被一些ConnectedDrive服務所使用。此外,制造商可以通過寫入VIN使上述控制系統(tǒng)擁有不同的標識,因此也可以為每個車輛寫入唯一的密鑰。
一年前接受C'T雜志的采訪時,寶馬公司研發(fā)部門的克勞斯布特內爾博士說,當涉及到公司的在線服務時,汽車的安全和授權訪問具有最高優(yōu)先級。參考布特內爾的話,寶馬公司把所有服務路由到自己的安全后臺。此外,汽車只處理授權的命令,且命令只能是預先設定的命令列表中的。
原則上,這是正確的,但知易行難。據寶馬公司宣稱,安全漏洞已全部修復。盡管寶馬公司信誓旦旦擔保沒問題,但對于車主來說又該何去何從?不幸的是,ConnectedDrive不能被輕易關閉-它沒有提供類似手機飛行模式的功能。
為了永久關閉ConnectedDrive,車主要填寫一個書面請求,還要跑一趟汽車維修中心。其中自助措施是斷開Combox或TCB與天線。取決于車型而定,這個方法易于實施,因為控制單元位于行李廂的地板下面。不過,這樣也就關閉了自動應急呼叫(Security與Safety不能兼得啊)。
沒想那么長遠的車主寄希望制造商在處理在線服務的細節(jié)時已經足夠謹慎。ADAC要求汽車裝備的計算機采用先進的防止篡改與非法訪問的保護措施。要求中提到,這種保護應該遵守與其他行業(yè)相同的安全標準。此外,這些安全措施也要通過第三方中立機構驗證-例如作為德國波恩聯(lián)邦信息安全局的公共標準認證((Common Criteria Certification)的一部分。