
Совместный набор для пентеста веб-приложений
Совместный MITM-прокси для специалистов по безопасности.
Перехватывайте HTTP-трафик, аннотируйте запросы с помощью AI, запускайте сессии охоты, воспроизводите трафик и отслеживайте находки в одном интерфейсе.
Быстрый старт · Возможности · Скриншоты · Конфигурация · Безопасность · Участие в разработке
git clone https://github.com/synlace/ferret.git
cd ferret
cp .env.example .env # необязательно
just up
Или используйте Docker Compose напрямую:
docker compose up --build -d
| Сервис | URL |
|---|---|
| UI | http://localhost:3000 |
| API | http://localhost:8000 |
| Прокси | 127.0.0.1:1337 |
Откройте:
http://localhost:3000
Мастер первоначальной настройки попросит вас установить пароль и выбрать AI-провайдера.
justFerret — это HTTP-прокси для перехвата трафика с поддержкой AI, созданный для специалистов по безопасности.
Направьте браузер, CLI-инструмент или рабочий процесс тестирования на:
127.0.0.1:1337
Ferret перехватывает запросы и ответы, хранит их локально, аннотирует трафик с помощью AI и предоставляет инструменты для повторной отправки, модификации, тестирования и преобразования интересного поведения в находки.
Он предназначен для рабочих процессов, где вам нужно больше, чем пассивный прокси: инструмент, который помогает думать, тестировать и документировать по ходу дела.

Hunts — AI-ассистированные сессии охоты, которые ищут в истории запросов, пишут и запускают тесты и создают находки.

History — полный журнал проксированных запросов с AI-аннотациями, временем, кодами статуса и встроенными редакторами запросов/ответов.

Findings — трекер уязвимостей с уровнем критичности, хостом, типом, AI-сгенерированными описаниями и фрагментами доказательств.

Settings — управление CA-сертификатом, паролем, 2FA, AI-провайдером, API-ключами и статусом прокси.

Мастер настройки — первоначальная настройка пароля и конфигурация AI-провайдера.
Настройте браузер, CLI-инструмент или тестовый клиент на использование:
HTTP proxy: 127.0.0.1:1337
HTTPS proxy: 127.0.0.1:1337
Для перехвата HTTPS загрузите и установите CA-сертификат mitmproxy со страницы Настройки.
Ferret требует аутентификации при каждой установке.
/login.HttpOnly и SameSite=Strict.2FA на основе TOTP можно включить на странице Настройки.
После включения при входе требуется действующий код аутентификатора.
Установите статический API-ключ в файле .env:
FERRET_API_KEY=your-random-secret
Затем используйте его как Bearer-токен:
curl -H "Authorization: Bearer your-random-secret" \
http://localhost:8000/api/requests
Сессионные куки и Bearer-токены проверяются независимо.
Скопируйте .env.example в .env для предварительной настройки Ferret.
Большинство настроек AI-провайдеров также можно настроить через мастер установки.
Настройка провайдера может быть выполнена через мастер первоначальной настройки.
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
Все постоянные данные хранятся в:
${FERRET_DATA_DIR:-./data}
Ferret использует bind-монтирования, а не именованные тома Docker.
Чтобы очистить локальное состояние и перезапустить мастер настройки:
just reset
Это удалит локальную базу данных, включая учётные данные.
Вы также можете сбросить настройки через API при аутентификации:
curl -X DELETE \
-H "Authorization: Bearer your-random-secret" \
http://localhost:8000/api/setup
Для локальной разработки UI с горячей перезагрузкой:
just dev
Это запускает контейнеры API и lab в Docker, а UI обслуживается на хосте через npm run dev. Для этого режима на хосте требуется Node.js.
Запустите тесты с помощью:
just test api # Модульные тесты API (внутри работающего контейнера api)
just test ui # UI-тесты Playwright (автоматически запускает dev-сервер Next.js + мок API)
just test shim # Модульные тесты docker-shim allow/block (не требуется Docker)
just test all # Запустить все три набора последовательно
Ferret предназначен для локальных рабочих процессов тестирования безопасности и не защищён для публичного доступа.
Прежде чем открывать Ferret за пределами localhost, ознакомьтесь со следующим:
| Риск | Подробности |
|---|---|
| Трафик прокси | Прокси перехватывает весь проходящий через него HTTP/HTTPS трафик, включая учётные данные. |
| Доступ к API | API предоставляет историю запросов, находки и файлы рабочих пространств. |
| Выполнение в lab | Контейнер lab может выполнять инструменты тестирования от вашего имени. |
Используйте надёжный пароль и включите 2FA на странице Настройки.
Не открывайте публичный issue для уязвимостей безопасности.
См. .github/SECURITY.md для полной политики раскрытия и инструкций по сообщению.
Прошлые раскрытия публикуются в security/ после выхода исправлений.
Благодарим следующих исследователей за ответственное раскрытие проблем безопасности:
| Исследователь | Проблема | Год |
|---|---|---|
| Trent (@AzureADTrent) | DISC-2026-001 — Неаутентифицированное RCE через SSRF + неверная конфигурация docker-socket-proxy | 2026 |
Ferret активно разрабатывается.
Идеи, отчёты об ошибках, предложения по функциям и вклад приветствуются.
Хотите помочь в его создании?
Email: [email protected]
MIT — см. LICENSE.
| Функция | Описание |
|---|
| Перехватывающий прокси | Захват HTTP- и HTTPS-трафика через mitmproxy. |
| История запросов | Просмотр, фильтрация, проверка и повторная отправка перехваченного трафика. |
| AI-аннотации | Обогащение запросов контекстом, связанным с безопасностью. |
| Охота (Hunts) | Запуск AI-ассистированных сессий охоты по перехваченному трафику. |
| Находки (Findings) | Отслеживание уязвимостей с уровнем критичности, хостом, типом, доказательствами и статусом. |
| Snare | Перехват и модификация запросов или ответов на лету. |
| Gnaw | Вкладки-повторители для редактирования и повторной отправки HTTP-запросов. |
| Рабочие пространства | Каталоги scripts/, tests/ и notes/ для каждой сессии. |
| Проекты | Раздельные история запросов, находки, рабочие пространства и API-ключи. |
| Аутентификация | Вход по паролю, сессионные куки, опциональный доступ по API-ключу и TOTP 2FA. |
| Локальное хранение | Данные на базе SQLite, хранящиеся в локальной примонтированной директории. |
| Переменная | По умолчанию | Описание |
|---|
FERRET_API_KEY | - | Статический Bearer-токен для программного доступа к API |
OPENROUTER_MODEL | google/gemini-3-flash-preview | Модель OpenRouter по умолчанию |
PROXY_HOST | 0.0.0.0 | Адрес привязки прокси |
PROXY_PORT | 1337 | Порт прокси |
UI_PORT | 3000 | Порт UI |
FERRET_DATA_DIR | ./data | Каталог постоянных данных |
NEXT_PUBLIC_API_URL | http://localhost:8000 | URL API, используемый браузером |
NEXT_PUBLIC_SIGINT_URL | - | Опциональный URL JSON-ленты SIGINT/новостей |
| Провайдер | Тип |
|---|
| OpenRouter | Облачный — единый API для многих моделей |
| OpenAI | Облачный — GPT-4o, o1 и другие |
| Anthropic | Облачный — модели Claude |
| Gemini | Облачный — модели Google Gemini |
| DeepSeek | Облачный — модели DeepSeek |
| Mistral | Облачный — модели Mistral |
| Ollama | Локальный — запуск моделей на вашем компьютере |
| LM Studio | Локальный — запуск моделей на вашем компьютере |
| Команда | Описание |
|---|
just up | Загрузить предварительно собранные образы из GHCR и запустить все сервисы |
just down | Остановить все сервисы |
just dev | Запустить API/lab в Docker и UI с горячей перезагрузкой на хосте (требуется Node.js) |
just logs | Просмотр логов сервисов |
just test api | Запустить модульные тесты API (внутри работающего контейнера api) |
just test ui | Запустить UI-тесты Playwright |
just test shim | Запустить модульные тесты docker-shim allow/block (не требуется Docker) |
just test all | Запустить все наборы тестов последовательно |
just reset | Очистить локальную базу данных |
just shell | Открыть оболочку в контейнере lab |
| Учётные данные | API-ключи и учётные данные AI-провайдера хранятся локально и должны считаться секретными. |