基于FRP反向代理工具实现内网穿透

一颗小胡椒2022-05-21 22:02:30

前言

当我们拿下目标单位的一台外网服务器后,需要借助外网服务器作为跳板机去开展内网渗透,这个时候必不可少的就是在跳板机上设置代理。在前面的文章中,曾经在实际案例中介绍了两种代理方式:

Webshell 管理工具——冰蝎直接设置 HTTP 隧道代理实现内网穿透:2021强网杯全国网络安全挑战赛Writeup;

Cobaltstrike 建立 Socks4 代理实现内网穿透:Cobaltstrike内网渗透神器入门使用教程。

以上两种代理方式虽均能实现内网穿透的目的,但是代理质量相对来说并不稳定,难以满足内网渗透的需求。本文将介绍一个专注于内网穿透的高性能的反向代理应用——FRP,其支持 TCP、UDP、HTTP、HTTPS 等多种协议,可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

FRP反向代理

FRP 的 中文官方文档 可了解其作用和用法。

简而言之,FRP 通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

1. 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。

2. 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。

3. 代理组间的负载均衡。

4. 端口复用,多个服务通过同一个服务端端口暴露。

5. 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。

6. 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。

7. 服务端和客户端 UI 页面。

内网环境搭建

本文将借助以下靶场环境进行 FRP 工具实现内网穿透的实验演示:

没错,以上环境基于红日安全 Vulnstack 内网靶场环境,详情可参见Vulnstack红日安全内网域渗透靶场1实战。

https://bwshen.blog.csdn.net/article/details/118353886

1、由于虚拟机仅主机模式下默认是可与物理机连通的,故在 Win2008 域控主机上,防火墙新建了如下入站规则来拒绝 Win10 物理机的访问(禁止访问的 IP 为物理机的仅主机模式 VMnet1 网卡的网关 192.168.52.1):

2、此时 Win7 跳板机访问 Win2008 的 80 端口 Web 服务是正常的:

3、但是“外网”角色的 Win10 物理机则无法正常访问 Win2008 的 Web 服务:

4、而同样是与物理机做了仅主机模式网络连接的 Win2003 虚拟机,由于没有做防火墙策略,Win10 物理机是可以直接连通的:

以上就是本次实验的演示环境,接下来我的目标就是借助 FRP 反向代理工具,实现 Win10 物理机通过 Win7 跳板机的代理成功访问到内网 Win2008 的 Web 服务!

服务端的配置

FRP 代理工具可以直接在 Github下载 :

https://github.com/fatedier/frp

从下图的 frp 架构图可以看出 frp 的工作流程——在服务端部署 frps,在要访问的 内网机器(或者跳板机)上部署 frpc,实现服务端对该主机的反向代理,接着便可以通过访问服务端来实现对该内网主机的远程访问(或者借助跳板机访问内网):

1、下载 frp_0.37.0_linux_amd64.tar.gz 并传输到 VPS 服务器上后解压缩获得如下文件:

其中的关键文件如下:

├── frpc          #frp客户端执行程序├── frpc_full.ini ├── frpc.ini      #frp客户端配置文件├── frps          #frp服务端执行程序├── frps_full.ini├── frps.ini      #frp服务端配置文件└── LICENSE

2、frp 服务默认不设置连接密码,frps.ini 文件默认只设置了端口:

我们可以修改服务端配置文件frps.ini来配置代理的连接密码,如下图所示:

3、执行命令./frps -c ./frps.ini开始运行 FRP 服务:

客户端的配置

1、将对应版本的 FRP 工具下载到 Win7 跳板机上并解压缩,客户端配置文件frpc.ini初识参数如下:

2、同样的修改 FRP 客户端配置文件frpc.ini来设置服务端的 IP 地址、端口、连接密码:

参数释义:

[common]server_addr = 104.168.***.*** #VPS服务器的 IPserver_port = 7000            #VPS服务器上设置的 FRP 服务绑定端口token = ftp1234               #VPS服务端设置的 FRP 服务连接密码
[socks5]      #这个是反向代理的名称,可以随意设置type = tcp    #socks5 是 TCP 协议的remote_port = 6666   #指定建立的反向代理的连接端口plugin = socks5      #指定建立 socks5 代理隧道use_encryption = trueuse_compression = true

3、接下来执行命令frpc.exe -c frpc.ini启动客户端即可:

4、此时查看 VPS 服务器监听的 7000 端口已成功与客户端连接,同时开启了 6666 端口并建立了 socks5 代理通道:

FRP内网穿透

配置完 FRP 服务端和客户端并建立起 socks5 隧道后,下面就来见证下利用该 FRP 代理隧道如何穿透内网!

1、在 Win10 物理机的谷歌浏览器设置如下代理:

2、然后让 Win10 的谷歌浏览器流量走 VPS 建立的 FRP socks5 代理,即可访问到内网域控主机的 Web 服务,成功实现内网穿透!

返回 VPS 也能查看到对应流量转发的信息:

3、以上除了在浏览器直接连接 frp 的 socks5 代理外,在实际渗透过程中为了结合 BurpSsuite 对内网 Web 系统进行抓包测试,还可以在浏览器连接 BurpSuite 代理,并在 BurpSuite 中设置流量走 frp 服务器的 socks5 代理即可,如下图所示:

4、此时谷歌浏览器挂着 BurpSuite 的代理便可以访问到内网的服务了:

同时 BurpSuite 也能抓到内网服务的数据包了:

至此已成功借助 frp 搭建 socks5 代理隧道、实现内网穿透的目的!

FRP进阶使用

上文搭建的 socks5 隧道用于将公网主机(本文代指 Win10 物理机)访问内网服务器的请求流量直接通过访问 Win7 跳板机转发,从而实现内网穿透的目的。

FRP 反向代理还可以将内网主机的 22、3389 等端口转发到公网主机的指定端口,从而实现远程连接内网服务器的目的,如下图所示:

相关用法请参见前文提及的 FRP 的 中文官方文档:https://gofrp.org/docs/overview/,此处不再演示。

fscan内网神器

此处搞点跟本文题目无关的题外知识hh,某次攻防演习看到同事使用了 fscan 扫描内网的服务,被秀了一把,不得不感叹真香!在此顺便借助该靶场环境记录下该工具的用法。

Fscan 工具的 Github 项目地址:https://github.com/shadow1ng/fscan,有使用说明:

可直接下载:

简单用法:

下面来体验下该工具,看看实际的使用效果!

1、拿到 Win7 跳板机的 Shell:

2、上传 fscan64.exe 文件到跳板机上:

3、在 Cknife 中打开命令终端,执行命令fscan64.exe -h 192.168.52.0/24 -o result.txt,进行内网信息探测:

4、下载并打开程序运行结果 result.txt,可以看到如下搜集到的全面的内网信息:

附上所有结果:

192.168.52.138:445 open192.168.52.143:139 open192.168.52.138:88 open192.168.52.141:7001 open192.168.52.143:3306 open192.168.52.141:445 open192.168.52.143:445 open192.168.52.141:139 open192.168.52.138:139 open192.168.52.143:135 open192.168.52.141:135 open192.168.52.141:21 open192.168.52.143:80 open192.168.52.138:80 open192.168.52.141:8099 open192.168.52.141:7002 open192.168.52.138:135 open192.168.52.141:8098 openNetInfo:[*]192.168.52.143   [->]stu1   [->]192.168.52.143   [->]169.254.129.186   [->]192.168.92.130NetInfo:[*]192.168.52.138   [->]owa   [->]192.168.52.138[*] 192.168.52.143       __MSBROWSE__\STU1              Windows 7 Professional 7601 Service Pack 1[+] 192.168.52.143  MS17-010  (Windows 7 Professional 7601 Service Pack 1)NetInfo:[*]192.168.52.141   [->]root-tvi862ubeh   [->]192.168.52.141[*] WebTitle:http://192.168.52.141:7002 code:200 len:2632   title:Sentinel Keys License Monitor[*] 192.168.52.141       GOD\SNTL_ROOT-TVI86   [+] 192.168.52.138  MS17-010  (Windows Server 2008 R2 Datacenter 7601 Service Pack 1)[*] 192.168.52.138 [+]DC GOD\OWA               Windows Server 2008 R2 Datacenter 7601 Service Pack 1[+] 192.168.52.141  MS17-010  (Windows Server 2003 3790)[*] WebTitle:http://192.168.52.138     code:200 len:4      title:IIS7[*] WebTitle:http://192.168.52.141:8099 code:403 len:1409   title:The page must be viewed over a secure channel[*] WebTitle:http://192.168.52.143     code:200 len:21     title:phpStudy 探针 2014[+] ftp://192.168.52.141:21:anonymous 

可以看到,扫描结果里包括了几大类信息:

1. 扫描的内网网段里存活的主机 IP 及其开放的端口;

2. 扫描的内网网段里主机的名称、MS17-010 永恒之蓝等漏洞扫描结果(两台主机存在该漏洞);

3. 扫描的内网网段里主机开放的 Web 服务的标题、端口地址!

此处验证下扫描到的几个内网 Web 服务是否真实存在:



看到这,你应该明白 fscan 这款内网神器有多香了吧!收集到如此多的内网资产信息,接下来的内网横向渗透就更加简便清晰了!

总结

本文学习、总结了内网穿透神器 FRP 反向代理工具的使用方法,同时介绍了 fscan 内网资产情况扫描神器的使用。在实际的攻防演习、内网渗透中,拿到外网跳板机的 Shell 权限后,我们可以使用 fscan 在跳板机上扫描内网进行资产搜集,然后使用 FRP 进行内网穿透后对收集到的内网资产进行横向渗透攻击!

反向代理frp
本作品采用《CC 协议》,转载必须注明作者和本文链接
网络请求一般是由客户端发起,服务器响应,而代理服务是这个网络请求的中介,其作用是将客户端的网络请求经由自身代理服务转发至服务端。 某些情况下客户端无法直接访问服务端,但代理服务端可以访问服务端,此时客户端与代理服务端建立协议,客户端的请求都经由代理端转发至服务端这便是正向代理。 正向代理主要面向客户端服务,服务端的响应会返回给代理服务端,代理服务端会将其转发至客户端。
以上两种代理方式虽均能实现内网穿透的目的,但是代理质量相对来说并不稳定,难以满足内网渗透的需求。FRP反向代理 FRP 的 中文官方文档 可了解其作用和用法。
frp 是一个可用于内网穿透的高性能的反向代理应用,支持TCP、UDP协议,为HTTP和HTTPS应用协议提供了额外的能力,且尝试性支持了点对点穿透。frp 采用go语言开发。更多的人使用 frp 是为了进行反向代理,满足通过公网服务器访问处于内网的服务,如访问内网web服务,远程ssh内网服务器,远程控制内网NAS等,实现类似花生壳、ngrok等功能。而对于内网渗透来讲,这种功能恰好能够满足我
nps是一款轻量级、高性能、功能强大的内网穿透反向代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
GoldPickaxe.iOS 采用了一种全新的分发方式,利用 Apple 的移动应用测试平台 TestFlight 进行传播。平台将其删除后,攻击者采用多阶段的社会工程学方式说服受害者安装移动设备管理(MDM)配置文件,借此完全控制受害者的设备。
因为 web 服务器同时连接了外网和内网,所以必须首先拿下。这里有关 web 服务器的渗透不展开讲了,无非也就是利用漏洞,诸如:弱口令、上传漏洞、远程代码执行、各种 cms 漏洞,总之都是可以找到写入 webshell 的方法。成功写入 webshell 后,接着就要上传木马控制 web 服务器,这里可以用 Metasploit或 Cobaltstrike。
内网渗透-代理
2021-12-01 05:44:01
利用代理工具将内网的流量代理到本地进行访问,这样就可以对内网进行下一步渗透,同时也可以利用代理工具将其他网段的流量转发到本地进行纵向渗透。代理的本质是Socks协议(防火墙安全会话转换协议),工作在OSI参考模型的第5层(会话层)。使用TCP协议传输数据,因而不提供如传递ICMP信息之类的网络层相关服务。目前支持SOCKS4和SOCKS5两个版本:
记一次渗透实战
2022-07-09 06:54:19
通过fofa搜索找到了一个登录页面通过一个弱口令进去了后台是这样的发现了文件上传页面,很简单的前端过滤直接把冰蝎马上传,但是无法执行命令
可以看见命令执行成功。接下来直接写入一个shell ,使用php 的 file_put_contents 函数写个一句话木马:http:. 验证成功,直接使用蚁剑进行连接。对 192.168.22.x/24 网段进行扫描:.虽然在之前的扫描中发现了Target2 80端口存在一个cms,但是 渗透总是照着软柿子捏,我们尝试使用nmap 对Target2 进行端口扫描,寻找其开放的端口。Bage cms 渗透通过查看网页底部指纹信息,知道这是一个bage cms搭建的网站,而且从时间上来看有些老旧。
环境搭建1.项目介绍:本次项目模拟渗透测试人员在授权的情况下,对目标进行渗透测试,从外网打点到内网横向渗透,最终获取整个内网权限。使用弱口令和暴力破解,没有爆破出弱口令用户。
一颗小胡椒
暂无描述