Cobalt Strike with CloudFlare

  • A+
所属分类:安全工具 安全文章

Cobalt Strike with CloudFlare

起因

这几天在某威胁情报平台上发现之前已经失效的CS标签又被重新标记了,也许是因为那啥?强迫症起来了,迁移了下C2重新换了ip,再重新加固下。

端口

证书和端口修改的方式这里不再重新讲,修改对应端口,生成证书。
这里可以再狠点,墙上设置下规则,或者iptables设置下,只允许跳板代理访问cs服务端的端口。

Cobalt Strike with CloudFlare

我这里是通过跳板访问,没有设置白名单访问跳板。
问题也不大,就算标记了也只是跳板,除非CS被爆菊了。

Cobalt Strike with CloudFlare

重定向

重点放在前端的重定向。
讲在前面,这里https使用的是2053端口,原因之前讲过,不再重复。

证书

之前使用socat直接转发重定向器流量到CS的监听器,但是不是很稳定,参考了文章换成了nginx做转发。
结合了一下cloudflare的cdn和证书。
clf的SSL设置如图所示,由于开启了CDN,所以SSL需要分为两部分,一部分是浏览器到clf CDN服务器的传输加密,一部分是clf CDN服务器到你网站服务器之间的数据传输。

Cobalt Strike with CloudFlare

之前的架构采用的是Flexible模式,clf CDN与重定向器之间流量没有进行加密。
这里插入个题外话,https上线的证书问题,这个证书跟前面在teamserver中修改的证书是两码事,这个证书要修改需要配置C2 profile。

回来,这里改成Full模式,然后建议使用clf的Origin CA,证书免费,在SSL/TLS的Origin Server菜单下,选择”Create Certificate“,创建证书下载。

Cobalt Strike with CloudFlare

然后在nginx中配置(假定证书目录如下):


  1. ssl_certificate /usr/local/nginx/conf/ssl/cert.pem;

  2. ssl_certificate_key /usr/local/nginx/conf/ssl/key.pem;

重载以后就是全加密了。

限制访问

开启clf的Authenticated Origin Pulls功能。这样客户端在访问你网站服务器的内容时,需要提交客户端证书验证,否则不允许访问,防止服务器数据被非clf CDN服务器访问。
1.下载证书:https://support.cloudflare.com/hc/zh-cn/article_attachments/360044928032/origin-pull-ca.pem ,保存为crt格式。在SSL/TLS的Origin Server菜单下开启Authenticated Origin Pulls功能。

Cobalt Strike with CloudFlare

2.在Nginx中配置:


  1. ssl_client_certificate /usr/local/nginx/conf/ssl/origin-pull-ca.crt;

  2. ssl_verify_client on;

3.重载nginx,直接尝试ip访问,可以发现为400,提示No required SSL certificate was sent。

Cobalt Strike with CloudFlare

ip策略

当然可以进一步限制,可以考虑在Nginx上,屏蔽一切非clf CDN服务器的访问,我们可以在https://www.cloudflare.com/ips/看到clf使用的IP,可以新建一个conf文件,allow上面的ip,然后在nginx.conf中包含该配置文件即可。

Cobalt Strike with CloudFlare

测试

域名访问下页面,没有问题。Cobalt Strike with CloudFlare

测试下转发是否启用,访问C2 profile中的URI。

Cobalt Strike with CloudFlare

生成一个exe测试下。

Cobalt Strike with CloudFlare

注意

配置的时候记得 X-Forwarded-For 头配置,不然存在上线ip不正确的问题,可以根据参考文章中设置进行配置。

参考文章

https://mp.weixin.qq.com/s/OK0m9lln5-XjHHkWLwMxHg
https://jayshao.com/cloudflare-nginx-ssl/


发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: