在過(guò)去的幾十年中,CAN總線是最廣泛被應(yīng)用的車載網(wǎng)絡(luò)現(xiàn)場(chǎng)總線。但隨著汽車電子產(chǎn)品的功能逐漸豐富,以及新一代的智能輔助駕駛系統(tǒng)的接入,傳統(tǒng)CAN總線無(wú)論是傳輸效率還是網(wǎng)絡(luò)容量都已無(wú)法滿足需求,所以車載以太網(wǎng)憑借其高帶寬、低成本、低延時(shí)的優(yōu)勢(shì)被引入車載通訊系統(tǒng)[1]。因此,車載網(wǎng)絡(luò)的網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng) (N-IDS,Network Intrusion Detection System,)可以根據(jù)網(wǎng)絡(luò)載體的差異分為CAN-IDS以及以太網(wǎng)IDS。
N-IDS系統(tǒng)部署在遠(yuǎn)程通信終端(T-Box,Telematics Box)、網(wǎng)關(guān)以及車載娛樂信息系統(tǒng)(IVI,In-Vehicle Infotainment)上,通過(guò)對(duì)CAN總線以及車載以太網(wǎng)上的流量數(shù)據(jù)的監(jiān)控、數(shù)據(jù)載荷的解析和字段匹配來(lái)識(shí)別網(wǎng)絡(luò)中出現(xiàn)的異常流量和潛在攻擊行為。
01
CAN-IDS
CAN-IDS會(huì)對(duì)采集到的CAN流量,從報(bào)文、場(chǎng)景、網(wǎng)絡(luò)三方面,分別根據(jù)既定規(guī)則庫(kù)的規(guī)則進(jìn)行匹配,從而識(shí)別出攻擊/異常報(bào)文。
1.1 DBC檢測(cè)
DBC檢測(cè)是根據(jù)DBC文件制定的規(guī)則庫(kù)對(duì)單幀報(bào)文進(jìn)行檢測(cè)的檢測(cè)方法。車廠的DBC文件會(huì)對(duì)車內(nèi)報(bào)文內(nèi)容,如CAN ID、DLC、周期報(bào)文的周期、信號(hào)起始位、信號(hào)長(zhǎng)度、最大值、保留位等做了定義。常見的車載網(wǎng)絡(luò)注入攻擊、重放攻擊、模糊攻擊等,往往會(huì)改變這些內(nèi)容,通過(guò)將采集到的報(bào)文與DBC進(jìn)行對(duì)比,檢測(cè)出與定義內(nèi)容不相符的報(bào)文,即為攻擊/異常報(bào)文。
整體流程如圖1所示:
圖1 CAN-Based IDS系統(tǒng)架構(gòu)圖
基于DBC的報(bào)文檢測(cè),首先加載內(nèi)置的規(guī)則庫(kù)。檢測(cè)時(shí),采集CAN總線數(shù)據(jù)并進(jìn)行CAN報(bào)文的預(yù)處理,然后根據(jù)規(guī)則庫(kù)中的檢測(cè)規(guī)則,對(duì)選定的報(bào)文字段進(jìn)行檢測(cè)。最終輸出檢測(cè)結(jié)果。
1.2 場(chǎng)景規(guī)則檢測(cè)
定義正常場(chǎng)景和攻擊場(chǎng)景,正常場(chǎng)景包括報(bào)文序列關(guān)系、信號(hào)關(guān)系等,攻擊場(chǎng)景包括UDS探測(cè)等。對(duì)網(wǎng)絡(luò)中的報(bào)文與定義的場(chǎng)景規(guī)則進(jìn)行匹配。目前針對(duì)的主要場(chǎng)景是UDS診斷服務(wù)。
基于專家領(lǐng)域知識(shí),根據(jù)UDS診斷響應(yīng)中的NRC進(jìn)行安全事件告警。安全事件有:UDS拒絕服務(wù)、UDS探測(cè)、UDS非法請(qǐng)求、非法獲取權(quán)限、數(shù)據(jù)安全等。
1.3 網(wǎng)絡(luò)檢測(cè)
網(wǎng)絡(luò)檢測(cè)是對(duì)整個(gè)車載網(wǎng)絡(luò)上的負(fù)載率和信息熵進(jìn)行檢測(cè)。當(dāng)實(shí)際值偏離了規(guī)則庫(kù)中定義的閾值,則說(shuō)明網(wǎng)絡(luò)異?;虮还簟7汉楣?、模糊攻擊、重放攻擊等都會(huì)使網(wǎng)絡(luò)的負(fù)載率和信息熵發(fā)生變化。
CAN總線負(fù)載率是指在CAN總線上單位時(shí)間內(nèi)實(shí)際傳送的位數(shù)和可以傳送的位數(shù)之比。負(fù)載率檢測(cè)能夠監(jiān)視網(wǎng)絡(luò)的流量情況。信息熵用來(lái)衡量系統(tǒng)的不確定性,被廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)的異常檢測(cè)。車載CAN網(wǎng)絡(luò)在某一工況下,以一定的規(guī)律發(fā)送,是低隨機(jī)性、相對(duì)靜態(tài)的。正常情況下,車載網(wǎng)絡(luò)的負(fù)載率和信息熵較為穩(wěn)定。對(duì)車載網(wǎng)絡(luò)進(jìn)行泛洪攻擊、注入攻擊等,則會(huì)使相應(yīng)指標(biāo)超過(guò)正常值。
其中 ai 為第 i 類報(bào)文在時(shí)間 T 內(nèi)出現(xiàn)的概率。
網(wǎng)絡(luò)檢測(cè)首先選擇合適的時(shí)間窗口,計(jì)算正常車輛的負(fù)載率和信息熵,確定其閾值并添加到規(guī)則庫(kù)中。然后,在實(shí)車運(yùn)行過(guò)程中,計(jì)算當(dāng)前負(fù)載率和信息熵,與規(guī)則庫(kù)中的值進(jìn)行比較,判斷網(wǎng)絡(luò)是否異?;虮还?。
02
Ethernet-IDS
Ethernet-IDS通過(guò)對(duì)要檢測(cè)的網(wǎng)段的所有流量包進(jìn)行抓包,對(duì)抓包數(shù)據(jù)進(jìn)行特征字段的提取,利用提取的網(wǎng)絡(luò)特征來(lái)識(shí)別其中的異常/攻擊報(bào)文[1]。Snort是一款輕量化的開源的以太網(wǎng)入侵檢測(cè)系統(tǒng),它能夠進(jìn)行實(shí)時(shí)流量分析、網(wǎng)絡(luò)數(shù)據(jù)包的記錄、異常流量的監(jiān)測(cè)和響應(yīng)。最初Snort僅支持IP、TCP、UDP等下層協(xié)議的檢測(cè),但其預(yù)處理器機(jī)制可被用來(lái)拓展兼容不同的上層應(yīng)用層協(xié)議。
SOME/IP、DoIP等車載以太網(wǎng)協(xié)議是為了應(yīng)對(duì)汽車的電子電器架構(gòu)由分布式逐漸走向中央集中化的演化,而設(shè)計(jì)出來(lái)的應(yīng)用層協(xié)議。于彤[3]從SOME/IP和DoIP協(xié)議的數(shù)據(jù)完整性、規(guī)范程度和潛在漏洞等方面分析了兩種協(xié)議可能存在的風(fēng)險(xiǎn),并針對(duì)此將SOME/IP、DoIP預(yù)處理器引入Snort中。ZIHAN Zhou等[4]通過(guò)改進(jìn)了Snort的規(guī)則匹配模式并設(shè)計(jì)了一種二進(jìn)制的規(guī)則格式,使其完全適配AUTOSAR的規(guī)范,能夠被引入嵌入式的系統(tǒng)。
Snort的原理架構(gòu)圖如圖2所示,其中包括了配置模塊、數(shù)據(jù)獲取模塊、檢測(cè)模塊以及輸出模塊。通過(guò)修改配置模塊的配置文件,可以定義數(shù)據(jù)獲取的配置、預(yù)處理的方式、檢測(cè)的規(guī)則以及輸出日志的格式。數(shù)據(jù)獲取模塊負(fù)責(zé)檢測(cè)、解析網(wǎng)卡中的流量并將其送入檢測(cè)模塊。檢測(cè)模塊根據(jù)配置信息,對(duì)指定的異常行為進(jìn)行檢測(cè)和處理,并且會(huì)將檢測(cè)結(jié)果送入輸出模塊,由其實(shí)現(xiàn)輸出日志的解析、處理、封裝和轉(zhuǎn)發(fā)等功能。
圖2 snort原理架構(gòu)圖
2.1 配置模塊
配置模塊負(fù)責(zé)以太網(wǎng)N-IDS所有模塊的配置選項(xiàng)設(shè)置,在IDS啟動(dòng)的時(shí)候即對(duì)各個(gè)模塊進(jìn)行初始化配置。配置內(nèi)容如表1所示:
表1 Snort 檢測(cè)功能配置
2.2 數(shù)據(jù)獲取模塊
數(shù)據(jù)獲取模塊擁有數(shù)據(jù)包記錄功能,可以直接記錄原始數(shù)據(jù)報(bào)文,以及對(duì)本地記錄的數(shù)據(jù)包進(jìn)行重放。數(shù)據(jù)獲取模塊抓取網(wǎng)卡中流量數(shù)據(jù)包,根據(jù)配置文件進(jìn)行相應(yīng)的解碼和預(yù)處理。數(shù)據(jù)獲取模塊對(duì)數(shù)據(jù)包標(biāo)準(zhǔn)化預(yù)處理,使得檢測(cè)模塊能夠直接進(jìn)行特征字段的匹配。
2.3 檢測(cè)模塊
檢測(cè)模塊從兩個(gè)方面對(duì)以太網(wǎng)中的異常流量和行為進(jìn)行檢測(cè):網(wǎng)絡(luò)流量檢測(cè)和網(wǎng)絡(luò)數(shù)據(jù)包檢測(cè)。
(1)網(wǎng)絡(luò)流量檢測(cè)對(duì)以太網(wǎng)的流量情況,包括帶寬利用率和信息熵進(jìn)行監(jiān)測(cè)分析,當(dāng)超出正常閾值時(shí)發(fā)出警告。
(2)網(wǎng)絡(luò)數(shù)據(jù)包檢測(cè)定義了正常場(chǎng)景和攻擊場(chǎng)景,其中正常場(chǎng)景包括報(bào)文序列關(guān)系、信號(hào)關(guān)系等,而攻擊場(chǎng)景包括ICMP flood、TCP port scan等。通過(guò)對(duì)網(wǎng)絡(luò)數(shù)據(jù)包中的報(bào)文特征字段與定義的場(chǎng)景規(guī)則進(jìn)行匹配,來(lái)識(shí)別隱藏在報(bào)文內(nèi)的異常攻擊行為。
Snort是一個(gè)完全基于規(guī)則的以太網(wǎng)IDS系統(tǒng),它的規(guī)則編寫簡(jiǎn)單而又靈活,可支持本地編寫規(guī)則的導(dǎo)入。Snort的規(guī)則是由文本構(gòu)成,主要由規(guī)則頭和規(guī)則選項(xiàng)兩部分構(gòu)成。一條Snort規(guī)則編寫如圖3所示:
圖3 Snort規(guī)則編寫示例
(1)規(guī)則頭:定義了數(shù)據(jù)包的發(fā)送端地址和端口、接收端的地址和端口、協(xié)議類型,以及規(guī)則匹配成功后應(yīng)執(zhí)行的操作。
(2)規(guī)則選項(xiàng):定義了規(guī)則匹配的數(shù)據(jù)包特征,是Snort入侵檢測(cè)引擎的核心,也是將Snort易用性與強(qiáng)大功能和靈活性結(jié)合起來(lái)的關(guān)鍵。所有Snort規(guī)則選項(xiàng)都使用分號(hào)( ; )字符彼此分隔。規(guī)則選項(xiàng)關(guān)鍵字與參數(shù)之間用冒號(hào)( : )分隔。通過(guò)規(guī)則選項(xiàng)的設(shè)置, Snort可以對(duì)報(bào)文的任意字段進(jìn)行正則匹配。
2.4 輸出模塊
輸出模塊負(fù)責(zé)對(duì)檢測(cè)模塊的檢測(cè)結(jié)果進(jìn)行進(jìn)一步的處理與輸出。檢測(cè)模塊根據(jù)配置文件定義的輸出格式將檢測(cè)結(jié)果封裝成日志的形式。輸出模塊還可以通過(guò)配置相關(guān)參數(shù)以及設(shè)置事件過(guò)濾規(guī)則來(lái)修改日志輸出的頻率。
03
小結(jié)
規(guī)則檢測(cè)的方法以其穩(wěn)定性好、檢測(cè)準(zhǔn)確率高、可解釋性強(qiáng)等優(yōu)點(diǎn)成為車載網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)的重要支柱。但汽車電子電氣架構(gòu)的演變、車載網(wǎng)絡(luò)數(shù)據(jù)的增加以及車載通訊協(xié)議的擴(kuò)充,都對(duì)基于規(guī)則的車載網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)提出了更高的要求。性能、可擴(kuò)展性、兼容能力將是下一代車載網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)開發(fā)中重要的考量指標(biāo)。
審核編輯:劉清
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5449瀏覽量
172171 -
CAN總線
+關(guān)注
關(guān)注
145文章
1954瀏覽量
130918 -
IDS
+關(guān)注
關(guān)注
0文章
27瀏覽量
16188 -
DBC
+關(guān)注
關(guān)注
2文章
55瀏覽量
7787 -
車載網(wǎng)絡(luò)系統(tǒng)
+關(guān)注
關(guān)注
0文章
8瀏覽量
6529
原文標(biāo)題:基于規(guī)則的車載網(wǎng)絡(luò)入侵檢測(cè)技術(shù)
文章出處:【微信號(hào):智能汽車電子與軟件,微信公眾號(hào):智能汽車電子與軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論