博客 / 詳情

返回

固件漏洞挖掘實戰指南

固件的本質與風險

固件是驅動硬件設備的底層代碼,直接掌控設備的核心行為。與普通軟件不同,固件一旦燒錄便難以更新,且常包含最高權限的訪問接口。這種"深度嵌入"特性使其成為攻擊者的重點目標——一個固件漏洞可能意味着千萬台設備同時暴露在風險中。

典型的固件威脅包括:

  • 硬編碼後門:開發調試用的賬號密碼未移除,直接發佈在正式固件中
  • 未加密通信:設備與雲端交互使用明文協議,敏感數據易被竊取
  • 權限提升漏洞: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生態的基石。廠商需將安全左移至設計階段,而研究者通過標準化的逆向流程,能有效揭示隱藏風險,推動行業整體安全水位提升。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.