
AI-Agenten-Framework für Black-Box-Sicherheitstests mit autonomer Multi-Agenten-Orchestrierung, integrierten Pentesting-Tools und MCP-Integration für Bug-Bounty-, Red-Team- und Penetrationstest-Workflows.
https://github.com/user-attachments/assets/a67db2b5-672a-43df-b709-149c8eaee975
# Klonen
git clone https://github.com/GH05TCREW/pentestagent.git
cd pentestagent
# Einrichtung (erstellt venv, installiert Abhängigkeiten)
.\scripts\setup.ps1 # Windows
./scripts/setup.sh # Linux/macOS
# Oder manuell
python -m venv venv
.\venv\Scripts\Activate.ps1 # Windows
source venv/bin/activate # Linux/macOS
pip install -e ".[all]"
playwright install chromium # Erforderlich für das Browser-Tool
Erstelle .env im Projektverzeichnis:
ANTHROPIC_API_KEY=sk-ant-...
PENTESTAGENT_MODEL=claude-sonnet-4-20250514
Oder für OpenAI:
OPENAI_API_KEY=sk-...
PENTESTAGENT_MODEL=gpt-5
Jedes LiteLLM-unterstützte Modell funktioniert.
Leite PentestAgent über OPENAI_API_BASE auf einen beliebigen OpenAI-kompatiblen Endpunkt:
OPENAI_API_KEY=your-relay-token
OPENAI_API_BASE=https://relay.example/v1
PENTESTAGENT_MODEL=openai/<model-name-on-your-relay>
Für Anthropic-kompatible Endpunkte verwende stattdessen ANTHROPIC_API_BASE.
Siehe .env.example für vollständige Hinweise zu Anbietern und Embedding-Optionen.
pentestagent # TUI starten
pentestagent -t 192.168.1.1 # Mit Ziel starten
pentestagent tui --docker # Tools im Docker-Container ausführen
Führe Tools innerhalb eines Docker-Containers aus – für Isolation und vorinstallierte Pentesting-Tools.
# Basis-Image mit nmap, netcat, curl
docker run -it --rm \
-e ANTHROPIC_API_KEY=your-key \
-e PENTESTAGENT_MODEL=claude-sonnet-4-20250514 \
ghcr.io/gh05tcrew/pentestagent:latest
# Kali-Image mit metasploit, sqlmap, hydra, etc.
docker run -it --rm \
-e ANTHROPIC_API_KEY=your-key \
ghcr.io/gh05tcrew/pentestagent:kali
# Bauen
docker compose build
# Ausführen
docker compose run --rm pentestagent
# Oder mit Kali
docker compose --profile kali build
docker compose --profile kali run --rm pentestagent-kali
Der Container führt PentestAgent mit Zugriff auf Linux-Pentesting-Tools aus. Der Agent kann nmap, msfconsole, sqlmap usw. direkt über das Terminal-Tool verwenden.
Erfordert eine installierte und laufende Docker-Installation.
PentestAgent hat drei Modi, die über Befehle in der TUI erreichbar sind:
| Modus | Befehl | Beschreibung |
|---|---|---|
| Assist | /assist <Aufgabe> | Einzelanweisung mit Tool-Ausführung |
| Agent | /agent <Aufgabe> | Autonome Ausführung einer einzelnen Aufgabe |
| Crew | /crew <Aufgabe> | Multi-Agent-Modus. Orchestrator erzeugt spezialisierte Arbeiter |
| Interact | /interact <Aufgabe> | Interaktiver Modus. Chatte mit dem Agenten, er hilft und führt durch das Pentesting-Verfahren |
/assist <Aufgabe> Eine einmalige Anweisung.
/agent <Aufgabe> Autonomen Agenten für Aufgabe ausführen
/crew <Aufgabe> Multi-Agent-Crew für Aufgabe ausführen
/interact <Aufgabe> Im geführten Modus mit dem Agenten chatten
/target <Host> Ziel setzen
/tools Verfügbare Tools auflisten
/notes Gespeicherte Notizen anzeigen
/report Bericht aus der Sitzung generieren
/memory Token-/Speichernutzung anzeigen
/prompt System-Prompt anzeigen
/conversations Gespeicherte Unterhaltungen durchsuchen und wiederherstellen
/mcp <list/add> MCP-Server visualisieren oder hinzufügen.
/spawn [target] [--scope CIDR] [--model M] [--no-rag] [--no-mcp]
Manuell einen untergeordneten MCP-Agenten aus der TUI erzeugen.
/despawn <server_name>
Einen zuvor erzeugten untergeordneten Agenten beenden und entfernen.
/clear Chat und Verlauf löschen
/quit Beenden (auch /exit, /q)
/help Hilfe anzeigen (auch /h, /?)
Drücke Esc, um einen laufenden Agenten zu stoppen. Strg+Q zum Beenden.
PentestAgent enthält vorgefertigte Angriffs-Playbooks für Black-Box-Sicherheitstests. Playbooks definieren einen strukturierten Ansatz für bestimmte Sicherheitsbewertungen.
Ein Playbook ausführen:
pentestagent run -t example.com --playbook thp3_web

PentestAgent enthält integrierte Tools und unterstützt MCP (Model Context Protocol) zur Erweiterbarkeit.
Integrierte Tools: terminal, browser, notes, web_search (erfordert TAVILY_API_KEY), spawn_mcp_agent
spawn_mcp_agent)spawn_mcp_agent ist ein eingebautes Tool, das es einem laufenden Agenten ermöglicht, eine untergeordnete Kopie seiner selbst als untergeordneten MCP-Server zu erzeugen, der über stdio verbunden ist. Der untergeordnete Prozess ist vollständig isoliert – eigene Laufzeit, LLM-Client, Unterhaltungsverlauf und Notizenspeicher – und sein vollständiger Tool-Satz wird nach dem Spawning zurück in die verfügbaren Tools des übergeordneten Agenten injiziert.
Dies ermöglicht hierarchische Multi-Agent-Workflows ohne externe Orchestrierung: Der Agent organisiert sich selbst, indem er begrenzte Unteraufgaben an Kinder delegiert, die er bei Bedarf erzeugt.
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
target | string | — | Pentest-Ziel, das an das Kind übergeben wird |
scope | string[] | — | Innerhalb des Bereichs liegende Ziele/CIDRs für das Kind |
model | string | Umgebungsvariable | Modellbezeichner, überschreibt PENTESTAGENT_MODEL des Kindes |
no_rag | boolean | false | RAG-Engine-Initialisierung im Kind überspringen |
no_mcp | boolean | true | Externe MCP-Serververbindungen im Kind überspringen (empfohlen) |
Nachdem spawn_mcp_agent zurückgekehrt ist, sind die Tools des Kindes (run_task, run_task_async, await_tasks usw.) beim nächsten Tool-Aufruf verfügbar. Der Server-Name des Kindes wird automatisch zugewiesen (z.B. child_agent_1) und im Ergebnis zurückgegeben.
Beispiel – Orchestrator delegiert parallele Reconnaissance an zwei Kinder:
# Runde 1: zwei isolierte Kind-Agenten erzeugen
spawn_mcp_agent target="10.0.1.0/24" scope=["10.0.1.0/24"]
spawn_mcp_agent target="10.0.2.0/24" scope=["10.0.2.0/24"]
# Runde 2: Tools der Kinder sind jetzt verfügbar – delegiere Arbeit asynchron
child_agent_1__run_task_async task="Full port scan and service enumeration"
child_agent_2__run_task_async task="Full port scan and service enumeration"
# Runde 3: warten und sammeln
child_agent_1__await_tasks task_ids=["<id1>"] timeout_seconds=600
child_agent_2__await_tasks task_ids=["<id2>"] timeout_seconds=600
child_agent_1__get_task_result task_id="<id1>"
child_agent_2__get_task_result task_id="<id2>"