閱讀221 返回首頁    go 阿裏雲 go 技術社區[雲棲]


車控APP發現安全隱患,研究人員模擬黑客入侵

前言

在過去的幾年中,互聯網接入汽車越來越受歡迎。互聯網接入的形式不僅僅限於多媒體係統(音樂、地圖、電影),汽車鑰匙係統也越來越流行。車主通過車控APP便能獲得汽車GPS坐標、行車路線、解鎖車門、發動引擎和打開輔助裝置。這樣的功能是一把雙刃劍,為車主提供方便的同時也埋下了安全的隱患。如果偷車賊入侵了安裝有汽車APP的移動設備,那麼偷車豈不就是小菜一碟?


為了找到問題的答案,我們接下來將模擬入侵行為,希望車主能夠從中學習到能夠規避這種風險的方法。


潛在的威脅

車控APP非常流行,應用商店裏那些最受歡迎的車控類APP的用戶數量可達百萬。下麵列舉了幾個:

我們將選取7個APP作為我們的研究對象,這些APP可以控製來自不同製造商的車輛。我們不會揭露那些APP的名字,但是我們將研究結果通知了實驗過程中涉及到的製造商。


我們對每個APP的以下幾個方麵做了檢查:

1. 潛在的危險功能是否可用,是否可以通過APP偷車,或者是使某個係統癱瘓。

2. APP的開發人員是否采用方法來實現APP的逆向工程複雜化(代碼混淆或者打包)。否則,偷車賊將很輕易就能看到APP的代碼,找到漏洞,並利用漏洞入侵汽車的基礎設施。

3. APP是否檢查設備的root權限。如果惡意軟件感染了有root的設備,那麼它將能夠做任何事情。在這種情況下,關鍵是要確定開發人員是否將用戶憑證以純文本的形式保存在設備上。

4. 是否有驗證,向用戶展示APP的GUI(overlay 保護)。Android允許監視向用戶展示的APP,惡意軟件可以通過向用戶展示具有相同GUI的網絡釣魚窗口並竊取用戶憑證來進行攔截。

5. 是否有APP完整性驗證,例如APP是否能驗證自身代碼的更改。這關係到入侵者是否能注入他的代碼到APP,然後發布到應用商店,並保持原來APP相同的功能和特征。

不幸的是,實驗證明所有的APP總會在某個方麵存在容易受到攻擊的安全隱患。


測試車控APP

此次實驗,我們從知名品牌的汽車APP中選擇了7個最受歡迎的,測試了這些APP的能夠被利用來訪問汽車的基礎設施的漏洞。

測試結果如下。此外,我們還審查了每個應用程序的安全功能。


APP #1

汽車注冊過程為輸入用戶名和密碼,以及汽車的VIN到APP。之後APP會顯示一個PIN,這個PIN必須使用傳統方法在車內輸入,以便完成將智能手機鏈接到汽車的過程。這就意味著僅知道VIN不足以解鎖車門。

APP不會檢查設備是否有root權限 ,並將用戶名以及汽車的VIN在accounts.xml文件中作為純文本存儲。如果木馬在鏈接了的智能手機上具有超級用戶訪問權限,那麼竊取數據將會非常容易。

APP #1可以輕鬆地被反編譯,並且代碼能被閱讀和理解。除此之外,它不會抵消自己重疊的GUI,這就意味著用戶名和密碼可以被可能僅僅隻有50行代碼的釣魚APP獲得。如果APP有目標程序包的名稱,我們應該能夠檢測到哪個APP正在運行和啟動具有相似GUI的惡意行為。

為了進行完整性驗證,我們修改了loginWithCredentials(登錄憑證)方法。




在這種情況下,用戶名和密碼就這樣簡單的顯示在智能手機的屏幕上,沒有任何措施來阻止嵌入代碼並向入侵者的服務器發送憑證。

沒有完整性驗證就意味著任何感興趣的人都可以隨心所欲的修改APP,並將修改過的APP發給潛在的受害者。簽名驗證非常缺乏。這樣的攻擊需要入侵者付出一些努力,因為他們必須能哄騙用戶下載修改過的APP。這樣的攻擊是悄無聲息的,所以用戶在他的汽車被盜之前不會察覺到任何異常。

但是,好的方麵是APP用SSL證書創建連接,這防止了中間人攻擊。


App #2

該APP提供保存用戶憑證,同時建議加密整個設備以防盜。這是可以理解的,但是犯罪者不是要偷電話,隻是要“感染”它。在App #2中發現了存在於APP #1中的同樣的問題,用戶名和密碼以純文本的形式存儲在 prefs file.{?????????}.xml file中(問號表示由APP隨機生成的字符)。



VIN存儲在下一個文件中。



隨著實驗的深入,我們得到了更多的信息。開發人員甚至沒有時間去實施應用程序代碼的完整性驗證,並且由於某些原因,他們也忘記了做代碼混淆。結果就是我們很容易的便能修改LoginActivity代碼。



APP保留了自己的功能性,但是在注冊過程中輸入的用戶名和密碼在登錄嚐試後會立即顯示在屏幕上。


App #3

與此APP配對的汽車可選擇性的配置一個控製模塊,控製模塊可啟動發動機和解鎖車門。 由經銷商安裝的每個模塊都有一個帶有訪問代碼的貼紙,貼紙會交到車主手中,這樣即便知道VIN也不可能將汽車鏈接到其他憑證。

但是仍然有其他的攻擊可能性:首先,APP很小,它的APK大小為180 KB; 其次,整個APP將其調試數據記錄到了保存在SD卡上的文件中。



在LoginActivity開始時記錄日誌



轉儲日誌文件的位置

不幸的是日誌記錄隻有在以下標誌被設置在APP中時才能被啟用:android:debuggable =“true”。 公共版本的APP是沒有標誌的,但我們可以將它插入到APP中。為此,我們將使用Apktool utility。啟動編輯過的APP並嚐試登錄之後,設備的SD卡將會創建一個帶有TXT文件的marcsApp文件夾。在我們的示例中,賬戶的用戶名和密碼已經輸出到文件中。



當然,說服受害者刪除原來的APP,並安裝一個相同的帶有調試標誌的APP並不是那麼容易。但是仍然是可以實現的,方法是將受害者誘導到一個網站去下載一個重要的更新,將編輯過的APP和安裝手冊偽裝為更新。從經驗上來說,病毒製作者善於使用社工的方法。現在向APP添加將日誌文件發送到指定服務器或以SMS消息的形式發送到電話號碼的功能並不是難事。


App #4

該APP允許將現有的VIN綁定到任何憑證,但是會發送請求到汽車的內置電腦上。因此,不成熟的VIN盜竊將不會有助於黑客入侵車輛。

但是,被測試的APP對於其窗口上的overlays是沒有防禦力的。如果入侵者獲得了係統的用戶名和密碼,那麼他便能夠解鎖車門。

令人遺憾的是,該APP將係統的用戶名以及大量的其他有趣的數據以明文儲存,例如汽車的製造、VIN和汽車的號碼。所有的這些數據都位於MyCachingStrategy.xml文件中。


App #5

為了將汽車連接到安裝了該APP的智能手機上,需要知道汽車內置電腦上顯示的PIN。這就意味著和App #4的情況一樣,知道VIN是不夠的,必須從汽車內部攻破。


App #6

該APP由俄羅斯的開發人員製作,區別於其同行,該APP使用車主的電話號碼作為授權。 這種方法對任何車主都會造成相當程度的風險,隻需執行一個Android API函數即可獲得係統的用戶名,發起攻擊。


App #7

我們注意到,參與實驗的最後一個APP將用戶名和密碼以純文本的形式存儲在credentials.xml文件中。



如果智能手機被具有超級用戶權限的木馬病毒感染了,那麼該文件的竊取將輕而易舉。


汽車被盜是如何發生的

理論上,拿到憑證後,入侵者便能夠獲得汽車的控製權,但這並不意味著就能夠簡單的把車開走,必須有鑰匙才能啟動汽車。因此,偷車賊進入車裏之後,會使用編程單元寫一個新的密鑰放入到汽車的車載係統中。幾乎所有的APP都允許解鎖車門,這樣就繞過了汽車的報警係統。因此,偷車賊便可以在不破壞任何東西的情況下悄悄的將車迅速偷走。


值得注意的是,車控APP帶來的風險不僅僅是汽車盜竊,入侵汽車並故意篡改某些元素可能導致交通事故,帶來傷害或死亡。


我們檢測的這幾款APP都沒有防禦機製。但是值得慶幸的是這些APP中沒有一個是通過聲音或SMS消息來控製汽車的。這種方法被售後報警係統製造商使用,包括俄羅斯的那款APP,因為移動互聯網的質量並不能保證汽車總是在線,而語音唿叫和SMS消息卻隨時可用。下麵我們簡單分析一下由此產生的汽車安全威脅。


聲控是通過所謂的DTMF命令處理的。車主必須給汽車打電話,汽車的報警係統會響應唿入,並報告汽車狀態,然後切換到待機模式,等待車主的命令。然後,車主撥打預設的號碼來命令汽車解鎖車門並啟動發動機,報警係統通過識別這些代碼來執行正確的命令。

聲控係統的開發者通過白名單來保障安全,隻有在白名單上的電話號碼才具有控製汽車的權利。但是,如果車主的手機被入侵了呢?入侵者就可以調用報警係統、禁用揚聲器和屏幕,這樣就可以無聲無息的完全控製汽車。當然,入侵也不會這麼容易,許多汽車愛好者將報警係統號碼保存在一個虛構的名字下。在這種情況下,隻有車主頻繁地唿叫車輛,入侵者才能在偷來的唿出曆史記錄中找到報警係統號碼。


汽車報警係統SMS消息控製方法的開發者肯定沒有閱讀過我們關於Android設備安全的文章。卡巴斯基實驗室麵臨的第一個也是最常見的移動木馬就是SMS木馬,或者是含有用於秘密發送短信的代碼的惡意軟件,通過常見的木馬操作以及由木馬發出的遠程命令實現。


因此,惡意軟件的開發者通過以下三個步驟就可以解鎖受害者的車門:

1. 瀏覽智能手機上所有的SMS消息,從中找出汽車命令。

2. 找到所需的SMS消息後,從中提取電話號碼和密碼以獲得訪問權限。

3. 向找到的電話號碼發送SMS消息,解鎖車門。

一個木馬便能夠無聲無息的完成這三步操作,唯一需要做的事情就是感染智能手機。


結論

汽車是昂貴的,值得我們像保護銀行賬戶一樣去保護汽車的安全。汽車製造商和APP開發者的態度是明確的,他們致力於快速的填補市場APP空白,為車主提供改變生活質量的新功能APP。但是,當考慮車控APP的安全性時,其基礎設施安全(控製服務器)及其交互和基礎設施通道並不是唯一值得考慮的事情。客戶端安全也值得注意,特別是安裝在用戶設備上的APP。現在APP很容易便能被用來打擊車主,客戶端很可能是最薄弱的環節,最有可能成為攻擊者的目標。


目前為止,我們沒有檢測到車控APP攻擊,在我們的成千上萬個檢測惡意軟件的實例中也沒有發現用於下載車控APP的配置文件的代碼。然而,現代的木馬是非常靈活多變的,如果某個木馬今天持續顯示不能被用戶自己移除的廣告,那麼明天它就可以將配置文件從車控APP上傳到犯罪者命令和控製的服務器。木馬還可以刪除配置文件,並用修改過的配置文件覆蓋它。一旦所有這些在經濟上都變得可行,最常見的移動木馬也會增加新的功能。


最後更新:2017-04-10 21:02:15

  上一篇:go 互聯網業務安全之通用安全風險模型
  下一篇:go Local privilege escalation for OS X 10.11.6 via PEGASUS