📅 資安院獎金獵人倒數 。今天,我要準備進入「逆向工程」階段。
隨著台灣越來越多中小型自製韌體、驅動與燒錄程式廠商投入 IoT 市場,這也是紅隊最該掌握、藍隊最該防守的區域。
IoT 裝置幾乎都帶有:
這些程式通常:
類別 | 工具 | 功能 |
---|---|---|
主工具 | Ghidra | 靜態分析、反編譯、函式流程重建 |
輔助 | Cutter / radare2 | 輕量級韌體快速檢查 |
.NET 程式 | dnSpy / ILSpy | 若控制程式為 .NET |
動態觀察 | x64dbg / WinDbg | 驗證執行時邏輯 |
通訊分析 | Wireshark / USBPcap | 檢查 USB / 網路協定是否安全 |
環境 | 虛擬機 (VM) | 隔離分析,避免誤觸生產環境 |
💡 合法性提醒:
僅分析自家產品或明確授權樣本。
保留 hash、來源與版本紀錄以備追蹤。
建立 Project
每個韌體或驅動建立獨立 Project,方便版本對比。
匯入樣本
Ghidra 會自動識別架構(x86、ARM、MIPS…)。若是韌體映像,先用 binwalk
分割出可執行區段再匯入。
主要介面區塊
自動化分析
使用 Scripts 或 Headless 模式批量掃描可疑字串、API 呼叫、或未簽章的更新函式。
不做破解、不 patch、不繞過,只觀察「風險點」。
license
, dongle
, serial
, key
, update
, challenge
, server
.類別 | 範例 | 建議 |
---|---|---|
硬編碼金鑰 | 驅動內有固定 AES key | 改用 secure element 或伺服器端驗證 |
本地驗證 | 授權檢查僅依賴 client | 改為 server-issued token |
未簽章更新 | Firmware .bin 可直接覆蓋 | 加入簽章與版本驗證機制 |
未保護 IOCTL | 任意程式可發請求 | 驗證來源進程權限 |
項目 | Ghidra | IDA Free |
---|---|---|
授權 | 開源免費 (Apache 2.0) | 免費版功能受限,Pro 付費 |
反編譯器 | ✅ 內建 Decompiler | ❌ Free 版無 |
自動化 | 支援 headless 模式 | Free 無法批次處理 |
平台支援 | Windows / macOS / Linux | 同,但 Free 版限制多 |
協作 | Project Repo 支援多人 | Free 無版本控 |
擴充 | Java / Jython Script | IDC / Python(受限) |
💬 結論:
Ghidra 的「開源 + 反編譯 + 批次掃描」特性,非常適合企業做內部韌體稽核與授權安全檢查。
若需大規模自動化、多人共用分析結果,Ghidra 性價比遠高於 IDA Free。
技術摘要
細節報告
改善路線圖
期程 | 建議 | 責任單位 |
---|---|---|
短期 | 修補硬編碼金鑰 | 開發 |
中期 | 引入簽章驗證機制 | 研發 / 資安 |
長期 | 改 server 驗證架構 | 系統整合 |
❌ 「混淆就安全」 → 混淆只是延遲時間,不是防禦。
❌ 「驗證放本機比較快」 → 攻擊者逆向後可輕易繞過。
✅ 把驗證邏輯搬上伺服器 + 使用非對稱簽章。
✅ 更新必須簽章驗證。
✅ Dongle 通訊應有 challenge-response 與 nonce。