1. CobaltStrike的服务端隐藏
因为部分安全公司会不定时做全网的CobaltStrike服务端的识别,从而将IP标记为恶意服务器
因为一些网络测绘平台会检测CobaltStrike服务端的指纹,从而对服务器进行标记
为避免以上情况,所以需要对服务端的特征进行隐藏,与威胁情报相对抗
1.1 修改默认端口
- 打开teamserver,最后一行修改端口50050为其他端口

1.2 修改证书
- 删除cobaltstrike.store
- keytool -keystore ./cobaltstrike.store -storepass 设定一个密码 -keypass 刚才设定的密码 -genkey -keyalg RSA -alias baidu -dname "CN=baidu.com, OU=service operation department, O=Beijing Baidu Netcom Science Technology Co., Ltd, L=beijing, S=beijing, C=CN"
- 这样扫描这台的CS的server端占用端口的证书便无法确定运行的是CS

2. CobaltStrike的C2隐藏
在攻防演练中,某种情况下导致攻击被目标发现,目标会顺着线索继续溯源追踪到具体执行人,而我们的服务器也就变成溯源方的攻击目标之一,遂需要对我们使用的有关上线使用的线索进行隐藏,同样也是为了与威胁情况相对抗
2.1 申请免费域名
原因是免费域名无需备案,即使域名泄露也不会跟踪到注册人
- 通过freenom.com申请免费域名,无需实名
教程: https://zhuanlan.zhihu.com/p/115535965
- 将申请的域名转入dnspod下面进行管理(不转也行,dnspod为腾讯云计算公司全资控股)
教程: https://blog.csdn.net/weixin_46021924/article/details/104859155

- 创建一个A记录指向cs服务器

2.2 隐藏C2的具体IP
原因是隐藏后即使域名泄露,目标也不会知道具体C2的IP地址,无法发起对我们C2服务器的溯源攻击
2.2.1 方法1一利用heruko隐藏
- 暴露信息:
1.固定域名(heroku的)
2.随机IP(heroku的)
- 优点:
1.服务端的域名隐藏
2.服务端的IP隐藏
3.布置简单
4.自带可信的SSL证书
5.免费
- 缺点:
1.上线速度慢
-
注册Heroku账号,点击 https://dashboard.heroku.com 通过gmail邮箱或者其他邮箱注册一个账号
-
然后部署应用,Fork的rootkit师傅项目,heruko的nginx代理部署链接,App name的名字自行设置,为一会heroku生成的域名的前缀,个别时候会heroku会识别不到项目,遇到的话需要自己fork用github登录heroku
-
TARGET,填刚才申请的域名,端口自行设置

- 新建监听器1,域名填申请的域名,端口填heroku设置的target的端口

- 新建监听器2,端口设置443,域名为heroku的应用域名,点击open app查看域名


测试上线,随便生成个exe,监听器选择监听器2,运行上线,显示的上线监听器为监听器1

2.2.2 方法2—利用微林隐藏
- 暴露信息:
1.固定IP(微林的)
- 优点:
1.服务端的域名隐藏
2.服务端的IP隐藏
3.上线速度快,只比用服务器IP慢2s左右
4.布置简单
- 缺点:
1.一点点钱
2.只能使用微林服务器固定IP上线(尝试用过域名解析指向,但是总被拦,内容显示非法阻断)
- 注册微林账号,https://www.vx.link,其他提供类似服务的平台也是可以使用的
- 购买包月套餐,最便宜的即可
- 配置微林
- 流量优化-为服务器添加授权(就是C2服务器)
- 流量优化-创建新的 vxTrans 链接点(配置转发)
- 设置域名解析(其实微林只是他有几台服务器然后转发你设置的端口的流量而已,他的IP也是固定的)
- 示例中我用的中国2这台,ping他的域名得知IP为182.118.xx.xx





- 新建监听器1,端口为微林转发到服务器设置的10000端口,域名为c2服务器自身IP

- 新建监听器2,域名填微林服务器IP 182.118.xx.xx,端口填微林转发到服务器设置的3xxxx端口

- 测试上线,随便生成个exe,监听器选择监听器2,运行上线,显示的上线监听器为监听器1

2.2.3 方法3—利用国外CDN隐藏
- 暴露信息:
1.固定域名(自己的免费域名)
2.随机IP(CDN厂商的)
- 优点:
1.服务端的IP隐藏
2.免费
- 缺点:
1.上线速度慢
- 注册https://www.cloudflare.com/,按照网站教程为免费域名部署CDN
- 开启 缓存—开发者模式,否则无法执行命令,以后使用的时候也要检查是否开启,此项会不定时自动关闭


- 免费套餐限制了使用的端口, cloudflare可访问的端口](https://support.cloudflare.com/hc/zh-cn/articles/200169156-Identifying-network-ports-compatible-with-Cloudflare-s-proxy)

- 注意生成的信息手动复制保存一下,xxx.pem,xxx.key

-
生成xxxxxx.p12
openssl pkcs12 -export -in xxx.pem -inkey xxx.key -out domain.p12 -name 免费域名 -passout pass:设定一个密码
-
生成新的cobaltstrike.store文件,我命名为new.store
keytool -importkeystore -deststorepass 密码 -destkeypass 密码 -destkeystore new.store -srckeystore spoofdomain.p12 -srcstoretype PKCS12 -srcstorepass 密码 -alias 免费域名
-
配置C2.profile,附copy的一个配置文件,自行修改,填好后用c2lint c2.profile验证一下
git clone https://github.com/FortyNorthSecurity/C2concealer.git cd C2concealer ./install.sh C2concealer --variant 1 --hostname 免费域名 3 new.store的路径 new.store的密码 成功生成xxxx.profile c2lint xxxx.profile 确定这个配置文件是否能正常工作
-
修改teamserver配置
vim teamserver 最后一行找对应的改一下 -Djavax.net.ssl.keyStore=./new.store (证书生成的new.store文件地址) -Djavax.net.ssl.keyStorePassword=xxxxxx(上面store文件的密码)
-
创建监听器

- 测试上线,随便生成个exe,选择创建的监听器,运行上线,大概11秒主机上线
2.2.4 方法4—利用国内CDN隐藏
- 暴露信息:
1.固定域名
2.随机IP(CDN厂商的)
- 优点:
1.高信域名
2.IP也是CDN的IP
3.上线速度快
- 缺点:
1.一点点钱
2.不能被CDN所属公司的溯源队伍碰到
使用腾讯云的全站加速举例

点击提交后,本地ping或者用站长之家的ping功能对腾讯云提供的CNAME那个域名进行ping,获得目标IP,这样就可以利用cdn使用host来识别请求域名来进行通信了
可以使用命令进行检查是否可以正常通信
curl -v -H "Host: test1.baidu.com" http://目标IP/test

然后新建一个监听,profile文件可以在网上找一个,把里面的host都改成cdn的域名

3. CobaltStrike的上线端隐藏
因为目标的安全建设多有一些流量监测设备和其他安全设备,会对CobaltStrike的上线流量进行指纹识别,从而进行报警拦截,根据暴露的域名或者主机,还会导致被溯源的几率大大增加。
故需要对上线端->服务端的特征进行隐藏,与溯源、威胁情报、IP封禁进行对抗
利用Profile配置文件对目标到C2之间的流量和证书进行自定义配置,达到尽量减少特征的目的,具体内容,鸽了鸽了。。毕竟是以前的笔记0.0