cs也有属于自己的特征 , 比如默认开放的端口号是50050 , 自带证书里面有cobalt strike字符等。如今,cs的特征早被waf厂商标记了,所以为了不暴露,我们需要修改cs特征。
修改特征是针对cs服务端进行特征的修改 , 客户端不需要修改
修改默认端口 #
cs服务端口默认为50050,现在修改为6790
vim teamserver
去除证书特征 #
Cobalt Strike默认的证书,已经被waf厂商标记烂了,我们要重新生成一个新的证书,这里我们用JDK自带的keytool证书工具来生成新证书。
证书文件为“cobaltstrike.store”
- 查看默认证书特征
keytool -list -v -keystore cobaltstrike.store #默认密码为123456或空
可以看到,cs的默认证书的Alias name等信息,特征比较明显
- 生成新的cs证书
keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias baidu.com -dname "CN=ZhongGuo, OU=CC, O=CCSEC, L=BeiJing, ST=ChaoYang, C=CN"
- 修改证书标准并应用
keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12 #再次查看证书 keytool -list -v -keystore cobaltstrike.store
- 将新证书替换掉原来的证书就行
设置混淆配置文件 #
我们cs的客户端/服务端的流量通信,大部分流量审计软件,都能检测到cs默认的通信流量,所以cs开发团队,设置了配置文件,让用户直接设置客户端/服务端双向通信的流量格式以及软件相应配置,来绕过流量审计
cs中默认是没有profile文件的 , 需要自己配置,整个profile文件的配置就是进行流量上的伪装 , 防溯源 , 把命令的下发和结果的回传进行包装 , 让他从流量上看起来更像是在访问网页。
官方也给出了一个可修改的配置文件
可以看看配置自己写,或者直接只用github上的项目:
这里将其中一个“ jquery-c2.4.4.profile”传上去就是
- 查看配置是否可用
./c2lint jquery-c2.4.4.profile
- 启动
./teamserver 39.100.88.162 密码 jquery-c2.4.4.profile
在没设置配置文件之前,默认流量是这样的,如请求/activity
加上配置文件之后,变成请求jquery去了
CDN隐藏 #
域名白嫖 #
- 梯子服务器ip换成米国的
- 输入带后缀的域名
加入到购物车
- 点击选择使用google账号登录
- 接收google账号验证码:
点击services-my domains就能看到已注册的域名
注册了两个
- csrc.tk
- csrc.ml
CDN白嫖 #
这里使用CloudFlare的免费CDN:
- 添加站点记录
点击Add Site
填写域名csrc.tk,然后选择免费的
- 添加A记录
指向自己的vps地址:
- 到freenom中修改dns服务器
复制freennom的dns服务器
进入freenom:
如下进行修改
- 开启开发者模式
- 测试是否成功
nslookup www.csrc.tk
vps开启web服务,使用域名访问看是否成功
以上说明cdn和域名都配置成功!
https证书配置
- 确保SSL/TLS加密模式为完全
- 点击源服务器—创建证书
点击创建
- 把证书和秘钥复制保存下来,分别保存为pem.pem和key.key
将两个文件上传到vps中
- 生成新的证书
将原来的cobaltstrike.store删除,使用keytool重新创建cobaltstrike.store证书,密码为bypass
#首先执行 openssl pkcs12 -export -in 证书名 -inkey 私钥名 -out p12名,如abc.p12 -name 域名 -passout pass:bypass openssl pkcs12 -export -in pem.pem -inkey key.key -out apex.tk.p12 -name csrc.tk -passout pass:bypass #其次 keytool -importkeystore -deststorepass 密码 -destkeypass 密码 -destkeystore store名 -srckeystore p12名,如abc.p12 -srcstoretype PKCS12 -srcstorepass 密码 -alias 别名 keytool -importkeystore -deststorepass bypass -destkeypass bypass -destkeystore cobaltstrike.store -srckeystore apex.tk.p12 -srcstoretype PKCS12 -srcstorepass bypass -alias csrc.tk
- profile配置文件
在上面设置混淆配置文件中添加了一个新的配置文件“jquery-c2.4.4.profile”,打开这个文件,添加如下
https-certificate { set keystore "cobaltstrike.store"; set password "bypass"; }
- 验证配置文件是否有效,未出错则有效
./c2lint jquery-c2.4.4.profile
有效
- 修改teamserver配置文件
javax.net.ssl.keyStore=./xx.store -Djavax.net.ssl.keyStorePassword=证书密码
- 启动cs
./teamserver 39.xxx.162 xxxx jquery-c2.4.4.profile
如果启动未报错,cs客户端也能正常连接,这配置成功
cs配置https监听 #
Cloudflare只支持监听以下端口:
- Cloudflare支持的HTTP端口是:80,8080,8880,2052,2082,2086,2095
- Cloudflare支持的HTTPs端口是:443,2053,2083,2087,2096,8443
如果VPS是国内云主机,且注册的免费域名没有备案,则不能使用80、8080、443、8443端口提供服务。以下使用的是8443端口
然后生成exe,win2012上线
与目标机器通信的地址为104.21.62.222,不是vps地址了
https上线win7的问题 #
当我使用exe或者powershell上线win7时,一直不成功,发现如下问题“未能为 SSL/TLS 安全通道建立信任关系”
win7只对外协商tls1.0和ssl3.0,cs服务端的java在更新中弃用了老算法,导致老一点的tls协议不接受,所以连不上,启用后即可接受tls1.0成功上线了
修补方案为修改jkdpath/jre/lib/security/java.security文件,把jdk.tls.disabledAlgorithms中禁用的老协议去掉即可。但是我这里还是一样不成功