Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Reproducing Vulnerability in IoT@HackerSir Stud...

YJK
January 13, 2025
3

Reproducing Vulnerability in IoT@HackerSir StudyGroup

YJK

January 13, 2025
Tweet

Transcript

  1. Table of contents 01 03 02 04 IoT Security Get

    Firmware Firmware Emulation CVE-2024-2897 實作
  2. Everything Can PWN • C/C++ • Browser • Blockchain •

    Kernel • Mobile • Virtualization • IoT
  3. Everything Can PWN • C/C++ • Browser • Blockchain •

    Kernel • Mobile • Virtualization • IoT
  4. Why learn IoT Security • I use many IoT device

    ▪ router ▪ nas ▪ light ▪ fan ▪ …
  5. Why learn IoT Security • code base 相對小 • firmware

    以實用為優先 • 保護機制有時會比較神奇
  6. How To Get Firmware? • dump using UART • dump

    using Bus-Pirate • during OTA Upgrade
  7. Extract Firmware • 7z ▪ get image file or file

    system • binwalk • dd • squashfs-tools • lzma
  8. 排雷 • 建議 binwalk 可以載 source code compile • 直接

    apt install 會有某些 dependencies 載不好 • Compile From Source
  9. dd • 只想拿特定區段檔案 • dd if=[] bs=[] skip=[] count=[] of=[]

    ▪ if:input file ▪ bs:block size ▪ skip:from which start reading ▪ count:read bytes size ▪ of:output file • skip 預設會直接讀到檔案尾端
  10. Firmware Analysis • 建議可以使用 Ghidra • 相對 ida free 支援更多的架構

    • 後面需要 patch binary 好使用 (可以 patch instruction) • 可以用 BinDiff 觀察與前一版 firmware 的差異 • Free!!Free!!Free!!
  11. 目標 • 拿到 file system • 獲得 binary 分析 •

    直接模擬 file system • 重點還是實際找漏洞並且寫 PoC 測試
  12. chroot、systemd-nspawn • dynamically linked 的程式會有 library 路徑問題 • 需要包住整個 filesystem

    • 如果有找到啟動 script 也可以直接執行 • /etc/init.d 可以優先看
  13. QEMU • virtual machine monitor • System Emulation/User Mode •

    System Emulation 會較接近真實系統 • User Mode 可以只執行一個 binary • 支援多種架構 ▪ 包含 IoT 會見到的 mips、arm…
  14. Firmware Analysis Toolkit • 自動化 Firmadyne 的 script • 處理

    Firmadyne 中的初始設定工作 • 只需要給 root 密碼跟 Firmadyne 路徑
  15. Firmware Analysis Toolkit • 自動化 Firmadyne 的 script • 處理

    Firmadyne 中的初始設定工作 • 只需要給 root 密碼跟 Firmadyne 路徑 • 目前與 Firmadyne 相同皆只有 sample 可以成功執行
  16. Unicorn Engine • CPU emulator framework • 支援多種架構 • 可以只執行一個

    function ▪ 用來解加密 firmware • 需要先 mapping 每一個 Section 到模擬的記憶體區塊 • hook 程式流程
  17. Qiling • https://github.com/qilingframework/qiling • 支援多種架構 • 可以動態 patch • 透過

    unicorn 模擬 instruction • 有 loader、linker,並可以處理 IO
  18. 模擬 • 確認檔案類型 ▪ MIPS, MIPS32 rel2 version 1 (SYSV)

    • cp /usr/bin/qemu-mipsel-static . • sudo chroot ./ ./qemu-mipsel-static ./bin/httpd
  19. 模擬 • 逆向分析會發現有幾個部分需要 patch • IoT firmware 會有某些部份需要跟硬體做交互 • 根據結果有兩種方式

    (直接給回傳值) ▪ init_core_dump 需要回傳 0 ▪ apmib_init 需要回傳 1 ▪ check_network 需要回傳 1 ▪ ConnectCfm 需要回傳 1
  20. 模擬 • 逆向分析會發現有幾個部分需要 patch • IoT firmware 會有某些部份需要跟硬體做交互 • 根據結果有兩種方式

    (直接給回傳值) ▪ init_core_dump 需要回傳 0 ▪ apmib_init 需要回傳 1 ▪ check_network 需要回傳 1 ▪ ConnectCfm 需要回傳 1 • 稍微看一下 mips 的 instruction 做 patch,非本日重點
  21. PoC

  22. 結論 • 超基本 command injection 爛洞 • Tenda 有一整排這種 command

    injection • IoT 這種洞不少見 • 希望下次不是復現可以有新的漏洞點