
Converta perfis do Cobalt Strike para scripts modrewrite
Este projeto converte um perfil do Cobalt Strike em um arquivo funcional de configuração
.htaccess para mod_rewrite ou Nginx para suportar redirecionamento reverso de proxy HTTP para um teamserver do Cobalt Strike. O uso de proxies reversos fornece proteção aos servidores C2 de backend contra perfilamento, investigação e radiação de fundo geral da internet.
Nota: Você deve testar e ajustar a saída conforme necessário antes de implantar, mas estes scripts devem cuidar da maior parte do trabalho pesado.
O exemplo havex.profile está incluído para um teste rápido.
.htaccess ou /etc/nginx/nginx.conf no seu redirecionadorpython3 cs2modrewrite.py -i havex.profile -c https://TEAMSERVER -r https://GOHERE -o /etc/apache2/redirect.rules
Exemplo de configuração do 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>
Considere atualizar o cabeçalho do servidor Apache, ServerTokens e logging com algo como o seguinte.
## 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
Nota: https://bluescreenofjeff.com/2016-06-28-cobalt-strike-http-c2-redirectors-with-apache-mod_rewrite/ "e0x70i apontou nos comentários abaixo que se seu perfil Malleable C2 do Cobalt Strike contém um cabeçalho Accept-Encoding para gzip, sua instalação do Apache pode compactar esse tráfego por padrão e fazer com que seu Beacon fique sem resposta ou funcione incorretamente. Para superar isso, desative o mod_deflate (via a2dismod deflate e adicione a flag No Encode ([NE]) às suas regras de reescrita. (Obrigado, e0x70i!)"
Certifique-se de que as seguintes entradas estejam na configuração do site (ex.: /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
Se você planeja usar mod_rewrite em arquivos .htaccess (em vez do arquivo de configuração do site), também precisa ativar o uso de arquivos .htaccess alterando AllowOverride None para AllowOverride All. Para todos os sites, edite /etc/apache2/apache.conf
<Directory /var/www/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Finalmente, reinicie o apache mais uma vez para garantir.
service apache2 restart
Se você precisar solucionar o comportamento das regras de redirecionamento, ative o rastreamento detalhado de erros no arquivo de configuração do seu site adicionando a seguinte linha.
LogLevel alert rewrite:trace5
Em seguida, recarregue o apache e monitore /var/log/access.log /var/log/error.log para ver quais regras estão sendo correspondidas.
apt-get install nginx nginx-extras
Nota: nginx-extras é necessário para cabeçalhos de servidor personalizados. Se você não conseguir obter este pacote, comente a linha do cabeçalho do servidor no arquivo de configuração resultante.
Salve a saída do cs2nginx.py em /etc/nginx/nginx.conf e modifique conforme necessário (parâmetros 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
Finalmente, reinicie o nginx após modificar o arquivo de configuração do servidor.
service nginx restart
Uma vez que o redirecionamento esteja configurado e funcionando, certifique-se de que seus servidores C2 permitam apenas tráfego de entrada vindo do redirecionador e de seus IPs confiáveis (VPN, faixas do escritório, etc.).
Considere adicionar proteções adicionais ao redirecionador usando restrições GeoIP (mod_maxmind) e listas negras de agentes de usuário e faixas de IP maliciosos. Agradecimentos a @curi0usJack pelas ideias.