firmeye - IoT固件漏洞挖掘工具

https://github.com/Vu1nT0tal/firmeye

firmeye 是一個 IDA 插件,基於敏感函數參數回溯來輔助漏洞挖掘。我們知道,在固件漏洞挖掘中,從敏感/危險函數出發,尋找其參數來源,是一種很有效的漏洞挖掘方法,但程序中調用敏感函數的地方非常多,人工分析耗時費力,通過該插件,可以幫助排除大部分的安全調用,從而提高效率。

  • 漏洞類型支持:緩衝區溢出、命令執行、格式化字符串
  • 架構支持:ARM

分享:slides

安裝

該插件運行環境要求 IDA Pro 7.5,Python3。

  1. 下載本項目:https://github.com/firmianay/firmeye.git
  2. 安裝依賴:pip install -r requirements.txt
  3. 將 firmeye 和 firmeye.py 複製到 IDA Pro 插件目錄下,例如 C:\Program Files\IDA Pro 7.5\plugins
  4. 打開 IDA Pro 並加載待分析固件程序。
  5. Ctrl+F1 查看插件使用幫助。熱鍵:
    • Ctrl+Shift+s:主菜單
    • Ctrl+Shift+d:啓動/禁用調試鉤子
    • Ctrl+Shift+c:掃描代碼模式(TODO)
    • Ctrl+Shift+x:逆向輔助工具
    • Ctrl+Shift+q:功能測試

使用方法

靜態分析功能

敏感函數被分爲 5 類:printf、strcpy、memcpy、scanf、system。分別對應各自的漏洞類型和檢測規則。

動態調試功能

對靜態分析得到的可疑地址下斷點,並在調試時動態處理斷點事件,獲得參數、返回值等上下文信息。

命令行工具

利用 idahunt 可以讓插件自動化批量運行,使用方法如下:

$ python3 idahunt.py --inputdir C:\xxxx --analyse --filter "names.py -a 32 -v"                      # 生成IDB
$ python3 idahunt.py --inputdir C:\xxxx --cleanup                                                   # 清理臨時文件
$ python3 idahunt.py --inputdir C:\xxxx --filter "names.py -a 32 -v" --scripts "firmeye_cli.py"     # 運行腳本
 

改進方向

該插件目前還非常不完善,下面是一些改進方向,歡迎討論和 PR。

  • 完善參數回溯邏輯,支持更復雜的指令語義識別
  • 支持函數間分析
  • 完善漏洞判斷邏輯,降低誤報率
  • 加入動態污點分析作爲輔助
  • 支持更多體系架構,如 x86、MIPS 等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章