必備!好用的逆向分析工具Ghidra入門介紹

NEITHNET 情資分享

NEITHNET 資安實驗室

  Ghidra與IDA、Cutter等軟體同為靜態分析工具,被用在研究與分析惡意程式上。在不需要執行樣本的情況下,分析人員可以透過Ghidra可以檢視檔案的基本資訊、結構、所使用的函數等資訊,從檔案本身尋找是否有可疑之處。執行靜態分析時會先檢查程式與官方版本的基本資訊差異,如檔案大小、開發者資料、簽章、雜湊等,再檢查結構上是否有異常狀況,例如:

  1、檔案是否經過加殼處理?

註:經過UPX加殼過後的檔案

  2、結構中是否有新增或遺漏的Section?是否有異常的padding?是否引用可疑的函式庫或內嵌shellcode、巨集、可執行程式、檔案等?

註:可能被用來偵測debugger的函式庫

  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在哪裡被使用過,或是某個函數在哪裡被使用過。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *