
Преобразование профилей Cobalt Strike в скрипты modrewrite
Этот проект преобразует профиль Cobalt Strike в функциональный файл mod_rewrite
.htaccess или конфигурационный файл Nginx для поддержки обратного проксирования HTTP на командный сервер (teamserver) Cobalt Strike. Использование обратных прокси обеспечивает защиту внутренних C2-серверов от профилирования, исследования и общего интернет-фонового шума.
Примечание: Перед развертыванием следует протестировать и настроить результат по мере необходимости, но эти скрипты должны выполнить основную работу.
Пример havex.profile включен для быстрой проверки.
.htaccess или /etc/nginx/nginx.conf на вашем редиректореpython3 cs2modrewrite.py -i havex.profile -c https://TEAMSERVER -r https://GOHERE -o /etc/apache2/redirect.rules
Пример конфигурации Apache
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
RemoteIPHeader X-Forwarded-For
ErrorLog /var/log/apache2/redirector_error.log
CustomLog /var/log/apache2/redirector_access.log combined
ErrorDocument 401 " "
ErrorDocument 403 " "
ErrorDocument 404 " "
ErrorDocument 500 " "
ErrorDocument 503 " "
# Include redirect.rules
Include /etc/apache2/redirect.rules
</VirtualHost>
Рассмотрите возможность обновления Server Header, ServerTokens и журналирования Apache, например, следующим образом.
## Update Apached Server Header, ServerTokens, and logging
echo "Update Update Apached Server Header, ServerTokens, and logging"
sed -i -e 's/\(ServerTokens\s\+\)OS/\1Prod/g' /etc/apache2/conf-enabled/security.conf
sed -i -e 's/\(ServerSignature\s\+\)On/\1Off/g' /etc/apache2/conf-enabled/security.conf
echo "SecServerSignature Server" >> /etc/apache2/conf-enabled/security.conf
echo "LogLevel alert rewrite:trace2" >> /etc/apache2/conf-enabled/security.conf
## Update Apached remoteip.conf
echo "Update Apached remoteip.conf"
echo "RemoteIPHeader X-Forwarded-For" >> /etc/apache2/conf-enabled/remoteip.conf
## Restart apache server
echo "Restart apache server"
systemctl restart apache2
python3 cs2modrewrite.py -i havex.profile -c https://TEAMSERVER -r https://GOHERE -o /var/www/html/.htaccess
apt-get install apache2
a2enmod rewrite headers proxy proxy_http ssl cache
a2dismod -f deflate
service apache2 reload
Примечание: https://bluescreenofjeff.com/2016-06-28-cobalt-strike-http-c2-redirectors-with-apache-mod_rewrite/ «e0x70i указал в комментариях ниже, что если ваш профиль Malleable C2 для Cobalt Strike содержит заголовок Accept-Encoding для gzip, ваша установка Apache может сжимать этот трафик по умолчанию и приводить к тому, что ваш Beacon не отвечает или работает некорректно. Чтобы преодолеть это, отключите mod_deflate (с помощью a2dismod deflate) и добавьте флаг No Encode ([NE]) в ваши правила перезаписи. (Спасибо, e0x70i!)»
Убедитесь, что следующие записи находятся в конфигурации сайта (например, /etc/apache2/available-sites/*.conf)
# Enable SSL
SSLEngine On
# Enable SSL Proxy
SSLProxyEngine On
# Trust Self-Signed Certificates generated by CobaltStrike
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
Если вы планируете использовать mod_rewrite в файлах .htaccess (вместо конфигурационного файла сайта), вам также необходимо разрешить использование файлов .htaccess, изменив AllowOverride None на AllowOverride All. Для всех веб-сайтов отредактируйте /etc/apache2/apache.conf
<Directory /var/www/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Наконец, перезапустите Apache еще раз для надежности.
service apache2 restart
Если вам нужно устранить неполадки в поведении правил перенаправления, включите подробную трассировку ошибок в конфигурационном файле вашего сайта, добавив следующую строку.
LogLevel alert rewrite:trace5
Затем перезагрузите Apache и отслеживайте /var/log/access.log и /var/log/error.log, чтобы увидеть, какие правила срабатывают.
apt-get install nginx nginx-extras
Примечание: пакет nginx-extras необходим для пользовательских серверных заголовков. Если вы не можете получить этот пакет, закомментируйте строку серверного заголовка в итоговом конфигурационном файле.
Сохраните вывод cs2nginx.py в /etc/nginx/nginx.conf и измените по мере необходимости (параметры SSL).
python3 ./cs2nginx.py -i havex.profile -c https://127.0.0.1 -r https://www.google.com -H mydomain.local >/etc/nginx/nginx.conf
Наконец, перезапустите nginx после изменения файла конфигурации сервера.
service nginx restart
После настройки и запуска перенаправления убедитесь, что ваши C2-серверы разрешают входящий трафик только с редиректора и ваших доверенных IP-адресов (VPN, офисные диапазоны и т. д.).
Рассмотрите возможность добавления дополнительных мер защиты редиректора с помощью GeoIP-ограничений (mod_maxmind) и черных списков нежелательных пользовательских агентов и IP-диапазонов. Спасибо @curi0usJack за идеи.