进阶:隐藏C2 - 通过特征
端口特征
CobaltStrike的连接端口默认为50050,这是个很明显的特征。要想修改这个默认端口,我们可以修改teamserver文件,将50050端口改成任意其他端口均可。
证书特征
keytool和证书简介
Keytool是一个java数据证书的管理工具,Keytool将密钥 和 证书 存放在一个称为 keystore 的文件中,即.store后缀的文件中。
Keystore是什么?keystore是java的密钥库,用来进行通信加密,如数字签名。keystore就是用来保存密钥对的公钥和私钥。Keystore可理解为一个数据库,可以存放很多个组数据。
每组数据主要包含以下两种数据:
- 密钥实体 —- 密钥(secret key)又或者私钥和配对公钥(采用非对称加密)
- 可信任的证书实体 —- 只包含公钥
查看证书文件:keytool -list -v -keystore xx.store
修改证书密码:keytool -storepasswd -keystore xx.store
修改keystore的alias别名:keytool -changealias -keystore xx.store -alias source_name -destalias new_name
修改alias(别名)的密码:keytool -keypasswd -keystore xx.store -alias source_name
查看CobaltStrike的默认store文件
keytool -list -v -keystore cobaltstrike.store
可以看出CobaltStrike默认的store文件中的Alias name 、Onwer 和 Issuer 的信息,特征都比较明显。
通过直接访问CobaltStrike服务器的端口,也可以看到证书信息。
curl https://149.28.139.174:3389 -v -k
生成新的证书
服务器端使用的证书CobaltStrike.store,为了掩盖默认SSL证书存在的特征,需要重新创建一个新的不一样的证书 。使用以下命令创建证书:
keytool -keystore cobaltstrike.store -storepass 密码 -keypass 密码 -genkey -keyalg RSA -alias google.com -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)"
- -alias 指定别名
- -storepass pass 和 -keypass pass 指定密钥
- -keyalg 指定算法
- -dname 指定所有者信息
# 生成证书,最好内容不要和CS有关,设置的密码要和teamserver里面的同步
keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias google.com -dname "CN=US, OU=google.com, O=Sofatest, L=GoogleInc, ST=Cyberspace, C=US"
# 转换成标准格式
keytool -importkeystore -srckeystore ./cobaltstrike.store -destkeystore ./cobaltstrike.store -deststoretype pkcs12
修改https上线的证书
cobaltStrike.store 仅仅是服务器端连接的证书。通过https上线使用的证书,不是 cobaltstrike.store,并且,该证书也是默认的!
如果想要修改这个证书,需要修改Malleable C2 profile。详情看官方文档:https://www.cobaltstrike.com/help-malleable-c2Self-signed Certificates with SSL Beacon 和 Valid SSL Certificates with SSL Beacon 这两个都是用来修改https上线使用的证书的。
- Self-signed Certificates with SSL Beacon 这里是自己设定的自签名证书。
- Valid SSL Certificates with SSL Beacon 这里是叫我们使用有效的证书。我们可以使用之前修改过的cobaltstrike.store,也可以使用从其他地方弄过来的证书
我们可以在启动CobaltStrike的时候,指定一个profile文件,然后在文件中配置上线时使用的证书文件即可修改上线时默认的证书。