前言
对于一名合格的网络安全从业者来说,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
查看配置选项
通常来说我们只需配置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端口呢
笔者只能寻找MSF是否支持配置不同的监听地址/端口与反弹地址/端口,发现了如下选项
但并未能成功利用此选项达到预期效果,若有大神知道此选项用法烦请告知。
只得从另一个角度出发,另开一个MSF作为监听本地7000端口,将Exploit利用反弹给FRP代理p.com:8000端口。
Listen Msf:
Exploit Msf:
但前面也已经提到过,直接绑定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高级群的群里问过许多问题,尽管当时的网安行业远没有现在这般火热,但当时的管理员**@屌丝绅士**也会耐心解答问题,有时还特意打开群直播为笔者答疑解惑,供大家一起学习,尽管现在群里已经没了多少人气,但这些经历让笔者懂了学会了分享自己的学习成果,引导新人少走弯路。
但现在行业越来越景气,人员也越来越复杂,云黑客也日渐增多,在群里夸夸其谈,不经过实践就开始指导新人,当发现情况不对直接下线。也许每个人都并没有无条件指点别人的义务,但笔者由衷恳求即使你不愿指点,也不要错误引导新人,让新人枉走弯路。
子曰:“由,诲女知之乎!知之为知之,不知为不知,是知也。”