智能家居安全防護(hù)之固件脆弱性風(fēng)險分析
Part 01 固件獲取
對固件進(jìn)行研究的整個流程圖大致如圖1所示,包括固件提取、固件分析、固件解析和程序提取、固件逆向、固件仿真/硬件調(diào)試、漏洞挖掘等幾部分。
圖1 固件安全研究流程
進(jìn)行固件分析的前提條件就是固件的獲取,常用的固件提取方式有:
1、從相關(guān)品牌的廠商網(wǎng)站進(jìn)行下載;
2、在設(shè)備進(jìn)行固件更新時進(jìn)行截獲;
3、直接使用串口調(diào)試讀取芯片的方式進(jìn)行固件讀取。
固件中包含了很多研究人員感興趣的內(nèi)容,研究人員使用各種方式來對固件進(jìn)行研究,比如查看廠家對固件的保護(hù),是否封閉了UART及JTAG等引腳,是否從硬件物理上進(jìn)行了固件內(nèi)容防護(hù);固件是否加密;固件文件系統(tǒng)是怎么組織的,是否存在直接提取敏感信息的可能性,固件中的各個組件使用的某些通用庫是否存在漏洞;固件所支持的某些協(xié)議庫,例如物聯(lián)網(wǎng)的一些協(xié)議,是否存在漏洞;固件所支持的web服務(wù),密碼是否可竊取,是否存在漏洞,例如遠(yuǎn)程執(zhí)行,信息泄露等。研究人員對這部分信息進(jìn)行研究,獲取基本的固件信息,對之后的固件安全分析工作來說很有必要,多數(shù)情況下,通過對固件分析的前期操作,能獲得許多重要的息甚至是發(fā)現(xiàn)漏洞。
Part 02 固件脆弱性風(fēng)險分析
2.1 藍(lán)牙m(xù)esh固件自動化分析風(fēng)險評估
因?yàn)椴煌放?、不同架?gòu)的廠商,為了設(shè)備安全,會對自己出廠的固件進(jìn)行不同的設(shè)置,那么在分析時獲取到的固件信息也不同,但總體差別不是很大。
在對固件初步分析時可以使用自動化平臺進(jìn)行固件分析,自動化的固件平臺能夠很好的對固件組件、固件架構(gòu)、文件系統(tǒng)等進(jìn)行深層次分析,包含此系列產(chǎn)品的歷史漏洞,漏洞時間、漏洞類型、補(bǔ)丁信息、文件目錄、組件信息等,查看固件存在哪些組件(通用組件包括u-boot、busybox、ntp、lighttpd、openssl、json-c、 libgcrypt、hostapd等),分析開源組件是否存在已知漏洞,進(jìn)行組件層面的脆弱性分析。通過使用固件自動化安全分析平臺,得到包含以下信息的固件分析報告:
① 設(shè)備web代碼漏洞?;谕ㄓ脀eb技術(shù)如PHP、Javascript等開發(fā)web應(yīng)用導(dǎo)致了潛在的web漏洞風(fēng)險。
② 軟件供應(yīng)鏈漏洞。開源基礎(chǔ)軟件包不及時更新,具有相似軟件供應(yīng)鏈,不同廠商的固件存在高度重合的產(chǎn)品廠商、型號。
③ 證書與秘鑰泄露
④ 不安全配置
⑤ Nday漏洞
開發(fā)人員在固件開發(fā)過程中會引用第三方軟件和庫提供功能開發(fā)的基礎(chǔ),比如busybox組件為固件系統(tǒng)中提供Linux命令操作基礎(chǔ);lighttpd組件為一款輕量級WebServer組件,為負(fù)責(zé)提供固件中的Web服務(wù);openssl組件為固件提供安全及數(shù)據(jù)完整的安全協(xié)議。但它們也被爆出過影響深遠(yuǎn)的歷史漏洞如busybox中的權(quán)限許可和訪問控制漏洞,lighttpd中目錄遍歷漏洞,openssl中的心臟滴血漏洞等。
對固件進(jìn)行分析,能夠獲取整個固件的風(fēng)險感知。圖二是使用固件自動化安全分析平臺對某品牌路由器固件進(jìn)行分析時,得到的固件分析結(jié)果。在獲取這部分固件信息后,結(jié)合手工分析時關(guān)注的重點(diǎn)信息可以建立此固件的風(fēng)險分析信息庫。
圖2 某路由器固件自動化安全分析結(jié)果-圖片來源于某品牌固件分析平臺
圖3 某品牌路由器固件分析風(fēng)險信息庫-圖片來源于某品牌固件分析平臺
2.2 建立固件脆弱性風(fēng)險分析方式
本文從常見的家用路由器品牌入手,總結(jié)了物聯(lián)網(wǎng)固件脆弱性分析方式,主要從產(chǎn)品基本配置信息和基礎(chǔ)組件脆弱性分析兩種方式入手。
(1)產(chǎn)品基本配置信息主要包括表1所包括的部分。
表1 產(chǎn)品基本配置信息
(2)基礎(chǔ)組件脆弱性分析主要從硬件風(fēng)險分析和軟件風(fēng)險分析入手。
硬件風(fēng)險分析包括:
① 探測路由器的telnet,ssh,ftp等服務(wù)的相應(yīng)端口是否開放;
② 利用UART調(diào)試口訪問設(shè)備,使用OpenWrt調(diào)試運(yùn)行程序;
③ 嘗試破解shadow文件密碼,查看運(yùn)行進(jìn)程和服務(wù);
④ 開放服務(wù)攻擊面。是否存在不安全配置,例如ssh配置允許root遠(yuǎn)程登錄等。
軟件風(fēng)險分析主要重點(diǎn)關(guān)注口令,API Token,API Endpoint(URL),存在漏洞的服務(wù),后門賬戶,配置文件,源代碼,私鑰,數(shù)據(jù)的存儲方式等敏感性內(nèi)容。
對于固件的軟件風(fēng)險分析,首先需要進(jìn)行固件文件系統(tǒng)提取,通常使用binwalk/firmware-mod-kit等固件分析工具查看固件的架構(gòu)類型,并提取對應(yīng)的固件文件系統(tǒng)。在此基礎(chǔ)上可以使用手工分析和自動化分析兩種方式對固件進(jìn)行軟件風(fēng)險分析。
手工分析主要是遍歷文件系統(tǒng)中不同的目錄,所有配置文件,查看Web目錄及開源軟件信息。明確web子目錄下確定開發(fā)語言和特征,關(guān)注http,tddp,upnp等網(wǎng)絡(luò)協(xié)議,尤其是自定義協(xié)議相關(guān)的二進(jìn)制文件,設(shè)備廠商自己開發(fā)的特定服務(wù)往往是被發(fā)現(xiàn)問題最多的地方。還可以運(yùn)行busybox二進(jìn)制文件,獲取運(yùn)行程序和symlink等固件信息。
對于自動化分析,主要使用自動化分析工具進(jìn)行輔助分析,比如使用Firmwalker在固件文件系統(tǒng)中搜索敏感的文件,進(jìn)行已知脆弱性組件識別。對與SSL相關(guān)的文件,配置文件,腳本文件,二進(jìn)制文件,admin,password和remote 等關(guān)鍵字,常用的web服務(wù)等進(jìn)行已知脆弱性組件識別檢查是否使用弱口令或者已被公開的默認(rèn)賬號等;
通過固件自動化分析風(fēng)險評估結(jié)合固件脆弱性風(fēng)險分析,可以針對固件進(jìn)行綜合性風(fēng)險評估,形成風(fēng)險評估規(guī)范性模板,建立當(dāng)前固件的風(fēng)險信息表,輸出風(fēng)險報告,從而對當(dāng)前所分析固件有更清楚更直觀的了解。
Part 03 總結(jié)
本文從物聯(lián)網(wǎng)(路由器)固件入手,將研究重點(diǎn)放在固件分析及脆弱性風(fēng)險評估方式上。固件分析使用自動化固件平臺分析結(jié)合手工分析關(guān)注的重點(diǎn)信息,建立包含固件常用組件、固件組件歷史漏洞、固件版本號、固件文件系統(tǒng)、固件敏感信息等信息的固件分析風(fēng)險信息庫。與此同時,本文從產(chǎn)品基本配置信息分析和基礎(chǔ)組件脆弱性分析兩種分析方式入手,總結(jié)形成了物聯(lián)網(wǎng)固件脆弱性分析方式,可以對固件的總體風(fēng)險情況形成直觀感受。本文總結(jié)的固件脆弱性風(fēng)險分析方式對于物聯(lián)網(wǎng)設(shè)備的安全研究來說具備實(shí)際意義。