
A suíte colaborativa de pentest para aplicações web
O proxy MITM colaborativo para testadores de segurança.
Capture o tráfego HTTP, anote requisições com IA, execute sessões de hunt, reproduza tráfego e acompanhe descobertas em uma única interface.
Início rápido · Recursos · Capturas de tela · Configuração · Segurança · Contribuindo
git clone https://github.com/synlace/ferret.git
cd ferret
cp .env.example .env # opcional
just up
Ou use Docker Compose diretamente:
docker compose up --build -d
| Serviço | URL |
|---|---|
| UI | http://localhost:3000 |
| API | http://localhost:8000 |
| Proxy | 127.0.0.1:1337 |
Abra:
http://localhost:3000
O assistente de configuração da primeira execução solicitará que você defina uma senha e escolha um provedor de IA.
justO Ferret é um proxy de interceptação HTTP assistido por IA, criado para testadores de segurança.
Aponte seu navegador, ferramenta de CLI ou fluxo de trabalho de testes para:
127.0.0.1:1337
O Ferret captura requisições e respostas, armazena-as localmente, anota o tráfego com IA e oferece ferramentas para reproduzir, modificar, testar e transformar comportamentos interessantes em descobertas.
Ele foi projetado para fluxos de trabalho em que você deseja mais do que um proxy passivo: você quer algo que ajude a pensar, testar e documentar enquanto avança.

Hunts - Sessões de hunt assistidas por IA que pesquisam o histórico de requisições, escrevem e executam testes e criam descobertas.

History - Um log completo de requisições com proxy, com anotações de IA, tempos, códigos de status e editores inline de requisição/resposta.

Findings - Um rastreador de vulnerabilidades com severidade, host, tipo, descrições geradas por IA e trechos de evidência.

Settings - Gerencie o certificado da CA, senha, 2FA, provedor de IA, chaves de API e status do proxy.

Setup wizard - Configuração da primeira execução para criação de senha e configuração do provedor de IA.
Configure seu navegador, ferramenta de CLI ou cliente de testes para usar:
HTTP proxy: 127.0.0.1:1337
HTTPS proxy: 127.0.0.1:1337
Para interceptação HTTPS, baixe e instale o certificado CA do mitmproxy na página Settings.
O Ferret exige autenticação em todas as instalações.
/login.HttpOnly SameSite=Strict com validade de 24 horas.A 2FA baseada em TOTP pode ser ativada na página Settings.
Depois de ativada, um código de autenticador válido é exigido no login.
Defina uma chave de API estática no .env:
FERRET_API_KEY=your-random-secret
Em seguida, use-a como token Bearer:
curl -H "Authorization: Bearer your-random-secret" \
http://localhost:8000/api/requests
Cookies de sessão e tokens Bearer são verificados de forma independente.
Copie .env.example para .env para pré-configurar o Ferret.
A maioria das configurações do provedor de IA também pode ser definida pelo assistente de configuração.
A configuração do provedor pode ser concluída pelo assistente da primeira execução.
justBrowser / tool
│
▼
127.0.0.1:1337
│
▼
ferret-api :8000 / :1337
FastAPI + mitmproxy + SQLite
│
├── docker exec
▼
ferret-lab
pytest, ffuf, sqlmap, scripts, tests, notes
│
▼
ferret-ui :3000
Next.js
Todos os dados persistentes são armazenados em:
${FERRET_DATA_DIR:-./data}
O Ferret usa bind mounts em vez de volumes nomeados do Docker.
Para apagar o estado local e reiniciar o assistente de configuração:
just reset
Isso remove o banco de dados local, incluindo credenciais.
Você também pode redefinir a configuração pela API quando autenticado:
curl -X DELETE \
-H "Authorization: Bearer your-random-secret" \
http://localhost:8000/api/setup
Para desenvolvimento local da interface com hot reload:
just dev
Isso executa os containers da API e do lab no Docker enquanto serve a interface no host via npm run dev. Node.js é necessário no host para esse modo.
Execute os testes com:
just test api # API unit tests (inside the running api container)
just test ui # Playwright UI tests (auto-starts Next.js dev server + mock API)
just test shim # docker-shim allow/block unit tests (no Docker needed)
just test all # run all three suites in sequence
O Ferret é projetado para fluxos de trabalho de testes de segurança locais e não é endurecido para exposição pública.
Antes de expor o Ferret fora do localhost, entenda o seguinte:
| Risco | Detalhe |
|---|---|
| Tráfego do proxy | O proxy captura todo o tráfego HTTP/HTTPS que passa por ele, incluindo credenciais. |
| Exposição da API | A API expõe histórico de requisições, descobertas e arquivos do espaço de trabalho. |
| Execução no lab | O container lab pode executar ferramentas de teste em seu nome. |
Use uma senha forte e ative a 2FA na página Settings.
Não abra uma issue pública para vulnerabilidades de segurança.
Consulte .github/SECURITY.md para a política de divulgação completa e instruções de reporte.
Divulgações anteriores são publicadas em security/ assim que as correções estiverem disponíveis.
Agradecemos aos seguintes pesquisadores por divulgarem problemas de segurança de forma responsável:
| Pesquisador | Issue | Ano |
|---|---|---|
| Trent (@AzureADTrent) | DISC-2026-001 - RCE não autenticado via SSRF + configuração incorreta do docker-socket-proxy | 2026 |
O Ferret está em desenvolvimento ativo.
Ideias, relatos de bugs, pedidos de recursos e contribuições são bem-vindos.
Quer ajudar a construí-lo?
E-mail: [email protected]
MIT - consulte LICENSE.
| Recurso | Descrição |
|---|
| Proxy de interceptação | Capture tráfego HTTP e HTTPS por meio do mitmproxy. |
| Histórico de requisições | Navegue, filtre, inspecione e reproduza o tráfego capturado. |
| Anotações de IA | Enriqueça as requisições com contexto relevante para a segurança. |
| Hunts | Execute sessões de hunt assistidas por IA em todo o tráfego capturado. |
| Descobertas | Acompanhe vulnerabilidades com severidade, host, tipo, evidência e status. |
| Snare | Intercepte e modifique requisições ou respostas em trânsito. |
| Gnaw | Abas estilo repeater para editar e reenviar requisições HTTP. |
| Espaços de trabalho | Diretórios scripts/, tests/ e notes/ por sessão. |
| Projetos | Separe histórico de requisições, descobertas, espaços de trabalho e chaves de API. |
| Autenticação | Login com senha, cookies de sessão, acesso opcional por chave de API e 2FA TOTP. |
| Armazenamento local-first | Dados armazenados em SQLite em um diretório local montado por bind mount. |
| Variável | Padrão | Descrição |
|---|
FERRET_API_KEY | - | Token Bearer estático para acesso programático à API |
OPENROUTER_MODEL | google/gemini-3-flash-preview | Modelo padrão do OpenRouter |
PROXY_HOST | 0.0.0.0 | Endereço de bind do proxy |
PROXY_PORT | 1337 | Porta do proxy |
UI_PORT | 3000 | Porta da interface |
FERRET_DATA_DIR | ./data | Diretório de dados persistente |
NEXT_PUBLIC_API_URL | http://localhost:8000 | URL da API usada pelo navegador |
NEXT_PUBLIC_SIGINT_URL | - | URL JSON opcional do feed de notícias/SIGINT |
| Provedor | Tipo |
|---|
| OpenRouter | Nuvem - API unificada para muitos modelos |
| OpenAI | Nuvem - GPT-4o, o1 e outros |
| Anthropic | Nuvem - modelos Claude |
| Gemini | Nuvem - modelos Google Gemini |
| DeepSeek | Nuvem - modelos DeepSeek |
| Mistral | Nuvem - modelos Mistral |
| Ollama | Local - execute modelos na sua máquina |
| LM Studio | Local - execute modelos na sua máquina |
| Comando | Descrição |
|---|
just up | Baixe as imagens pré-construídas do GHCR e inicie todos os serviços |
just down | Pare todos os serviços |
just dev | Execute API/lab no Docker e recarregamento hot reload da UI no host (requer Node.js) |
just logs | Acompanhe os logs dos serviços |
just test api | Execute os testes unitários da API (dentro do container api em execução) |
just test ui | Execute os testes de interface do Playwright |
just test shim | Execute os testes unitários de permitir/bloquear do docker-shim (não requer Docker) |
just test all | Execute todas as suítes de teste em sequência |
just reset | Apague o banco de dados local |
just shell | Abra um shell no container lab |
| Credenciais | Chaves de API e credenciais do provedor de IA são armazenadas localmente e devem ser tratadas como segredos. |