用户
搜索
  • TA的每日心情

    5 天前
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]经常看看I

    i春秋-脚本小子

    Rank: 2

    5

    主题

    9

    帖子

    273

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2018-11-21
    发表于 2021-4-22 16:14:25 312646

    Metasploit-framework 内网穿透-多场景详解

    前言

    对于一名合格的网络安全从业者来说,Metasploit-framework是必会不可的工具,大大降低了exploit的利用门槛。

    但在实战中,复杂的网络环境以及防火墙策略都会对Metasploit-framework的使用进行干扰。

    在笔者对网上的文章进行研究后,发现绝大多数文章解决的场景都类似于《msf生成木马时的内网映射》,并未涉及到在 exploit 模块中如何使用反弹shell。

    此文章旨在解决不同场景下的使用方法,同时让新手也能轻松理解。

    基础知识

    1. reserve与bind的区别
    Bind:
    • 正向(主动)连接,意思为在目标主机打开一个监听端口,MSF所在主机主动发起对目标主机的tcp/http/https连接。
    • 优点:由于是MSF所在主机主动连接,所以MSF所在主机是否在内网并无影响,只要能访问到目标主机即可。
    • 缺点:打开监听端口入站请求动作过于明显,且受到目标主机防火墙影响。
    Reserve:
    • 反向(被动)连接,意思为在MSF所在主机打开一个监听端口,目标主机在运行payload后会主动发起对MSF所在主机的tcp/http/https连接。
    • 优点:由于是目标主机主动连接,所以目标主机是否在内网并无影响,只要能访问到MSF所在主机即可。
    • 缺点:目标主机需要能访问到MSF所在主机,但在实际渗透中MSF大多数搭建在本机(不排除直接搭建在VPS上)。
    2. meterpreter_reverse_tcp与meterpreter/reverse_tcp的区别
    • meterpreter_reverse_tcp会在第一次建议连接时执行所有payload。
    • meterpreter/reverse_tcp会在第一次执行较小的payload,然后通过此payload下载完整的payload并执行
    3. meterpreter_reverse_tcp与shell_reverse_tcp的区别
    • meterpreter_reverse_tcp为封装有大量模块的MSF模块,可理解为shell pro
    • shell_reverse_tcp直接反弹shell,可以直接通过nc接受。

    目录

    注:本文主要对内网中的MSF进行探讨,对于公网上的MSF可直接反连
    1. MSF生成反连木马上线
    2. MSF通过Exploit模块上线

    前期准备

    • MSF所在攻击机:内网机器,127.0.0.1
    • 目标主机:target.com
    • Frp代理:p.com:8000 -> 127.0.0.1:7000

    1. MSF生成反连木马上线

    笔者在前言中提到过此种场景的解决方法在网上大量流传,只做一些查漏补缺,不做过多赘述。

    使用场景:

    内网MSF,目标主机不限,目标主机运行木马反弹上线。

    基本思路:

    生成木马,反连地址为p.com:8000,开启MSF监听127.0.0.1:7000

    常见问题:
    • MSF运行在虚拟机中,frp代理在物理机,以Vmware为例,只需开启nat地址映射即可。

    2. MSF通过Exploit模块上线

    使用场景:

    内网MSF,目标主机不限,通过MSF Exploit模块执行payload反弹上线。

    基本思路:

    当我们使用Exploit模块时(此处拿windows/smb/ms17_010_eternalblue举例),MSF默认会给我们绑定windows/x64/meterpreter/reserve_tcp的payload

    image-20210422145116393

    查看配置选项

    image-20210422145210327

    通常来说我们只需配置RHOST, RPORT, LHOST, LPORT。

    RHOST与RPORT为目标机器地址与端口

    LHOST与LPORT有两个作用:

    1. MSF绑定LHOST与LPORT,监听连接请求
    2. 执行Payload时反弹回连IP与端口

    此处就产生了一个问题:

    • 在有代理的情况下,我们需要让MSF绑定监听本机127.0.0.1的7000端口,但需要执行Payload时反弹回连FRP代理p.com的8000端口,需要设置两个不同的LHOST/LPORT分别用于监听/回连。

    那我们能否直接让MSF绑定FRP代理p.com的8000端口呢

    image-20210422150113611

    笔者只能寻找MSF是否支持配置不同的监听地址/端口与反弹地址/端口,发现了如下选项

    image-20210422152102702

    但并未能成功利用此选项达到预期效果,若有大神知道此选项用法烦请告知。

    只得从另一个角度出发,另开一个MSF作为监听本地7000端口,将Exploit利用反弹给FRP代理p.com:8000端口。

    Listen Msf:

    image-20210422152537069

    Exploit Msf:

    image-20210422152842744

    但前面也已经提到过,直接绑定p.com:8000会无法绑定,会直接绑定本机8000端口,此时我们需要用到选项disablepayloadhandler

    set disablepayloadhandler true

    设置取消handle(即listen),此时LHOST/LPORT只有一个作用,就是确定执行payload后的反连地址,运行后即可成功监听。

    扩展

    1. 当代理中的本机端口与远程端口保持一致的,可直接设置LHOST/LPORT为远程IP/端口,因为绑定失败时会使用本机IP进行绑定,但payload反弹地址不变
    2. 某些exploit模块在payload执行之后还会进行第二次payload下载,碰到这种情况时有两种解决方法:
      1. 买VPS安装MSF一劳永逸
      2. 使用exec模块直接执行nc、bash等命令反弹shell
    3. 使用exec模块执行命令反弹shell永远可做为备选方案,但是无法利用msf上丰富的扩展

    小记

    借此机会发表一点感想,五年前当笔者还是个小萌新的时候,在一个名为Kali高级群的群里问过许多问题,尽管当时的网安行业远没有现在这般火热,但当时的管理员@屌丝绅士也会耐心解答问题,有时还特意打开群直播为笔者答疑解惑,供大家一起学习,尽管现在群里已经没了多少人气,但这些经历让笔者懂了学会了分享自己的学习成果,引导新人少走弯路。

    但现在行业越来越景气,人员也越来越复杂,云黑客也日渐增多,在群里夸夸其谈,不经过实践就开始指导新人,当发现情况不对直接下线。也许每个人都并没有无条件指点别人的义务,但笔者由衷恳求即使你不愿指点,也不要错误引导新人,让新人枉走弯路。

    子曰:“由,诲女知之乎!知之为知之,不知为不知,是知也。”

    发表于 2021-4-25 12:31:18
    妙啊,百度全是如何生成payload
    My blog :http://www.e-wolf.top
    使用道具 举报 回复
    Adian大蝈蝈 发表于 2021-4-25 12:31
    妙啊,百度全是如何生成payload

    这才是大佬
    使用道具 举报 回复
    Adian大蝈蝈 发表于 2021-4-25 12:31
    妙啊,百度全是如何生成payload

    是的,所以我才出了这个文章,但是文章里提到的三个参数感觉还可以深入一下。
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册