
Cobalt Strikeプロファイルをmodrewriteスクリプトに変換する
このプロジェクトは、Cobalt Strike プロファイルを機能的な mod_rewrite
.htaccess または Nginx 設定ファイルに変換し、Cobalt Strike チームサーバーへの HTTP リバースプロキシリダイレクションをサポートします。リバースプロキシを使用することで、バックエンドの C2 サーバーをプロファイリング、調査、および一般的なインターネットのバックグラウンド放射から保護できます。
注記: デプロイ前に、必要に応じて出力をテストおよび調整してください。ただし、これらのスクリプトが面倒な作業を処理します。
.htaccess ファイルを構築しますクイックテスト用に 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>
以下のように Apache Server ヘッダー、ServerTokens、およびロギングの更新を検討してください。
## 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 さんが下のコメントで指摘したように、Cobalt Strike Malleable C2 プロファイルに gzip の Accept-Encoding ヘッダーが含まれている場合、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
.htaccess ファイル内で mod_rewrite を使用する予定がある場合(サイトの設定ファイルの代わりに)、AllowOverride None を AllowOverride All に変更して .htaccess ファイルの使用を有効にする必要もあります。すべての Web サイトに対して /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 に感謝します。