
Convertir les profils Cobalt Strike en scripts modrewrite
Ce projet convertit un profil Cobalt Strike en un fichier de configuration mod_rewrite
.htaccess ou Nginx fonctionnel pour prendre en charge la redirection proxy HTTP inverse vers un teamserver Cobalt Strike. L'utilisation de proxys inverses offre une protection aux serveurs C2 backend contre le profilage, l'investigation et le bruit général d'Internet.
Note : Vous devez tester et ajuster la sortie selon vos besoins avant le déploiement, mais ces scripts devraient effectuer le gros du travail.
.htaccess avec les règles mod_rewrite correspondantesL'exemple havex.profile est inclus pour un test rapide.
.htaccess ou /etc/nginx/nginx.conf sur votre redirecteurpython3 cs2modrewrite.py -i havex.profile -c https://TEAMSERVER -r https://GOHERE -o /etc/apache2/redirect.rules
Exemple de configuration 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>
Envisagez de mettre à jour l'en-tête du serveur Apache, ServerTokens et la journalisation avec quelque chose comme ce qui suit.
## 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
Note : https://bluescreenofjeff.com/2016-06-28-cobalt-strike-http-c2-redirectors-with-apache-mod_rewrite/ "e0x70i a souligné dans les commentaires ci-dessous que si votre profil Malleable C2 de Cobalt Strike contient un en-tête Accept-Encoding pour gzip, votre installation Apache peut compresser ce trafic par défaut et rendre votre Beacon non réactif ou défectueux. Pour contourner cela, désactivez mod_deflate (via a2dismod deflate) et ajoutez le drapeau No Encode ([NE]) à vos règles de réécriture. (Merci, e0x70i !)"
Assurez-vous que les entrées suivantes se trouvent dans la configuration du site (par exemple /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 vous prévoyez d'utiliser mod_rewrite dans des fichiers .htaccess (au lieu du fichier de configuration du site), vous devez également activer l'utilisation des fichiers .htaccess en remplaçant AllowOverride None par AllowOverride All. Pour tous les sites web, modifiez /etc/apache2/apache.conf
<Directory /var/www/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Enfin, redémarrez apache une fois de plus pour faire bonne mesure.
service apache2 restart
Si vous avez besoin de dépanner le comportement des règles de redirection, activez le traçage détaillé des erreurs dans le fichier de configuration de votre site en ajoutant la ligne suivante.
LogLevel alert rewrite:trace5
Ensuite, rechargez apache et surveillez /var/log/access.log /var/log/error.log pour voir quelles règles correspondent.
apt-get install nginx nginx-extras
Note : nginx-extras est nécessaire pour les en-têtes de serveur personnalisés. Si vous ne pouvez pas obtenir ce package, commentez la ligne d'en-tête du serveur dans le fichier de configuration résultant.
Enregistrez la sortie de cs2nginx.py dans /etc/nginx/nginx.conf et modifiez si nécessaire (paramètres 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
Enfin, redémarrez nginx après avoir modifié le fichier de configuration du serveur.
service nginx restart
Une fois la redirection configurée et fonctionnelle, assurez-vous que vos serveurs C2 n'autorisent l'entrée que depuis le redirecteur et vos IP de confiance (VPN, plages de bureau, etc.).
Envisagez d'ajouter des protections supplémentaires au redirecteur en utilisant des restrictions GeoIP (mod_maxmind) et des listes noires de mauvais user agents et de plages IP. Merci à @curi0usJack pour les idées.