
Guardian è uno strumento CLI di automazione dei test di penetrazione basato sull'IA, pronto per la produzione, che sfrutta Google Gemini e LangChain per orchestrare flussi di lavoro di penetration test intelligenti e passo dopo passo, mantenendo gli standard di hacking etico.
Guardian è un framework di automazione per penetration testing di livello enterprise basato su IA che combina molteplici provider AI (OpenAI GPT-4, Claude, Google Gemini, OpenRouter, Requesty) con strumenti di sicurezza collaudati sul campo per fornire valutazioni di sicurezza intelligenti e adattive con acquisizione completa di prove.
Funzionalità • Installazione • Avvio rapido • Documentazione • Contribuisci
Guardian è progettato esclusivamente per test di sicurezza autorizzati e scopi educativi.
Sei pienamente responsabile di assicurarti di avere un'autorizzazione scritta esplicita prima di testare qualsiasi sistema. L'accesso non autorizzato a sistemi informatici è illegale secondo leggi come il Computer Fraud and Abuse Act (CFAA), il GDPR e la legislazione internazionale equivalente.
Utilizzando Guardian, accetti di usarlo solo su sistemi di tua proprietà o per i quali hai esplicita autorizzazione al test.
[project.entry-points."guardian.providers"] — nessun fork richiestothink_deeply swap-and-restore — modello grande pensa, modello piccolo giudica, riduzione dei costi di ~10x50 Strumenti di Sicurezza Integrati in 10 Categorie:
execution_idsession_<id>.json con checkpoint atomico abilita --resumedepends_on eseguiti in parallelo fino a max_parallel_toolsparameters: {key: "{{ <id>.parsed.alive_hosts }}"} risolve sui risultati dei passaggi precedentiwhen: bloccano l'esecuzione in base all'output precedente--resume riprende dall'ultimo passaggio completatoagent: debate | visual | analyst sui passaggi di analisisecurity-severity, deduplicazione fingerprints da execution_idguardian report --export sarif --export defectdojo --export slack<UNTRUSTED_TOOL_OUTPUT> + rimozione ANSIasyncio; agenti asincroni--help rimane sotto 500msGuardian può utilizzare intelligentemente questi strumenti se installati:
Nota: Guardian funziona senza strumenti esterni ma con capacità di scansione limitate. L'IA si adatterà in base agli strumenti disponibili.
git clone https://github.com/zakirkun/guardian-cli.git cd guardian-cli
### Step 2: Configurare l'ambiente Python
**Linux/macOS:**```bash
python3 -m venv venv
source venv/bin/activate
pip install -e .
Windows:```powershell python -m venv venv .\venv\Scripts\activate pip install -e .
### Passaggio 3: Configurare il Provider AI
Guardian supporta diversi provider AI. Configura il tuo provider preferito in `config/guardian.yaml`:```yaml
# config/guardian.yaml
ai:
# Choose your provider: openai, claude, gemini, openrouter, or requesty
provider: openai
# OpenAI Configuration (recommended)
openai:
model: gpt-4o
api_key: sk-your-api-key-here # Or set OPENAI_API_KEY env var
# Claude Configuration
claude:
model: claude-3-5-sonnet-20241022
api_key: null # Or set ANTHROPIC_API_KEY env var
# Gemini Configuration
gemini:
model: gemini-2.5-pro
api_key: null # Or set GOOGLE_API_KEY env var
# OpenRouter Configuration
openrouter:
model: anthropic/claude-3.5-sonnet
api_key: null # Or set OPENROUTER_API_KEY env var
# Requesty Configuration (OpenAI-compatible gateway)
requesty:
model: openai/gpt-4o-mini
api_key: null # Or set REQUESTY_API_KEY env var
Oppure usa le variabili d'ambiente:```bash
export OPENAI_API_KEY="sk-your-key-here" export ANTHROPIC_API_KEY="sk-ant-your-key-here" export GOOGLE_API_KEY="your-gemini-key" export OPENROUTER_API_KEY="your-router-key" export REQUESTY_API_KEY="your-requesty-key"
$env:OPENAI_API_KEY="sk-your-key-here" $env:ANTHROPIC_API_KEY="sk-ant-your-key-here"
### Step 4: Inizializza configurazione```bash
# Verify installation
python -m cli.main --help
# Check AI provider status
python -m cli.main models
python -m cli.main workflow list
python -m cli.main models
python -m cli.main workflow run --name web_pentest --target example.com --provider openai
### Esempi di Scenari di Utilizzo
#### 1. Test Rapido di Penetrazione di Applicazioni Web```bash
# Fast security check with evidence capture
python -m cli.main workflow run --name web_pentest --target https://dvwa.csalab.app
Output Previsto:
python -m cli.main workflow run --name network --target 192.168.1.0/24
#### 3. Flusso di lavoro personalizzato con parametri```bash
# Run with workflow-specific parameters
# Parameters in workflow YAML override config defaults
python -m cli.main workflow run --name web_pentest --target example.com
Priorità dei parametri del flusso di lavoro:
python -m cli.main report --session 20260203_175905 --format html
#### 5. Cambia fornitori AI```bash
# Use OpenAI GPT-4
python -m cli.main workflow run --name web_pentest --target example.com --provider openai
# Use Claude
python -m cli.main workflow run --name web_pentest --target example.com --provider claude
# Use Gemini
python -m cli.main workflow run --name web_pentest --target example.com --provider gemini
# Local Ollama (no cloud)
OLLAMA_HOST=http://localhost:11434 python -m cli.main workflow run --name recon --target scanme.nmap.org --provider ollama
# Any OpenAI-compatible endpoint (vLLM, LM Studio, Together, Groq)
python -m cli.main workflow run --name web_pentest --target example.com --provider openai_compatible
python -m cli.main kb seed
python -m cli.main kb status
python -m cli.main kb query "log4j JNDI" --top 5
python -m cli.main kb update --kind cve --file ./nvd-2025.json
Abilita il grounding dell'analista in `config/guardian.yaml`:```yaml
rag:
enabled: true
top_k: 5
python -m cli.main workflow run --name web_pentest_with_debate --target https://example.com
Tre ruoli (avvocato rosso, avvocato blu, giudice) dibattono solo risultati ambigui — i verdetti sicuri saltano il dibattito per limitare il costo dei token.
#### 8. Triage visivo (vision-LLM)```bash
# Captures full-page screenshots and feeds them to a vision-capable provider
python -m cli.main workflow run --name web_visual_pentest --target https://example.com --provider openai
Richiede playwright: pip install playwright && python -m playwright install chromium. Saltato silenziosamente quando il provider attivo non ha supporto per la visione.
python -m cli.main report --session 20260203_175905 --export sarif
python -m cli.main report --session 20260203_175905 --export sarif --export defectdojo --export slack
--slack-webhook https://hooks.slack.com/services/...
#### 10. Telemetria + Learned Ranker (offline)```bash
# Anonymise sessions into JSONL (no raw targets, no commands, no secrets)
python -m cli.main telemetry export ./reports --out telemetry.jsonl
# Train the offline tool ranker
python -m cli.main telemetry train telemetry.jsonl
# Inspect what the ranker learned
python -m cli.main telemetry status
Abilita in config:```yaml ai: use_learned_ranker: true # ToolAgent calls ranker before LLM selector
> **Utenti Windows**: Usa `python -m cli.main` invece di `guardian`
---
## 🔧 Configurazione
### Riferimento Completo alla Configurazione
Modifica `config/guardian.yaml` per personalizzare il comportamento di Guardian:```yaml
# AI Configuration
ai:
provider: openai # openai, claude, gemini, openrouter, requesty
openai:
model: gpt-4o
api_key: sk-your-key # Or use OPENAI_API_KEY env var
claude:
model: claude-3-5-sonnet-20241022
api_key: null
gemini:
model: gemini-2.5-pro
api_key: null
temperature: 0.2
max_tokens: 8000
# Penetration Testing Settings
pentest:
safe_mode: true # Prevent destructive actions
require_confirmation: true # Confirm before each step
max_parallel_tools: 3 # Concurrent tool execution
max_depth: 3 # Maximum scan depth
tool_timeout: 300 # Tool timeout in seconds
# Output Configuration
output:
format: markdown # markdown, html, json
save_path: ./reports
include_reasoning: true
verbosity: normal # quiet, normal, verbose, debug
# Scope Validation
scope:
blacklist: # Never scan these
- 127.0.0.0/8
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
require_scope_file: false
max_targets: 100
# Tool Configuration (defaults)
tools:
httpx:
threads: 50
timeout: 10
tech_detect: true
nuclei:
severity: ["critical", "high", "medium"]
templates_path: ~/nuclei-templates
nmap:
default_args: "-sV -sC"
timing: T4
Crea flussi di lavoro personalizzati nella directory workflows/:```yaml
name: custom_web_assessment description: Custom web security testing
steps:
name: http_discovery type: tool tool: httpx parameters: threads: 100 # Override config default (50) timeout: 15 # Override config default (10) tech_detect: true
name: vulnerability_scan type: tool tool: nuclei parameters: severity: ["critical", "high"] # Override config templates_path: ".shared/nuclei/templates/"
name: generate_report type: report
**Priorità dei parametri:**
- I parametri del workflow **sostituiscono** i parametri di configurazione
- I parametri di configurazione **sostituiscono** le impostazioni predefinite degli strumenti
- Workflow autonomi e riutilizzabili
---
## 📖 Documentazione
### Guide per l'utente
- **[Guida rapida](https://github.com/zakirkun/guardian-cli/blob/HEAD/QUICKSTART.md)** - Inizia in 5 minuti
- **[Riferimento comandi](https://github.com/zakirkun/guardian-cli/blob/HEAD/docs/)** - Documentazione dettagliata per tutti i comandi
- **[Guida alla configurazione](https://github.com/zakirkun/guardian-cli/blob/HEAD/config/guardian.yaml)** - Riferimento completo alla configurazione
- **[Guida ai workflow](https://github.com/zakirkun/guardian-cli/blob/HEAD/docs/WORKFLOW_GUIDE.md)** - Creazione di workflow personalizzati
- **[Guida alla valutazione](https://github.com/zakirkun/guardian-cli/blob/HEAD/docs/EVAL_GUIDE.md)** - Esecuzione e estensione del sistema di valutazione
- **[Guida ai plugin](https://github.com/zakirkun/guardian-cli/blob/HEAD/docs/PLUGIN_GUIDE.md)** - Distribuzione di provider e strumenti di terze parti
- **[Registro modifiche](https://github.com/zakirkun/guardian-cli/blob/HEAD/CHANGELOG.md)** - Cronologia versioni e note di migrazione
### Guide per sviluppatori
- **[Creazione di strumenti personalizzati](https://github.com/zakirkun/guardian-cli/blob/HEAD/docs/TOOLS_DEVELOPMENT_GUIDE.md)** - Crea le tue integrazioni di strumenti
- **[Sviluppo di workflow](https://github.com/zakirkun/guardian-cli/blob/HEAD/docs/WORKFLOW_GUIDE.md)** - Crea workflow di test personalizzati
- **[Strumenti disponibili](https://github.com/zakirkun/guardian-cli/blob/HEAD/tools/README.md)** - Panoramica degli strumenti integrati
### Panoramica dell'architettura```
Guardian Architecture:
┌─────────────────────────────────────────┐
│ AI Provider Layer │
│ (OpenAI, Claude, Gemini, OpenRouter, │
│ Requesty) │
└─────────────────────────────────────────┘
│
┌─────────────────────────────────────────┐
│ Multi-Agent System │
│ Planner → Tool Agent → Analyst → │
│ Reporter │
└─────────────────────────────────────────┘
│
┌─────────────────────────────────────────┐
│ Workflow Engine │
│ - Parameter Priority │
│ - Evidence Capture │
│ - Session Management │
└─────────────────────────────────────────┘
│
┌─────────────────────────────────────────┐
│ Tool Integration Layer │
│ (19 Security Tools) │
└─────────────────────────────────────────┘
guardian-cli/ ├── ai/ # AI integration │ └── providers/ # Multi-provider support │ ├── base_provider.py │ ├── openai_provider.py │ ├── claude_provider.py │ ├── gemini_provider.py │ ├── openrouter_provider.py │ └── requesty_provider.py ├── cli/ # Command-line interface │ └── commands/ # CLI commands (init, scan, recon, etc.) ├── core/ # Core agent system │ ├── agent.py # Base agent │ ├── planner.py # Planner agent │ ├── tool_agent.py # Tool selection agent │ ├── analyst_agent.py # Analysis agent │ ├── reporter_agent.py # Reporting agent │ ├── memory.py # State management │ └── workflow.py # Workflow orchestration ├── tools/ # Pentesting tool wrappers │ ├── nmap.py # Nmap integration │ ├── masscan.py # Masscan integration │ ├── httpx.py # httpx integration │ ├── subfinder.py # Subfinder integration │ ├── amass.py # Amass integration │ ├── nuclei.py # Nuclei integration │ ├── sqlmap.py # SQLMap integration │ ├── wpscan.py # WPScan integration │ ├── whatweb.py # WhatWeb integration │ ├── wafw00f.py # Wafw00f integration │ ├── nikto.py # Nikto integration │ ├── testssl.py # TestSSL integration │ ├── sslyze.py # SSLyze integration │ ├── gobuster.py # Gobuster integration │ ├── ffuf.py # FFuf integration │ └── ... # 15 tools total ├── workflows/ # Workflow definitions (YAML) ├── utils/ # Utilities (logging, validation) ├── config/ # Configuration files ├── docs/ # Documentation └── reports/ # Generated reports
---
## 🆕 Ultimi aggiornamenti
### Versione 4.0.0 — Nuova R&D + Espansione della Copertura
**Track A — R&D AI/Agenti (7 elementi)**
| ID | Elemento | Punti salienti |
|---|---|---|
| A1 | Base di conoscenza RAG | `core/knowledge_base.py` SQLite + FTS5 + embeddings opzionali; grounding dell'analista tramite slot `kb_references`; `guardian kb {seed,update,query,status}` |
| A2 | Triage del dibattito multi-agente | Solo su risultati MEDIUM-fp; nuovo tipo di passo di analisi `agent: debate` |
| A3 | Analisi di screenshot con Vision-LLM | `tools/playwright_screenshot.py` + `core/agents/visual_triage.py`; OpenAI + Claude `generate_with_images` |
| A4 | Contratto plugin + provider locali | Scoperta di entry-point per provider E strumenti; provider **Ollama** + **compatibili con OpenAI** forniti |
| A5 | Selezione appresa degli strumenti (offline) | `core/learners/tool_ranker.py` + `core/telemetry.py`; opt-in tramite `ai.use_learned_ranker: true` |
| A6 | Harness di valutazione | `evals/{__init__,scoring,fixtures_loader,test_*}.py` + golden fixtures; 3 livelli (parser, workflow, grounding dell'agente) |
| A7 | Aggiornamento modello giudice | `BaseAgent.think_deeply(judge_model=...)` swap-and-restore; giudizio basato su trascritto per una riduzione dei costi di circa 10x |
**Track B — Espansione della Copertura degli Strumenti (7 elementi)**
| ID | Categoria | Strumenti aggiunti |
|---|---|---|
| B8 | Active Directory | crackmapexec, bloodhound, kerbrute, impacket-secretsdump |
| B9 | Mobile Android | mobsf, apkleaks, objection |
| B10 | API fuzzers | schemathesis, restler, cariddi |
| B11 | SAST + segreti | semgrep, trufflehog, dependency-check |
| B12 | Red-team LLM | garak, pyrit, prompt_fuzz |
| B13 | Bridge Burp/ZAP | zap, burp |
| B14 | Esportatori di output | SARIF v2.1.0, DefectDojo, Slack |
**Standard di qualità:**
- 296 test superati (+93% rispetto alla baseline v3 di 153)
- Tutto l'hardening v3 preservato: delimitatori di prompt-injection, key scrub, ambito DNS-resolve, checkpoint atomici, rotazione dei log, caricamento lazy degli strumenti
- Il tempo di avvio di `guardian --help` rimane <500ms nonostante 50 strumenti
- Nuove superfici CLI: `guardian kb`, `guardian telemetry`
- 8 nuovi workflow forniti: `web_pentest_with_debate`, `web_visual_pentest`, `ad_assessment`, `mobile_android`, `llm_redteam`, `sast_review`, `api_pentest_v2`, più i workflow v3 esistenti
### Versione 3.0.0 — Hardening + Engine v2
- Delimitatori di prompt-injection (`<UNTRUSTED_TOOL_OUTPUT>`) su tutto l'output degli strumenti
- DAG scheduler, schemi Pydantic, checkpoint atomici, `--resume`
- 11 nuovi wrapper (cloud/container/SBOM/GraphQL/JWT/OSINT)
- Ricalcolo CVSS v3.1 + rilevamento drift
- Rotazione log, key scrub al momento della scrittura
- Gate di conferma collegato per strumenti active+
### Versione 2.0.0
- AI multi-provider (OpenAI, Claude, Gemini, OpenRouter, Requesty)
- Collegamento delle prove tramite `execution_id`
- Sistema di priorità dei parametri del workflow
---
## 🤝 Contribuisci
Accogliamo con favore i contributi! Ecco come:
### Configurazione dell'ambiente di sviluppo```bash
# Fork and clone
git clone https://github.com/zakirkun/guardian-cli.git
cd guardian-cli
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/
# Format code
black .
Vedi CONTRIBUTING.md per linee guida dettagliate.
Rilasciato in v4.0.0:
--resumeFuturo:
Errori di Importazione```bash
pip install -e . --force-reinstall
**Errori del provider AI**```bash
# Verify API key is set
python -m cli.main models
# Check provider configuration
cat config/guardian.yaml | grep -A 5 "ai:"
Strumento non trovato```bash
which nmap which httpx
**Workflow non caricato**```bash
# Check workflow file exists
ls workflows/web_pentest.yaml
# Verify YAML syntax
python -c "import yaml; yaml.safe_load(open('workflows/web_pentest.yaml'))"
Windows Comando non trovato```powershell
python -m cli.main --help
Per ulteriore aiuto, [apri un issue](https://github.com/zakirkun/guardian-cli/issues).
---
## 📄 Licenza
Questo progetto è concesso in licenza MIT - vedi il file [LICENSE](https://github.com/zakirkun/guardian-cli/blob/HEAD/LICENSE) per i dettagli.
---
## 🙏 Riconoscimenti
- **OpenAI** - Capacità GPT-4
- **Anthropic** - Claude AI
- **Google** - Gemini AI
- **LangChain** - Framework di orchestrazione AI
- **ProjectDiscovery** - Strumenti di sicurezza open source (httpx, subfinder, nuclei)
- **Nmap** - Esplorazione di rete e audit di sicurezza
- **The Security Community** - Sviluppatori e ricercatori di strumenti
---
## 📞 Supporto e Contatti
- **GitHub Issues**: [Segnala bug o richiedi funzionalità](https://github.com/zakirkun/guardian-cli/issues)
- **Discussions**: [Partecipa alle discussioni della community](https://github.com/zakirkun/guardian-cli/discussions)
- **Documentazione**: [Leggi la documentazione](https://github.com/zakirkun/guardian-cli/blob/HEAD/docs/)
- **Sicurezza**: Segnala vulnerabilità privatamente a [email protected]
---
## 🌟 Star History
<a href="https://github.com/zakirkun/guardian-cli/stargazers">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zakirkun/guardian-cli&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zakirkun/guardian-cli&type=Date" />
Star History Chart
</picture>
</a>
---
---
<div align="center">
**Guardian** - Penetration Testing Intelligente, Etico e Automatizzato
Realizzato con ❤️ dalla Security Community
[⬆ Torna su](#-guardian)
</div>
| Categoria | Strumenti |
|---|
| Rete | nmap, masscan |
| Ricognizione Web | httpx, whatweb, wafw00f, cmseek |
| Sottodominio / DNS | subfinder, amass, dnsrecon |
| Scansione Vulnerabilità | nuclei, nikto, sqlmap, wpscan |
| Test SSL/TLS | testssl, sslyze |
| Scoperta Contenuti | gobuster, ffuf, arjun |
| Analisi Sicurezza | xsstrike, gitleaks |
| Cloud / Container / SBOM | trivy, grype, syft, scoutsuite, prowler, kube-bench |
| Web Moderno + OSINT | graphw00f, clairvoyance, jwt_tool, shodan, theharvester |
| SAST + Segreti (B11) | semgrep, trufflehog, dependency-check |
| Fuzzer API (B10) | schemathesis, cariddi, restler |
| Ponte Burp/ZAP (B13) | zap, burp |
| Red-Team LLM (B12) | garak, pyrit, prompt_fuzz |
| Mobile Android (B9) | mobsf, apkleaks, objection |
| Active Directory (B8) | crackmapexec, bloodhound, kerbrute, impacket-secretsdump |
| Prove Visive (A3) | playwright_screenshot |
| Strumento | Scopo | Installazione |
|---|
| nmap | Scansione porte | apt install nmap / choco install nmap |
| masscan | Scansione ultra-veloce | apt install masscan / Costruisci da sorgente |
| httpx | Sondaggio HTTP | go install github.com/projectdiscovery/httpx/cmd/httpx@latest |
| subfinder | Enumerazione sottodomini | go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest |
| amass | Mappatura rete | go install github.com/owasp-amass/amass/v4/...@master |
| nuclei | Scansione vulnerabilità | go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest |
| whatweb | Impronta tecnologica | gem install whatweb / apt install whatweb |
| wafw00f | Rilevamento WAF | pip install wafw00f |
| nikto | Scansione vulnerabilità web | apt install nikto |
| sqlmap | SQL injection | pip install sqlmap / apt install sqlmap |
| wpscan | Scansione WordPress | gem install wpscan |
| testssl | Test SSL/TLS | Scarica da testssl.sh |
| sslyze | Analisi SSL/TLS | pip install sslyze |
| gobuster | Forza bruta directory | go install github.com/OJ/gobuster/v3@latest |
| ffuf | Fuzzing web | go install github.com/ffuf/ffuf/v2@latest |
| arjun | Scoperta parametri | pip install arjun |
| xsstrike | XSS avanzato | git clone https://github.com/s0md3v/XSStrike |
| gitleaks | Scansione segreti | go install github.com/zricethezav/gitleaks/v8@latest |
| cmseek | Rilevamento CMS | pip install cmseek |
| dnsrecon | Enumerazione DNS | pip install dnsrecon |