
C2-редиректор на основе caddy
C2-редиректор на основе caddy
Генерация caddyfile с C2 malleable-профилями
set trust_x_forwarded_for "true"; уже включён в C2 malleable-профиле1. Создайте самоподписанные сертификаты с помощью "self-signed-cert.py" :
python3 self-signed-cert.py -t [Https Server]
Как видите, localhost.* создаются в core/cert-out

2. Включите set trust_x_forwarded_for "true"; в C2 malleable-профиле

3. В каждом блоке client C2 malleable-профиля необходимо задать заголовки Host и Referer
⚠️ Примечание: поддельный поддомен должен существовать в атрибуте SAN (subject alternative name) самоподписанных сертификатов

4. Скопируйте C2-профиль в RedCaddy
В качестве примера я использую jquery-c2.4.3.profile от threatexpress

5. Отредактируйте правила переадресации в "chains.list"
443:https:192.168.128.64:10001 означает, что входящие подключения на порт *:443 перенаправляются на локальный https://192.168.128.64:10001 (C2-бэкенд)

В: Что такое "warden"?
О: Warden — это функция белого списка для защиты порта вашего teamserver; она генерирует случайную ссылку со случайными защищёнными строками. Пользователь не сможет подключиться к teamserver, пока не активирует её ("warden" после 443 означает обработку ссылки на порту 443).
6. Передайте аргументы, необходимые generator.py, и нажмите Enter.
python3 generator.py -f geacon_jd_pro.profile -r forward-chains.list -c CN -vps-ip 1.1.1.1

7. Наконец, запустите caddy с только что сгенерированным caddyfile :)
sudo ./run.sh

8. Необязательно: соберите собственную версию caddy с конкретными модулями
git clone https://github.com/XiaoliChan/RedCaddy-core.git
cd cmd/caddy
go get github.com/aksdb/caddy-cgi/v2
go get github.com/XiaoliChan/caddy-maxmind-geolocation@self
CGO_ENABLED=0 go build
upx --best --lzma caddy
В: Почему не использовать формат json или yaml?
О: Простите, я не умею записывать caddyfile в формате json/yaml.
В: Можно ли вернуть 404 при несовпадающих маршрутах?
О: Что ж, caddy так не умеет ¯\(ツ)/¯.