楊洪福, 朱翔宇, 孫延秋
上海創時汽車科技有限公司, 上海 201201
伴隨著車輛智能化、網聯化程度的提高,車輛已不僅僅利用CAN總線進行信息交互,而是作為智能的移動終端,實現和車、路、云、人的通信交互。在帶來優質體驗的同時,也帶來信息安全的隱患。信息安全問題不僅能造成財產損失,還可能對用戶的生命構成威脅,因此信息安全重要性得到國家和車企的高度重視。國家出臺了相關的車輛信息安全法規,各大主機廠及供應商也正在進一步加強信息安全的防御、檢測。其中滲透測試就是專門針對網絡安全的測試,可幫助發現網絡安全漏洞,進而協助提高網絡安全水平。
作為車輛云—管—端中端的一環,域控制器得到越來越廣泛應用,主要由微控制器(micro controller unit,MCU)和微處理器(micro processor unit,MPU)組成。域控制器不僅涉及CAN通信,還涉及網絡通信等計算機方面內容,由于其同時涉及CAN和以太網,而且還是域中重要一環,便成為網絡安全的重點保護對象。
由于滲透測試來源于計算機的信息安全,滲透測試也主要涉及計算機方面知識,入手較為困難,且委托第三方的滲透價格也較為昂貴。為此,本文利用滲透測試理論,開發出簡捷的滲透測試工具,便于開發人員快速地找出域控制存在的安全漏洞。
車輛域控制一般按照功能劃分為5個域: 動力域(power train)、底盤域(chassis)、車身域(body)、座艙域(cockpit)和自動駕駛域(ADAS),每個域都有一個相應的域控制器來實現相應的功能。
域控制器目前主要由MCU和微處理MPU兩大部分組成,以目前的ADAS域控制器為例,如圖1所示,MCU作為“Safety host”,主要以CAN通信的形式和車內CAN網絡建立聯系,MPU作為“Performance host”完成視覺算法的處理,主要以車載以太網的形式和外界建立聯系,MPU端的操作系統一般采用Linux 或QNX。

圖1 ADAS域控制器
針對MCU的攻擊,這里主要以CAN總線的攻擊為主,下面將介紹幾種較為常見的攻擊方法以及相應的防御措施。
洪水攻擊:攻擊者向CAN總線上發送高頻率、高優先級的總線信號,從而使ECU無法正常響應其他低優先級的數據包,造成車輛的癱瘓,故障燈點亮。若在啟動前進行洪水攻擊,則可導致車輛無法正常啟動。
針對洪水攻擊,防御措施主要有增設網關、在OBD處增設防火墻等。
診斷攻擊:攻擊者通過發送一些診斷命令來實現對控制器的篡改。例如,通過發送11 02實現重置功能,通過2E服務實現參數篡改等。
針對診斷攻擊,防御措施有增加診斷的前提條件。例如,增加車速和發動機的前置判斷條件、增加27服務的解鎖條件等。
27服務示例:
請求seed
發送請求:27 01
肯定響應:67 01 xx(xx為seed值)
發送key
發送請求:27 02 xx(xx為key值)
肯定響應:67 02
篡改攻擊:攻擊者通過更改正常通信的CAN報文的有效載荷實現攻擊,若ECU針對篡改的內容做出正確的響應,則可實現控制、干擾的目的,如修改車速顯示信息、控制轉向和制動等。
針對篡改攻擊,防御措施除增加“checksum”之外,還可以升級為安全報文。以MAC校驗及增加新鮮度值(FV)等手段進行完整性和機密性方面的防御,如圖2所示。

圖2 安全報文結構
針對MPU的攻擊,攻擊的步驟比MCU測試更復雜一些,攻擊也主要是通過網口或者車載以太網接口進行。針對MPU端的滲透測試主要包含下面幾個步驟。
收集目標的相關信息,例如:IP地址、端口信息、操作系統版本信息等,可通過Wireshark或者Netdiscover等工具來獲得MPU的IP地址;也可通過Netdiscover-p來實現監聽,發現在線的設備信息,如圖3所示。

圖3 IP信息
獲取IP地址之后,可以通過Nmap工具來獲得開放的端口信息。例如,通過發送Nmap-Pn1-65535 192.167.68.130命令可以獲得針對IP 192.167.68.131中1-65535的開放端口的信息。 如圖4所示,獲取這些端口之后,就可以利用開放端口存在的漏洞,進入到MPU內部,進而實施一些違規操作。

圖4 端口掃描
通過Nmap 或者Nessus工具可獲得操作系統的版本信息。例如,Linux或QNX的版本信息,通過已知版本信息,在接下來的漏洞掃描中,查找該版本是否有已知的漏洞,利用該漏洞就可進行滲透攻擊。
漏洞掃描的目的是找出MPU弱點,攻擊者可利用該弱點進行滲透攻擊,如權限設置錯誤、采用默認的弱密碼、http 端口開啟等可通過Nessus工具進行漏洞掃描。通過漏洞掃描可發現目前的漏洞數量、漏洞描述及漏洞的嚴重程度。可通過修復漏洞來提高網絡安全的防御能力,如降低用戶權限、關閉端口、密碼改為證書認證等。
滲透測試主要指利用漏洞加載攻擊載荷,實現對MPU的攻擊。滲透攻擊可以通過Metasploit工具進行。密碼暴力破解也屬于攻擊的一種,若密碼設得很簡單或者未采用證書認證方式登錄,則很容易進行暴力破解,進而進入MPU內部,實施更改或破壞。
由于滲透測試需要較多的不同工具,而且大部分需在終端中輸入相應的指令來進行完成,過程比較煩瑣,且可視化不強。基于目前滲透測試遇到的痛點以及MCU和MPU的滲透測試邏輯,將主要的滲透內容進行匯總,編譯開發出可視化較強的滲透測試軟件。測試者只需要輸入一些簡單信息,點擊相應按鈕即可完成對應的測試工作,如圖5所示。

圖5 滲透測試工具展示
4.1.1 MPU端測試
MPU端測試主要包含信息收集、漏洞掃描和密碼破解3個方面:
信息收集:可進行IP地址、端口、操作系統、可用命令的收集。其中端口信息通過調用底層Nmap工具來實現,并將最終的收集展示。
漏洞掃描:基于IP信息進行漏洞掃描,找出漏洞及漏洞的嚴重程度。
密碼破解:基于需要破解的用戶名及密碼字典進行破解。例如,若 root賬戶使用了默認或者簡單密碼,則很容易進行破解。
4.1.2 MCU端測試
MCU端測試主要進行洪水攻擊、診斷攻擊及信號篡改攻擊。
洪水攻擊:可通過設置發送頻率來實現攻擊的程度。

篡改攻擊:通過更改報文內容來實現,若MCU做出正確響應,則說明篡改攻擊成功。
針對MPU端測試,通過對模擬MPU端進行滲透測試,故意設計多個漏洞。例如,將root密碼設置為默認的密碼可以發現,通過該工具,可以準確獲得IP地址和相應的漏洞信息,而且還可以破解root密碼。
針對CAN通信測試,對其進行了診斷攻擊和篡改攻擊,診斷攻擊通過發送2E DID寫入服務,MCU給出了消極響應——條件不正確。說明針對2E服務,MCU設置了接收前置條件,測試通過。
篡改攻擊,通過更改安全報文有效載荷進行測試,發現MCU端報了MAC校驗錯誤故障。說明更改后的安全報文未通過MAC值校驗,MCU端設置了MAC校驗機制,測試通過。
軟件實際應用結果如圖6所示。

圖6 軟件實際應用結果
針對域控制器的滲透測試,將MCU和MPU的測試內容結合在一起,利用滲透測試的基本原理,開發出簡捷的測試方法,將該方法以軟件的形式進行展現,在實際的測試中,該方法也得到有效驗證,協助降低了滲透測試門檻,便于滲透測試工作在測試中的推廣。