0x00 前言
Cobalt Strike 服务端和客户端是通过 SSL 加密通讯的,由于SSL配置文件和代理配置文件由于默认配置导致keystore文件内容通常被用于防火墙识别。
后渗透中经常使用到CS,从两方面讲:一方面是内网设备对流量的管控十分严格,如果不对CS特征进行修改,很容易就被内网设备抓到,进行溯源或者直接封掉IP,间接凉西皮;另外一方面主要还是为了保证攻击队队员计算机的安全,防止被攻击队反制,前段时间看到大佬写的反制CS低版本尤为吊,所以呢,为了防止凉犊子,改了最好。不然的话,你有你的鱼,同时你是我的渔。
0x01 针对特征性信息修改
- 端口号修改
- 指纹修改
- SSL证书修改
0x02 端口号和SSL证书指纹信息修改
首先看一下默认的配置情况:
因为今天看了好多文章,也来总结下,印象比较深的就是根据墨森写的,获取权威性证书,仿造信息进行修改,当然我觉得这里土豪随意,完全可以去买一个证书进行绑定。先将原来的store文件删除掉,然后修改teamserver文件。(先备份好),以为通过teamserver进行挂载服务器端的时候,会生成store文件。
端口号和SSL证书指纹信息修改:
print_info "Generating X509 certificate and keystore (for SSL)"
keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias Microsec.com -dname "CN=Microsec e-Szigno Root CA, OU=e-Szigno CA, O=Microsec Ltd., L=Budapest, S=HU, C=HU"
java -XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=50314 -Djavax.net.ssl.keyStore=./cobaltstrike.store -Djavax.net.ssl.keyStorePassword=123456 -server -XX:+AggressiveHeap -XX:+UseParallelGC -classpath ./cobaltstrike.jar
通过生成的证书信息前后进行对比,能发现明显差别,cobaltstrike.store文件
0x03 创建新的CobaltStrike.store
有的时候为了方便起见,我们可以直接进行证书指纹的修改,这边使用常用的工具keytool进行修改,操作简单。Keytool是一个Java数据证书的管理工具,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中,即store后缀文件中。
命令:
‐certreq 生成证书请求
‐changealias 更改条目的别名
‐delete 删除条目
‐exportcert 导出证书
‐genkeypair 生成密钥对
‐genseckey 生成密钥
‐gencert 根据证书请求生成证书
‐importcert 导入证书或证书链
‐importpass 导入口令
‐importkeystore 从其他密钥库导入一个或所有条目
‐keypasswd 更改条目的密钥口令
‐list 列出密钥库中的条目
‐printcert 打印证书内容
‐printcertreq 打印证书请求的内容
‐printcrl 打印 CRL 文件的内容
‐storepasswd 更改密钥库的存储口令
keystore是java的密钥库,用来进行通信加密,如数字签名。keystore就是用来保
存密钥对的,公钥和私钥。Keystore可理解为一个数据库,可以存放很多个组数据。
每组数据主要包含以下两种数据:
1.密匙实体–密匙(secret key)又或者私钥和配对公钥(采用非对称加密)
2.可信任的证书实体–只包含公钥
通过keytool查看CobaltStrike默认store文件
keytool ‐list ‐v ‐keystore cobaltstrike.store
以上默认CobaltStrike特征,特征十分明显,为了掩盖默认SSL证书存在的特征,需要重新创建一个新的不一样的证书 。使用以下命令创建证书:
keytool ‐keystore cobaltstrike.store ‐storepass 密码 ‐keypass 密码 ‐genkey ‐key
alg RSA ‐alias google.com ‐dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名
称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)"
‐alias 指定别名
‐storepass pass 和 ‐keypass pass 指定密钥
‐keyalg 指定算法
‐dname 指定所有者信息
删除 CobaltStrike 自带的cobaltstrike.store,使用以下命令生成一个新的 cobaltstrike.store即
可!然后客户端连接即可。
keytool ‐keystore cobaltstrike.store ‐storepass 123456 ‐keypass 123456 ‐gen
key ‐keyalg RSA ‐alias baidu.com ‐dname "CN=(名字与姓氏), OU=(组织单位名称),
O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)"
keytool ‐importkeystore ‐srckeystore cobaltstrike.store ‐destkeystore cobal
tstrike.store ‐deststoretype pkcs12
keytool -keystore CobaltStrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias baidu.com -dname "CN=ZhongGuo, OU=CC, O=CCSEC, L=BeiJing, ST=ChaoYang, C=CN"
修改以后再次查看CobaltStrike的默认store文件
0x04 总结
时代在变迁,人类在进步,安全在发展,内网流量设备变得越来越先进,机器玩不过人是永恒的真理,就像今年的HW,安全设备成了最大的0day。
针对流量设备的检测,根据流量设备的判断,不断完善攻击利器,才能在后渗透中不被干扰,我这边只是借鉴各位大佬和网上的教程做了一个总结,抛砖引玉,希望能得到更多师傅的支持,有更好的修改方法请尽情提出,我这边也跟着学习一波,共同发展,才能进步的更快,今天就这样,继续加油!