freeBuf
主站

分類

漏洞 工具 極客 Web安全 系統安全 網絡安全 無線安全 設備/客戶端安全 數據安全 安全管理 企業安全 工控安全

特色

頭條 人物志 活動 視頻 觀點 招聘 報告 資訊 區塊鏈安全 標準與合規 容器安全 公開課

官方公眾號企業安全新浪微博

FreeBuf.COM網絡安全行業門戶,每日發布專業的安全資訊、技術剖析。

FreeBuf+小程序

FreeBuf+小程序

海盜講車:車機的滲透思路與實例分析
2020-07-01 17:22:10

大家好,我是海盜,歡迎來到海盜茶館。今天跟大家聊一下車機的滲透思路以及實例。

基礎知識:什么是車機

車機,通俗理解就是車內的那塊大屏。在看各種paper、文檔的時候你會發現有各種叫法。IVI、AVN、HMI、HU等等,不要疑惑,指的都是同一個東西。

  • IVI:In-Vehicle Infotainment,車載信息娛樂系統。

  • AVN:指的是audio、video、navigation。最初的幾個車內的功能。后來代指車機。

  • HMI: 人機接口。這個前面也講過了。

  • HU: headunit,老外喜歡這么叫。

攻擊面分析方法論

攻擊面的本質是什么?不知道大家有沒有想過這個問題。其實就是IO。Input和Output。

只有在你能與目標進行IO交互的時候,才可能、才可以進行測試以及安全測試。理解這個本質,再去分析任何目標的攻擊面就好理解的多了。

我們輸入數據(In),根據反饋(Out)判斷是否存在問題、數據中的poc是否正確執行等。理解這個本質,那么所有的攻擊面,其實都可以歸納為尋找In的過程,從所有的In的路徑,篩選出具備攻擊可能的那一條,然后展開測試。

不過這里還要說明一下,攻擊面的尋找,跟漏洞的確認,是兩個不同的環節。一個是開始,一個是結尾。

車機的攻擊面

有了上面的方法論做基礎,再去分析車機的攻擊面,其實思路就很清楚了。就是尋找能與車機進行數據交互的方法。根據交互距離,我習慣分成如下幾個類別:

  • 接觸攻擊面HMI/觸摸屏:你使用觸摸屏,其實也是一種IO的過程。硬件設備及接口:如usb、OBD等。
  • 近場攻擊面車機系統以及車機應用的使用方式,如wifi、藍牙。
  • 遠程攻擊面,車機的遠程攻擊面不常見,移動App大多情況下都是與Tbox做交互。這里就暫時不多說了。

C車機破解過程

關于如何獲取實驗室設備等等,不再贅述了。簡言之就是實驗室環境下我們擁有C車機、配套的顯示屏、C車機線束引出來的usb接口。

識別系統

車機點亮之后,看起來很酷炫的界面。只看界面其實是比較難判斷到底是什么系統的。不過,常見的車機系統無非就是安卓、QNX以及inux。

不過黑盒狀態下如何具體判斷系統版本呢?我個人比較喜歡使用網絡抓包分析的方法。

  1. 搞一個可以抓包的wifi,也可以使用你的手機熱點,前提是能抓包。

  2. 打開車機內可以聯網使用的app。

  3. 尋找需要聯網的功能,觸發網絡請求,最好是http的請求,如圖片等。我一般喜歡選版本檢測更新,登錄,注冊,圖片等。

  4. 打開捕獲的數據包,尋找http請求,檢查User-Agent。

如下就是我們捕獲到的一個http的UA:

Dalvik/1.6.0 (Linux;U;Android 4.4.2;X4xxAUTO-MX6Q Build/A3.02.09208)

這個UA可以得出以下結論:

  1. 使用的Android 4.4.2。

  2. X4xx AUTO 是車型信息。

  3. MX6Q是硬件設備相關的信息。

  4. Build/A3.02.09208 應該是這個請求發起的軟件的版本編號。

4.4.2 的安卓漏洞應該挺多的,但是前提是你需要有數據輸入的通道,得有個入口。這也就是審計與滲透所不同的地方。審計是把所有的問題都找出來告訴你,很可能大部分都不能被直接利用。而滲透,是找出來能被利用的漏洞并驗證可用。

不抬杠,這個UA判斷不一定完全準確,所以可以多找幾個app的請求多看一下,畢竟所有的http頭都是可以被定制的。

安卓車機的滲透思路

國內很多車廠負責車機的Tier1,使用的系統都比較老舊,4.4的比較多,一直不太明白這個原因。使用這個系統對我們來說基本只要找到進入點,提權啥的都比較容易,因為可用的漏洞還是比較多的。但是如何尋找進入點呢?

  1. 系統升級/app升級漏洞

  2. webview漏洞

  3. 系統內置應用漏洞

  4. 車機系統自身的bug

我前面的文章里大概講過一下Tier1 跟Tier2,如果沒有看過之前的文章也沒關系,大家可以這么車機:縫合怪。

攢一個車機可能有三撥人:攢系統的,通用軟件廠商,車廠自己的軟件外包。這么一個縫縫補補的怪物,出現3不管地帶很常見。千萬別把車廠的軟件品控想的太牛逼,尤其是國內車廠,外包的質量更不用說了。

系統升級

C這臺車機,做的相對還算不錯的。系統升級可以本地以及網絡,本地升級的話需要去下載升級包。網絡升級的話聯網后直接通過網絡匹配版本,然后下載升級包。不過可惜的是,人家的升級包都是加密的。嗯嗯,搞不清楚解密方法之前,這個地方無從下嘴。

app個體的的升級呢,直接砍掉了。只能通過大版本的升級來升級單個app。

此路不通。我們看下一個。

webview

通過前面的抓包分析,http請求不少,但是觸發webview解析的不多,不少都是json數據。序列化漏洞?嗯嗯,想法不錯。

在一個隱私資料里面,發現一個url可以點擊,看起來點擊就打開一個類似瀏覽器的東西。只不過域名寫死的。這個肯定也難不倒我們。dns劫持就可以了。隨便寫個alert的頁面測試下是不是可以執行js,失望了,并沒有彈框。我們瀏覽器的大牛研究了端時間發現沒有可利用的漏洞,放棄了。

不過到這一步,并不全是沒有收獲,我們自己改造了一個黑盒流量分析的工具出來,實現http的自動保存、dns的劫持以及泛域名的劫持、路由劫持等。

這條路也不通啊,再往下看唄。

內置應用

C車機主界面可拉起的內置應用很少,除了地圖、音樂這些常規的并沒有太多可發揮的空間。

系統bug

在有些沮喪的時候,有一個好玩的發現。當把無線鍵鼠的usb接收器插到車機的usb接口時,系統會對鍵盤的部分按鍵做出反應。

在某一個特定的系統主題下面,系統會對鍵盤的屬性鍵做出反應,右下角彈出一個菜單,包括壁紙、管理應用以及系統設置??吹竭@里我有種預感,這里應該可以搞定。

你想起來什么了?windows 3389的輸入法繞過登錄界面拉起cmd的利用?還是早期安卓電視可以調出系統設置菜單?

經過省略1w字的堅持不懈的人肉測試之后,終于發現,管理應用中可以調出某一個輸入法的配置界面,

注:配圖非原圖,保密性的關系,原圖沒辦法放出來,幫助大家理解下這個流程。

這個輸入法的設置按鈕可以拉起“語音和輸入法”的界面,然后點擊“語音和輸入法”,就返回了系統設置界面。

到這里卻被卡住了,應用程序界面并沒有安裝的按鈕。

肯定不能在這里放棄啊,搞來搞去,發現在設置界面有個主屏幕的選項,進去之后,看到幾個啟動器,選擇名字是“啟動器”的那個啟動器,回到主界面,哈哈,主界面變空白了,右邊出現了那個久違的代表應用程序的按鈕。

想象下,空也沒只有紅框里的程序按鈕。點擊,桃花源出來了。

系統所有的安裝的應用程序都在這里了。

接觸式getshell

應用程序里面有三個引起了我們的注意,一個叫“工程模式”,一個是ES文件管理器,還有一個叫“安裝”。

ES文件管理器版本不高,存在漏洞,但是權限不夠,無法安裝應用。

工程模式,拉起一看,像是內部測試用的應用。在其中一個菜單中發現連接ADB,點擊,接上USB,果然adb出來了。更要命的是,居然是root。

通過adb,我們拉下來車機內的所有的app進行分析,幸運的還找到了一個解密后的升級包。這下就可以進行靜態分析了。

到這里,已經差不多了,還有一個“安裝”沒有看。

負責移動安全的同學看了下逆向的的“安裝”app,發現只要在u盤特定目錄下的應用程序就可以進行安裝。安裝應用也搞定了。

近場攻擊

近場的攻擊思路比較明確,車機沒有藍牙只有wifi。接入車機的WIIF熱點或者讓車機接入我的可控的WIFI。然后進行端口掃描。端口掃描只有有限的兩個端口在開放。

接觸式getshell以后,才對開放了這兩個端口的jar進行分析,發現這個socket協議可以寫文件,并且沒有檢查文件名。剩下的套路就比較簡單了:

  1. 還原socket協議格式。

  2. 編寫poc。

不過,只能寫文件其實是不夠的,非接觸式的情況下,我們希望寫入的后門能被自動拉起運行。

疑似0day

我們分析了安卓4.4 的開機流程,PMS負責應用程序的安裝卸載包管理等。其中:

/data/system/users/userId/Package-restrictions.xml 

這個文件記錄了應用的enable或者disable的信息。

然后經過分析相關的安卓源代碼,發現了一個疑似0day的漏洞,通過寫入/修改特定目錄的文件,就可以實現寫入的應用在系統重啟后被拉起的目的。

這里真的不能多說了。

結尾

其實C這臺車機的安全在我們看過的車機里面還算一般的,跟國外的比起來差距還不是一點的大。不過比起那些可以遠程ssh的車機來說,已經算很好了。

不過關于“縫合怪”這個稱呼也一點都沒有叫錯。系統這塊安卓4.4 并不能算是很大的問題,問題在于做二次開發以及車廠自己的debug軟件上存在很多的安全隱患。上層的負責導航等軟件的廠商的安全水位明顯比系統的高出不少,但是沙地起高樓也沒什么用處。

所以還是那句話,千里之堤毀于蟻穴。永遠不要小看任何一個bug,因為這個bug可能會導致你最后全軍覆沒。

本文作者:, 屬于FreeBuf原創獎勵計劃,未經許可禁止轉載

# 滲透測試 # 系統安全 # 系統安全 # 終端安全 # 車安全
被以下專輯收錄,發現更多精彩內容
+ 收入我的專輯
評論 按熱度排序

登錄/注冊后在FreeBuf發布內容哦

相關推薦
  • 0 文章數
  • 0 評論數
  • 0 關注者
登錄 / 注冊后在FreeBuf發布內容哦
收入專輯
四月天小说网