
pentest-ai v1.4.0
Open-Source-KI-Pentester, der jeden Befund beweist. Maschinen-Orakel führen jeden Exploit erneut aus; verifizierte Bugs werden mit einer Proof-Kapsel ausgeliefert, die du selbst erneut abspielen kannst.
pentest-ai
Es flaggt nicht. Es beweist.
Website · Installation · Warum Verifikation · Benchmarks · Grenzen · Discord
⚠️ Angriffswerkzeug, nur mit Autorisierung testen. Mit der Installation akzeptierst du die AUP und die AGB. Siehe Verantwortungsvolle Nutzung ↓
Zwei Minuten, kein API-Schlüssel, kein eigenes Ziel
pip install ptai && ptai demo
ptai demo scannt eine mitgelieferte verwundbare App und gibt 4 findings, 3 oracle-VERIFIED aus.
Es spielt einen Live-Beweis aus einer Proof-Kapsel erneut ab (replay 3/3), führt dann dieselben Routen
gehärtet aus und gibt 0 findings aus.
Zwei Dinge fallen auf. Die Findings erscheinen und verschwinden mit der Schwachstelle, nicht weil das Tool still wurde — das Einzige, was sich zwischen den beiden Läufen geändert hat, ist der Fix. Und eines der vier bleibt ein Kandidat: Der SQLi-Login- Bypass ist real, aber kein Oracle konnte ihn auf dieser Route erneut beweisen, also bekommt er kein Badge. Diese Lücke ist das Produkt, das funktioniert, kein Bug in der Demo.
Was VERIFIED hier tatsächlich bedeutet
Die meisten Scanner sagen dir, dass etwas möglicherweise ausnutzbar ist, und überlassen das Triage dir. ptai behandelt ein Finding als Kandidaten, bis ein benanntes Maschinen-Oracle den Exploit erneut ausführt und ihn N von N Mal reproduziert. Erst dann verdient es VERIFIED.
Drei Eigenschaften machen das zu mehr als einem Slogan:
Kein LLM erzeugt jemals ein Urteil. Die Regel ist im Code durchgesetzt, nicht durch Richtlinie: Ein Urteil, das das Oracle, das es verdient hat, nicht benennen kann, wird abgelehnt. Ein LLM koordiniert den Lauf und denkt über Ergebnisse nach. Es entscheidet nie, ob ein Bug real ist.
Jedes Oracle hat eine Kontrolle, die fehlschlagen muss. Ein Trusted-Header-Bypass muss privilegierten Inhalt mit dem Header und eine Verweigerung ohne ihn zurückgeben. Ein Leak-Credential-Check muss für das echte Geheimnis akzeptiert und für einen absichtlich korrumpierten Zwilling abgelehnt werden. Ein Endpunkt, der auf alles mit 200 antwortet, verdient nichts. Das verhindert, dass „es gab 200 zurück“ mit einem Beweis verwechselt wird.
Ausgaben von Drittanbieter-Scannern werden zurückgehalten. nuclei-, nikto- und zap-Ergebnisse werden nicht aus eigener Autorität zu Findings. Sie bleiben unverifiziert, bis eines von ptai's eigenen Oracles sie unabhängig erneut beweist.
Jedes VERIFIED-Finding wird als portable Proof-Kapsel geliefert — das Finding, das
Rezept, es erneut zu beweisen, und die Quittung. Jeder kann ptai replay gegen das
Live-Ziel ausführen und zusehen, wie das Oracle erneut bestätigt, ohne ptai zu vertrauen. Kapseln sind
bewusst unsigniert: Replay ist der Vertrauensmechanismus, keine Signatur, die du
im Glauben annehmen musst.
Ehrliche Zahlen
| Schwachstellenklassen mit funktionierendem Oracle | 14 |
| Probes in der Bibliothek | 64 |
| Probes, die VERIFIED verdienen können | 30 |
| Oracle-Arten | 24 |
| Tool-Wrapper | 203 |
| …die heute Ausgabe in Findings parsen | 18 |
| MCP-Tools | 52 |
| Spezialisten-Agenten | 18 |
| Tests | 2.729 auf Python 3.10 / 3.12 / 3.14 |
Auf einem absichtlich verwundbaren Honeypot verifizieren 23 Findings über diese 14 Klassen
mit 100 % Präzision und null False Positives. Auf einem Standard-OWASP-Juice-Shop
verifizierten 17 Findings im Sweep vom 2026-08-23 — Bericht im Scope-HTTP / verifiziert /
Präzision, nicht 17/116. Eine Path-1-MCP-Sitzung vom 2026-08-25 (MCP-Client steuert
run_probe, Ziel starb vor der Orchestrator-Verifikation) verdiente 12 verifizierte Beweise
mit 100 % Präzision gegen 64 im Scope liegende HTTP-Herausforderungen (20 werden nicht verfolgt). OSINT,
Web3 und UI-only Juice-Shop-Schlüssel sind bewusst aus der Automatisierungs-Bestenliste ausgeschlossen.
Lies diese Zahlen sorgfältig, denn die Lücken sind der Punkt. 64 Probes existieren, aber nur 30 können ein Urteil verdienen; die anderen 34 melden ehrliche Kandidaten. 203 Wrapper sind registriert, aber nur 18 verwandeln Tool-Ausgabe in Findings — der Rest läuft und gibt Rohtext zurück. Das Oracle-Gate kauft Präzision, nicht Trefferquote: Es entfernt False Positives, es findet nicht mehr Bugs.
Das Honeypot-Harness (tests/honeypot/) und ein Clean-App-
Gate mit null False Positives (tests/cleanapp/) sind beide in diesem
Repo enthalten und laufen in CI, also sind diese reproduzierbar statt Screenshots.
Was es nicht tut
Klar gesagt, weil ein Sicherheitstool, das sich selbst überverkauft, schlimmer als nutzlos ist.
- Es ist ein Webanwendungs-Scanner. Alle 64 Probes und alle 24 Oracle-Arten zielen auf HTTP. AD, Cloud, Mobile und Wireless haben Agenten und Tool-Wrapper, aber keine Probe- Bibliothek und keine Oracles dahinter.
- Es kann keine lokale Privilege Escalation durchführen. Das erfordert Code-Ausführung auf einem Host,
den du bereits besitzt. ptai testet remote und hat keinen solchen Kanal, also meldet der
Privesc-Agent
unsupportedstatt einer irreführenden Null. - Es ist kein CVE-Scanner. Es gibt keine Versions-zu-CVE-Datenbank und keine Exploit- Bibliothek. CVE-Arbeit ist auf osv.dev-Abfragen zu geleakten Manifests beschränkt.
- Playbooks planen, sie führen nicht aus.
ptai playbook runlöst Abhängigkeiten auf und druckt den Plan. Das Ausführen gegen ein Ziel ist noch nicht verdrahtet. - Es ist nicht autonom. Vollautonome LLM-Pentest-Agenten schließen 21–31 % der Aufgaben Ende-zu-Ende ab; menschlich unterstützte Setups erreichen 64 %. ptai ist für das zweite Regime gebaut. Drücke zweimal Strg+C, um mitten im Lauf zu übernehmen.
Die vollständige interne Defektliste, einschließlich allem oben Genannten, wird offen statt still verfolgt. Wenn hier etwas falsch ist, öffne ein Issue und es wird korrigiert.
Installation
Pfad 1 — Steuere es von Claude Code, Cursor oder Codex (kein API-Schlüssel)
Dein bestehendes KI-Abo ist das LLM. ptai liefert die Tools.
pip install ptai
ptai mcp install # erkennt deine MCP-Clients automatisch und schreibt deren Konfigurationen
Starte den Client neu und 52 Tools sind da. Auf diesem Pfad ist kein Anthropic-Schlüssel nötig — der MCP-Server hostet bewusst kein eigenes LLM.
Pfad 2 — Eigenständige CLI
pip install ptai
export ANTHROPIC_API_KEY=sk-... # oder OPENAI_API_KEY
ptai start https://target.example.com
# vollständig lokal, keine Cloud:
export PENTEST_AI_LLM_PROVIDER=ollama
# oder deterministisch, ganz ohne LLM:
ptai start https://target.example.com --no-llm
Die Ausgaben sind standardmäßig auf 10 $ pro Engagement begrenzt (PTAI_PRICE_LIMIT).
Sicherheitstools, REST-API und andere Optionen
ptai tools install --tier core # oder recommended / full
ptai tools install nmap nuclei # oder nach Name
ptai serve # HTTP REST + WebSocket für Dashboards
ptai menu # interaktiver Launcher, kein LLM
Zu Beginn eines Engagements sagt der Planer voraus, welche Tools der Lauf benötigt, und fragt einmal, die fehlenden zu installieren. Lehne ab und die Antwort bleibt bestehen.
Benchmarks
Reproduzierbar, in git, mit Roh-Artefakten. Keine „98,7 % Erkennungsrate“, die du nicht prüfen kannst.
| Tool | Findings | Critical+High | OWASP-Buckets | FP-Rate |
|---|---|---|---|---|
| ptai | 88 | 46 | 5 | 0 % |
| ZAP 2.17.0 | 593 | 0 | 1 | 47 % |
| Nuclei 3.8.0 | 1 | 0 | 1 | 0 % |
| HexStrike v6.0 | 11 | 0 | 1 | – |
n=1, Einzelbewertung, Einzelschuss auf OWASP Juice Shop. Methodik und Rohausgabe in
benchmarks/; vollständiger Bericht in docs/benchmarks/juice-shop.md.
Die ehrliche Lesart: ptai ist stark bei SPA-Web-Zielen mit kuratierter Probe-Abdeckung. HexStrike ist breiter (Cloud, Binary, CTF) und schlägt ptai wahrscheinlich bei traditionell crawlbareren Oberflächen wie WordPress. Juice Shop ist außerdem die am besten dokumentierte verwundbare App im Internet, also haben sowohl das LLM als auch die Probe-Autoren einen Vorsprung — was genau der Grund ist, warum die private Honeypot-Zahl niedriger ist und warum beide veröffentlicht werden.
In CI einbinden
- run: pip install ptai
- run: ptai start ${{ vars.STAGING_URL }} --ci --fail-on verified --sarif pentest.sarif
- uses: github/codeql-action/upload-sarif@v3
with: { sarif_file: pentest.sarif }
--fail-on verified bricht den Build nur bei einem Finding ab, das ein Oracle tatsächlich bewiesen hat,
damit das Gate nicht durch Scanner-Rauschen ausgelöst werden kann. SARIF wird in GitHub Code
Scanning hochgeladen, Findings werden als PR-Kommentar gepostet. GitLab- und Jenkins-Vorlagen in
docs/ci-cd.md.
So funktioniert es
recon ──▶ auth ──▶ web ──┬──▶ ad
├──▶ cloud ┌──────────────────┐
└──▶ api ──────────▶│ findings DB │
│ scope-guarded │
└────────┬─────────┘
▼
verify (oracles, N/N)
▼
chain ─▶ validate ─▶ detect ─▶ report
md · html · pdf · SARIF · JUnit
18 Spezialisten-Agenten führen die Phasen aus. Mit einem API-Schlüssel nutzt jeder ein LLM, um über Ergebnisse nachzudenken; ohne einen läuft er als deterministische Tool-Schleife. Die Phasenreihenfolge und die Erkennung sind in beiden Fällen identisch — die Probes finden die Bugs, das LLM koordiniert nur.
Für wen es gedacht ist
AppSec-Teams, die einen authentifizierten Scan in jeden PR einbinden, mit einem Gate, das nur bei bewiesenen Findings auslöst. Berater, die wollen, dass sich der Bericht selbst schreibt, und eine Kapsel, die die eigenen Ingenieure des Kunden erneut abspielen können. Bug-Bounty-Jäger, die lieber 12 bewiesene Findings als 600 Vielleichts triagieren. Claude-Code-/Cursor-/Codex-Nutzer, die echte Werkzeuge hinter ihrem Assistenten wollen, ohne eine weitere API-Rechnung.
Arbeite mit mir
Das Tool ist MIT und für immer kostenlos — das wird sich nicht ändern.
Wenn du einen Pentest geliefert bekommen willst, statt ihn selbst auszuführen, oder einen gehosteten Arbeitsbereich mit Verlauf und Teamzugriff, beides gibt es unter pentestai.xyz. Jedes Finding in einem gelieferten Engagement wird mit einer Proof-Kapsel geliefert, die deine Ingenieure selbst erneut abspielen können — ein materiell anderes Artefakt als ein PDF voller Schweregrade.
Fragen: [email protected]
Verantwortungsvolle Nutzung
ptai führt echte Netzwerk- und Host-Operationen gegen die von dir angegebenen Ziele aus. Du bist allein dafür verantwortlich, eine ausdrückliche schriftliche Autorisierung für jedes Ziel zu haben. Das Testen von Systemen, die du nicht besitzt, kann gegen den Computer Fraud and Abuse Act, den Computer Misuse Act 1990, GDPR Artikel 32 und entsprechende Gesetze anderswo verstoßen.
Der erste Lauf fragt nach AUP-Akzeptanz und speichert sie. Setze
PENTEST_AI_AUP_ACCEPTED=1 in CI. Hosts außerhalb des Scopes werden zum
Zeitpunkt des Tool-Aufrufs abgelehnt. Drei Schutzmechanismen sind standardmäßig ausgeschaltet und es lohnt sich, sie
einzuschalten: intensity=safe überspringt zustandsverändernde Probes, respect_rate_limits respektiert
429/Retry-After, und strict_scope lehnt Anfragen an fremde Hosts ab.
Out-of-band-Callbacks (OAST) — Datenschutz
Blinde Klassen (blind SSRF/SQLi/XXE, stored XSS, SSTI, Log4Shell) werden über
Callbacks erkannt, die standardmäßig zu ProjectDiscoverys öffentlichem oast.fun routen.
Jedes Engagement erzeugt lokal ein frisches RSA-2048-Schlüsselpaar. Interaktions-Payloads werden AES-CTR-256 im Ruhezustand verschlüsselt, wobei der Schlüssel in RSA-OAEP-SHA256 zu deinem öffentlichen Schlüssel gewickelt ist, sodass nur dein lokaler Prozess sie entschlüsseln kann. Aber Metadaten sind server-sichtbar: dass eine Interaktion stattfand, die Quell-IP des Ziels, Zeitstempel und Protokoll.
PortSwigger verbietet die Nutzung des öffentlichen Collaborators in ihren Bug-Bounty-Regeln, und große Programme verlangen zunehmend tester-kontrollierte Callback-Infrastruktur. Für bezahlte Engagements hoste Interactsh selbst:
ptai start http://target --oast-server https://oast.example.com --oast-token <T>
ptai start http://target --no-oast # oder komplett deaktivieren
FAQ
Brauche ich einen API-Schlüssel? Nicht auf dem MCP-Pfad — dein Claude-Code-/Cursor-/Codex- Abo ist das LLM. Nur die eigenständige CLI braucht einen, und selbst dort läuft Ollama vollständig lokal.
Ist es autonom? Nein, und es behauptet das auch nicht. Die Probes erkennen, das LLM koordiniert, du entscheidest. Zweimal Strg+C übernimmt mitten im Lauf.
Sicher gegen Produktion? Nur mit schriftlicher Autorisierung und den drei Schutzmechanismen oben eingeschaltet.
Meldet es sich nach Hause? Nicht standardmäßig. Findings bleiben auf deiner Festplatte. Du kannst
anonyme Nutzungszähler mit ptai telemetry enable aktivieren (keine Ziele,
keine Findings; Schema in engine/telemetry.py). OAST-Callbacks standardmäßig zu
ProjectDiscoverys oast.fun, außer du übergibst --oast-server oder --no-oast.
Wie unterscheidet sich das davon, Claude zu bitten, etwas zu hacken? Eine kuratierte deterministische Probe-Bibliothek findet die Bugs und ein Maschinen-Oracle beweist sie. Ein LLM allein gibt dir eine plausible Vermutung ohne Möglichkeit zu sagen, ob sie real ist.
Ökosystem
| Repo | Was |
|---|---|
| pentest-ai | Dieses Repo. CLI + MCP-Server. |
| pentest-ai-agents | Eigenständige Claude-Code-Subagent-Dateien. Optional. |
Community: Discord · Diskussionen · Issues
Stern-Verlauf
Das alte Inline-Diagramm (api.star-history.com) ist leer: GitHub hat die öffentliche Stargazers-API eingeschränkt, von der diese SVGs abhingen. Die Live-Serie ist auf star-history.com. Das README verlinkt keinen Ersatz-Host — der Browser jedes Besuchers hätte dieses SVG abgerufen.
Lizenz
MIT. Mach damit, was du willst.
Wenn ptai dir einen Sonntag erspart hat, gib dem Repo einen Stern.