如何才能保證物聯網汽車的安全?
科技日新月異,手機越來越給力。僅憑一部手機即可完全控制汽車,包括啟動汽車、車門解鎖、車窗升降、天窗開啟等,除此之外,在應用程序上還能查看故障預報、車輛狀態分析、油耗里程統計、駕駛行為分析,電池電壓電量,可以獲得汽車的GPS坐標,跟蹤其路線並打開其他輔助設備。
近日,卡巴斯基的兩個安全研究人員對來自7家軟體開發公司所開發的9個不同品牌的互聯網汽車的Android應用進行了安全測試,結果令人大跌眼鏡,有些連最基本的安全防禦都沒有做到,更令人擔心的是,有幾個互聯網汽車品牌的應用已經被下載了幾十萬次甚至將近一百萬了。
研究人員從以下5個方面測試了這7個應用程序的安全性:
1.是否有潛在的被黑客利用的危險功能,對這個方面的測試意味著黑客能否對汽車進行真正有威脅的攻擊;
2.應用程序的開發人員是否進行過代碼混淆和逆向工程的複雜化。如果沒有,那麼攻擊者就會很容易讀取應用代碼,找到它的漏洞,並利用它們來控制汽車;
3. 是否對手機上應用程序的root許可權(包括在已啟用許可權的情況下隨後取消的安裝)進行過檢查。畢竟,如果惡意軟體感染了手機的root許可權,那麼惡意軟體就能夠實施任何攻擊了。對於這方面的測試,重要的是要確定開發人員是否將用戶憑據作為純文本保存在手機上了;
4.測試是否是向車主顯示的應用程序的GUI(覆蓋保護)。黑客可以通過Android監視GUI向用戶顯示哪個應用,並且惡意軟體還可以通過向用戶顯示具有相同GUI的釣魚窗口來竊取用戶憑證;
5.是否對應用程序的完整性提供了檢查,比如否對其代碼中更改進行過驗證。假如黑客把惡意代碼注入到車主的應用程序,然後發布到應用商店,然後誘騙車主對其應用程序進行更新下載,那麼黑客就會趁機而入。
不幸的是,所測試的這7個應用程序都存在其中一個或多個方面的漏洞。
攻擊檢測所使用的技術
卡巴斯基研究人員介紹了他們測試Android應用程序所利用的三種技術,這三種檢測技術除了1個應用程序不適用之外,其他8個應用程序都可以,另外在做攻擊模型測試時最終都是為了獲得車主存儲在手機上的包括登錄用戶名和密碼等連接憑證。
第一種:通過使用在設備操作系統中獲得完全許可權的漏洞,然後侵入到受害者的電話中,黑客就可以訪問到這些存儲在手機上的詳細登錄信息並將其發送到他們後台的命令和控制伺服器(command-and-control server)。
第二種:黑客可以誘騙車主下載汽車應用程序的「升級版本」,其實就是包含惡意代碼的冒牌應用,趁機獲取用戶的詳細登錄信息。第三種:通過其他方式感染車主的手機,之後再用惡意軟體執行覆蓋攻擊,即當汽車應用程序啟動時,惡意軟體會檢測到它已經開始並偽造程序介面竊取車主的登錄憑據。黑客甚至可以用多個覆蓋載入惡意軟體,以便它可以欺騙受害者載入的任何連接的汽車應用程序。
現將,測試結果匯總如下,此外,測試員還審查了每個應用程序的安全功能。
應用1
應用1的整個汽車應用程序註冊過程可以歸結為簡單地輸入用戶登錄密碼以及汽車的VIN。之後,應用程序顯示一個PIN,然後必須使用傳統方法在車內輸入PIN,以便完成將智能手機鏈接到汽車的過程。這意味著只知道VIN不足以對汽車進行解鎖。
該應用程序不會檢查手機是否已獲得root許可權,就將車主的用戶名以及汽車的VIN在accounts.xml文件中作為純文本存儲。如果黑客在連接汽車的智能手機上具有超級用戶訪問許可權,則竊取數據將非常容易。
應用程序1可以被輕鬆地反編譯,並且代碼可以被閱讀和理解。除此之外,它不會檢測自己的GUI已被代替,這意味著用戶名和密碼可以通過釣魚的方式被獲得,但從理論上來講應用程序1的代碼只有50行,如果進行過基本的防護,應該足以檢查當前運行的應用程序,並啟動具有類似GUI防護檢測。
為了檢查完整性驗證,我們修改了loginWithCredentials方法。
在這種情況下,用戶名和密碼將清楚地顯示在智能手機的屏幕上,並向攻擊者的伺服器發送登陸憑證。
沒有完整性驗證將會讓任何感興趣的人採取攻擊行動。另外,簽名驗證也非常缺乏。毫無疑問,這樣的攻擊需要攻擊者做出一些努力,用戶必須被誘騙下載修改版本的應用程序。但是,慶幸的是,該應用程序採取了SSL證書,能夠防止中間人攻擊。
應用2
該應用程序提供了保存用戶憑據,並同時建議加密整個設備,但經過測試,存在與在應用程序1發現的相同問題:用戶名和密碼以純文本形式存儲在prefs文件中。xml文件(問號表示隨機由應用程序生成的字元)。
VIN存儲在下一個文件中。
經過詳細的檢測。開發人員甚至沒有進行應用程序代碼的完整性驗證,並且,由於某種原因,他們也忘記了代碼混淆。因此,研究人員很容易修改LoginActivity代碼。
因此,應用程序保留了自己的功能。但是,在註冊過程中輸入的用戶名和密碼在登錄嘗試後立即顯示在屏幕上。
應用3
可以通過此應用,對連接的汽車進行功能控制,比如可啟動發動機和解鎖車門。由該汽車經銷商安裝的每個功能模塊都有一個帶有訪問代碼的貼紙,交給車主。這就是為什麼不可能將汽車鏈接到其他憑證,即使它的VIN是已知的。
但這並不代表該程序就無懈可擊,首先,應用程序是微小的,因為它的APK大小為180千位元組;其次,該應用程序會將其調試數據記錄保存在SD卡的文件上。
在LoginActivity開始時記錄日誌,只有當以下這個代碼出現在應用程序:android:debuggable =「true」時,才能改變日誌文件的位置,但沒有什麼可以阻止測試員將它插入到應用程序。為此,研究人員使用了Apktool實用程序。啟動已編輯的應用程序並嘗試登錄後,設備的SD卡將創建一個帶有TXT文件的marcsApp文件夾,這時,帳戶的用戶名和密碼已輸出到文件中。
當然,說服受害者刪除原來的應用程序,並安裝一個偽裝的程序並不是那麼容易。然而,利用更新下載的方法可以實現這個步驟,經驗上,使用社會工程的方法比較好辦到,比如給用戶發送一個虛假簡訊提醒車主進行軟體更新。
應用4
該應用程序允許車主將現有的VIN綁定到任何憑據,因此,惡意攻擊者如果獲得系統的用戶名和密碼,則將解鎖車門。
令人遺憾的是,該應用程序存儲了用戶名以及大量的其他相關的數據,如汽車的製造信息,VIN和汽車車牌號,而且以明文的形式將這些都存儲於MyCachingStrategy.xml文件中。
應用5
為了將汽車連接到安裝了應用程序的智能手機,需要知道顯示在汽車儀錶板計算機上的PIN。這意味著,和其他類似的應用程序存在著相同的問題。
應用6
這是一個由俄羅斯開發人員製作的應用程序,在這個應用程序中,可以直接利用車主的電話號碼進行汽車授權。這種方法對任何汽車的擁有者來說都具有相當打的風險,也就是說,發起攻擊,只需執行一個Android API函數即可獲得系統的用戶名。
應用7
在應用7中,必須注意,用戶名和密碼以純文本形式存儲在credentials.xml文件中。
如果車主的智能手機被感染了具有超級用戶許可權的木馬,則沒有什麼會阻止該文件的輕鬆盜取。
不過,研究人員拒絕向大眾披露他們所測試的那7個應用程序,因為這可能會帶來更大的不安全因素。但他們認為通過他門的分析,互聯網汽車行業應該意識到對連接汽車的手機應該採取更加安全的保護措施。
車主所承擔的安全風險
理論上,偷竊憑證後,惡意者將能夠獲得對汽車的控制,但這並不意味著犯罪分子能夠簡單地駕駛它。理論上,還需要汽車的一把鑰匙,才能打開車門。因此,在控制了汽車內部系統之後,汽車盜賊會使用編程設備將新鑰匙寫入汽車的車載系統。現在,讓我們回想一下,幾乎所有測試的應用程序都允許解鎖車門,停用汽車的報警系統。因此,惡意者根本就不要鑰匙,就可以打開車門,偷取汽車及車上的所有東西。
此外,風險不僅限於汽車被盜,對汽車系統的修改還可能導致交通事故。
卡巴斯基研究員Viktor Chebyshev說:
互聯網汽車應用的開發者也許並沒有意識到如果他們所開發的應用被攻擊之後會產生什麼樣的連帶後果,黑客可以把用戶的互聯網汽車應用作為攻擊口,然後攻擊用戶的網路銀行等非常有價值的信息,甚至可以關閉汽車的防盜裝置,偷竊車輛,比如特斯拉目前只用智能手機的應用程序來控制汽車,所以如何保存好相連的手機就非常關鍵了,如果丟失那後果不堪設想。
研究人員本次的分析都集中在應用程序的本身,也就是說研究人員只對和互聯網汽車直接連接的應用進行攻擊模型分析。不過,目前他們還沒有發現任何大規模針對Android惡意軟體的攻擊,不過,經過對應用程序代碼的分析,他們已經發現在許多黑客論壇出現了對這些代碼如何進行攻擊的交易信息。如下圖所示,
在這些論壇的帖子裡面,已經有購買和銷售連接汽車應用的程序憑證,包括不同的車型的用戶名和密碼,以及PIN號碼和車輛識別號碼(VIN),大概一個數百美元。
研究人員說,他們已經向幾家受影響的汽車公司報告他們發現的安全問題,並希望他們對此予以重視。但與此同時,他們也注意到,這些軟體中的一些安全問題其實並不是什麼安全漏洞而是缺乏基本的安全驗證程序,比如沒有對手機上的登錄憑據進行加密或散列存儲,沒有添加雙因素身份驗證或指紋身份驗證,或對新創建的應用程序執行完整性檢查,以查看其是否已更改為包含惡意代碼等。
本文參考來源於wired,如若轉載,請註明來源於嘶吼: 如何才能保證物聯網汽車的安全? 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※丁磊加盟樂視超級汽車會給行業帶來什麼衝擊?
※阿里 YunOS背後:互聯網汽車的生態雛形浮出水面
※中國車聯網標準能確定是LTE-V了嗎?