這款 Ghidra 工具包是一套全面的工具,旨在簡化和自動化與在無頭模式下運行 Ghidra 相關的各種任務。該工具包提供了廣泛的腳本,可以在 Ghidra 內部或與 Ghidra 一起執行,使用戶能夠在分析的程式碼庫上執行漏洞搜尋、使用 ChatGPT 進行偽代碼註釋以及使用資料視覺化進行報告等任務。它允許用戶加載和保存自己的腳本並與腳本的內建 API 進行互動。
無頭模式自動化:該工具包使用戶能夠在無頭模式下無縫啟動和運行 Ghidra,從而實現程式碼分析任務的自動化和批次處理。
腳本儲存庫/管理:該工具包包括可以在 Ghidra 中執行的預先建置腳本儲存庫。這些腳本涵蓋各種功能,使用戶能夠執行各種分析和操作任務。它允許用戶加載和保存自己的腳本,為他們的特定分析需求提供靈活性和自訂選項。用戶可以輕鬆管理和組織他們的腳本集合。
靈活的輸入選項:使用者可以利用該工具包分析單一檔案或包含多個檔案的整個資料夾。這種靈活性可以對小型和大規範程式碼庫進行高效分析。
透過模式識別進行漏洞搜尋:利用工具包的腳本來識別正在分析的程式碼庫中的潛在漏洞。這有助於安全研究人員和開發人員發現安全漏洞並主動解決它們。
使用 SemGrep 進行漏洞狩獵:感謝安全研究員0xdea 和他們創建的規則集,我們可以使用簡單的規則和SemGrep 來檢測C/C++ 偽代碼中的漏洞(他們的github:https://github.com/0xdea/ semgrep -規則)
自動偽代碼產生:在 Ghidra 的 Headless 模式下自動產生偽代碼。此功能有助於理解和記錄程式碼邏輯,無需手動幹預。
使用 ChatGPT 進行偽代碼註釋:利用 ChatGPT 為偽代碼片段產生類似人類的註釋,從而增強程式碼庫的可讀性和理解性。此功能有助於記錄和解釋程式碼邏輯。
報告和數據視覺化:產生具有視覺化效果的綜合報告,以有效地總結和呈現分析結果。該工具包提供資料視覺化功能,以協助識別程式碼庫中的模式、依賴關係和異常。
在使用該項目之前,請確保您已安裝以下軟體:
Ghidra:您可以從國家安全局的 GitHub 儲存庫 @ https://github.com/NationalSecurityAgency/ghidra 下載 Ghidra
Java:確保您安裝了 Java 開發工具包 (JDK) 版本 17 或更高版本。您可以從 OpenJDK 網站下載它 @ https://openjdk.org/projects/jdk/17/
BinExport(可選)按照安裝 Ghidra 擴充功能的說明進行操作 https://github.com/google/binexport
SemGrep(可選)按照詳細說明進行操作 https://semgrep.dev/docs/getting-started/
安裝上述先決條件。
直接從 Github 下載 Sekiryu 版本或使用: pip install sekiryu
。
為了使用該腳本,您只需使用您想要執行的選項對二進位檔案執行它即可。
sekiryu [-F FILE][OPTIONS]
請注意,使用Ghidra (或任何其他產品)執行二進位分析是一個相對較慢的過程。因此,預計二進位分析需要幾分鐘時間,具體取決於主機效能。如果您針對非常大的應用程式或大量二進位檔案執行 Sekiryu,請準備好等待
在 www.bushido-sec.com 上尋找演示
The "server.py" is basically built to allow scripts to interract with Ghidra each other and with the host system. An User can easily develop their own script, load and saved it in the script folder and use the known functions of the API to interract with Ghidra.
為了使用它,使用者必須在其腳本中匯入 xmlrpc 並呼叫函數,例如: proxy.send_data
send_data() - 允許使用者向伺服器發送資料。 (“數據”是字典)
recv_data() - 允許使用者從伺服器接收資料。 (“數據”是字典)
request_GPT() - 允許使用者透過 ChatGPT API 發送字串資料。
腳本保存在資料夾 /modules/scripts/ 中,您只需將腳本複製到那裡即可。在ghidra_pilot.py
檔案中,您可以找到以下負責執行無頭 ghidra 腳本的函數:
def exec_headless(file, script): """ 執行ghidra 的無頭分析"""path = ghidra_path + 'analyzeHeadless'# 設定變數tmp_folder = "/tmp/out"os.mkdir(tmp_folder) cmd = ' + tmp_folder + ' TMP_DIR -import'+ ' '+ file + ' '+ "-postscript "+ script +" -deleteProject"# 使用指定的檔案和 scripttry 執行 ghidra: p = subprocess.run([str(path + cmd)], shell=True, capture_output=True) os.rmdir(tmp_folder) except KeyError as e: print(e) os.rmdir(tmp_folder)
用法非常簡單,您可以建立自己的腳本,然後只需在ghidra_pilot.py
中新增一個函數,例如:
def yourfunction(file): try: # 設定 scriptscript = "modules/scripts/your_script.py"# 在新執行緒中啟動 exec_headless 函數 thread = threading.Thread(target=exec_headless, args=(file, script)) thread. () thread.join() 除了Exception as e: print(str(e))
檔案cli.py
負責命令列介面,並允許您新增關聯的參數和命令,如下所示:
Analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="您的幫助訊息", action="store_true")
Scripts/SCRIPTS/SCRIIIIIPTS :此工具被設計為一個工具包,允許用戶輕鬆保存和運行自己的腳本,顯然如果您可以貢獻任何類型的腳本(任何有趣的東西都會被批准!)
最佳化:任何類型的最佳化都是受歡迎的,並且幾乎會在每個版本中自動獲得批准和部署,一些好的事情可能是:改進並行任務、程式碼清理和整體改進。
惡意軟體分析:這是一個很大的部分,我不熟悉。任何願意貢獻的惡意軟體分析師都可以提出想法、腳本,甚至直接在專案中提交程式碼。
報告:我不是資料視覺化工程師,如果有人願意在這部分進行改進/貢獻,那就太好了。
The xmlrpc.server module is not secure against maliciously constructed data. If you need to parse untrusted or unauthenticated data see XML vulnerabilities.
A lot of people encouraged me to push further on this tool and improve it. Without you all this project wouldn't have been the same so it's time for a proper shout-out: - @JeanBedoul @McProustinet @MilCashh @Aspeak @mrjay @Esbee|sandboxescaper @Rosen @Cyb3rops @RussianPanda @Dr4k0nia - @Inversecos @Vs1m @djinn @corelanc0d3r @ramishaath @chompie1337 Thanks for your feedback, support, encouragement, test, ideas, time and care.
有關 Bushido Security 的更多信息,請訪問我們的網站:https://www.bushido-sec.com/。