在红蓝对抗中,如果攻击者不通过手段隐藏C2服务器,这样可能导致C2被溯源以及被反撸。以下内容讲述如何通过手段隐蔽C2。
CobaltStrike的连接端口默认为50050,这是个很明显的特征。要想修改这个默认端口,我们可以修改teamserver文件,将50050端口改成任意其他端口均可。
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
keystore
查看CobaltStrike的默认store文件
keytool -list -v -keystore cobaltstrike.store
可以看出CobaltStrike默认的store文件中的Alias name 、Onwer 和 Issuer 的信息,特征都比较明显。
Alias name: cobaltstrike
Onwer: CN=Major Cobalt Strike, OU=AdvancedPenTesting, O=cobaltstrike, L=Somewhere, ST=Cyberspace, C=Earth
Issuer: CN=Major Cobalt Strike, OU=AdvancedPenTesting, O=cobaltstrike, L=Somewhere, ST=Cyberspace, C=Earth
通过直接访问CobaltStrike服务器的端口,也可以看到证书信息。curl https://192.168.106.5:50050 -v -k
-
修改服务端证书CobaltStrike.store
服务器端使用的证书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 指定所有者信息
keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias baidu.com -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)"
keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12
-
修改上线的证书
subject: C=; ST=; L=; O=; OU=; CN=
issuer: C=; ST=; L=; O=; OU=; CN=
查看监听的https端口证书,可以看出证书值都是空的 如果想要修改这个证书,需要修改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 这里是自己设定的自签名证书。
-
SNI域前置
-
如果是443端口,则后面的 Listener 的是windows/beacon_https/reverse_https -
如果是80端口,则后面的 Listener 的是windows/beacon_http/reverse_http
./teamserver C2ip 密码 xx.profile
-
开启Listener
curl 125.xx.xx.xx -H "Host:wwws.microsoft.com" -v
使用域名作为Hosts 以下HTTPS Host(Stager) 配置完成如图 打开web日志试图,请求CDN服务器ip然后指定Host头部,可以看到web日志有响应 curl xx.xx.com -H "Host:wwws.microsoft.com" -v
-
生成木马上线
-
使用ip作为Hosts:ip是全国各地正常的ip,但是证书不可信 -
使用域名作为Hosts:证书可信,但是域名是解析到某云CDN的域名,这样容易被发现
以下仅限于使用域名作为Hosts,使用ip作为Hosts不用考虑这些。
-
ESNI
-
https://github.com/SixGenInc/Noctilucent -
https://github.com/Ridter/DomainHiding
- End - 精彩推荐 FQvuln 1靶场渗透测试实战 内网渗透代理之frp的应用与改造(二) CDN 2021 完全攻击指南 (三) 内网渗透代理之frp的应用与改造(一)
戳“阅读原文”查看更多内容 本文始发于微信公众号(安全客):如何隐蔽你的C2
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论