https://github.com/Vu1nT0tal/firmeye
firmeye 是一個 IDA 插件,基於敏感函數參數回溯來輔助漏洞挖掘。我們知道,在固件漏洞挖掘中,從敏感/危險函數出發,尋找其參數來源,是一種很有效的漏洞挖掘方法,但程序中調用敏感函數的地方非常多,人工分析耗時費力,通過該插件,可以幫助排除大部分的安全調用,從而提高效率。
- 漏洞類型支持:緩衝區溢出、命令執行、格式化字符串
- 架構支持:ARM
分享:slides
該插件運行環境要求 IDA Pro 7.5,Python3。
- 下載本項目:
https://github.com/firmianay/firmeye.git
。 - 安裝依賴:
pip install -r requirements.txt
。 - 將
firmeye
和firmeye.py
複製到 IDA Pro 插件目錄下,例如C:\Program Files\IDA Pro 7.5\plugins
。 - 打開 IDA Pro 並加載待分析固件程序。
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 等