什么是内网穿透

懂网络的朋友应该知道,在公网中访问自己家里的设备往往是一件难事。比如电脑的远程桌面,一般的做法是通过路由器或者防火墙做端口映射将其暴露到公网中,或者通过teamviewer等远程工具。这样有操作繁琐,且带宽限制的问题。
或者黑客入侵了一台电脑后,进行了内网横向渗透,抓到了其他内网机器,而要连接这台机器,必须有入口能进入。如果之前的入口被关闭了,那这台内网机器也访问不了了。
如果那台机器可以暴露到公网,那我们就可以通过这个入口随时访问它了。

什么是frp

frp是一款反向代理软件,它可以将内网或防火墙后的设备暴露到外网。
与之类似的软件还有grok

搭建frp

frp包括服务端和客户端。服务端用于客户端主动连接。我们只要访问服务端的地址加端口就可以反向代理访问到客户端机器了。

服务端配置

进这里下载frp工具
解压后可以看到,目录下有这几个文件
- frps : 服务端程序
- frps.ini :服务端配置文件
- frpc :客户端程序
- frpc.ini :客户端配置文件
因为我们是配置服务端,所以frpc和frpc.ini可以删掉了。

配置服务端
vim frpc.ini

[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 10080
vhost_https_port = 10443

# bind_port:客户端和服务端连接的端口,这个端口号在配置客户端时要用到
# dashboard_port:这是服务端控制台的端口,可以查看frp服务运行信息。若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为服务器的IP)
# token:客户端和服务端连接的口令,客户端配置时会用到。
# dashboard_user:服务端控制台的登录账号
# dashboard_pwd:服务端控制台的登录密码
# vhost_http_port:反向代理http主机使用
# vhost_https_port:反向代理https主机使用

运行服务端

# 前台运行
./frps -c frps.ini
# 后台运行
nohup ./frps -c frps.ini &
# 关闭frps
如果是前台运行,按ctrl + c就能结束。如果是后台运行,输入jobs查看进程号杀掉就行

如果屏幕输出如下内容则表示运行正常:

2019/01/12 15:22:39 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000
2019/01/12 15:22:39 [I] [service.go:172] http service listen on 0.0.0.0:10080
2019/01/12 15:22:39 [I] [service.go:193] https service listen on 0.0.0.0:10443
2019/01/12 15:22:39 [I] [service.go:216] Dashboard listen on 0.0.0.0:7500
2019/01/12 15:22:39 [I] [root.go:210] Start frps success

访问控制台

访问x.x.x.x:7500登录后可以看到哪些客户端连接了

客户端配置

客户端就是要正在访问的设备
程序在上面已经下载了,复制过来即可。
同理,因为是配置客户端,所以frps和frps.ini可以删掉。

vim frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
token = 123456
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7001
[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002

#server_addr:服务端IP地址
#server_port:服务器端口
#token:服务端配置的token
#[rdp]:这是规则名称,括号里的内容可以自定义,便于查询
#type:转发类型。有TCP和UDP选项
#remote_port:服务端的端口(和local_port对应)
#local_port:要访问的客户端的端口

启动客户端

./frpc -c frpc.ini

Windows机器后台启动方法:

# 新建一个frpc.bat脚本,写上以下内容:
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd C:\frp
frpc -c frpc.ini
exit

#将该脚本加入到开机自启动里即可实现权限维持

访问

启动成功后,访问服务端ip:客户端配置的remote_port即可访问到客户端服务

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。