cobalt skrike合法证书实现ssl加密通讯

一. 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 baidu.p12 -name baidu.xyz -passout pass:123456

使用keytool生成store格式的证书对

keytool -importkeystore -deststorepass pass -destkeypass pass -destkeystore store文件 -srckeystore P12格式证书 -srcstoretype PKCS12 -srcstorepass pass -alias 域名

keytool -importkeystore -deststorepass mypass -destkeypass mypass -destkeystore baidu.store -srckeystore spoofdomain.p12 -srcstoretype PKCS12 -srcstorepass mypass -alias baidu.xyz

四. 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 baidu.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://www.cnblogs.com/supdon/p/14688257.html