破解特斯拉的第一人解密 如何利用CAN 總線來黑掉你的汽車
是的,只要車有 CAN 總線設(shè)計。
本文引用地址:http://butianyuan.cn/article/201612/341161.htm先看一下理論分析——汽車 CAN 網(wǎng)絡(luò)逆向過程主要分為4個步驟:篩選、定位、破解信號、驗證和保存。
第一步:篩選
使用市面上一些 USB-CAN 的工具與汽車的 CAN 總線相連,可以獲取 CAN 總線上廣播的 CAN 數(shù)據(jù)包,從大量數(shù)據(jù)包中進(jìn)行逆向分析,找到想要的 CAN 數(shù)據(jù)包。
第二步:定位 CAN_ID
對于車身的某一項功能的控制,只需要一個 CAN ID 的數(shù)據(jù)包即可,這時只需要單純地重放即可達(dá)到攻擊的目的,還有一些功能需要多個 CAN ID 的數(shù)據(jù)包聯(lián)合才可以,還有一些 CAN ID 數(shù)據(jù)包上帶有計數(shù)器,在攻擊時必須加上計數(shù)器才能繞過預(yù)碰撞系統(tǒng)的阻礙。
第三步:破解信號
CAN_ID 的數(shù)據(jù)包里一共有8個字節(jié),每一個字節(jié)代表什么以及這些字節(jié)上的數(shù)字都是不固定的,比如速度表上的數(shù)值是根據(jù)公式計算出來的,如果改變成想要的數(shù)值(就是電影里那樣改變速度置人于死地),需要帶入公式才能得到正確的結(jié)果。
在測試的過程中需要觸發(fā)汽車動作,再確定 CAN_ID 的變化,然后找到對應(yīng)的值,這樣就可以把信號和汽車動作破解出來了。
第四步:驗證和保存
結(jié)合上述結(jié)果,做成 FUZZ 工具,進(jìn)而發(fā)現(xiàn)更多的汽車漏洞,如果需要修復(fù)的話,當(dāng)然也是可以的。
實際操作起來,要不斷解決一些困難。
劉健皓說:“我們拿一些傳統(tǒng) USB 工具接到車上面,發(fā)現(xiàn)刷屏非???,分析 CAN 協(xié)議時,看執(zhí)行動作,眼睛都要花掉。”
為了能清晰地分析數(shù)據(jù),沒有工具,那就自己造一個。因此,劉健皓及他的團(tuán)隊造出了一個“CAN—Pick”。這個“CAN—Pick”就是他們口中的“汽車安全總線測試平臺”——測試汽車總線是否安全。
其實,它也是一個萬能車破解器。
雖然,它的外表看上去沒有那么酷炫狂拽,僅是一個可以連接車的小黑盒和一個軟件平臺。
那么,究竟如何操作,這輛車就會被黑掉呢?
拿著電腦和小黑盒連接到車身,車身在靜止?fàn)顟B(tài)時也會產(chǎn)生一些數(shù)據(jù),這些數(shù)據(jù)被稱為干擾數(shù)據(jù),第一步就是獲得這些干擾數(shù)據(jù)。小黑盒連接上的時候,軟件平臺上就會出現(xiàn)可視化的干擾數(shù)據(jù);然后,操作車燈,獲得車燈操作時的數(shù)據(jù)包,與干擾數(shù)據(jù)進(jìn)行比對,從而發(fā)現(xiàn)真正能夠下達(dá)操作車燈的指令數(shù)據(jù)包。把這個新獲得的數(shù)據(jù)包進(jìn)行重放,那么就可以操作車燈。
其它操作同理。
360 車聯(lián)網(wǎng)安全中心另一工程師嚴(yán)敏睿介紹:
這款軟件支持全平臺,有多種硬件可以進(jìn)行試配,不管是市面上的,還是自己開發(fā)出來的,都會提供 SDK,讓你自己自行進(jìn)行試配。同時可以在線編寫一些插件,這些插件可以共享到服務(wù)端,也可以從服務(wù)端下載一些別人編寫的插件進(jìn)行共享,多個人可以同時對這款軟件進(jìn)行操作。
這意味著,“全民”可以加入到“黑車”——哦,不,是測試車是否安全的平臺中來。
既然 CAN 總線可以被攻擊,這個工具也可以檢測出一輛車是否安全,那么有沒有什么方法可以阻止這一切發(fā)生?
劉健皓表示,汽車總線設(shè)計之初是在封閉網(wǎng)絡(luò)環(huán)境中使用,并沒有考慮安全問題,對于總線網(wǎng)絡(luò)結(jié)構(gòu)及控制指令的設(shè)計,要增強(qiáng)各 ECU 之間的驗證措施,包括使用時間戳和校驗的方式防止重放破解攻擊,提高控制協(xié)議被逆向的成本,同時要控制好聯(lián)網(wǎng)部件的安全性。
他們現(xiàn)在的思路是,對 CAN 總線進(jìn)行安全加密,比如,在數(shù)據(jù)包中是否可以插入一些加密算法。劉健皓透露,目前,清華大學(xué)的研究團(tuán)隊也正在對這一領(lǐng)域進(jìn)行研究。
評論