一. cs 通讯介绍
在红蓝对抗中,防守方往往会有很多的设备审计流量。Cobalt Strike 服务端和客户端是通过 SSL 加密通讯的 (默认证书对 cobaltstrike.store),默认情况下的 SSL 配置文件和代理配置文件导致 keystore 文件内容被用于防火墙识别及特征识别。并且默认配置的 SSL 证书对不是合法的无法使用 HTTPS Beacon,实则 HTTPS Beacon 的流量还是明文的传输的
二. keystore 介绍
2.1 keystore 文件
keystore 是 java 的密钥库,用来进行通信加密,如数字签名。keystore 就是用来保存密钥对的,公钥和私钥。Keystore 可理解为一个数据库,可以存放很多个组数据。
每组数据主要包含以下两种数据:
密钥实体 —- 密钥 (secret key) 又或者私钥和配对公钥(采用非对称加密)
可信任的证书实体 —- 只包含公钥
2.2 keytool 生成证书对
Keytool 是一个 java 数据证书的管理工具,Keytool 可以将密钥和证书存放在 keystore 的文件中,形成后缀为. store 文件的证书对。
查看 cs 默认证书文件,:
keytool -list -v -keystore cobaltstrike.store
三. 生成合法证书
3.1 申请 SSL 证书
- 准备一个域名,添加 A 记录指向自己的 vps
- 申请ssl 证书
CSR 选择浏览器生成,然后点击创建
会生成一个 TXT 记录,然后前往域名配置中去添加一条 TXT 记录规则
注:TXT 记录,也可以称之为 SPF 记录。指为主机名或域名进行配置说明。一般常见于邮箱域名,是非常高效的垃圾邮件解决方案。接收方邮件方会首先检查域名的 SPF 记录,来确定发件人的 IP 地址是不是被包含在 SPF 记录里面。
TXT 记录解析记录配置成功后,可以使用 nslookup 命令检测 TXT 配置是否成功
配置成功后,下载 ssl 证书文件
- 生成 keystore 文件
使用 openssl 将 pem 证书和 key 私钥导出为 P12 格式的证书
openssl pkcs12 -export -in pem 证书 -inkey key 私钥 -out p12 文件 -name 域名 -passout pass: 密码
openssl pkcs12 -export -in full_chain.pem -inkey private.key -out test.zxylab.p12 -name test.zxylab.xyz -passout pass:zxylabtest
使用 keytool 生成 store 格式的证书对
keytool -importkeystore -deststorepass pass -destkeypass pass -destkeystore store 文件 -srckeystore P12 格式证书 -srcstoretype PKCS12 -srcstorepass pass -alias 域名
keytool -importkeystore -deststorepass mypass -destkeypass mypass -destkeystore spoofdomain.store -srckeystore spoofdomain.p12 -srcstoretype PKCS12 -srcstorepass mypass -alias spoofdomain.com
四. cs 启用合法证书
4.1 cs 证书配置
cs 启动的时候会加载一个默认的配置文件,里面配置了证书文件,证书密码,心跳时间等。配置文件中还可以自己修改特定的请求和响应,可以分析一些百度、谷歌这种网站的请求来修改,让 cs 的通信在流量中看起来更像合法的请求。要在 teamserver 使用另外的 keystore 证书文件,还需要重新写个配置文件 (profile) 引用证书。CS profile 文件地址:https://github.com/rsmudge/Malleable-C2-Profiles/
https Beacon 的证书配置如下:
https-certificate {
set keystore “store文件”;
set password “密码”;
}
修改完成后,可以用自带的 c2lint 检查配置文件是否正确,只要不报错就可以正常使用
最后还需要修改 teamserver 文件,把证书文件和密码修改为自己生成的。也可以修改端口号,50050 端口也是 cs 的特征
4.2 cs 上线测试
全部修改完成后,使用命令启动 teamserver
./teamserver ip pass zxylab.profile
启动后创建监听, HTTPS Hosts、HTTPS Host(Stager)、HTTPS Host Header 字段都填入自己的域名,配置 powershell 上线,勾选 Enable SSL 选项
https 监听器:
利用 script web 模块生成 powershell payload
上线成功
直接访问 payload 下载地址 (web),浏览器标记证书有效,https 协议传输
目标与服务端的通讯使用 https 协议传输
参考文档啊
http://blog.leanote.com/post/snowming/6a724671de78
https://mp.weixin.qq.com/s/sYfvD0XQqi6BFw70_jrv5Q
https://app.yinxiang.com/fx/9981c554-de8f-42bf-85b6-c74c3d425744