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