freeBuf
主站

分類

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

特色

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

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

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

FreeBuf+小程序

FreeBuf+小程序

海盜講車:黑掉Tbox
2020-06-16 18:15:55

大家好,這里是海盜茶館,我是海盜。

今天來點實際的搞車案例,但是由于一些原因,不能放一些特別具體的信息。請大家諒解。

茶館科普之Tbox

Tbox 又稱為TCU,是車內負責接入網絡的設備單元。你可以理解成一個小型的操作系統+SIM卡。Tbox則是車與TSP(車廠的管理系統)之間溝通的中介。

Tbox比較常見的功能如收集車輛信息。上傳到TSP,TSP會把消息推送到你的郵箱或者手機App。還有,當你通過App遠程開啟發動機或者車門的時候,TSP會把你的操作轉化成命令下發到Tbox,Tbox再解析命令執行對應的操作。

Tbox的結構簡單示意如下:

image-20200616141309925

Tbox在車里的位置,再來一個示意圖:

image-20200616124504815

通過上面的示意圖以及例子大家可以看到,Tbox是一個很敏感很重要的設備。也是遠程非接觸式攻擊面中最重要的攻擊點。

不過,Tbox也有前裝與后裝之分。前裝是指出廠就帶的,一般都是廠家事先做好的設備,購買車輛的時候直接包含的。后裝是指市面上一些廠家,為了幫助本來不具備聯網功能的車輛,實現車輛的監控與管理,后安裝到車上的。市面上常見的有針對Audi的樓蘭盒子,還有其他各種的車盒。感興趣的可以自己找找看。

大家都知道,汽車雖然是某個廠家生產的,但是他用到的設備以及軟件,大都不是車廠自己生產的??梢哉f,車廠是一個總裝工作為主的廠商。各種零部件都是從供應商那里采購的。一級供應商可以成為tier1,就是直接供貨給車廠的供應商。以此類推。tier1們,也有一些處于類似的情況,他們也是要采購不同的模塊進行組裝。Tbox就可以理解為車廠tier1 出的產品,但是Tbox的廠家,也有一些供應商,比如提供軟件系統、硬件生產等。也有一些大的tier1,自己包攬大部分的環節,只采購或者外部一些模塊。

信息收集

跟常規的滲透測試一樣,搞之前先做些信息收集的事情是必須的,不然邊搞邊收集信息會耽誤進度,并且會影響你的視野。當然,搞的過程也需要不間斷的信息收集與整理。

我們的目標是一臺電車。搞之前先去收集信息,比如Tbox的型號等。搞車的信息收集途徑,其實與滲透測試類。舉一些我常用的方法與途徑:

  • 1. 原廠的資料:包括不限于各種管理軟件。比如volvo的VIDS、寶馬的瑞金、大眾系的ODIS等。里面都會包含一些重要信息。
  • 2. 玩車論壇。很多動手能力很強的玩家會丟一些信息出來,有時候會對我們有比較大的幫助。比如WIFI信息等。
  • 3. 安全論壇。直接國外放狗搜吧,很多相關的東西,不算太大眾的安全信息,國內都不好找的很可能能找到。
  • 4. 淘寶。
  • 5. 修理店。
  • 6. 官網。有些企業支持車主進行系統更新,官網會提供包括車機、Tbox在內的固件下載。如長安。

設備準備

搞車的一個門檻就是你需要有目標設備,但是并不意味你需要一整臺車。所以如果再看到那些說“搞車你首先需要一臺車”的專家,你就呵呵一下放過他吧。大家都挺忙的,不要浪費時間了。

設備采購這塊一般可能都不知道怎么下手,但是,也沒有那么難。比如萬能的淘寶,隨便一搜,還能搜到不少Tbox的信息。

image-20200616113053476

不過,我不建議買全新的設備(這玩意兒不是手機等設備,新的沒必要),舊的設備意味著運行了一段時間了,里面有些有用的日志跟使用痕跡,在我們分析系統跟應用的時候,都會有很大的幫助。所以購買所謂的拆車件比較好,很多拆車件也都會帶上線束,讓買家至少把usb跟電源的線頭給你標記出來,這樣你后面可以很容易的點起來。最重要的是,價格也合適,省錢。畢竟,花自己的錢搞研究還是能省就省吧。

我們拿到的目標設備就是使用了一段時間的。自己買個12V的電源就可以點起來。

攻擊面分析

Tbox的攻擊面分析類似于整車的攻擊面分析了,但是因為我們要先分析再找漏洞,所以在實驗室環境也會把一些非遠程接觸或者非接觸的方面放進去。舉個例子,Tbox的usb接口,即便你能接觸車,也得把手套箱拆掉才能看到Tbox,在整車的攻擊面梳理中,我們一般不會把Tbox的usb放進攻擊面,但是,我們是實驗室環境的目標是攻破Tbox,所以我們也會把usb放入我們的攻擊面。

通過分析,我們這款Tbox的攻擊面梳理大致如下:

  • Tbox攻擊面
    • 1. wifi
    • 2. usb
    • 3. GSM/4G

部分Tbox會帶藍牙模塊,用于手機的藍牙鑰匙,我這款Tbox不具備這個功能。

對類似的Iot設備的分析,大致有兩種思路:

1. 先本地getshell,進行活體設備的調試分析。
2. 直接想辦法獲取系統固件,還原文件系統,進行靜態分析。
3. 通過設備存貯器件的拆解去讀取。

但是考慮到Tbox在車內的更新屬于頻次較低的操作,方法2基本沒戲。而方法3第一是費錢,第二是還需要你具備一定的硬件操作的能力,拆個小米路由器的rom讀取還原下問題不大,但是拆tbox還是心理沒底的。所以,我們就直接方法1。

開搞

WIFI

點起Tbox,就會發現一個類似tbox-xxxxxxxx的名稱的wifi。使用1234567890作為密碼連入這個wifi,會自動獲取一個192開頭的ip地址。1234567890目前是比較常見的hostapd服務的默認密碼,而且,大部分都不修改。

接入Tbox的子網以后,就可以做一些常規的端口掃描了。開放的也都是一些比較常見的端口。如23,53,3490.系統識別為linux/oelinux。

23、53就不說了,3490可能大家不常見,可以多說一下。

3490是一個叫dlt的開源應用開放的tcp端口。dlt全稱是Diagnostic Log and Trace。是GENIVI下面的一個項目。用于系統的診斷,主要用于應用及系統的日志收集與整理,類似syslog。github地址

53是 dnsmasq 2.8.x,就不看了,比較新的版本,沒有可以遠程利用的漏洞。

搞定telnet

23直接telnet顯示:

Mdm9607
login:

可以判斷使用了高通mdm96xx系統的芯片,可以參考下附錄鏈接資料。

前面掃描系統被識別為oelinux,試下默認的oelinux root密碼,oelinux123,居然進去了。

進入系統就可以繼續搞活體測試了。

還有一些設備,如樓蘭盒子,usb接入也會進入一個內部子網,telnet也一樣可以進去。

分析業務

oelinux中的服務跑的還挺多的,但是我們這里就不挨個分析了。常規情況下,一個陌生的系統,是需要從啟動開始分析起的,這樣就可以分析哪些服務是核心的,哪些被拉起的,做了什么事情。

ls / 發現,根目錄下有一個app的目錄,里面是一些DSxxxx這樣以ds開頭的二進制以及配置文件。ps一下,發現部分啟動的服務也都在這個目錄,基本可以斷定,這個就是tbox的主要服務目錄了。就是tier1自己負責的業務實現,比如遠程車控。

app/log 目錄下,發現不少日志文件,其中tspConnect.log 里面,包含了服務端下發命令處理的日志。這就是我前面說的搞臺使用過的設備的好處。

整個業務主邏輯并不復雜(經過若干小時的分析之后):

  1. tspConnect 負責與tsp的交互,獲取服務端的指令。解析指令并根據執行做相應的操作,遇到控車的指令,則會發送廣播。
  2. 監聽廣播的dsvCom 服務,轉化成具體的can信號。
  3. can信號傳遞給mcuCom服務,發送到CAN。
  4. 完成車門打開或者關閉操作,把結果再傳回tsp。

可見,這個遠控的業務邏輯入口就在tspConnect。雖然日志里有一些信息,但是屬于解包過程了,可以幫助我們還原指令拆封過程,具體過程還是需要我們逆向tspConnect才能知道。

不過,在做這些之前,還需要確認一件事,就是這個傳輸過程是不是加密的,加密邏輯我們是不是能還原。

還原加密過程

丟一個編譯好的arm的tcpdump進Tbox,順利運行起來。

注: 這里不是太好實現原始業務流量的抓取,因為我們拿的是一個獨立的設備,不在原有可用的業務鏈中。不過我們可以通過修改dns解析地址來偽造一個tsp,把測試環境的網絡搞通之后,就可以進行數據包的抓取與分析了。

通過tspConnect.log日志分析可知,傳輸的數據是定長的,那就意味著,可能是某種特定的格式,有定長的數據長度,組合而成的數據。

通過抓包確定,數據傳輸過程并沒有加密,就是常見的socket。那好,剩下的就是逆向分析tspConnect中的數據包拆解邏輯,理清楚邏輯,就可以實現tsp指令的偽造了。

此處省略1萬字的ida分析tspConnect的過程。

最終還原出,指令格式

image-20200616164904120

數據內容經過加密的,使用了AES加密,key呢?你肯定也想到了,在tspConnect里面。

經過其他同學的分析,確認,這里面的key,是對vin車架號進行變化生成的key,雖然每次都是一個動態計算過程,但是每次的key其實都是一樣的。到這里,再結合tspConnect.log,我們就可以完美還原車控命令下發的過程了。

GSM劫持下

這里我們并沒有通過完整的GSM劫持的測試。因為我們手頭沒有現成的劫持工具。所以就偷個懶,使用修改hosts文件的方式,服務端Python偽造一個tsp的server,tbox連上來的時候,偽server下發車控的命令,tspConnect.log的日志顯示成功解析了我們的命令。說明已經實現了遠程解鎖了。

最后

其實還有別的地方我們沒有展開去分析,比如移動端app的業務邏輯。

但是,實際分析的過程也遠遠不止上面描述的部分,實際上整個過程還是花費了不少的時間。

最后,希望可以繼續關注海盜茶館后面的無車搞車系列文章。

附錄

  1. DLT : https://github.com/GENIVI/dlt-daemon
  2. MDM96xx : https://www.jianshu.com/p/8158b7c80aaa

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

# 汽車安全 # 車聯網安全 # 車聯網安全,智能汽車,OBD, VisualThreat # 智能網聯汽車安全 # 海盜茶館
被以下專輯收錄,發現更多精彩內容
+ 收入我的專輯
評論 按熱度排序

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

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