CobaltStrike特征隐藏

cs也有属于自己的特征 , 比如默认开放的端口号是50050 , 自带证书里面有cobalt strike字符等。如今,cs的特征早被waf厂商标记了,所以为了不暴露,我们需要修改cs特征。

修改特征是针对cs服务端进行特征的修改 , 客户端不需要修改

修改默认端口 #

cs服务端口默认为50050,现在修改为6790

vim teamserver

去除证书特征 #

Cobalt Strike默认的证书,已经被waf厂商标记烂了,我们要重新生成一个新的证书,这里我们用JDK自带的keytool证书工具来生成新证书。

证书文件为“cobaltstrike.store”

  1. 查看默认证书特征
keytool -list -v -keystore cobaltstrike.store
#默认密码为123456或空

可以看到,cs的默认证书的Alias name等信息,特征比较明显

  1. 生成新的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"

  1. 修改证书标准并应用
keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12
#再次查看证书
keytool -list -v -keystore cobaltstrike.store
  1. 将新证书替换掉原来的证书就行

设置混淆配置文件 #

我们cs的客户端/服务端的流量通信,大部分流量审计软件,都能检测到cs默认的通信流量,所以cs开发团队,设置了配置文件,让用户直接设置客户端/服务端双向通信的流量格式以及软件相应配置,来绕过流量审计

cs中默认是没有profile文件的 , 需要自己配置,整个profile文件的配置就是进行流量上的伪装 , 防溯源 , 把命令的下发和结果的回传进行包装 , 让他从流量上看起来更像是在访问网页。

官方也给出了一个可修改的配置文件

GitHub - rsmudge/Malleable-C2-Profiles: Malleable C2 is a domain specific language to redefine indicators in Beacon's communication. This repository is a collection of Malleable C2 profiles that you may use. These profiles work with Cobalt Strike 3.x.

可以看看配置自己写,或者直接只用github上的项目:https://codeload.github.com/threatexpress/malleable-c2/zip/refs/heads/master

这里将其中一个“ jquery-c2.4.4.profile”传上去就是

  1. 查看配置是否可用

./c2lint jquery-c2.4.4.profile

  1. 启动
./teamserver 39.100.88.162 密码 jquery-c2.4.4.profile

在没设置配置文件之前,默认流量是这样的,如请求/activity

加上配置文件之后,变成请求jquery去了

CDN隐藏 #

域名白嫖 #

Client Area - Freenom

  1. 梯子服务器ip换成米国的
  2. 输入带后缀的域名

加入到购物车

  1. 点击选择使用google账号登录
  2. 接收google账号验证码:https://mail.google.com/mail/u/0/#inbox

点击services-my domains就能看到已注册的域名

注册了两个

  • csrc.tk
  • csrc.ml

CDN白嫖 #

这里使用CloudFlare的免费CDN:https://dash.cloudflare.com/e9faa7ef4aa2a2bff305aa43d900fb55/select-product

  1. 添加站点记录

点击Add Site

填写域名csrc.tk,然后选择免费的

  1. 添加A记录

指向自己的vps地址:https://dash.cloudflare.com/e9faa7ef4aa2a2bff305aa43d900fb55/csrc.tk/dns

  1. 到freenom中修改dns服务器

复制freennom的dns服务器

进入freenom:Client Area - Freenom

如下进行修改

  1. 开启开发者模式

  1. 测试是否成功

nslookup www.csrc.tk

vps开启web服务,使用域名访问看是否成功

以上说明cdn和域名都配置成功!

https证书配置

  1. 确保SSL/TLS加密模式为完全

  1. 点击源服务器—创建证书

点击创建

  1. 把证书和秘钥复制保存下来,分别保存为pem.pem和key.key

将两个文件上传到vps中

  1. 生成新的证书

将原来的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
  1. profile配置文件

在上面设置混淆配置文件中添加了一个新的配置文件“jquery-c2.4.4.profile”,打开这个文件,添加如下

https-certificate {
set keystore "cobaltstrike.store";
set password "bypass";
}

  1. 验证配置文件是否有效,未出错则有效
./c2lint jquery-c2.4.4.profile

有效

  1. 修改teamserver配置文件

javax.net.ssl.keyStore=./xx.store -Djavax.net.ssl.keyStorePassword=证书密码

  1. 启动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中禁用的老协议去掉即可。但是我这里还是一样不成功

CobaltStrike SSL证书配置 | Z3ratu1's blog