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