
Convierte perfiles de Cobalt Strike a scripts modrewrite
Este proyecto convierte un perfil de Cobalt Strike en un archivo funcional de mod_rewrite
.htaccess o de configuración de Nginx para soportar la redirección por proxy inverso HTTP hacia el teamserver de Cobalt Strike. El uso de proxies inversos proporciona protección a los servidores C2 de backend frente a la elaboración de perfiles, la investigación y la radiación general de fondo de Internet.
Nota: Debes probar y ajustar la salida según sea necesario antes de implementarla, pero estos scripts deberían encargarse del trabajo pesado.
.htaccess con las reglas mod_rewrite correspondientesEl ejemplo havex.profile se incluye para una prueba rápida.
.htaccess o /etc/nginx/nginx.conf en tu redireccionadorpython3 cs2modrewrite.py -i havex.profile -c https://TEAMSERVER -r https://GOHERE -o /etc/apache2/redirect.rules
Ejemplo de configuración de 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>
Considera actualizar la cabecera del servidor Apache, ServerTokens y el registro de eventos con algo como lo siguiente.
## 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 señaló en los comentarios siguientes que si tu perfil Malleable C2 de Cobalt Strike contiene una cabecera Accept-Encoding para gzip, tu instalación de Apache puede comprimir ese tráfico de forma predeterminada y hacer que tu Beacon no responda o funcione incorrectamente. Para superar esto, desactiva mod_deflate (mediante a2dismod deflate) y añade el indicador No Encode ([NE]) a tus reglas de reescritura. (¡Gracias, e0x70i!)"
Asegúrate de que las siguientes entradas estén en el archivo de configuración del sitio (p. ej. /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
Si planeas usar mod_rewrite en archivos .htaccess (en lugar del archivo de configuración del sitio), también necesitas habilitar el uso de archivos .htaccess cambiando AllowOverride None a AllowOverride All. Para todos los sitios web, edita /etc/apache2/apache.conf
<Directory /var/www/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Finalmente, reinicia apache una vez más para asegurarte.
service apache2 restart
Si necesitas depurar el comportamiento de las reglas de redirección, habilita el rastreo detallado de errores en el archivo de configuración de tu sitio añadiendo la siguiente línea.
LogLevel alert rewrite:trace5
A continuación, recarga apache y supervisa /var/log/access.log /var/log/error.log para ver qué reglas coinciden.
apt-get install nginx nginx-extras
Nota: nginx-extras es necesario para las cabeceras de servidor personalizadas. Si no puedes obtener este paquete, comenta la línea de la cabecera del servidor en el archivo de configuración resultante.
Guarda la salida de cs2nginx.py en /etc/nginx/nginx.conf y modifícala según sea necesario (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, reinicia nginx después de modificar el archivo de configuración del servidor.
service nginx restart
Una vez que la redirección esté configurada y funcionando, asegúrate de que tus servidores C2 solo permitan el tráfico entrante desde el redireccionador y tus IPs de confianza (VPN, rangos de oficina, etc.).
Considera añadir protecciones adicionales al redireccionador mediante restricciones GeoIP (mod_maxmind) y listas negras de user agents e IPs maliciosos. Gracias a @curi0usJack por las ideas.