
Framework agentico per Penetration Testing automatizzato basato su Large Language Models
[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url] [![Discord][discord-shield]][discord-url]
Agente di Penetration Testing Autonomo Alimentato da IA
Pubblicato a USENIX Security 2024
Sito ufficiale: pentestgpt.com »
Articolo di Ricerca
·
Segnala un Bug
·
Richiedi una Funzionalità
La pipeline autonoma per CTF è collegabile al backend per Claude Code e Codex. La modalità modernizzata legacy interattiva (
pentestgpt-legacy) supporta un set più ampio di provider: OpenAI, Anthropic, Google Gemini, DeepSeek, xAI, Qwen, Moonshot e Ollama locale. Vedi Modalità Interattiva Multi-LLM.
claude) - installato e autenticato per esecuzioni locali di Claude. Vedi Documentazione Claude Codecodex) - installato e autenticato per esecuzioni locali di Codex. Il flusso Docker qui sotto include entrambi i CLI.git clone https://github.com/GreyDGL/PentestGPT.git
cd PentestGPT
make install # esegue uv sync
| Comando | Descrizione |
|---|---|
make install | Installa le dipendenze |
make test | Esegui tutti i test |
make check | Esegui lint + typecheck |
make build | Crea pacchetto distribuibile |
# Esegui contro un target (modalità CTF predefinita)
pentestgpt --target 10.10.11.234
# Con contesto della sfida
pentestgpt --target 10.10.11.50 --instruction "Sito WordPress, concentrati su vulnerabilità dei plugin"
# Modalità penetration test (scoperta asset → vulnerabilità → report)
pentestgpt --target 10.10.11.234 --mode pentest
# Elenca sessioni salvate in precedenza
pentestgpt --list-sessions
L'agente lavora attraverso una pipeline multistadio, alimentando ogni fase con i risultati della precedente — ricognizione → exploit → walkthrough per CTF, scoperta asset → identificazione vulnerabilità → report per pentest.
Un'immagine autonoma include lo strumento insieme ai CLI di Claude Code e Codex. Accedi una volta e le sessioni persistono in volumi nominati — nessun nuovo login nelle esecuzioni successive.
make docker-build # costruisci l'immagine dello strumento
make docker-login # UNICA VOLTA, idempotente: verifica i login, effettua login solo per quelli mancanti
make docker-auth-status # verifica che entrambi siano loggati (ROUNDTRIP=1 per un controllo live con 1 token)
# Esegui la pipeline contro un target (qualsiasi backend / modello / modalità):
make docker-run TARGET=http://127.0.0.1:8000 BACKEND=codex MODEL=gpt-5.5 MODE=ctf
make docker-run TARGET=10.10.11.234 BACKEND=claude MODEL=opus MODE=pentest
make docker-login effettua il login per Claude (setup-token → token salvato nel volume) e Codex (il
suo codex login interno, callback OAuth inoltrato via socat — non seminato, poiché i token di aggiornamento ChatGPT
sono monouso). È idempotente: rieseguendo salta ciò che è ancora valido. I login persistono anche dopo
la ricreazione del contenitore; make docker-down li mantiene, make docker-nuke rimuove i volumi di login (per
forzare un nuovo login / ruotare un token). Design + dettagli: docs/docker-dev-plan.md.
Il classico PentestGPT con intervento umano dell'articolo USENIX 2024 è preservato e
modernizzato come pentestgpt-legacy. Esegue tre sessioni LLM cooperanti —
ragionamento / generazione / parsing — che mantengono un Albero dei Compiti di Penetration Testing (PTT) mentre
guidano la sessione in modo interattivo (next, more, todo, discuss). La pipeline autonoma a fasi fisse
supporta backend Claude e Codex; questa modalità legacy parla nativamente a molti provider
tramite i loro SDK ufficiali.
Imposta una chiave API per qualsiasi provider desideri utilizzare (nell'ambiente o .env — vedi
.env.example). Vengono abilitati solo i provider che configuri.
OPENAI_API_KEY=... ANTHROPIC_API_KEY=... GEMINI_API_KEY=... # o GOOGLE_API_KEY
DEEPSEEK_API_KEY=... GROK_API_KEY=... QWEN_API_KEY=... KIMI_API_KEY=...
# Seleziona automaticamente i migliori modelli disponibili per ogni sessione
pentestgpt-legacy
# Scegli modelli per sessione
pentestgpt-legacy --reasoning-model claude-opus-4-8 --parsing-model gemini-3.5-flash
# Modello locale tramite Ollama (compatibile OpenAI)
pentestgpt-legacy --reasoning-model ollama:qwen3 --base-url http://localhost:11434/v1
# Elenca tutti i modelli supportati (mostra quali provider sono configurati)
pentestgpt-legacy --list-models
# Round-trip live di ogni modello configurato e stampa una matrice pass/fail
pentestgpt-legacy --smoke-test
pentestgpt-legacy --list-models mostra sempre il registro live. Riesegui --smoke-test
dopo che gli ID dei modelli cambiano. Istantanea attuale: