CobaltStrike基于谷歌身份验证的二重验证
在日常的红队渗透中,我们的C2搭建的VPS上,可能会因为OPSEC或者其他的一些原因被抓住,密码也可能因为一些或客观或人为的因素泄露,就会导致我们的红队VPS中混入一些“内鬼”,为了保护C2的安全,就有了这个基于谷歌身份验证的二重验证的方式,我这里也是重走前人之路,学习前人的经验和方法的复现。
实现方式
我这里使用的是破解的CobaltStrike4.5的版本,4.8的版本可能是因为teamserver是由TeamServerImage的镜像启动方式的原因,暂时似乎不能进行该方法的复现。
在搭建好的VPS上面,先上传好cs4.5,现在较为流通的破解版本文件内容大概是这样的
然后这里我是用的前辈现成写好的cstool.jar这样的一个jar包,看了一下源码,大概是是用的Javassist字节码热修改和Google的zxing的totp验证码,后续再细分析一下源码。
然后这里是将这个cstool.jar上传到cs4.5的目录下,和cobaltstrike.jar处于统一目录中(如上图),先运行cstool.jar
java -jar cstool.jar
我们会得到
上面是secretkey,下面是二维码的base64加密,不知道为什么不直接放图片,我这里用了个python脚本去转base64
import base64
img_str = ''
img_data = base64.b64decode(img_str)
with open('./cs4.8.png', 'wb') as f:
f.write(img_data)
当然也可以直接用secretkey去添加密钥。这里我们可以用手机上的身份验证器(只要是支持2FA的都行),然后我们需要去teamserver中去加入这个jar包
-javaagent:cstool.jar=SerectKey
这里我们也能看到4.5是由java启动,对比4.8可以看一下
也不知道是不是破解的缘故。
添加好之后去正常启动teamserver,我这里是习惯用了个profile侧写文件
./teamserver <ip> <password> ./xxx.profile
然后去客户端,输入相关信息,但是这里有一点需要注意,我们需要添加我们身份验证的密钥,可以看一下对比
没有添加密钥:
加了密钥:
成功登录