◈ ProjView
← todos os projetos

pentest-agent

Python Ofensiva GitHub ↗

Agente de pentest autônomo com trava de autorização (recon não destrutivo).

8 testes · 8 passou · 0 falhou · 0 skip

Entrypoints (CLI)

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

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
pentest-agent SIM NÃO SIM NÃO Alvo + --authorize Alvo na allowlist? Recusado: fora da allowlist Decidir próximo passo de recon (LLM) Atingiu max-steps? Executar recon não destrutivo Gerar relatório Entregar relatório ao dono

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