ATT&CK视角下的红蓝对抗:六.内网穿透之利用FRP进行隧道穿透

2023-11-03 07:41:32 浏览数 (2)

 前文推荐:

ATT&CK视角下的红蓝对抗:一. 隧道穿透技术详解

ATT&CK视角下的红蓝对抗:二. 内网探测协议出网

ATT&CK视角下的红蓝对抗:三. 内网常规隧道利用方法

ATT&CK视角下的红蓝对抗:四. 内网穿透之通过Earthworm(EW)进行隧道穿透

ATT&CK视角下的红蓝对抗:五. 内网穿透之利用HTTP协议进行隧道穿透

ATT&CK视角下的红蓝对抗:六.内网穿透之利用FRP进行隧道穿透


一. 通过FRP进行隧道穿透

FRP是一个开源、 简洁易用、可用于内网穿透的高性能的反向代理应用,使用GO语言开发,适用于Windows、Linux平台,同时支持TCP、UDP、HTTP、HTTPS等协议,使用前提是需要一台具有公网IP的服务器(即可以通过外网访问)。frp分为服务端frps和客户端frpc,通过将frps服务端部署在外网服务器开启监听端口,客户端即frpc上传在受控者主机去执行连接服务器监听端口进行隧道穿透。下面简单介绍一下frp的基础使用,frp隧道工具实验拓扑如图1-1所示。

图1-1 通过FRP进行隧道穿透图1-1 通过FRP进行隧道穿透

假设我们获取到目标Web服务器的权限后,想要对该目标进行深度渗透获取核心权限,此时可以使用FRP工具进行隧道穿透,利用FRP工具通过各种方式去搭建隧道,具体实验环境如表1-1所示,后续演示会涉及。

表1-1 FRP实验环境表

主机类型

服务类型

IP地址

区域

Kali 2022

攻击机

192.168.0.58

外网

Windows server 2012

Web服务器

192.168.0.25,192.168.52.11

DMZ区域

windows server 2008

FTP 服务器

192.168.52.12,192.168.1.49

DMZ区域

windows 10

PC主机

192.168.1.50,192.168.2.2

办公区域

Windows server 2012

核心服务器

192.168.2.3

核心区域


1.一级代理

假设通过其站点漏洞,获取到Web服务器的系统权限,经探测发现FTP服务器并已经获取到了FTP服务器的RDP的凭证,此时需要攻击机和FTP服务器之间通过Web服务器建立隧道。这里需配置frp服务端,在攻击机部署frps和frps.ini配置文件,对配置文件进行设置。frps配置常见参数值可以如表1-2所示。

表1-2 frps配置常见参数

常见参数值

作用

[common]

声明标识整体不能缺少

bind_addr = 0.0.0.0

指定服务端绑定的IP

bind_port = 7000

指定侦听本地开放的TCP端口,可以自定义

bind_udp_port=7001

指定侦听本地开放的UDP端口,可以自定义

proxy_bind_addr = 127.0.0.1

指定代理将侦听的地址,默认值与绑定地址相同

vhost_http_port=80

用于侦听的http端口(可选)

vhost_https_port=443

用于侦听的https端口(可选)http/shttps端口可与TCP端口相同

max_ports_per_client=0

设置每个客户端使用最大端口数,默认值为0表示没有限制

dashboard_addr = 0.0.0.0

设置frp管理后台界面,服务器绑定地址

dashboard_port = 7500

设置frp管理后台端口,请按自己需求更改

dashboard_user = admin

设置管理后台用户名,可以自定义

dashboard_pwd = admin

设置管理后台密码,可以自定义

log_file = /var/log/frps.log

日志保存位置,可以自定义修改

log_level = info

日志检测级别,有trace, debug, info, warn, error五个等级

log_max_days = 3

日志保留天数

authentication_method

指定使用什么身份验证方法对frpc和frps进行身份验证,默认情况下,该值为"token

authentication_method = token

指定了"token,则token将被读取到登录消息中,

authentication_method = oidc

指定了"oidc"-将使用oidc设置颁发oidc开放ID连接令牌。

token = 12345678

token即身份验证令牌,可自定义

1)首先在攻击机上部署frp服务端工具后,我们需要对frp服务端的frps.ini配置文件进行修改,修改后的frps.ini配置文件中的bind_addr参数指的是监听地址,bind_port参数指的是监听端口,如图1-2所示。

图1-2 frps.ini配置文件图1-2 frps.ini配置文件

2)当配置参数值成功后,在攻击机使用frps服务端执行./frps -c frps.ini"命令,开启服务端监听,如图1-3所示。

图1-3 开启监听图1-3 开启监听

3)接下来通过上传frpc客户端和frpc.ini配置文件到Web服务器,将FTP服务器的远程服务转发到攻击机,这里需要修改客户端配置文件frpc.ini里面的内容,常见的frpc的配置参数如表1-3所示,同时设置frpc配置文件内容,设置server_addr参数指向服务端IP,server_port参数是指连接frps服务端的端口,设置类型为tcp如图1-4所示。

表1-3 配置文件参数

常见参数值

作用

[common]

声明标识整体不能缺少

server_addr = 0.0.0.0

设置连接frps的服务器地址

server_port = 7000

指定侦听服务器开放的TCP端口,可以自定义

dial_server_timeout = 10

连接到服务器,等待连接完成的最长时间。默认值为10秒。

tcp_mux = true

是否启用tcp复用,默认为true

dns_server = 8.8.8.8

指定一个dns服务器

udp_packet_size = 1500

指定udp包大小,单位为字节。如果未设置,默认值为1500

log_file = ./frps.log

日志保存位置,可以自定义修改

log_level = info

日志检测级别,有trace, debug, info, warn, error五个等级

log_max_days = 3

日志保留天数

token = 12345678

身份验证令牌,token值和frps的token值一致即可连接

bandwidth_limit = 1MB

限制此代理的带宽,单位为KB和MB

health_check_type = tcp

启用后端服务的检查,支持“tcp”和“http,frpc将连接本地服务的端口以检测其健康状态

health_check_interval_s = 10

指定存活探测时间为10秒

health_check_max_failed = 3

检测如果连续3次失败,代理将从frp中删除

health_check_timeout_s=3

检查连接超时

[ssh]

代理配置段名称,如果配置user=your_name,则显示为your_name.ssh

type = tcp

指定类型tcp|udp|http|https|stcp|xtcp,默认为tcp

local_ip = 127.0.0.1

指定转发本地IP

local_port = 22

自定义端口,指定多个端口如6010-6020,6022,6024-6028

remote_port = 6001

远程端口监听6001

图1-4 frpc.ini配置文件图1-4 frpc.ini配置文件

4)启动frp客户端,在Web服务器运行frpc.exe -c frpc.ini启动客户端命令,出现下面内容证明成功,此时FTP服务器的3389端口已经和攻击机的8081端口建立隧道,如图1-5所示。

图1-5 启动frp客户端图1-5 启动frp客户端

5)在攻击机使用远程服务连接本地的8081端口,即可成功获取到FTP服务器的远程服务权限,连接成功如图1-6所示。

图1-6 远程连接图1-6 远程连接

2.二级代理

当获取到FTP服务器权限后,通过信息收集探测到存在办公区域,已知PC主机有双网卡,并与FTP服务器处于同一个网段,两台主机可以相互访问,而这里需要在PC主机和攻击机之间搭建隧道进行后续利用。

1)在攻击机使用frps开启服务端,进行配置frps.ini文件,如图1-7所示,配置修改完成后在攻击机执行./frps -c frps.ini命令即可开启服务端监听,如图1-8所示。

图1-7 frps配置文件图1-7 frps配置文件
图1-8运行frps图1-8运行frps

2)之后在Web服务器配置frp客户端frpc.ini文件,这里修改配置文件内容如图1-9所示,配置完成执行frpc.exe -c frpc.ini命令,将本地8888端口转发到攻击机的的8888端口,如图1-10所示。

图1-9 frpc.ini配置文件图1-9 frpc.ini配置文件
图1-10端口转发图1-10端口转发

3) 在Web服务器部署frps服务端,修改服务端frps.ini配置文件,如图1-11所示,执行frps.exe -c frps.ini命令开启服务端,这里在Web服务器开启监听7000端口,稍后用于FTP服务器frp客户端连接,执行如图1-12所示。

图1-11 frps.ini配置文件图1-11 frps.ini配置文件
图1-12 搭建隧道图1-12 搭建隧道

4)在上文所描述的已经获取FTP服务器管理权限的前提下,上传frp客户端工具,修改frpc.ini配置文件,如图1-13所示,执行frpc -c frpc.exe命令,将FTP服务器本地7777端口进行设置为socks5代理端口,转发到Web服务器开启的服务端7000端口进行连接。如图1-14所示。

图1-13 frpc.ini配置文件图1-13 frpc.ini配置文件
图1-14 端口连接图1-14 端口连接

5)接下来,在攻击机中修改 proxychains4.conf配置文件,并在其底部添加一行socks5 127.0.0.1 8888参数来完成proxychains代理配置,如图1-15所示。

图1-15 修改proxychains配置图1-15 修改proxychains配置

6)当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.1.50命令来连接PC主机,如图1-16所示,通过所建立的socks议隧道,我们可以直接远程连接到PC主机。

图1-16 远程连接成功图1-16 远程连接成功

3.三级代理

1)当获取到PC主机权限之后,根据上述拓扑对核心服务器进行后续渗透,通过frp工具搭建三层代理,将其RDP远程服务转发出来,此时使用socks代理的方式类似于上述操作,首先利用公网服务器部署,frps服务端配置如下,开启运行./frps -c frps.ini命令即可,如图1-17、图1-18所示。

图1-17 frps服务端配置图1-17 frps服务端配置
图1-18运行frps服务端图1-18运行frps服务端

2)在Web服务器部署客户端,先修改frpc.ini配置文件如图1-19所示,执行frpc.exe -c frpc.ini命令,将监听到FTP服务器的7777端口远程转发到攻击机的7777端口,如图1-20所示。

图1-19 配置文件图1-19 配置文件
图1-20 端口远程转发到公网图1-20 端口远程转发到公网

3)继续在Web服务器部署frp服务端,修改服务端frps.ini配置文件,如图3-220所示,执行frps.exe -c frps.ini命令,在Web服务器部署服务端,开启监听7000端口,如图1-21所示。

图1-21 配置文件图1-21 配置文件
图1-22 搭建隧道图1-22 搭建隧道

4)在FTP服务器开启客户端,用于连接Web服务器,修改配置文件如图1-23所示,执行frpc -c frpc.ini,将PC主机开启的7777端口转发给Web服务器监听的7777端口。如图1-24所示。

图1-23 配置文件图1-23 配置文件
图1-24 sokcs7777端口转到给Web服务器服务端图1-24 sokcs7777端口转到给Web服务器服务端

5)在FTP服务器开启服务端,修改frps.ini配置文件,如图1-25所示,执行frps -c frps.ini命令,开启FTP服务端监听,如图1-26所示。

图1-25 配置文件 图1-25 配置文件
图1-26 FTP服务端开启监听图1-26 FTP服务端开启监听

6)在PC主机上传frp工具,设置客户端配置如图1-27所示,执行frpc -c frpc.ini命令,连接FTP服务器服务端,如图1-28所示。

图1-27 配置文件图1-27 配置文件
图1-28连接FTP服务器服务端图1-28连接FTP服务器服务端

7)在Kali攻击机修改Proxychains代理配置文件,修改为sock5 127.0.0.1 7777,如图1-29所示。

图1-29 修改Proxychains代理配置文件图1-29 修改Proxychains代理配置文件

8)这时可通过攻击机的的7777端口即可访问到核心服务器,在攻击机执行proxychains rdesktop 192.168.2.3命令来连接核心服务器,如图1-30所示,通过所建立的socks 协议隧道,我们可以直接远程连接到核心服务器。

图1-30 远程连接成功图1-30 远程连接成功

二.本篇总结

随着隧道技术的不断更新迭代,越来越多的攻击者利用隧道技术攻击企业内网,通过本篇文章从利用FRP进行隧道穿透的方式,并且通过大量的案例来演示了多个实际常见的隧道场景,希望本篇内容对读者有所帮助。


我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞