物聯網(IoT)設備固件分析(系列一)
概述
物聯網(IoT)設備一般指通過某種方式連接到網絡的嵌入式設備。在過去的幾年中,loT設備數量不斷增長,loT設備幾乎已經融入各行各業,如工業、能源業等領域,但也成為了攻擊者的首要目標。如果物聯網設備存在安全隱患,將會給企業、國家和個人帶來安全隱患。
現階段有多種方法可以檢測物聯網設備中的漏洞。本文將探索固件分析,這種方法的優點是不需要被測設備的實體,而且固件是loT設備的核心,這也是從固件分析開始的原因。
固件入門
固件是—種寫入硬件設備的軟件,固件中包含底層代碼,這些代碼能夠幫助軟件實現對硬件的操作。運行固件的設備一般稱為嵌入式系統。智能手機(iPhone、小米)、智能汽車(特斯拉、蔚來)、無人機(大疆)都屬于運行固件的嵌入式設備。
固件分析推薦工具
·Kali Linux:筆者入門安全的第一工具,非常6的一款系統。下載鏈接:
https∶//www.kali.org/downloads/,如果虛擬機運行,可以直接下載Kali的虛擬鏡像。
·Binwalk:用于提取固件映像,Kali Linux中已經默認安裝Binwalk。
·fcrackzip:密碼破解工具。
·Ettercap:該軟件能夠攔截網段上的流量,捕獲密碼并針對多種常見協議進行主動竊聽。Kali Linux中已經默認安裝Ettercap。
·Wireshark:免費開源的網絡數據包分析軟件,Kali Linux中已經默認安裝Wireshark。
·SSLstrip:web登錄密碼嗅探神器,Kali Linux中已經默認安裝SSLstrip。
·Flashrom:Flashrom是一種通用閃存編程實用程序,Kali Linux中未默認安裝Flashrom需自行安裝該工具。
·Qemu:免費的可執行硬件虛擬化的開源托管虛擬機,用于固件仿真。
固件分析流程
固件提取
v
固件分析
v
文件系統提取
v
文件系統加載
v
文件系統分析
固件提取
筆者一般獲取固件的方法主要包括:
? 從loT設備廠商網站下載,這是獲取固件最簡單的方法。
? 中間人攻擊,獲取loT固件下載地址或固件包。有時候loT設備廠商不支持網站下載固件,例如華為廠商,此時就需要選擇該方法或第三種方法。
? 直接從loT設備存儲芯片提取固件。如果以上兩種方法均無法獲取固件,還可以嘗試通討UART、JTAG等接口直接提取轉儲固件。該方法需要拆解loT設備找到其中的存儲固件的閃存芯片,然后通過UART接口或燒錄夾、編程器等工具提取轉儲固件。
固件分析
提取到固件后,接下來就需要對固件進行深入分析,尋找固件中的安全隱患。
固件通常由bootloader、內核、文件系統以及其他資源組成,其中文件系統是固件分析過程中最重要的一部分,文件系統中一般包括口令、存在漏洞的服務、私鑰等。
本文以某路由器為例,演示如何提取固件中的文件系統進行分析。
01binwalk提取
使用binwalk提取固件壓縮包,提取時發現該壓縮包被加密,這是路由器廠商為了保護固件而進行的密碼保護,防止攻擊者進行逆向。

02fcrackzip 破解
我們可以使用fcrackzip工具進行壓縮包密碼破解,得出密碼后再次進行解壓。

03解壓固件
解壓固件壓縮包完成,查看文件

04unyaffs工具提取
解壓后,發現有一部分yaffs2格式的文件系統,此時需要使用unyaffs工具來提取。

05完整的文件系統
提取完成后,在yaffs2文件夾中查看提取到的完整文件系統。

06解壓固件
提取到完整文件系統后我們可以查看不同目錄下的文件進行安全審計,尋找可能存在漏洞的文件。最常見的操作是遍歷所有.conf配置文件。
運行find查詢來查找所有配置文件:

07獲取敏感信息
在該路由器固件中,inadyn-mt.conf配置文件保存了訪問網站 https://www.no-ip.com 的用戶名和硬編密碼等敏感信息,如下圖所示:

攻擊者通過以上安全漏洞可以批量攻擊此版本的路由器,造成信息泄露。
以上分析方式屬于固件手工分析,我們還可以采用自動化的方式來挖掘漏洞,常見的自動化工具有Craig Smith開發的工具Firmwalker,該工具通過靜態分析來識別固件中可能包含的常見敏感信息。本文由于篇幅限制,不再闡述該工具的使用。下個系列會為大家講解該工具,敬請期待~