cobalt Strike合法证书实现ssl加密通讯 您所在的位置:网站首页 ssl证书不合法 cobalt Strike合法证书实现ssl加密通讯

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

2023-06-21 18:18| 来源: 网络整理| 查看: 265

一. 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协议传输

五.遇到的小问题 1.SSL beacon会话回连不过来

Windows server 2008及以下,默认不支持tls1.2套接字,https协商失败,致使https beacon无法上线 启用tls1.2套接字,https beacon 就能正常上线 使用freessl.cn生成的ssl证书,默认只支持tls1.2和tls1.3套接字版本 ![image.png](https://img-blog.csdnimg.cn/img_convert/f2e8b8b6e0dd96afee01b10a6697dea7.png#clientId=u3e75deab-d29e-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=455&id=ue4ef7829&margin=[object Object]&name=image.png&originHeight=910&originWidth=1530&originalType=binary&ratio=1&rotation=0&showTitle=false&size=428586&status=done&style=none&taskId=u338bb518-e63b-4d8e-a4fb-61436a71362&title=&width=765)

2.解决方案

修改teamserver端java的安全配置,使得java支持TLSv1和TLSv1.1加密套件 编辑 java.security 文件,搜索 jdk.tls.disabledAlgorithms 关键字,把含有 SSL 和 TLS 字样的删掉即可。然后重启teamserver服务端 原来的安全配置: 删除禁用的 SSL 和 TLS 加密套件: 重启teamserver服务端 修改java安全配置后,可以看到现在支持tls1.0套接字了:

![image.png](https://img-blog.csdnimg.cn/img_convert/839b5d1fcd5e4f04427b93b0f59223b0.png#clientId=u3e75deab-d29e-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=402&id=ub2094950&margin=[object Object]&name=image.png&originHeight=804&originWidth=1536&originalType=binary&ratio=1&rotation=0&showTitle=false&size=118687&status=done&style=none&taskId=u2b6c0ff9-3afc-4e40-a346-cc53dac269f&title=&width=768)

参考文档

http://blog.leanote.com/post/snowming/6a724671de78 https://mp.weixin.qq.com/s/sYfvD0XQqi6BFw70_jrv5Q https://www.ch1ng.com/blog/253.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有