Modell / Datensatz
ipa-lab/hackingBuddyGPT avatar
ipa-lab/hackingBuddyGPT

hackingBuddyGPT: ein Framework für LLM-gestützte Sicherheitstests

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

1.239 Sterne217 ForksPythonMIT

Auf einen Blick

Was ist das?
Das Projekt ipa-lab/hackingBuddyGPT liefert die Infrastruktur für LLM-Agenten, die echte Kommandos auf Zielsystemen ausführen. Es richtet sich an Forschende, die Use-Cases in wenigen Dutzend Zeilen ausdrücken wollen, und bringt einen eigenen Privilege-Escalation-Benchmark mit.
Für wen ist es gedacht?
Wer LLM-Agenten gegen eigene Laborumgebungen testen und Ergebnisse reproduzierbar vergleichen will, findet hier die passende Infrastruktur. Wer lediglich einen Chatbot an ein Shell-Werkzeug hängen möchte, sollte sich die rund 20 Zeilen von MinimalPrivEscLinux ansehen, bevor er das gesamte Framework übernimmt.
Darf ich es kommerziell nutzen?
Ja. MIT ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 3 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich Python, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Welche Lücke das Projekt schließt

Ein LLM dazu zu bringen, einen Befehl vorzuschlagen, ist ein Nachmittag Arbeit. Ein LLM dazu zu bringen, über mehrere Runden hinweg auf einem fremden Rechner zu arbeiten, Kommandos abzusetzen, deren Ausgabe zu lesen und dabei nicht aus dem Ruder zu laufen, ist Infrastrukturarbeit. Genau diese Arbeit nimmt hackingBuddyGPT ab: LLM-Anbindung, Zielkonnektoren für SSH, lokale Shell und psexec, Werkzeugverdrahtung, Laufzeitgrenzen und strukturiertes Logging. Die Zielgruppe sind Sicherheitsforschende und Pentester, die eine Hypothese über LLM-Verhalten prüfen wollen, nicht ein Produkt bauen. Der README formuliert den Anspruch, das Standardframework für dieses Feld zu sein, und verweist auf einen wiederverwendbaren Linux-Privilege-Escalation-Benchmark sowie auf eine Veröffentlichung, die mehrere LLMs vergleicht. Wer heute einen Agenten für Sicherheitstests schreibt, baut sonst jedes Mal dieselbe Schleife neu: Prompt zusammensetzen, Antwort parsen, Kommando ausführen, Ergebnis anhängen.

Zwei Ausführungsstile auf einer Schleife

Das Framework kennt zwei Arten, einen Agenten zu betreiben. Der erste Stil ist die klassische Befehlsstrategie: Eine Mako-Vorlage setzt die gesamte bisherige Historie in einen einzigen Prompt, die Antwort wird auf einen nackten Befehl reduziert und ausgeführt. MinimalPrivEscLinux ist das Musterbeispiel und laut README etwa 20 Zeilen lang. Der zweite Stil nutzt natives Function Calling mit einer echten Chat-Historie; MinimalToolCallPrivEscLinux ist das Gegenstück. Der Unterschied ist nicht kosmetisch. Bei der Vorlagenvariante wächst der Prompt mit jeder Runde, und das Modell sieht seine früheren Antworten nur als Text. Beim Tool-Calling bleiben Rollen und Werkzeugaufrufe strukturiert erhalten. Interessanter ist, wie Erfolg gemessen wird: Der task_solved-Aufruf des Tool-Calling-Use-Case wird laut README gegen Ground Truth geprüft, sodass ein halluziniertes oder eingeräumtes "got root" keinen falschen Erfolg erzeugen kann. Das ist der Punkt, an dem viele Agenten-Demos scheitern, und hier ist er explizit adressiert.

Die mitgelieferten Use-Cases und ihre Reichweite

Neben den beiden minimalen Privilege-Escalation-Varianten gibt es PrivEscLinux mit optionaler Retrieval-Augmented Generation über --rag_path, Chain-of-Thought über --enable_cot, Zustandsverfolgung und strukturierter Führung. PrivEscWindows verfolgt denselben strategiebasierten Ansatz, treibt das Ziel aber über psexec statt SSH. ExPrivEscLinuxLSE führt zuerst lse.sh auf dem Ziel aus, wandelt dessen Ausgabe in Hinweise um und orchestriert PrivEscLinux pro Hinweis. Bemerkenswert daran ist weniger der Inhalt als die Form: Ein Use-Case ruft einen anderen auf, was zeigt, dass die Use-Case-Abstraktion mehr trägt als ein einzelnes Experiment. Im Web-Bereich stehen WebTestingWithExplanation, WebTestingWithShell und AdvancedWebTesting bereit, wobei letzteres keinen direkten Zielzugriff hat und Arbeit an begrenzte Sub-Agenten delegiert. WebAPITesting erkennt die Angriffsfläche als OpenAPI-Spezifikation oder Sitemap und läuft in den Modi document, test oder auto. Der AD-Use-Case schließlich portiert das cochise-Angriffswerkzeug und trennt einen persistenten Planer mit Aufgabenbaum und Wissensbasis von frischen, gedächtnislosen Ausführenden.

Installation und der erste Lauf

Vorausgesetzt wird Python 3.13 oder neuer. Der README empfiehlt uv, ein einfaches venv mit pip funktioniert ebenfalls. Der Ablauf besteht aus vier Schritten: Repository klonen, Umgebung synchronisieren, .env aus .env.example erzeugen und bearbeiten, dann wintermute aufrufen. Ohne Argumente listet das Kommando alle registrierten Use-Cases; wintermute <UseCase> --help zeigt die Optionen des jeweiligen Use-Cases. Ein vollständiger Aufruf für den minimalen Linux-Privilege-Escalation-Fall sieht so aus: wintermute MinimalPrivEscLinux --conn=ssh --conn.host=192.168.122.151 --conn.username=lowpriv --conn.password=trustno1. Die Verbindungsparameter hängen also am Präfix --conn, die Modellwahl am String llm.model. Als einziges LLM-Upstream kommt litellm zum Einsatz, wodurch OpenAI, OpenRouter als Standardendpunkt, Anthropic, Azure und ein lokales Ollama über dieselbe Konfiguration erreichbar sind. Über --llm.proxy lässt sich der API-Verkehr durch einen abfangenden Proxy wie Burp oder mitmproxy leiten. Für eigene Experimente genügt eine Klasse, die als wintermute-Subkommando registriert wird.

Laufzeitgrenzen und Protokolle

Ein Agent, der Kommandos auf einem fremden System absetzt, braucht Bremsen, und das Framework bietet vier gleichzeitig wirksame: --limits.max_rounds, --limits.max_tokens, --limits.max_cost und --limits.max_duration. Die Kostenobergrenze in Dollar ist in dieser Form ungewöhnlich und praktisch relevant, weil ein entlaufender Agent sonst still ein Budget verbraucht. Jeder Lauf wird als append-only JSONL-Trace im OpenTelemetry/GenAI-Format geschrieben, samt CLI-Werkzeugen zum Wiederabspielen und Aggregieren. Das ist die Grundlage dafür, Ergebnisse zwischen Modellen oder zwischen Framework-Versionen zu vergleichen, statt sich auf Erinnerung zu verlassen. Die Ausführung ist durchgehend asynchron auf Basis von asyncio aufgebaut. Für Regressionstests existiert ein Docker-Fleet-Benchmark-Starter, der viele Ziele parallel anspricht. Wer mehrere Modelle vergleichen will, findet hier die Messinfrastruktur, die solche Vergleiche überhaupt erst belastbar macht.

Wo das Framework nicht passt

Der wichtigste Vorbehalt steht im README selbst und ist keine Formalie: Die Software führt echte Kommandos auf produktiven Systemen aus. Im lokalen Shell-Modus trifft es den eigenen Rechner, im SSH- oder psexec-Modus das angegebene Ziel. Wer den Agenten versehentlich auf einen Host außerhalb des Labors richtet, bekommt keine Warnung, sondern Wirkung. Daraus folgt die erste Einschränkung: Das Werkzeug ist kein Scanner, den man beiläufig gegen eine fremde Infrastruktur laufen lässt. Die zweite betrifft den Zuschnitt. Die Use-Cases sind auf Privilege Escalation und Web-Tests fokussiert; ein Team, das Schwachstellen in Binärdateien oder in Cloud-Konfigurationen sucht, findet hier keine Vorlage und müsste den gesamten Use-Case selbst schreiben. Drittens die LLM-Abhängigkeit: Die Qualität des Ergebnisses hängt am gewählten Modell, und der Vergleich im zitierten Paper stammt aus einer Zeit vor den aktuellen Modellgenerationen. Wer heute ein Modell wählt, sollte den Vergleich als Ausgangspunkt nehmen, nicht als Empfehlung. Und schließlich die Vorlagenvariante: Sie ist bewusst schlicht, weshalb der gesamte Verlauf bei jeder Runde erneut in den Prompt wandert. Bei langen Läufen ist das ein Kostenfaktor, den die Runden- und Token-Grenzen abfedern, aber nicht beseitigen.

Abgrenzung zu allgemeinen Agenten-Bibliotheken

Der naheliegende Vergleich ist LangChain oder ein ähnliches Framework für Werkzeugaufrufe. Der Unterschied liegt nicht im Funktionsumfang, sondern im Zuschnitt. Allgemeine Bibliotheken stellen Abstraktionen für Ketten, Speicher und Werkzeuge bereit und überlassen es dem Anwender, einen Shell-Konnektor, Erfolgsprüfung und Kostenlimits zusammenzusetzen. hackingBuddyGPT geht den umgekehrten Weg: Es setzt einen festen Ablauf voraus, in dem ein Agent gegen ein Ziel arbeitet, und liefert genau die Teile, die in diesem Ablauf immer wiederkehren. Die Ground-Truth-Prüfung für Privilege Escalation ist ein Beispiel für etwas, das eine allgemeine Bibliothek nicht mitbringt, weil sie das Angriffsziel nicht kennt. Ein zweiter Unterschied ist die Messbarkeit: Der mitgelieferte Benchmark und das JSONL-Trace-Format sind auf wiederholbare Läufe ausgelegt. Wer dagegen einen Agenten für eine völlig andere Domäne baut, etwa Datenmigration, zahlt für diese Spezialisierung mit einem Rahmen, der nicht zu seinem Problem passt. Die Entscheidung hängt also daran, ob das eigene Problem die Form hat, die das Framework annimmt.

Pflege, Lizenz und was vor dem Einsatz zu prüfen ist

Das Projekt steht unter der MIT-Lizenz, die kommerzielle Nutzung und Modifikation erlaubt, solange der Lizenztext erhalten bleibt. Das ist eine der permissivsten Varianten und stellt für die meisten Anwendungsfälle keine Hürde dar; eine Rechtsberatung ersetzt diese Einordnung nicht. Die Release-Historie zeigt drei Veröffentlichungen innerhalb von etwa zwei Jahren, wobei zwischen v0.3.0 im August 2024 und v0.4.0 im April 2025 ein größerer Abstand liegt und v0.5.0 im August 2025 folgte. Der letzte Push datiert auf August 2026, das Repository ist nicht archiviert. Allein die Versionsnummern sagen nichts über Stabilität aus, aber die Versionssprünge legen nahe, dass sich Schnittstellen zwischen Releases ändern können. Wer eigene Use-Cases schreibt, sollte die Signatur der Basisklassen und die CLI-Parameter nach jedem Upgrade prüfen. Vor dem ersten produktiven Einsatz sind drei Dinge konkret zu klären: ob die Zielumgebung isoliert genug ist, welches Modell über llm.model angesprochen wird und ob dessen Kosten im Rahmen von --limits.max_cost bleiben, sowie ob die eigene Erfolgsprüfung genauso belastbar ist wie die des Tool-Calling-Use-Cases. Wer diese drei Punkte beantworten kann, hat eine belastbare Grundlage; wer sie offen lässt, betreibt einen Agenten ohne Netz.

Redaktionelles Fazit

Wer LLM-Agenten gegen eigene Laborumgebungen testen und Ergebnisse reproduzierbar vergleichen will, findet hier die passende Infrastruktur. Wer lediglich einen Chatbot an ein Shell-Werkzeug hängen möchte, sollte sich die rund 20 Zeilen von MinimalPrivEscLinux ansehen, bevor er das gesamte Framework übernimmt. Vor dem ersten Lauf auf einem echten Ziel ist zu klären, ob die eigene Umgebung isoliert genug ist, denn sowohl der lokale Shell-Modus als auch SSH und psexec setzen Kommandos real ab.

Offizielle Quellen

  1. ipa-lab/hackingBuddyGPT on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community-Notizen

Community-Notizen