Agente autônomo de teste de penetração com IA que orquestra reconhecimento multiagente, exploração, pós-exploração e geração de relatórios com estado de engajamento persistente.
Agente de teste de penetração com IA no seu terminal.
Arquitetura multiagente • Rastreamento de estado do engajamento • 20+ provedores de LLM
O PentestCode é um agente de pentest autônomo para o seu terminal. Aponte para um alvo e ele executa as ferramentas, lê a saída, atualiza sua visão da rede e decide o que fazer em seguida — da mesma forma que um operador faria. Um hard fork do OpenCode (MIT), sem o foco em edição de código e reconstruído para segurança ofensiva.
Beta — ele se sustenta em engajamentos reais e CTFs, mas espere arestas por lixar. Abra uma issue quando algo quebrar; é isso que o torna melhor.
Uma instrução entra, uma cadeia de ataque completa sai:
you: "pentest 10.10.10.5, goal is domain admin"
| Estágio | O que o agente faz |
|---|---|
| Escaneamento | nmap -sS -p- encontra 7 portas abertas e analisa o XML direto para o estado do engajamento |
| Reconhecimento | Portas 88 + 389 → Domain Controller. Dispara três enumeradores em paralelo (SMB, LDAP, HTTP) |
| Enumeração | Sessão SMB nula → compartilhamento gravável. LDAP → lista de usuários. Gobuster → diretórios web |
| Ataque | AS-REP roast → hash quebrável → primeira credencial válida |
| Spray | Essa credencial é pulverizada em SMB, WinRM, LDAP e RDP em todos os hosts conhecidos |
| Exploração | Foothold via WinRM → agente de pós-exploração extrai SAM / LSA / DPAPI |
| Resultado | Hash de admin de domínio em mãos — cada passo registrado com sua cadeia de evidências |
Ele é metódico onde as pessoas ficam preguiçosas: faz spray de todas as credenciais contra todos os serviços em todos os hosts, e não se esquece de verificar as coisas. Tudo o que ele aprende vai para um estado estruturado que você pode consultar durante a execução com /status, /vulns ou /creds.
npm install -g pentestcode-ai
# via curl
curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Um único binário autossuficiente — sem Bun, Node ou runtime para instalar. Linux e macOS, x64 e arm64.
Fixar versão:
PENTESTCODE_VERSION=0.1.7 curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Diretório personalizado:
PENTESTCODE_INSTALL=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
A partir do código-fonte:
bun install
bun run build --single --skip-embed-web-ui
# binary at packages/opencode/dist/pentestcode-<os>-<arch>/bin/pentestcode
pentestcode auth login # connect your LLM provider
pentestcode # interactive session
pentestcode --prompt "scan 10.10.10.0/24 and enumerate all services" # one-shot
Funciona com 20+ provedores através do ai-sdk — Anthropic, OpenAI, Google, Azure, AWS Bedrock, Ollama e mais.
Duas coisas separam o PentestCode de um prompt de pentester colado em uma janela de chat: uma equipe de agentes e uma memória compartilhada.
O design segue o modelo estrategista-coordenador da pesquisa HPTSA — uma melhoria de 4,3× em relação a um único agente:
┌─────────────┐
│ pentest │ strategist / coordinator
│ (lead) │ plans, dispatches, tracks state
└──────┬──────┘
┌───────┬───────┼───────┬───────┐
▼ ▼ ▼ ▼ ▼
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│recon ││scan- ││explo-││iden- ││post- │
│ ││ner ││iter ││tity ││explo │ ... + 7 more
└──────┘└──────┘└──────┘└──────┘└──────┘
O agente líder (pentest) divide o engajamento em tarefas e despacha subagentes especialistas em paralelo — cada um com seu próprio prompt de sistema, permissões de ferramentas e conhecimento de domínio. 13 agentes no total: recon, scanner, enumerator, exploiter, identity (AD/Kerberos), infrastructure (SNMP/IPMI/databases), webapp (OWASP Top 10), post-exploit, exploit-dev, critic (verificador de falsos positivos), reporter, além de agentes ocultos para compressão de contexto e gerenciamento de sessão.
Quando o scanner encontra uma porta, o enumerator a vê instantaneamente — porque cada agente lê e escreve em um único estado de engajamento estruturado:
O estado sobrevive à sessão: feche o terminal, volte amanhã, e o agente retoma de onde parou. Ao lado dele, um findings.md legível por humanos registra cada vulnerabilidade, credencial e ganho de acesso com carimbos de data/hora — use tail -f para assistir ao engajamento se desenrolar.
18 ferramentas de pentest integradas além do bash. As ferramentas de parser são obrigatórias: após executar o nmap, o agente deve canalizar a saída pelo nmap_parse em vez de fazer grep no XML manualmente, para que cada descoberta chegue ao estado do engajamento.
| Ferramenta | O que faz |
|---|---|
nmap_parse | Analisa XML do nmap → preenche hosts/serviços automaticamente |
nuclei_parse | Analisa JSON do Nuclei → cria vulnerabilidades com severidade |
cme_parse | Analisa a saída do NetExec → atualiza credenciais/acesso/hosts |
gobuster_parse | Analisa a saída do brute force de diretórios → classifica descobertas |
bloodhound_parse | Analisa JSON do SharpHound → popula o modelo AD |
sqlmap_parse | Analisa a saída do sqlmap → extrai pontos de injeção |
xss_detect | Analisa respostas em busca de XSS refletido/armazenado |
jwt_analyze | Decodifica JWT, verifica alg:none/HMAC fraco/expiração |
cred_spray | Planeja spray de credenciais em todos os serviços descobertos |
scope_check | Validação de escopo CIDR/wildcard |
attack_path_suggest | Busca de caminhos baseada em custo através do grafo de relacionamentos |
tunnel_manage | Planeja túneis SSH/chisel/ligolo, rastreia sessões ativas |
phase_control | Gerenciamento de fases com portões de qualidade |
report_gen | Gera relatórios de pentest em markdown/JSON |
state_update | Registra descobertas (30+ tipos de mutação, modo lote) |
state_query | Consulta o estado do engajamento (20+ tipos de consulta) |
19 pacotes de conhecimento selecionados, carregados sob demanda para que custem contexto apenas quando relevantes:
As habilidades são markdown simples. Adicione as suas colocando um SKILL.md no diretório de skills — sem necessidade de alterações no código.
Conduza uma sessão ao vivo com comandos de barra:
| Comando | O que faz |
|---|---|
/status | Painel do engajamento — hosts, vulnerabilidades, credenciais, fase |
/targets | Tabela de hosts e serviços |
/vulns | Descobertas por severidade |
/creds | Credenciais descobertas |
/scope | Ver/editar escopo do alvo |
/phase | Gerenciamento de fases |
/mode | Alternar auto / free / guided |
/pause | Pausar em descobertas (nunca / sempre / checkpoint) |
/report | Gerar um relatório de pentest |
E defina quanta corda o agente recebe:
Os modos combinam com o comportamento de pausa — auto + pause always oferece execução autônoma que para em cada descoberta para revisão.
Um único kit de ferramentas para toda a segurança ofensiva:
A configuração fica em .pentestcode/pentestcode.jsonc:
{
"provider": {
"anthropic": {
"model": "claude-sonnet-4-20250514"
}
}
}
Provedores: Anthropic, OpenAI, Google, Azure, AWS Bedrock, Ollama, Together, Groq, Fireworks, DeepSeek, Mistral e mais via ai-sdk.
Relatos de bugs de uso real são a coisa mais valiosa que você pode enviar. Rode o PentestCode em uma box de CTF, uma máquina do HTB ou um pentest autorizado, e quando algo der errado — ele entra em loop, perde um caminho óbvio, engasga na saída de uma ferramenta ou desperdiça tokens — abra uma issue com:
findings.md e/ou a saída de sessão relevantePedidos de funcionalidades e PRs também são bem-vindos. O código é TypeScript sobre a biblioteca Effect — veja CLAUDE.md para a arquitetura.
MIT — veja LICENSE.
Hard fork do OpenCode • Feito para segurança ofensiva • Self-hosted e open source