DEF CON 33 - Help! Linux in my Webcam! (•_•) - Mickey Shkatov, Jesse Michael
三句話摘要
安全研究員通過逆向工程揭示網路攝像頭運行 Linux 系統且存在多個安全設計缺陷的全過程。 網路攝像頭普遍採用 Linux 系統是基於成本最小化的商業決策,但因安全設計缺失、固件更新機制薄弱、GPL 合規不遵守,任何拿到設備的人都能輕易獲得 root 權限並將其改造成蓄意工具。 成本驅動的不安全設計:制造商為降低成本、加快上市,採用現成的 Sigma Star SoC 和 Linux 系統,但對安全考量不足。簡單塞進 Linux 比開發專用協議棧便宜得多,也便於員工流失時快速補位(只需招聘懂 Linux 的人員)。
重點整理
重點- 1
成本驅動的不安全設計:制造商為降低成本、加快上市,採用現成的 Sigma Star SoC 和 Linux 系統,但對安全考量不足。簡單塞進 Linux 比開發專用協議棧便宜得多,也便於員工流失時快速補位(只需招聘懂 Linux 的人員)。
- 2
固件更新機制形同虛設:更新工具缺乏固件簽名驗證,MD5 校驗失敗時無重試機制。一旦擦除區域損壞,設備即無法恢復,這是極為危險的設計。
- 3
物理接口直接暴露系統:U-Boot 可通過 UART 串口訪問,環境變數可直接修改(從唯讀切換可寫),即可獲得 root shell。許多廠商甚至在主板上標記 TX/RX 引腳,毫無防護可言。
- 4
GPL 合規缺失導致生態漏洞:制造商拒絕發布使用 Linux 內核的設備源代碼,使安全研究受阻、漏洞無法修復。通過社交媒體施壓方可強制合規。
實用技巧與重點
乾貨- 涉及制造商與晶片
- Sigma Star SoC(聯發科→Mstar Semiconductor→Sigma Star)
- TP-Link:已公開 GPL 代碼
- Nexigo:Sigma Star SoC,無回應
- OBS 機器人(Open Broadcasting Studio):Sigma Star SoC,無回應
- 聯想(Lenovo):演講重點逆向對象
- Opal Tadpole:使用 Sigma Star,昨天發布 GPL 代碼
- OPPO(Amberella SoC):已發布 GPL 代碼
- 技術細節
- 固件更新:UVC 擴展單元 + SCSI 直通命令(I/O 控制 0x4D004)
- 更新流程:ROM 模式 → 更新程序模式 → U-Boot 模式
- 存儲:NOR Flash,分區含 bootloader、kernel、filesystem
- U-Boot 環境變數:可設置 init=/bin/sh 或 init=/sbin/init
- MD5 校驗點存在但無重試邏輯
- 改造方案
- USB 鍵盤:添加 HID 驅動,自動輸入管理員命令
- USB 網路設備:添加虛擬以太網卡,共享主機 WiFi,建立反向殼層
- 植入機制(Implant):通過環境變數標誌控制是否執行有效載荷
- 攻擊步驟(UART 方法)
- 連接 TX/RX 引腳
- 啟動時按住回車進入 U-Boot
- 查看環境變數:`printenv`
- 修改:`setenv bootargs ... init=/bin/sh`
- 保存:`saveenv`
- 重啟:`reset`
- 獲得 root shell,修改密碼
- 復原環境變數,正常啟動
- 工具與資源
- binwalk:固件分析
- Metasploit:C2 監聽(演示用 443 埠)
- OpenIPC:開源網路攝像頭系統,支援 Sigma Star
- GitHub:四個開發者倉庫含 U-Boot、Linux 核心、SDK
- 刷機工具:Daddy Prague、Joe Fitz Tiger(虎王)
- 俄羅斯論壇:獲得舊版本或洩露代碼
- Mega 鏈結:OVA VMware 鏡像用於本地構建
- 漏洞等級
- 任意代碼執行(需物理訪問或 USB 連接)
- 根本原因:缺乏信任根認證、固件簽名驗證、安全啟動機制
- GPL 合規過程
- 聯想 → Sigma Star → 聯想 → 研究員,過程困頓且源代碼多次不完整,需多輪協調
結論
結論“網路攝像頭普遍採用 Linux 系統是基於成本最小化的商業決策,但因安全設計缺失、固件更新機制薄弱、GPL 合規不遵守,任何拿到設備的人都能輕易獲得 root 權限並將其改造成蓄意工具。”
完整解析
詳細這場演講追溯了一個典型的物聯網設備安全發現過程。故事始於一個簡單的需求——更新網路攝像頭固件。研究員下載了廠商提供的固件工具,卻在解包時發現了異常:8MB 的固件包含 ash 腳本、U-Boot 二進位、USB 更新工具、OTAA 配置等複雜結構,遠超一般 USB 攝像頭的簡單 ISP 邏輯。使用 binwalk 進行固件分析,研究員看到了整個 Linux 系統的完整轉儲。
進一步硬體檢查暴露了根本設計缺陷:主板上不僅有 SoC,還有記憶體和存儲芯片,以及三個疑似支撐墊的焊盤。通過供電並監控 UART 輸出,研究員確認了 Linux 內核的啟動日誌。這時研究的方向變得明確——不是一個簡單的 ISP 晶片,而是一台隱藏在攝像頭外殼內的嵌入式 Linux 電腦。
研究員接著分析了固件更新的機制。聯想的工具透過 UVC 擴展單元(USB Video Class 的廠商私有命令)切換攝像頭狀態,先將其重識別為大容量存儲設備,再利用 SCSI 直通命令(I/O 控制代碼 0x4D004)發送一系列命令序列。這些命令由 U-Boot 執行,負責擦除特定 Flash 區域、接收新的核心和文件系統鏡像、計算 MD5 校驗。關鍵缺陷是完全沒有簽名驗證,一旦校驗失敗且重試失敗,已被擦除的鏡像無法恢復——設備變成磚塊。
為了進一步研究,研究員需要源代碼。直接向 Sigma Star 索要遭冷遇,官方渠道形同虛設。最後通過 GitHub 上的四個開發者倉庫、OpenIPC 開源項目和俄羅斯論壇的洩露代碼,湊齊了大部分源代碼。通過聯想的 GPL 流程(聯想向 Sigma Star 索要,再轉給研究員),最終獲得完整內核和工具鏈,但過程充滿波折,代碼多次不完整。
有了源代碼,研究員進行了一系列令人矚目的修改。首先是 USB 鍵盤演示:在內核中添加 HID 驅動,在啟動時加載有效載荷檢查邏輯。通過修改 U-Boot 環境變數中的 implant 標誌,攝像頭啟動時會自動作為 USB 鍵盤連接到電腦,輸入一系列命令打開管理員命令提示符。下次重啟時如果標誌重置,攝像頭恢復正常。這個演示完美說明了固件完全不可信的事實。
其次是網路設備演示:添加虛擬以太網驅動,攝像頭連接時呈現為 USB 網路設備。研究員設計了一個 PowerShell 腳本,使主機與攝像頭共享 WiFi 連接。一旦攝像頭獲得互聯網存取,它自動連接到遠程 Metasploit 服務器建立反向殼層。整個過程完全自動化,無需任何交互,充分展示了從單個 USB 設備到完全網路入侵的攻擊鏈。
對於其他廠商的設備,研究員展示了物理層的攻擊方法。以 Opal Tadpole 為例,主板上清晰標記了 TX 和 RX 引腳。通過簡單的 UART 連接,按住回車進入 U-Boot,修改環境變數將根文件系統從唯讀切換到可寫,重啟即可獲得 root shell。密碼修改後,重新設置環境變數回唯讀並啟動正常系統,攻擊痕跡已消除。
GPL 合規問題貫穿整個研究過程。許多廠商在設備中使用 Linux 內核卻拒絕提供源代碼,違反了 GPL 條款。研究員通過 LinkedIn 和 Twitter 直接聯繫廠商高管,公開要求 GPL 代碼。這種社交媒體施壓最終迫使某些廠商(如 Opal)配合。相比之下,TP-Link 因為之前已經被 GPL 問題糾纏,主動發布源代碼毫無異議。OPPO 昨天才發布代碼,而 Nexigo 和 OBS 機器人仍未回應。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

