freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Metasploit-framework 内网穿透:多场景详解
2021-04-22 16:11:06

前言

对于一名合格的网络安全从业者来说,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大多数搭建在本机(不排除直接搭建在服务器上)。

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可直接反连

前期准备

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

查看配置选项

1619336057_60851b79929f0b7b95751.png!small?1619336059635

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

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

LHOST与LPORT有两个作用:

MSF绑定LHOST与LPORT,监听连接请求

执行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.买服务器安装MSF一劳永逸

2.使用exec模块直接执行nc、bash等命令反弹shell

3.使用exec模块执行命令反弹shell永远可做为备选方案,但是无法利用msf上丰富的扩展

小记

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

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

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

# msf # 代理 # metasploit教程
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录