
Autonomer KI-Penetrationstest-Agent, der Multi-Agenten-Aufklärung, Exploitation, Post-Exploitation und Berichterstellung mit persistentem Engagement-Zustand orchestriert.
KI-Penetrationstest-Agent in deinem Terminal.
Multi-Agent-Architektur • Engagement-Status-Tracking • 20+ LLM-Anbieter
PentestCode ist ein autonomer Pentesting-Agent für dein Terminal. Richte es auf ein Ziel aus, und es führt die Tools aus, liest die Ausgabe, aktualisiert sein Bild vom Netzwerk und entscheidet, was als Nächstes zu tun ist — so, wie es ein Operator tun würde. Ein Hard Fork von OpenCode (MIT), befreit vom Fokus auf Codebearbeitung und neu aufgebaut für offensive Sicherheit.
Beta — es hält bei echten Engagements und CTFs stand, aber rechne mit rauen Kanten. Melde ein Issue, wenn etwas kaputtgeht; genau das macht es besser.
Eine Anweisung rein, eine vollständige Angriffskette raus:
you: "pentest 10.10.10.5, goal is domain admin"
Es ist methodisch, wo Menschen nachlässig werden: Es sprayt sämtliche Zugangsdaten gegen jeden Dienst auf jedem Host und vergisst nicht, Dinge zu überprüfen. Alles, was es lernt, landet in einem strukturierten Zustand, den du während des Laufs mit /status, /vulns oder /creds abfragen kannst.
npm install -g pentestcode-ai
# via curl
curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Ein einzelnes, eigenständiges Binary — kein Bun, Node oder Laufzeit erforderlich. Linux und macOS, x64 und arm64.
Version pinnen:
PENTESTCODE_VERSION=0.1.7 curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Benutzerdefiniertes Verzeichnis:
PENTESTCODE_INSTALL=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Aus dem Quellcode:
bun install
bun run build --single --skip-embed-web-ui
# binary at packages/opencode/dist/pentestcode-<os>-<arch>/bin/pentestcode
pentestcode auth login # connect your LLM provider
pentestcode # interactive session
pentestcode --prompt "scan 10.10.10.0/24 and enumerate all services" # one-shot
Funktioniert mit 20+ Anbietern über ai-sdk — Anthropic, OpenAI, Google, Azure, AWS Bedrock, Ollama und mehr.
Zwei Dinge unterscheiden PentestCode von einem Pentester-Prompt, der in ein Chat-Fenster eingefügt wurde: ein Team von Agenten und ein Gedächtnis, das sie teilen.
Das Design folgt dem Strategist-Coordinator-Modell aus der HPTSA-Forschung — eine 4,3-fache Verbesserung gegenüber einem einzelnen Agenten:
┌─────────────┐
│ pentest │ strategist / coordinator
│ (lead) │ plans, dispatches, tracks state
└──────┬──────┘
┌───────┬───────┼───────┬───────┐
▼ ▼ ▼ ▼ ▼
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│recon ││scan- ││explo-││iden- ││post- │
│ ││ner ││iter ││tity ││explo │ ... + 7 more
└──────┘└──────┘└──────┘└──────┘└──────┘
Der Lead-Agent (pentest) zerlegt das Engagement in Aufgaben und entsendet spezialisierte Subagenten parallel — jeder mit eigenem System-Prompt, Tool-Berechtigungen und Fachwissen. Insgesamt 13 Agenten: Recon, Scanner, Enumerator, Exploiter, Identity (AD/Kerberos), Infrastructure (SNMP/IPMI/Datenbanken), Webapp (OWASP Top 10), Post-Exploit, Exploit-Dev, Critic (prüft False Positives), Reporter, plus versteckte Agenten für Kontextkomprimierung und Session-Verwaltung.
Wenn der Scanner einen Port findet, sieht der Enumerator das sofort — weil jeder Agent von einem einzigen strukturierten Engagement-Status liest und in ihn schreibt:
Der Status überlebt die Session: Schließe das Terminal, komm morgen zurück, und der Agent macht dort weiter, wo er aufgehört hat. Daneben protokolliert ein menschenlesbares findings.md jede Schwachstelle, jede Zugangsdaten-Kombination und jeden Zugriffsgewinn mit Zeitstempeln — tail -f darauf, um das Engagement live zu verfolgen.
18 integrierte Pentest-Tools zusätzlich zu Bash. Parser-Tools sind Pflicht: Nach dem Ausführen von nmap muss der Agent die Ausgabe durch nmap_parse schicken, anstatt das XML von Hand zu greppen, damit jedes Ergebnis den Engagement-Status erreicht.
19 kuratierte Wissenspakete, die bei Bedarf geladen werden, damit sie nur dann Kontext kosten, wenn es relevant ist:
Skills sind reines Markdown. Füge eigene hinzu, indem du eine SKILL.md in das Skills-Verzeichnis legst — keine Codeänderungen nötig.
Steuere eine Live-Session mit Slash-Befehlen:
Und stelle ein, wie viel Spielraum der Agent bekommt:
Die Modi lassen sich mit dem Pausenverhalten kombinieren — auto + pause always ergibt eine autonome Ausführung, die bei jedem Ergebnis zur Überprüfung anhält.
Ein Toolkit für die gesamte offensive Sicherheit:
Die Konfiguration liegt unter .pentestcode/pentestcode.jsonc:
{
"provider": {
"anthropic": {
"model": "claude-sonnet-4-20250514"
}
}
}
Anbieter: Anthropic, OpenAI, Google, Azure, AWS Bedrock, Ollama, Together, Groq, Fireworks, DeepSeek, Mistral und weitere über ai-sdk.
Fehlerberichte aus echter Nutzung sind das Wertvollste, das du senden kannst. Führe PentestCode auf einer CTF-Box, einer HTB-Maschine oder einem autorisierten Pentest aus, und wenn etwas schiefgeht — es gerät in Schleifen, übersieht einen offensichtlichen Pfad, erstickt an Tool-Ausgaben oder verschwendet Tokens — öffne ein Issue mit:
findings.md und/oder die relevante Session-AusgabeFeature-Anfragen und PRs sind ebenfalls willkommen. Die Codebasis ist TypeScript auf Basis der Effect-Bibliothek — siehe CLAUDE.md für die Architektur.
MIT — siehe LICENSE.
Hard Fork von OpenCode • Gebaut für offensive Sicherheit • Selbst gehostet & Open Source
| Phase | Was der Agent tut |
|---|
| Scan | nmap -sS -p- findet 7 offene Ports und parst das XML direkt in den Engagement-Status |
| Erkennen | Ports 88 + 389 → Domänencontroller. Startet drei Enumeratoren parallel (SMB, LDAP, HTTP) |
| Enumerieren | Null-SMB-Session → beschreibbare Freigabe. LDAP → Benutzerliste. Gobuster → Web-Verzeichnisse |
| Angriff | AS-REP-Roast → knackbarer Hash → erste gültige Zugangsdaten |
| Spray | Diese Zugangsdaten werden auf jedem bekannten Host gegen SMB, WinRM, LDAP und RDP gesprüht |
| Exploit | WinRM-Zugang → Post-Exploit-Agent extrahiert SAM / LSA / DPAPI |
| Ergebnis | Domain-Admin-Hash in der Hand — jeder Schritt mit seiner Beweiskette protokolliert |
| Tool | Was es tut |
|---|
nmap_parse | nmap-XML parsen → Hosts/Dienste automatisch befüllen |
nuclei_parse | Nuclei-JSON parsen → Schwachstellen mit Schweregrad anlegen |
cme_parse | NetExec-Ausgabe parsen → Zugangsdaten/Zugriff/Hosts aktualisieren |
gobuster_parse | Dir-Brute-Ausgabe parsen → Ergebnisse klassifizieren |
bloodhound_parse | SharpHound-JSON parsen → AD-Modell befüllen |
sqlmap_parse | sqlmap-Ausgabe parsen → Injection-Punkte extrahieren |
xss_detect | Antworten auf reflektiertes/gespeichertes XSS analysieren |
jwt_analyze | JWT dekodieren, alg:none/schwaches HMAC/Ablauf prüfen |
cred_spray | Credential-Spraying über alle entdeckten Dienste planen |
scope_check | CIDR/Wildcard-Scope-Validierung |
attack_path_suggest | Kostenbasierte Pfadsuche durch den Beziehungsgraphen |
tunnel_manage | SSH/chisel/ligolo-Tunnel planen, Live-Sessions verfolgen |
phase_control | Phasenverwaltung mit Qualitäts-Gates |
report_gen | Markdown/JSON-Pentestberichte generieren |
state_update | Ergebnisse protokollieren (30+ Mutationsarten, Batch-Modus) |
state_query | Engagement-Status abfragen (20+ Abfragetypen) |
| Befehl | Was es tut |
|---|
/status | Engagement-Dashboard — Hosts, Schwachstellen, Zugangsdaten, Phase |
/targets | Host- & Dienst-Tabelle |
/vulns | Ergebnisse nach Schweregrad |
/creds | Entdeckte Zugangsdaten |
/scope | Ziel-Scope anzeigen/bearbeiten |
/phase | Phasenverwaltung |
/mode | Auto / Free / Guided umschalten |
/pause | Bei Ergebnissen pausieren (nie / immer / Checkpoint) |
/report | Pentestbericht generieren |