Cobalt Strike折腾指北
起因
前段时间在公司看到了大佬用cs在内网中的表现,也决定自己动手折腾一套基础设施。上网查阅了许多资料后,最终敲定的建设拓扑图如下:
选择这套setup的原因有一下几点:
最大众化的amazon domain fronting已经不行了, 详情请看: 链接
用阿里CDN实现同样的效果似乎需要备案
借助Nginx反代我想要隐藏Team Server(建设完成后在上线的主机上抓包,还是能抓到和Team server交互的数据包, 反倒是CC隐藏的很好…不过这是基于我知道IP地址的情况下, 但是退一步说部属Team Server可简单很多)封IP很难解决使用Cloud Flare CDN的问题, 除非你封整个CF拥有的ipv4 && ipv6的IP段: IPv4 | IPv6 (这样的办法虽然能凑效, 但是代价是不能正常访问使用了CF CDN服务的网站)
我想折腾折腾
过程
按照官方的部署方法,很快就部署好了,可以实现简单的上线等一系列功能,麻烦的事情在于按照上述要求对基础设施进行改造。
注册域名, 解析域名到CC和Team Server并打开CDN。
给Nginx写好配置文件,反向代理到Team Server。在这儿我就遇到了第一个坑。
当两个相同二级域名的网站使用Cloud Flare的CDN时,会出现Error 1000的情况,查询了官方文档后基本确定,要么用两个不同域名,要么两个其中有一个域名不能用CF。
跳过第一个坑,又解决了一系列SSL证书问题后(参考文章: 链接),开始着手
malleable-c2
配置文件。
关于malleable-c2
这里由于我懒,一开始使用的GitHub上的配置文件,伪装成请求jQuery文件,然而我发现我这么用,虽然主机能够上线,但是执行命令完全没有回显。在Nginx的日志中又能看到请求,初步判断是配置文件中设置的refer和Host两个字段导致的原因,所以最终还是决定,自己写一份,然后在想办法伪装。
- 解决了以上这些问题后,总算是能上线且执行命令了。
伪装
这里我观察到一个有意思的现象,在使用Web Delivery PowerShell 的时候,Cobalt Strike中日志观察到的请求没有User Agent部分,加上malleable-c2
配置文件中可以设置请求的User Agent,所以可以根据User Agent是否为空 以及是否等于你配置中规定的User Agent来实现反代,如果UA不符合Nginx中的配置,则完全就是一个正常的网页。
1 | location / { |