固件的本質與風險
固件是驅動硬件設備的底層代碼,直接掌控設備的核心行為。與普通軟件不同,固件一旦燒錄便難以更新,且常包含最高權限的訪問接口。這種"深度嵌入"特性使其成為攻擊者的重點目標——一個固件漏洞可能意味着千萬台設備同時暴露在風險中。
典型的固件威脅包括:
- 硬編碼後門:開發調試用的賬號密碼未移除,直接發佈在正式固件中
- 未加密通信:設備與雲端交互使用明文協議,敏感數據易被竊取
- 權限提升漏洞:Web服務缺陷允許普通用户獲取root shell
本文以某智能攝像頭固件為例,演示如何系統性地挖掘硬編碼憑證漏洞。
固件分析的標準化流程
1. 固件獲取與完整性校驗
從廠商官網下載固件後,第一件事是計算哈希值並記錄。這不僅保證分析過程可復現,也能在後續比對不同版本差異時提供基準。
2. 自動化提取與識別
binwalk是固件分析的瑞士軍刀,能快速識別嵌入式文件系統、壓縮數據和二進制組件。配合-e參數可自動提取所有識別到的內容。
3. 文件系統深度遍歷
提取出的文件系統(squashfs、JFFS2、UBIFS等)需用專用工具掛載或解壓。重點關注:
/etc目錄:配置文件、啓動腳本/usr/bin和/sbin:自定義二進制程序/lib和/lib/modules:關鍵庫文件和驅動
4. 敏感信息定向搜索
使用firmwalker等自動化工具掃描整個文件系統,尋找硬編碼的IP地址、URL、密碼、私鑰等敏感字符串。
實戰:攝像頭固件後門挖掘
目標設備
某型號IP攝像頭固件camera_fw_v2.1.4.bin,傳言存在未公開的Telnet調試接口。
分析環境
- Ubuntu 20.04 LTS
- binwalk、jefferson(JFFS2解壓工具)
- Ghidra + strings組合
挖掘過程
步驟一:提取文件系統
binwalk -e camera_fw_v2.1.4.bin
解析發現固件包含JFFS2文件系統(常見於閃存設備),但binwalk自動提取失敗。手動定位偏移量:
binwalk -R "\xff\xe0" camera_fw_v2.1.4.bin
在偏移0x2C0000處發現JFFS2起始標誌。使用dd切出文件系統鏡像:
dd if=camera_fw_v2.1.4.bin of=jffs2.img bs=1 skip=2883584
jefferson -d jffs2.img jffs2_root
步驟二:自動化敏感信息掃描
進入解壓後的根目錄,運行firmwalker:
firmwalker.sh /path/to/jffs2_root /path/to/output.txt
掃描結果高亮顯示/etc/init.d/S90telnetd腳本包含異常啓動命令。
步驟三:分析啓動腳本
查看S90telnetd內容:
#!/bin/sh
# Start telnetd for debug purpose
if [ -f /usr/bin/telnetd ]; then
/usr/bin/telnetd -l /bin/sh -p 2323 &
fi
腳本在2323端口啓動Telnet服務,使用/bin/sh作為登錄Shell。這説明存在繞過認證的機制。
步驟四:挖掘免密登錄邏輯
在/usr/bin目錄發現自定義的login程序,使用strings命令:
strings login | grep -A5 -B5 "root"
輸出包含關鍵字符串:
root:abc123!@#:0:0:root:/root:/bin/sh
admin:7ujMko0vizxv:1000:1000:admin:/home/admin:/bin/sh
這分明是/etc/passwd格式的硬編碼數據!將login二進制拖入Ghidra,驗證偽代碼:
if(strcmp(username, "root") == 0 && strcmp(password, "abc123!@#") == 0) {
setuid(0);
execve("/bin/sh", ...);
}
漏洞確認
成功復現:攝像頭啓動後,2323端口自動開放,使用賬號root、密碼abc123!@#可直連獲得root權限,完全繞過Web界面的權限管理。
危害:攻擊者在同一網絡下可直接控制設備,竊取視頻流、植入持久化後門或作為內網跳板。
固件安全加固建議
1. 開發階段安全管控
- 所有調試代碼必須置於條件編譯塊中,生產版本通過編譯開關徹底排除
- 實施代碼審計,重點檢查認證繞過、硬編碼密鑰等高危模式
2. 構建時安全機制
- 啓用編譯器棧保護(
-fstack-protector-strong)和地址隨機化(ASLR) - 對文件系統鏡像進行簽名,設備啓動時校驗完整性,防止惡意篡改
3. 運行時防護
- 最小化開放端口,Telnet等明文服務應替換為SSH
- 實現安全的OTA升級機制,確保固件來源可信且傳輸加密
4. 應急響應能力
- 固件中預留安全審計日誌接口,記錄所有特權操作
- 建立快速響應渠道,發現漏洞後能在72小時內推送補丁
固件安全是IoT生態的基石。廠商需將安全左移至設計階段,而研究者通過標準化的逆向流程,能有效揭示隱藏風險,推動行業整體安全水位提升。