
Konvertiert Cobalt Strike-Profile in modrewrite-Skripte
Dieses Projekt konvertiert ein Cobalt-Strike-Profil in eine funktionale mod_rewrite-
.htaccess- oder Nginx-Konfigurationsdatei zur Unterstützung von HTTP-Reverse-Proxy-Umleitungen zu einem Cobalt-Strike-Teamserver. Der Einsatz von Reverse-Proxys schützt Backend-C2-Server vor Profiling, Untersuchung und allgemeiner Internet-Hintergrundstrahlung.
Hinweis: Sie sollten die Ausgabe vor der Bereitstellung nach Bedarf testen und anpassen, aber diese Skripte sollten die Hauptarbeit übernehmen.
.htaccess-Datei mit entsprechenden mod_rewrite-Regeln zu erstellenDas havex.profile-Beispiel ist für einen schnellen Test enthalten.
.htaccess oder /etc/nginx/nginx.confpython3 cs2modrewrite.py -i havex.profile -c https://TEAMSERVER -r https://GOHERE -o /etc/apache2/redirect.rules
Beispiel-Apache-Konfiguration
<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>
Erwägen Sie, den Apache-Server-Header, ServerTokens und die Protokollierung mit etwa Folgendem zu aktualisieren.
## 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
Hinweis: https://bluescreenofjeff.com/2016-06-28-cobalt-strike-http-c2-redirectors-with-apache-mod_rewrite/ "e0x70i wies in den Kommentaren unten darauf hin, dass Ihr Apache-Installation den Datenverkehr standardmäßig komprimieren kann, wenn Ihr Cobalt-Strike-Malleable-C2-Profil einen Accept-Encoding-Header für gzip enthält, was dazu führen kann, dass Ihr Beacon nicht reagiert oder nicht richtig funktioniert. Um dies zu beheben, deaktivieren Sie mod_deflate (via a2dismod deflate) und fügen Sie Ihren Rewrite-Regeln das No-Encode-Flag ([NE]) hinzu. (Danke, e0x70i!)"
Stellen Sie sicher, dass die folgenden Einträge in der Konfiguration der Site vorhanden sind (z. B. /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
Wenn Sie planen, mod_rewrite in .htaccess-Dateien zu verwenden (anstatt in der Konfigurationsdatei der Site), müssen Sie außerdem die Verwendung von .htaccess-Dateien aktivieren, indem Sie AllowOverride None in AllowOverride All ändern. Bearbeiten Sie für alle Websites /etc/apache2/apache.conf
<Directory /var/www/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Starten Sie Apache schließlich zur Sicherheit noch einmal neu.
service apache2 restart
Wenn Sie das Verhalten der Umleitungsregeln untersuchen müssen, aktivieren Sie die detaillierte Fehlerverfolgung in der Konfigurationsdatei Ihrer Site, indem Sie die folgende Zeile hinzufügen.
LogLevel alert rewrite:trace5
Laden Sie als Nächstes Apache neu und überwachen Sie /var/log/access.log und /var/log/error.log, um zu sehen, welche Regeln greifen.
apt-get install nginx nginx-extras
Hinweis: nginx-extras wird für benutzerdefinierte Server-Header benötigt. Wenn Sie dieses Paket nicht erhalten können, kommentieren Sie die Server-Header-Zeile in der resultierenden Konfigurationsdatei aus.
Speichern Sie die Ausgabe von cs2nginx.py in /etc/nginx/nginx.conf und ändern Sie sie nach Bedarf (SSL-Parameter).
python3 ./cs2nginx.py -i havex.profile -c https://127.0.0.1 -r https://www.google.com -H mydomain.local >/etc/nginx/nginx.conf
Starten Sie Nginx schließlich neu, nachdem Sie die Serverkonfigurationsdatei geändert haben.
service nginx restart
Sobald die Umleitung konfiguriert ist und funktioniert, stellen Sie sicher, dass Ihre C2-Server nur eingehenden Verkehr vom Redirector und von Ihren vertrauenswürdigen IPs (VPN, Bürobereiche usw.) zulassen.
Erwägen Sie, zusätzlichen Redirector-Schutz mithilfe von GeoIP-Einschränkungen (mod_maxmind) sowie Blacklists für böswillige User-Agents und IP-Bereiche hinzuzufügen. Dank an @curi0usJack für die Ideen.