FACT:一款固件類比分析測試平台
0×01 工具簡介
1.FACT 全稱 Firmware Analysis and Comparison Tool 是一個擁有WEB端的自動化固件測試平台。
2.旨在自動執行固件安全分析(路由器,物聯網,UEFI,網路攝像頭,無人駕駛飛機……)
3.工具基於Python-flask框架,採用模塊化開發並支持插件接入,因此對於二次開發和優化非常便捷。
4.FACT可以自動化完成固件解包任務並對其進行固件分析包括:
軟體識別
(1)使用哪個操作系統?
(2)哪些節目存在?
(3)使用哪些版本?
(4)哪些服務在啟動時啟動
(5)這些漏洞有哪些?
查找用戶憑據
加密材料檢測
(1)私人鑰匙
(2)證書
(3)CPU架構(需要進行模擬和反彙編)
5.FACT 同樣也自動化的實現了固件的類比,可以很方便的對比出來舊版本與新版本固件之間的變動。以找出開發商對新固件在哪裡進行了更新,同樣也可以識別是否為開發商原始固件。比如:
(1)識別已更改/相同的文件
(2)識別更改的軟體版本
0×02 主要功能分析
FACT的業務代碼主要有三塊
Unpacking – 固件解包
Analysis – 固件系統分析
Comparison – 固件類比
2.每一塊業務代碼又由一下兩部分組成:
(1)Scheduler – 任務調度器
(2)Multiple plugins – 插件集
3.每個調度器擁有獨立的工作線程
總流程圖
固件解包工作流程圖
FACT在識別文件類型的時候會調用」file」命令,並使用自帶的一個mime庫來標記文件類型。
在確定文件類型後調度器會選擇正確的插件進行解包任務。
固件系統分析工作流程圖
調度器一次只會調用一個插件,當上一個插件任務結束後才會繼續調用下一個插件。
插件工作時可以擁有多個線程一起進行。
插件可以調用以及查看前面插件執行後的二進位結果。
固件系統類比工作流程圖
固件系統類比任務是與固件分析任務分開的,需要進行類比的固件要先進行固件分析。
需要手工填入需要進行類比的固件UIDS。
類比工作是單線程工作,相對節省系統資源。
0×03 具體代碼分析
FACT 的配置文件位於./src/config/main.cfg
由於FACT三塊業務功能代碼結構類似,這裡以Unpack 功能為例,詳細的講解代碼邏輯。
Unpack_service 被歸置為backend_service 任務通過./start_fact_backend.py啟動。
./src/scheduler/Unpacking.py將負責創建並調度解包任務
./src./unpacker/unpack.py 負責執行具體的解包任務
0×04 目錄結構分析
0×05 安裝以及使用
1.FACT的安裝非常簡潔,參考FACT的github你可以很方便的安裝好一個FACT平台
2.建議使用清華源進行安裝,因為國內源我測試只有清華源可以暢通無阻。。。
3.安裝時建議添加 -N 參數 可以一併把nginx安裝
4.WEB端原版為全英文,漢化了一下,舒服多了。。。
0×06 後記
1.平台運行需要一定的硬體配置,資源需求比較大
2.代碼結構嚴謹,邏輯清晰,核心功能工作流程設計非常nice,調度器與插件集的實用為二次開發提供了很大的便利
3.WEB安全性低,不建議作為公開服務運營
4.添加了一個自動化提取固件內部web路徑並審計的插件,官方還沒有回信


※使用帶外數據從電子表格獲取數據
※運營商互聯網業務暴露面安全
TAG:瘋貓網路 |