Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CaddySmith — Генерировать конфигурации редиректора Caddy из профилей Cobalt Strike или Sliver C2. | Kitploit
Инструменты/GitHubGitHub/icecubesandwich/caddysmith
Фреймворки для пентестаВеб-прокси и перехватОбход IDS/IPSКомандование и УправлениеRed TeamingРазработка Полезной Нагрузки
GitHubicecubesandwich/caddysmith

CaddySmith

Генерировать конфигурации редиректора Caddy из профилей Cobalt Strike или Sliver C2.

Репозиторий
231 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CaddySmith

CaddySmith — это небольшой скрипт на Python, который читает профиль C2 от Cobalt Strike или Sliver и генерирует конфигурацию веб-сервера Caddy. Созданный Caddyfile превращает обычный Linux-сервер в редиректор: легитимный трафик от beacon'ов перенаправляется (обратный прокси) на ваш team server, а всё остальное (сканеры, поисковые боты, зондирование синих команд, случайные curl-запросы) отправляется на приманку (decoy URL).

Я написал этот инструмент, потому что Caddy гораздо удобнее для быстрого развертывания, чем Apache: один статический бинарник, автоматические сертификаты Let's Encrypt, и никаких танцев с a2enmod.

Только для санкционированных тестов. Это инструмент для наступательной безопасности. Запускайте его только против сред, на тестирование которых у вас есть письменное разрешение.

Поддерживаемые форматы профилей

CaddySmith автоматически определяет формат по содержимому файла:

  • Cobalt Strike — классический текстовый формат с директивами set uri "/foo". Каждый URI для HTTP-GET/HTTP-POST становится отдельным маршрутом с точным путём, при этом применяются клиентские заголовки из профиля.
  • Sliver — JSON-конфигурация импланта, экспортированная из Sliver. У Sliver нет фиксированных URI; они генерируются во время сборки beacon'а из списков путей, файлов и расширений. CaddySmith обрабатывает это, сопоставляя префиксы верхнего уровня как glob-шаблоны (например, path /api* /static* /resources*) и выполняя поиск подстроки номера сборки Chrome в User-Agent (который сохраняется при перезаписи UA на разных платформах у Sliver).

Вы также можете принудительно указать парсер с помощью --profile-type cobaltstrike или --profile-type sliver.

Что делает скрипт

Получив файл профиля, скрипт извлекает:

  • Строку User-Agent
  • URI (CS) или префиксы путей (Sliver)
  • Клиентские заголовки (только CS — Sliver не задаёт конкретные заголовки)
  • Заголовок Host (используется как доменное имя редиректора, если не передан --server-name)
  • Включен ли стейджинг (только CS — set host_stage)

Затем он создаёт Caddyfile, который:

  1. (Опционально) Возвращает 403 на обычный HTTP-трафик
  2. Блокирует около 15 известных плохих User-Agent (curl, nmap, sqlmap, Googlebot и т.д.)
  3. Блокирует доступ по прямому IP и любые HTTP-методы, кроме GET/POST
  4. Настраивает обратный прокси только для URI из профиля (или префиксов для Sliver), проверяя соответствующий User-Agent
  5. Блокирует типичные пути сканеров (.env, /wp-admin, .php и т.д.)
  6. Перенаправляет всё остальное на ваш decoy URL

Требования

  • Python 3.7+ (используется только стандартная библиотека, pip install не нужен)
  • Caddy 2.x на самом редиректоре (инструкция по установке)

Быстрый старт

root@kitploit:~
python3 caddysmith.py my.profile \
    --backend https://teamserver.internal:443 \
    --decoy   https://www.example.com/ \
    --server-name redirector.example.com \
    --email   [email protected] \
    --forbid-http \
    -o redirector.caddy

Эта команда записывает сгенерированную конфигурацию в redirector.caddy и выводит сводку в stderr.

Развёртывание сгенерированной конфигурации

Вариант A: Запуск Caddyfile напрямую

Скопируйте сгенерированный файл на редиректор и запустите Caddy с ним. Требуется флаг --adapter caddyfile, так как Caddy по умолчанию использует JSON-конфигурацию:

root@kitploit:~
caddy run --config /etc/caddy/redirector.caddy --adapter caddyfile

Чтобы перезагрузить работающий экземпляр с обновлённой конфигурацией:

root@kitploit:~
caddy reload --config /etc/caddy/redirector.caddy --adapter caddyfile

Если Caddy сообщает о проблемах с форматированием, исправьте их с помощью:

root@kitploit:~
caddy fmt --overwrite /etc/caddy/redirector.caddy

Вариант B: Импорт из основного Caddyfile

Поместите файл в /etc/caddy/ и импортируйте его из основного Caddyfile:

root@kitploit:~
# /etc/caddy/Caddyfile
import /etc/caddy/redirector.caddy

Если вы передали --email (рекомендуется), сгенерированный фрагмент уже содержит блок глобальных опций, поэтому в основном Caddyfile нужна только строка import. Если не передали, добавьте email вручную в блок { } перед импортом.

Затем проверьте и перезагрузите:

root@kitploit:~
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy

Caddy автоматически выпустит сертификат Let's Encrypt для домена, указанного в --server-name, при условии, что A-запись указывает на редиректор.

Все флаги

Режимы политики

  • strict (по умолчанию) — проверяет User-Agent, все клиентские заголовки, прямой IP, HTTP-метод и пути сканеров
  • lax — блокирует только плохие User-Agent, без сопоставления заголовков на каждом маршруте
  • none — проксирует любой запрос к URI из профиля, без фильтрации

Обычно нужен strict. Lax полезен при отладке, почему настоящий beacon не подключается.

Пример работы

Допустим, у вас есть профиль, имитирующий конечную точку Amazon, и вы хотите развернуть его на redirector.0xtb.sh:

root@kitploit:~
python3 caddysmith.py amazon.profile \
    --backend https://10.1.1.10:443 \
    --decoy   https://www.amazon.com/ \
    --server-name redirector.0xtb.sh \
    --forbid-http \
    --policy strict \
    -o /etc/caddy/redirector.caddy

В сводке будет показано, какие маршруты были построены, например:

root@kitploit:~
Routes built:   2
  - [profile-get] /broadcast
  - [profile-post] /1/events/com.amazon.csm.csa.prod

Если вы пересоздадите и увидите ноль маршрутов, скрипт, скорее всего, не смог разобрать ваш профиль — проверьте предупреждения в stderr.

Пример для Sliver

Для конфигурации импланта Sliver (JSON):

root@kitploit:~
python3 caddysmith.py sliver-implant.json \
    --backend https://10.1.1.10:443 \
    --decoy   https://www.amazon.com/ \
    --server-name redirector.0xtb.sh \
    --email   [email protected] \
    --forbid-http \
    --policy strict \
    -o /etc/caddy/redirector.caddy

В сводке будет указано, что обнаружен Sliver, и показан маршрут по префиксу:

root@kitploit:~
Profile type:   sliver
Routes built:   1
  - [sliver] /api /public /resources /services /static (prefix)

Поскольку Sliver генерирует URI случайным образом из комбинаций путь × файл × расширение, сгенерированный сопоставитель path использует glob-шаблоны префиксов (path /api* /public* /resources* /services* /static*), а не точные пути. Сопоставитель User-Agent использует подстроку номера сборки Chrome (например, 3921.146), который Sliver сохраняет при перезаписи UA на разных платформах.

Дымовые тесты после развёртывания

root@kitploit:~
# Обычный HTTP должен вернуть 403 (если использовали --forbid-http)
curl -I http://redirector.0xtb.sh/

# Простое имя хоста должно перенаправить на decoy
curl -kI https://redirector.0xtb.sh/

# Плохой UA также должен перенаправить
curl -kI -A "curl/8.4.0" https://redirector.0xtb.sh/broadcast

# Запрос с правильным UA и путём должен проксироваться (200)
# В режиме strict необходимо также отправить все клиентские заголовки из профиля.

Известные ограничения

  • Правила стейджинга не генерируются (Cobalt Strike). Если в вашем профиле CS установлено set host_stage "true" (или не установлено вовсе), скрипт выдаст предупреждение и пропустит URI стейджера. Добавьте set host_stage "false"; в профиль или передайте URI стейджеров явно через --extra-uri.
  • Сопоставление префиксов Sliver шире, чем точное сопоставление CS. Для Sliver прокси-маршрут обрабатывает любой URL, начинающийся с /api, /static и т.д. Сканеры, которые случайно используют эти префиксы (например, /api/.env), будут отправлены на team server, а не заблокированы локально — но собственный HTTP-транспорт Sliver аутентифицируется по ID импланта, поэтому неавторизованные запросы отклоняются на уровне C2. Фильтрация по UA всё равно блокирует большинство сканеров.
  • Один бэкенд за запуск. Все маршруты проксируются на один и тот же --backend. Если нужно несколько team server, запустите скрипт несколько раз и объедините конфигурации вручную.
  • Разбор URI профиля построчный (Cobalt Strike). set uri "/path1 /path2"; работает (несколько путей на одной строке), но нестандартное форматирование может сломать парсер. Проверьте список маршрутов в сводке.
  • Проверка сертификата бэкенда по HTTPS отключена по умолчанию. У team server обычно самоподписанные сертификаты, поэтому сгенерированная конфигурация включает tls_insecure_skip_verify. Если у бэкенда настоящий сертификат, удалите эту строку из сгенерированного файла.

Благодарности

Apache-основанный Malleable-Redirector послужил отправной точкой для того, что генерирует этот скрипт: та же трёхдорожечная модель URI (URI из профиля / дополнительные URI / свободные URI), те же режимы политики, та же общая структура. CaddySmith просто переводит вывод в синтаксис Caddy вместо Apache .htaccess.

Лицензия

MIT

Скачать инструмент
ФлагПо умолчаниюЧто делает
profile(обязательно)Путь к файлу .profile
--backendhttps://teamserver.local:443Куда проксировать подходящий трафик
--decoyhttps://www.example.com/Куда перенаправлять неподходящий трафик
--server-namec2.example.comДоменное имя вашего редиректора
--policystrictstrict, lax или none
--profile-typeautoПринудительно задать cobaltstrike или sliver (по умолчанию автоопределение)
--extra-uri PATH—Дополнительный URI для прокси (с проверкой UA). Можно повторять.
--lax-uri PATH—Дополнительный URI для прокси (без проверок). Можно повторять.
--allow-ua STRING—Дополнительный UA, разрешённый на маршрутах --extra-uri. Можно повторять.
--forbid-httpвыкл.Возвращать 403 на обычный HTTP
--email EMAIL—Email для регистрации и уведомлений Let's Encrypt
-o, --output FILEstdoutЗаписать конфигурацию в файл