模型 / 資料集
ipa-lab/hackingBuddyGPT avatar
ipa-lab/hackingBuddyGPT

hackingBuddyGPT:把 LLM 安全測試代理壓進幾十行程式碼的框架

Helping Ethical Hackers use LLMs in 50 Lines of Code or less..

1,239 個 Star217 個 ForkPythonMIT

秒懂

它是什麼?
這個專案把 LLM 連線、目標連線器、回合上限與結構化日誌先做好,讓研究人員專注在實驗本身。它的價值在於可重現的基準與真實的執行紀錄,代價是你必須接受它會在你指定的機器上真的執行指令。
適合誰用?
如果你在做可重現的 LLM 安全測試研究,或需要一個已接好 SSH、psexec、litellm 與回合上限的骨架來驗證新想法,這個框架值得裝進隔離環境試跑;若你只是想要一個現成的自動化滲透工具,或是無法承擔 LLM 在真實主機上執行未審核指令的風險,那它不適合你。先確認三件事:Python 版本是否為 3.13 以上、.env 中的 llm.model 指向哪個供應商、以及 --limits.max_rounds 與 max_cost 的預設值能不能擋住一次失控的迴圈。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 2 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

它解決的是「每次重寫同一套管線」的問題

想拿 LLM 做安全測試的人,第一個禮拜通常都花在同樣的事情上:接一個模型 API、寫一個能對目標下指令的連線層、處理對話歷史、設定什麼時候停下來、把過程存下來。真正的實驗內容,也就是「用什麼提示、做什麼判斷」,往往只有幾十行。hackingBuddyGPT 的定位就是把前面那一大段先做掉。README 的自我描述是提供「LLM connectivity、target connectors(SSH / local shell / WinRM-style psexec)、capability/tool wiring、run limits, and structured logging」,讓一個新實驗可以用「a few dozen lines of code」表達。目標讀者是安全研究者與滲透測試人員,尤其是需要把實驗結果寫成可被檢驗的報告的人。專案同時維護一個 Linux 提權基準(benchmark-privesc-linux),並把研究結果以開放取用報告形式發布,這條研究線索比框架本身更能說明它的取向:它想被當成實驗平台,而不是產品。

use-case 是唯一的擴充單位

整個框架的組織方式是把每個實驗叫做一個 use-case,註冊之後就變成 wintermute 的子指令。安裝套件會提供 wintermute 這個命令,不帶參數執行時會列出所有已註冊的 use-case,wintermute <UseCase> --help 則顯示該 use-case 的選項。這個設計的好處是擴充路徑很短:寫一個新的 use-case 就等於新增一個子指令,不必改動核心。README 列出的 use-case 分成提權、Web、Web API、Active Directory 四類。提權類從 MinimalPrivEscLinux 這種約二十行的最小實作,一路到帶有檢索增強(--rag_path)、思維鏈(--enable_cot)、狀態追蹤的 PrivEscLinux。其中 ExPrivEscLinuxLSE 值得單獨看:它先在目標上跑 lse.sh,把輸出轉成提示,再針對每個提示去呼叫 PrivEscLinux,也就是一個 use-case 呼叫另一個 use-case。這種組合方式說明框架的分層是可以被使用者自己延伸的,而不是只能照官方清單挑。

兩種執行風格共用同一個迴圈

框架提供兩種表達實驗的方式,差別在於對話狀態怎麼處理。第一種是文字指令策略:用 Mako 模板把整段歷史塞進單一提示,再從回覆裡解析出一條裸命令,MinimalPrivEscLinux 就是這個經典迴圈。第二種是原生 tool-calling:保留真正的聊天歷史,透過 function calling 驅動目標,MinimalToolCallPrivEscLinux 是它的對應版本。這個差異不只是風格問題。文字策略每回合重寫整個提示,狀態管理由模板決定,成本隨歷史長度線性上升;tool-calling 把歷史交給模型端維護,行為更接近一般代理,但依賴供應商對 function calling 的支援程度。README 特別指出 MinimalToolCallPrivEscLinux 的 task_solved 工具會「verified against ground truth」,也就是模型宣稱拿到 root 時會被拿去跟真實命令輸出比對,幻覺或口頭認輸都不會計為成功。提權類的成功判定因此不是模型說了算,這一條在自動化評估裡很關鍵。整個執行模型建立在 asyncio 上,是 fully asynchronous 的。

裝起來只有四步,但每一步都有決定要做

README 的 quickstart 是四條命令:git clone 之後用 uv sync 建環境並啟用 .venv,複製 .env.example 為 .env 並編輯,執行 wintermute 看有哪些 use-case,最後跑一個實際案例。範例是對 SSH 目標做最小提權:wintermute MinimalPrivEscLinux --conn=ssh --conn.host=192.168.122.151 --conn.username=lowpriv --conn.password=trustno1。這裡的關鍵是連線參數用 --conn 前綴,切換成 psexec 就是換一個 --conn 值,PrivEscWindows 走的就是這條路。模型端統一由 litellm 承接,任何供應商都透過 llm.model 字串指定,README 點名 OpenAI、OpenRouter(預設端點)、Anthropic、Azure 與本機 Ollama,也可以把流量導向攔截代理,用 --llm.proxy 指定。執行上限用 --limits.max_rounds、max_tokens、max_cost、max_duration 四個鍵一起管,成本單位是美元。這些鍵名要照抄,因為它們是 CLI 參數而不是設定檔欄位。

日誌是這個專案最容易被低估的部分

每次執行都會寫成一份 append-only 的 OpenTelemetry/GenAI JSONL 軌跡,並附上命令列工具可以重播與彙總。對於要寫論文或做回歸測試的人,這比框架本身的代理能力更重要:沒有可重播的軌跡,任何「模型 A 比模型 B 好」的結論都無法被檢查。專案另外提供 Docker-fleet benchmark launcher,用來一次對多個目標做回歸測試。這兩件事合起來說明它的重心在可重現性。反過來說,如果你不需要留下可被他人重跑的紀錄,這套日誌對你只是額外的檔案。這裡也要提醒,README 沒有在提供的內容中說明軌跡的保留策略或清理方式,長期跑大量回合之後的磁碟占用需要自己確認。

它會在你指向的機器上真的執行動令

README 用一段警告把這件事講得很直白:這個軟體會在活的系統上執行真實命令,local-shell 模式下跑在你自己的機器上,SSH 或 psexec 模式下跑在你指定的目標上,並且建議只在自有或明確授權的系統上使用,優先選擇隔離的 VM 或容器。這不是免責樣板,而是使用這個框架時最實際的約束。LLM 產生的命令不保證安全,而框架的設計目標正是讓它自動執行下去。因此限制條件必須設在 --limits 那一組參數上,而不是靠人盯著看。另一個限制是環境門檻:需要 Python 3.13 以上,建置後端是 uv。3.13 是相對新的版本,如果你的環境被發行版套件庫或既有 CI 綁在較舊的直譯器上,光是起步就會卡住。README 也提到 plain venv 加 pip 可以運作,但推薦 uv。

跟 Metasploit 這類工具比,差別在誰決定下一步

把 hackingBuddyGPT 跟 Metasploit 放在一起看,差異不在功能多寡,而在決策由誰做。Metasploit 的模組是人工選定、參數人工填寫,自動化的部分是模組內部的利用流程;你得到的是可預期、可重複的行為,代價是每一步都需要操作者判斷。hackingBuddyGPT 把「下一步該做什麼」交給模型,框架負責把命令送出去、把輸出收回來、在超過上限時停下。它的 AD use-case 更極端:採用 planner/executor 設計,一個持續存在的策略規劃器維護任務樹與共享知識庫,把每個任務交給一個全新的、沒有記憶的戰術執行者。這種架構是為了避免長上下文退化,但也意味著行為更難預測。如果你要的是穩定可審計的流程,前者合適;如果你要研究模型在開放式目標上會怎麼走,後者才是重點。兩者不是替代關係,但選錯會浪費很多時間。

維護成本與授權的實際考量

授權是 MIT,README 的徽章與 LICENSE 檔一致,這表示你可以修改、商用、再發布,只需要保留著作權聲明。這裡不構成法律意見,實際條文請自行閱讀 LICENSE。維護節奏上,從版本紀錄看,v0.3.0 在 2024 年 8 月,v0.4.0 在 2025 年 4 月,v0.5.0 在 2025 年 8 月,大約是半年一個版次的節奏,且最後一次推送時間在 2026 年 8 月,倉庫並未封存。對採用者來說,這代表 API 有可能在版本之間變動,尤其是 use-case 的 CLI 參數與 --limits 這一組鍵名。升級前應該先跑一次 wintermute 列出 use-case 清單,再用 wintermute <UseCase> --help 比對你依賴的參數是否還在。另一個成本來自模型端:litellm 讓切換供應商很容易,但不同供應商對 function calling 的支援程度不同,MinimalToolCallPrivEscLinux 這類依賴 tool-calling 的 use-case 換模型時需要重新驗證,而文字指令策略的 use-case 在這方面限制較少。

編輯結論

如果你在做可重現的 LLM 安全測試研究,或需要一個已接好 SSH、psexec、litellm 與回合上限的骨架來驗證新想法,這個框架值得裝進隔離環境試跑;若你只是想要一個現成的自動化滲透工具,或是無法承擔 LLM 在真實主機上執行未審核指令的風險,那它不適合你。先確認三件事:Python 版本是否為 3.13 以上、.env 中的 llm.model 指向哪個供應商、以及 --limits.max_rounds 與 max_cost 的預設值能不能擋住一次失控的迴圈。

官方來源

  1. ipa-lab/hackingBuddyGPT on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
社群筆記

社群筆記