NEITHNET 情資分享
NEITHNET 資安實驗室
Ghidra與IDA、Cutter等軟體同為靜態分析工具,被用在研究與分析惡意程式上。在不需要執行樣本的情況下,分析人員可以透過Ghidra可以檢視檔案的基本資訊、結構、所使用的函數等資訊,從檔案本身尋找是否有可疑之處。執行靜態分析時會先檢查程式與官方版本的基本資訊差異,如檔案大小、開發者資料、簽章、雜湊等,再檢查結構上是否有異常狀況,例如:
1、檔案是否經過加殼處理?
2、結構中是否有新增或遺漏的Section?是否有異常的padding?是否引用可疑的函式庫或內嵌shellcode、巨集、可執行程式、檔案等?
3、是否有加密、解密、指紋識別、連線、存取權限及檔案等異常功能?
分析人員可以從上述可疑處著手檢查程式碼與記憶體,進一步了解程式與系統間的互動以及對系統的影響,判斷是否有資料蒐集、植入後門等惡意行為,從而了解該程式所隱藏的攻擊手法、攻擊目的與可能的攻擊來源。
接下來就簡單針對Ghidra做個介紹,有興趣的讀者也歡迎跟著下列圖示一同操作看看。
Ghidra是由NSA開發並於RSA大會上發佈的免費的開源逆向分析工具,是以java開發並且適用於各種平台的GUI軟體,具有反組譯、反編譯與腳本等功能,支援多人協作,並且能利用公開的API使用java或python開發插件在Ghidra中使用。
優點:
- 由java開發,可在windows、linux、macOS等主流64位元平台上執行。
- 免費的開元工具。
- 整合現存常用的各種工具的大部分功能,並可以自行擴展功能、編寫插件與工具以符合自身使用需求。
- 可以對操作進行撤回和重做的動作。
缺點:
- 以java開發,執行速度相對較慢。
簡單使用介紹:
下載並安裝與設定好環境後,可以從File→New Project新增逆向專案,再從File→Import file導入需要反編譯的檔案。
點選Import的檔案後,Ghidra會開啟程式分析的畫面並提示是否對檔案進行分析。
完成分析後可以看到如下畫面。Tools中有Checksum Generator,也有可以與該project底下的其他程式進行比對的工具。各種功能面板可於Window中調整。
上圖紅圈處為Script Manager,有各種現成的腳本可以使用,也可新增、刪除、修改腳本,選擇後即可執行。
針對檔案所執行的操作可以在Edit→Undo/Redo進行撤回或重做。
Window→Function Graph可以呈現程式區塊流程圖,顯示的資料與其他設定也可以透過Edit the Listing fields自定義。
在點選Listing或Function Graph中的指令時,Decompile視窗中對應的程式碼段落也會同時被標註出來,反之亦然。
Symbol Tree中可以查看檔案中的Import、Export、Functions、Labels、Classes、Namespaces。選擇項目後可以右鍵點選Show References to或使用快捷鍵Ctrl+Shift+F找出檔案中所有使用該項目的位置。
在Data Type Manager中可以查看所有已定義的變數類型,選擇項目後可以右鍵點選Find Uses of或使用快捷鍵Ctrl+Shift+F找出檔案中所有使用該項目的位置。
點選下圖Listing視窗中右上角的Edit the Listing fields可以自定義Listing視窗中所要顯示的資料、調整視窗中每個元素的大小及位置。
快捷鍵:
F1:開啟help menu。
Ctrl+Z:撤回動作。
Ctrl+Shift+Z:重做動作。
Ctrl+Shift+E:搜尋。
S:搜尋記憶體。
G:跳至某一位置。
Ctrl+Up/Down:跳至前/後一個函數。
L:新增/修改標籤、重新命名函數或變數名稱。
Ctrl+L:修改變數型態。
2:比對專案下的兩個檔案。
Ctrl+D:添加書籤。
Ctrl+B:查看所有書籤。
Ctrl+Alt+B:跳至下一個書籤。
Ctrl+Shift+F:可以找出某個data type在哪裡被使用過,或是某個函數在哪裡被使用過。