侯金炳 李彤 常成 武卉敏
摘要:針對嵌入式系統(tǒng)固件權限高、資源有限、硬件相關性強的特點,提出了基于硬件行為的嵌入式系統(tǒng)固件漏洞檢測方法。硬件行為是固件執(zhí)行最直接的表現(xiàn),本方法結合嵌入式系統(tǒng)固件和系統(tǒng)自身獨特的硬件資源進行分析,以系統(tǒng)的攻擊點和數(shù)據(jù)格式為基礎有針對性的構造測試用例,設計嵌入式系統(tǒng)行為規(guī)則,通過判定嵌入式系統(tǒng)行為,檢測系統(tǒng)固件漏洞。通過利用該方法,主要對路由器進行實驗,實驗結果證明該方法有效可行。
關鍵詞:嵌入式系統(tǒng);固件漏洞;硬件行為;行為異常
中圖分類號:TP368.1 文獻標識碼:A 文章編號:1007-9416(2017)04-0111-02
1 引言
固件指存放在ROM/FLASH存儲器中的只讀代碼和數(shù)據(jù)[1],嵌入式固件是固件在嵌入式設備中的應用。嵌入式固件處于特殊的位置,連接了上層應用與底層硬件,所以固件具有極高的權限,因此固件漏洞也具有極大的危害。由于嵌入式設備本身硬件的限制和嵌入式設備的大規(guī)模推廣,并且嵌入式系統(tǒng)固件漏洞修復周期長,嵌入式系統(tǒng)固件的安全形勢更加嚴峻。嵌入式設備漏洞已呈逐年上升的趨勢,其漏洞影響的領域巨大,因此及早地發(fā)現(xiàn)嵌入式系統(tǒng)漏洞并進行補救,已經是刻不容緩之態(tài)。
嵌入式設備往往工作在不同的地方,其運行環(huán)境差異大,并且其固件代碼大部分是非開源的,獲取難度大,目前針對嵌入式系統(tǒng)固件漏洞的檢測仍然是以傳統(tǒng)的檢測方法為主,比如模糊測試、靜態(tài)分析、符號執(zhí)行等。Costin A等人[2]基于強大的云計算對32000個固件和1700000個文件進行分析,實現(xiàn)了大范圍的靜態(tài)固件漏洞在線檢測。忽朝儉等人[3]針對嵌入式無文件系統(tǒng)固件提出了一種基于庫函數(shù)識別的后門檢測技術。Drew Davidson等[4]基于選擇符號執(zhí)行建立了名為FIE的針對小型嵌入式系統(tǒng)固件的漏洞檢測系統(tǒng)。戴忠華等[5]基于污點分析提出了了針對嵌入式系統(tǒng)固件漏洞的模糊測試方法,提出危險權重的概念,設計與危險權重相聯(lián)系的測試用例集合。
上述方法主要對嵌入式系統(tǒng)固件進行靜態(tài)分析,或是結合固件進行仿真,對漏洞具有較好的檢測效果。但是嵌入式系統(tǒng)固件與硬件緊密結合,靜態(tài)分析和仿真不能完全考慮到嵌入式系統(tǒng)實際硬件情況。由于嵌入式系統(tǒng)硬件與固件緊密結合,本文提出基于系統(tǒng)硬件行為分析的固件漏洞檢測方法。
2 嵌入式系統(tǒng)硬件行為
行為分析可以基于系統(tǒng)行為對系統(tǒng)漏洞進行有效檢測,已經在安全領域被廣泛應用。嵌入式系統(tǒng)的行為分析要考慮系統(tǒng)平臺、硬件資源的特殊性,因此不同于一般的行為分析。嵌入式系統(tǒng)有豐富的硬件資源,固件通過對這些硬件資源進行訪問實現(xiàn)設備的各種功能,硬件行為是固件代碼執(zhí)行最直接的體現(xiàn)。
固件代碼執(zhí)行過程中也會執(zhí)行到漏洞,并通過硬件的一些異常行為表現(xiàn)出來。所謂的硬件異常行為是不同于用戶期望的系統(tǒng)功能或者超出用戶期望的系統(tǒng)功能,因此需要對異常行為進行判定,判定依據(jù)主要是由用戶期望所設計的行為規(guī)則。分析固件和數(shù)據(jù)協(xié)議格式,構造嵌入式系統(tǒng)的輸入,對嵌入式系統(tǒng)的硬件模塊進行監(jiān)測,對比行為規(guī)則,可判定異常行為。因為固件和硬件行為的關聯(lián)性,可以通過判定硬件行為的異常來檢測固件漏洞。
3 基于硬件行為的檢測方法
攻擊者對固件漏洞的攻擊要通過攻擊路徑,該路徑一般為設備與外界交互的輸入輸出接口,通過對輸入輸出接口的數(shù)據(jù)協(xié)議進行分析,可以獲得構造攻擊輸入的協(xié)議格式。固件漏洞最終操作的是硬件資源,所以對易受攻擊的敏感硬件模塊進行分析,可以有針對性的分析固件,如果籠統(tǒng)地對系統(tǒng)行為進行分析,會增加工作量,并且會降低漏洞檢測的準確性和命中率。
本文固件漏洞檢測系統(tǒng)分為嵌入式系統(tǒng)易攻擊點分析、行為規(guī)范設計、嵌入式系統(tǒng)數(shù)據(jù)協(xié)議的測試用例生成、行為分析判定四個模塊。
(1) 嵌入式系統(tǒng)易攻擊點分析??梢詮挠布刑崛」碳蛘邚木W上下載固件,主要對固件結構、函數(shù)調用進行分析。對系統(tǒng)硬件模塊的分析,主要分析系統(tǒng)的敏感硬件資源。將硬件資源分析與固件分析相結合,根據(jù)固件模塊對硬件行為的控制關系,得到嵌入式系統(tǒng)的易攻擊點,減小檢測范圍。以車載系統(tǒng)為例,車載系統(tǒng)所控制整輛車的硬件資源,其中敏感的硬件模塊如剎車、油門、方向盤、車門以及信息存儲模塊等,這些模塊關系到車內人員生命、車輛數(shù)據(jù)等的安全,是被攻擊的主要部位。
(2)行為規(guī)范設計。通過收集系統(tǒng)功能說明,可以得到系統(tǒng)的正常功能,以這些正常功能為參考,可以對比得出系統(tǒng)的隱藏功能或者與描述不相符的功能,即在說明手冊中沒有出現(xiàn)的功能或者與手冊所描述不相符的功能,這些功能有極大可能是由于系統(tǒng)漏洞、后門所產生。在系統(tǒng)正常功能之上,用戶可以對嵌入式系統(tǒng)具體的一些敏感資源進行限制訪問,在沒有得到用戶權限的情況下對這些資源進行訪問,即可被判定為存在漏洞。
(3)嵌入式系統(tǒng)數(shù)據(jù)協(xié)議的測試用例生成。只有對數(shù)據(jù)協(xié)議有一定了解,才能生成有效的測試用例,對數(shù)據(jù)協(xié)議的分析是生成測試用例的基本條件。如果只是針對系統(tǒng)大范圍的、沒有針對性的生成測試用例,會增加測試用例生成的負擔,增加目標設備的檢測時間,降低檢測的命中率和檢測效率。
在通過分析系統(tǒng)固件、硬件的出系統(tǒng)攻擊點的基礎上,對數(shù)據(jù)協(xié)議主要部分進行分析,可以減少協(xié)議分析的工作量,并且針對特定的目標地址、源地址生成測試用例,增加了測試用例的針對性。
(4)行為分析判定。將生成的測試用例輸入系統(tǒng),對嵌入式系統(tǒng)的數(shù)據(jù)進行采集,對敏感硬件模塊實時監(jiān)測。比如掃描路由器是否開啟有隱藏端口,監(jiān)測車載系統(tǒng)是否在非正常情況下訪問剎車模塊,分析嵌入式系統(tǒng)是否傳輸敏感數(shù)據(jù)等。將監(jiān)測到的系統(tǒng)行為與行為規(guī)則進行對比,判定該行為是否超出行為規(guī)則,進而判定系統(tǒng)固件是否存在漏洞,進而后期可以根據(jù)對應的數(shù)據(jù)進行漏洞定位。
4 實驗驗證
路由器是最常見的嵌入式系統(tǒng),可以從官網直接下載得到固件,且路由器的硬件資源相對簡單,易于分析,本文以D-Link的DIR-605L路由器為例對上述方法進行實驗驗證。
路由器是主要用于網絡間的數(shù)據(jù)傳輸,本身敏感硬件模塊較少,易攻擊點主要存在網絡模塊中,所以重點分析路由器的Web服務器程序boa。在Ubuntu12.0系統(tǒng)下,以Binwalk工具提取dir605L_FW_113.bin固件,找到boa所在目錄。提取boa后,用IDA Pro工具對boa進行逆向分析,根據(jù)路由器功能和固件特征設計行為規(guī)范。
由上述的分析得出路由器的Web服務器使用Http協(xié)議,由于是使用Http協(xié)議,所以對協(xié)議分析難度大大降低,根據(jù)Http協(xié)議格式構造路由器的測試輸入點如下所示:
[fuzzable][fuzzabla] HTTP/1.1 (CRLF)
User-Agent:[fuzzable] (CRLF)
Host:[fuzzable] (CRLF)
Connection:[fuzzable] (CRLF)
以此協(xié)議格式生成數(shù)據(jù)對路由器進行測試,并用wireshark工具抓取數(shù)據(jù)包,實時對路由器狀態(tài)進行檢測。經過一段時間會發(fā)現(xiàn)路由器Web服務器崩潰,此行為明顯超出用戶的期望,可以判定該固件存在漏洞,數(shù)據(jù)抓包的記錄可以用于后期的漏洞分析與利用。
以此方法繼續(xù)對另外幾款路由器以及一款開源燈控系統(tǒng)進行檢測,檢測路由器也存在Web服務器崩潰現(xiàn)象,檢測燈控系統(tǒng)的數(shù)據(jù)傳輸模塊、燈控制模塊出現(xiàn)異常,因此可以判定對應的固件boa、USart、Lightctr部分存在漏洞。實驗證明本方法能夠有針對性的檢測出嵌入式系統(tǒng)固件漏洞,并可以結合反匯編對漏洞進行分析。
5 結語
嵌入式系統(tǒng)成本和資源的限制,使嵌入式系統(tǒng)在設計之時難免存在各種漏洞,并且隨著嵌入式系統(tǒng)應用的推廣,嵌入式系統(tǒng)的安全問題影響頗廣。本文以行為分析為基礎,結合嵌入式系統(tǒng)自身硬件特點,提出了基于行為分析的嵌入式系統(tǒng)固件漏洞檢測模型。但是由于嵌入式系統(tǒng)平臺不同、工作環(huán)境不同、源碼和通信協(xié)議不公開,限制了該模型的使用范圍。針對開源的嵌入式系統(tǒng)固件,會有較好的效果,對于大部分商業(yè)嵌入式系統(tǒng),需要在固件逆向和分析通信協(xié)議的工作上花費更多的精力。
參考文獻
[1]張翠艷.固件代碼安全缺陷分析技術研究[D].鄭州:解放軍信息工程大學,2011.
[2]Costin A, Zaddach J, Francillon A. A large-scale analysis of the security of embedded firmwares [C]. USENIX Security Symposium. San Diego,USA:USENIX Association.2014:95-110.
[3]忽朝儉,薛一波.無文件系統(tǒng)嵌入式后門檢測[J].通信學報,2013,34(8):140-154.
[4]Drew Davidson, Benjamin Moench. FIE on Firmware: Finding Vulnerabilities in Embedded Systems using Symbolic Execution[C]. USENIX Security Symposium. San Diego,USA:USENIX Association.2013:463-478.
[5]戴忠華,趙波,王婷.基于污點分析的嵌入式設備固件模糊測試方法[J].四川大學學報,2016,(48):125-131.