1. 首页
  2. 红队技术

Cobalt Strike 4.1 版本上线linux

【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。

前言

拿cobaltstrike 4.1 版本上线linux还是很早的想法了,多次实验无奈都失败了。又没有毅力继续坚持解决掉这个问题。这不,最近又想折腾一下了,翻看各种大佬的博客资料,实验各个版本的差异,他终于可以了。在此,做个记录。

CrossC2 项目

CrossC2 项目是为了支持cobaltstrike 对其他平台的渗透测试而开发的插件。目前github上支持cobaltstrike 4.1、4.0、3.14 版本。

Cobalt Strike 4.1 版本上线linux

由于之前在本地MAC上做了多次实验,导致环境比较乱,这里我就记录做成的这次的实验。

上线linux主机

环境:cobaltstrike 4.1 版本、cobaltstrike客户端MacOS环境、cobaltstrike服务端linux环境、CrossC2 2.2 版本
下载CrossC2 2.2 版本 https://github.com/gloxec/CrossC2/releases/tag/v2.2(测试2.2.4版本未上线)

Cobalt Strike 4.1 版本上线linux

这里下载这三个文件。因为我本地Cobalt Strike 4.1 运行在MacOS操作系统上,对应也应该下载genCrossC2.MacOS

CrossC2.cna  加载该插件的cna
genCrossC2.MacOS  生成payload的程序
CrossC2Kit.zip  后渗透linux的插件

将三个文件放在同一文件夹CrossC2下。

Cobalt Strike 4.1 版本上线linux

1.修改cna 脚本

Cobalt Strike 4.1 版本上线linux
  • 修改$CC2_PATH为真实路径,对应本地存放的CrossC2路径。注意最后的/。
  • 修改$CC2_BIN 为payload生成程序,这里用的MacOS系统,故不用修改。
  • 赋予genCrossC2.MacOS 执行权限。

2. 加载cna 脚本
cobaltstrike 加载CrossC2.cna 脚本,会多一个CrossC2 的菜单。

Cobalt Strike 4.1 版本上线linux

点击genCrossC2就可以生成payload

Cobalt Strike 4.1 版本上线linux

这里同样也需要注意一下。

  • .cobaltstrike.beacon_keys 文件
    复制服务端上cobaltstrike目录下的 .cobaltstrike.beacon_keys到本地目录下。当然位置可以随意调,主要存在这个文件,且在生成payload的时候会寻找该文件。
  • System
    这个就是你要生成的程序在哪个平台上运行了,目标是linux主机上线,故不更改。
  • Listener
    选择监听器,默认reverse_https且只支持https,所以也要创建https的监听器。

配置完成后,选择build生成。

Cobalt Strike 4.1 版本上线linux

创建了一条curl命令,用来下载执行payload。同时也可以在log里看到恶意程序生成的命令。

/Users/cseroad/secure/CrossC2/genCrossC2.MacOS cdn.csxxx.xx 9443 ./.cobaltstrike.beacon_keys null Linux x64 /tmp/CrossC2-test

本地的/tmp/目录也确实会生成 CrossC2-test程序。当然手动上传并执行CrossC2-test程序效果是一样的。

Cobalt Strike 4.1 版本上线linux

看一下他curl的这个地址内容。

Cobalt Strike 4.1 版本上线linux

很容易看出在/tmp/目录下创建文件夹,然后下载55413端口的qbxTbAHkIt文件重命名并执行,而后删除。
大概过程就是这个样子,我们在kali上尝试执行build生成的命令。

3.上线kali

在kali上执行。
明出处。

Cobalt Strike 4.1 版本上线linux

当出现[conf]: alive 证明网络可达。同时kali上线。

Cobalt Strike 4.1 版本上线linux

命令也可正常执行。

Cobalt Strike 4.1 版本上线linux

扩展

以上的实验我都是用的最简单的IP上线的方式,cobaltstrike的证书也没有修改,profiles配置文件也没有使用。
尝试使用域名的方式上线。
在cloudfire上绑定域名,下载私钥、源证书,重新生成store证书。(PS:这部分就不过多阐述了)

openssl pkcs12 -export -in cseroadweb.pem -inkey cseroadweb.key -out cfcert.p12 -name cloudflare_cert -passout pass:ccc123456
sudo keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore cfcert.store -srckeystore cfcert.p12  -srcstoretype PKCS12 -srcstorepass 123456 -alias cloudflare_cert

而后在teamserver中替换cobaltstrike.store为cfcert.store。重新启动。
创建一个域名的监听器。

Cobalt Strike 4.1 版本上线linux

重复上面genCrossC2的操作。
这次选择自己的云服务器作为靶机。

Cobalt Strike 4.1 版本上线linux

同样可行。

Cobalt Strike 4.1 版本上线linux
Cobalt Strike 4.1 版本上线linux

可见linux上线和证书、域名没有关系。
如果使用了profile配置文件了呢?
CrossC2 提供了通信协议的API。
根据prifile文件,修改c2profile.c文件,包括请求url的信息。
而后gcc编译为so文件。

gcc c2profile.c -fPIC -shared -o lib_test.so

在CrossC2 项目里加载该lib文件,再build即可。

Cobalt Strike 4.1 版本上线linux

也可正常上线、执行命令。

Cobalt Strike 4.1 版本上线linux

CrossC2Kit 扩展

在存在beacon后,就可以加载我们之前下载的CrossC2Kit文件里的CrossC2_loader.cna 脚本,来丰富我们的后渗透模块。
加载之前的功能,可以看到只有简单的模块。

Cobalt Strike 4.1 版本上线linux

加载之后的功能,就多了一些dumphash、横向、提权的模块。

Cobalt Strike 4.1 版本上线linux
cc2_mimipenguin 读取密码
cc2_auth, cc2_ssh sudo/su/passwd 等认证后门,ssh被连接及连接其他主机的凭证都将被记录
cc2_safari_dump, cc2_chrome_dump, cc2_iMessage_dump, cc2_keychain_dump 常见浏览器的访问记录,以及保存的认证凭据都将被获取
cc2_frp 支持快速TCP/KCP(UDP)的反向socks5加密流量代理
cc2_keylogger  记录用户的键盘输入

以kali为例,就可以读取密码。

Cobalt Strike 4.1 版本上线linux

总结

折腾了许久的问题终于解决了,多看github、多折腾、多实践,不断尝试。

参考资料

https://github.com/gloxec/CrossC2/
https://gitee.com/pyking/CrossC2#%E6%A8%AA%E5%90%91%E7%A7%BB%E5%8A%A8-%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95–wiki
https://gloxec.github.io/CrossC2/zh_cn/protocol/

作者:CSeroad
链接:https://www.jianshu.com/p/75404a5e0002
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原创文章,作者:moonsec,如若转载,请注明出处:https://www.moonsec.com/3304.html

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息