frp用于内网的代理转发
frp
frp是一个常见的内网穿透工具。内网穿透,即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
UDP 内网穿透的实质是利用路由器上的NAT 系统。NAT 是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。NAT可以完成重用地址,并且对于内部的网络结构可以实现对外隐蔽。
而在内网中,面对内网中不出网的机器,攻击者在外网无法直接访问到,通过frp进行代理,即可实现直接访问。
frp的工作模式
frp支持很多种协议,包括tcp、udp、http、https、socks等等,当然也可以实现端口对端口的转发。
frp分为客户端和服务器端,对应于不同的系统平台有不同的版本,但是名字都以frps和frpc进行区分,对应的配置文件有两种,分别是精简版和详细版配置文件:
一般启用精简配置文件就可以。
下面以两个典型为例:
端口对端口转发
以互联网边界的某台windows为例,它的3389端口无法直接被访问到(可能是有网络策略或者防火墙策略),如果拿到了该windows的管理员权限,新增了隐藏账户,但是无法远程连接进行操作时,就可以采用端口对端口的转发,将该windows的3389端口转发到某台公网服务器的任意端口。
以下是操作步骤:
在有公网IP的服务器上修改frps.ini配置文件:
1 | bind_port = 7000 #此端口提供给目标windwos,该windows通过这个端口将其3389端口转发出来 |
修改好后,启动frps服务,用 -c
指定配置文件:
1 | ./frps -c frps.ini |
以上完成后,服务器端的准备已经完成。
在windows机器上下载好frp后,修改frpc.ini配置文件:
1 | [common] |
修改好后,启动frpc服务,用 -c
指定配置文件:
1 | ./frpc -c frpc.ini |
完成后,访问公网服务器的IP:3389即可访问到目标windows的3389端口。
socks5转发
在获取了互联网边界的机器的权限后,我们想要对其内网进行横向攻击,此时需借助这台互联网边界的机器,将我们的所有流量转发至其内网当中,需要用到的工具有frp和proxifier。
在我们的公网服务器上修改frps.ini配置文件:
1 | bind_port = 7001 #此端口提供给目标windwos,我们的流量将通过该端口,从公网服务器转发到目标windows,进而转发至内网 |
配置文件和端对端转发类似,实际上都只是提供一个端口用于服务器和目标windows流量传输。
修改好后,启动frps服务,用 -c
指定配置文件:
1 | ./frps -c frps.ini |
以上完成后,服务器端的准备已经完成。
在目标windows上修改配置文件frpc.ini:
1 | [common] |
修改好后,启动frpc服务,用 -c
指定配置文件:
1 | ./frpc -c frpc.ini |
此时,在我们的个人PC上,使用proxifier走socks5://admin:112233admin@39.xxx.xxx.xxx:46075的代理,即可访问到windows所在的内网环境。
注意要避免自己PC上其他应用的流量也走代理进入内网,从而留下可能被溯源的痕迹。
最后感谢鑫总的指点。