pentest-agent
Agente de pentest autônomo com trava de autorização (recon não destrutivo).
8 testes · 8 passou · 0 falhou · 0 skip
- test_authorization_allows_listed0.00s
- test_authorization_blocks_unlisted0.00s
- test_agent_refuses_unauthorized0.00s
- test_rulebased_planner_first_step0.00s
- test_rulebased_planner_web_then_report0.00s
- test_agent_runs_against_localhost0.01s
- test_package_importable0.00s
- test_source_files_present0.00s
Entrypoints (CLI)
pentest-agent
Módulos e funções principais
pentestagent/__init__.py
- —
pentestagent/agent.py
is_authorized()— Só permite alvos explicitamente autorizados (hostname/IP/CIDR).render_report()
pentestagent/cli.py
main()
pentestagent/llm.py
- —
pentestagent/tools.py
port_scan()http_enum()ssh_audit()
Estrutura de arquivos
- LICENSE
- README.md
- pentest_agent.egg-info/PKG-INFO
- pentest_agent.egg-info/SOURCES.txt
- pentest_agent.egg-info/dependency_links.txt
- pentest_agent.egg-info/entry_points.txt
- pentest_agent.egg-info/requires.txt
- pentest_agent.egg-info/top_level.txt
- pentestagent/__init__.py
- pentestagent/agent.py
- pentestagent/cli.py
- pentestagent/llm.py
- pentestagent/tools.py
- pyproject.toml
- tests/test_agent.py
- tests/test_imports.py
README
# Pentest Agent 🤖🔓
Um agente autônomo que recebe um **alvo autorizado** e decide sozinho quais passos de **reconhecimento** executar (port scan → enumeração web/SSH → relatório), coordenando ferramentas de forma **não destrutiva**.
> ⚠️ **USO ÉTICO OBRIGATÓRIO.** O agente **recusa** qualquer alvo que não esteja explicitamente na *allowlist* (`--authorize`). Pentest sem autorização é crime. Este projeto faz apenas recon passivo/leve (conexões TCP e GET HTTP), nunca exploração ativa.
## Destaques de arquitetura
- **LLM plugável** (`LLMProvider`): use o `RuleBasedProvider` (determinístico, offline, incluído) ou plugue um LLM real (`OpenAIProvider`, exemplo pronto).
- **Loop agentic**: decide → executa ferramenta → observa resultado → decide de novo, até gerar relatório.
- **Trava de autorização**: `is_authorized()` valida host/IP/CIDR antes de qualquer ação.
- **Ferramentas seguras**: `port_scan`, `http_enum` (só GET), `ssh_audit` (só banner).
## Estado atual
- ✅ Loop do agente, planner heurístico, ferramentas de recon, trava de autorização, relatório e testes.
- 🔜 Roadmap: provider LLM real ativo, mais ferramentas (gobuster/ffuf/nikto via wrappers), memória entre execuções, exportação para o TIP.
## Instalação
```bash
git clone https://github.com/Diogo-Damasceno/pentest-agent.git
cd pentest-agent
pip install -e .
```
## Uso
```bash
# recon contra um alvo AUTORIZADO (ex.: seu próprio host)
pentest-agent 127.0.0.1 --authorize 127.0.0.1
# alvo web autorizado por CIDR
pentest-agent http://192.168.1.10 --authorize 192.168.1.0/24
```
Tentar um alvo fora da allowlist é bloqueado:
```
$ pentest-agent 8.8.8.8 --authorize 127.0.0.1
[BLOQUEADO] Alvo '8.8.8.8' NÃO está na allowlist. Recon abortado.
```
## Plugando um LLM real
Edite `OpenAIProvider.decide()` (corpo já esboçado), instale extras e exporte a chave:
```bash
pip install -e '.[llm]'
export OPENAI_API_KEY=...
```
## Testes
```bash
pip install -e '.[dev]'
pytest -q
```
## Licença
MIT
Como rodar na prática (entrada → saída):
$ pentest-agent 10.0.0.5 --authorize --max-steps 5
[allowlist] alvo autorizado [1] recon: portas abertas 22,80,443 [2] recon: servicos/versoes [3] recon: enumeracao web [4] correlacao com CVEs [5] relatorio gerado -> report.md