漏洞銀行公開課整理--家用路由器漏洞挖掘入門

prettyX發表於2020-11-26

前言

  • 裝置、韌體容易獲得,可作為挖掘其他智慧硬體(智慧家居、智慧攝像頭)的基礎
  • 大多是Web層面的漏洞,適合Web選手直接上手入門

預備知識

1、路由器的組成

  • CPU
  • RAM
  • Flash ROM
  • UART 串列埠\JTAG除錯口:最常見的為UART串列埠,可以通過UART串列埠來直接與機器互動,通過串列埠輸出、輸入資訊,做動態除錯。可以使用SecureCRT工具來分析串列埠資訊。用工具連線上串列埠,可以檢視路由器的啟動資訊、分割槽情況、初始化資訊等
  • 在路由器的硬體層面中,主要關注Flash rom和UART、JTAG等除錯口

     

2、路由器元件的識別

  • Flash rom:用來儲存檔案系統、核心、U-boot(bootloader),路由器配置資訊

     

  • Flash rom的識別和區分:1、晶片上有廠商的首字母縮寫。在程式設計器中找到廠商對應的型號即可。2、沒有晶片的標識資訊,只有一些絲印數字(不規則)。可以在網上或購物網站上嘗試尋找資訊

3、韌體的獲取:路由器韌體漏洞挖掘必備步驟

  • 官網技術支援處下載韌體升級包
  • 本地OTA升級抓包
  • 從路由器Flash rom中獲取(程式設計器)
  • 九種獲取韌體的方法:https://bbs.pediy.com/thread-230095.htm
  • 工具:binwalk

4、BusyBox

  • 在路由系統中,因為儲存空間受限制,所以使用的Shell通常是一個經過裁剪的名為BusyBox的程式
  • BusyBox是一個整合了300多個最常用Linux命令和工具的軟體
  • BusyBox包含了一些簡單的工具,例如ls、cat和echo等等,還包含了一些更大、更復雜的工具
  • 常用在Linux核心的嵌入式裝置上,入路由器、攝像頭

5、MIPS指令集

  • 分析工具:IDA無法直接反彙編mips程式碼,Ghidra可以幫助我們生成mips的偽C程式碼,但是,在使用Ghidra分析mips的時候,PLT和GOT經常會出現問題,如果需要定位GOT表,還是需要使用IDA查詢更為方便
  • 暫存器數量多(31個)
  • 流水線效應
  • 彙編指令都是4位元組對齊
  • 對棧的操作靠指標的增減來實現

6、路由器系統型別

  • 嵌入式Linux系統
  • VxWorks系統

7、檔案系統型別

  • Squashfs(最常見)
  • cpio
  • jffs2

韌體分析、模擬模擬環境搭建準備

1、必備環境

  • QEMU2.4.0編譯版本(版本過低或過高都會出問題)
  • 靜態除錯:IDA+Ghidra
  • 動態除錯:gdb、gdb-multiarch、gdbserver
  • 自動化動態模擬韌體:Firmadyne
  • binwalk
  • 其他一些IDA指令碼:MipsAduit、Mipsrop

2、可選環境

  • 交叉編譯環境:mips、arm

3、路由器漏洞挖掘的特點

  • 測試點比較全面:Web、二進位制、協議層面(廠商自定義協議)、程式碼審計(php、asp、lua)
  • 可能需要接觸到硬體:基本的拆焊能力、硬體元件的識別

路由器常見漏洞點舉例

1、Web層面

  • XSS:CVE-2018-10107
  • 越權(獲取配置檔案)

2、二進位制層面

  • 命令執行漏洞
  • 棧溢位

3、協議層面

  • smb、upnp等通訊協議
  • 路由器廠商私有協議

路由器漏洞挖掘思路

 

 

參考:

https://www.bilibili.com/video/BV16J411T7eG?from=search&seid=1189161941210173922

https://www.anquanke.com/post/id/180714

 

 

相關文章