某安全设备frp流量告警分析

VSole2022-08-16 15:57:05

声明

本文仅限于技术讨论与分享,严禁用于非法途径。若读者因此作出任何危害网络安全行为后果自负,与本人无关。

前言

也是第一次使用某商设备,不同厂商的规则库不一样,总的来说流量监控很大一部分是基于规则库来实现的,所以在进行内网穿透的时候就要考虑如何bypass设备告警。

环境搭建

ubuntu 公网vps

win10内网主机

wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz

服务端配置

bind_port = 9666    //frp服务端端口token = 123         //客户端连接时的token认证dashboard_port=9999 //面板服务端口dashboard_user=Ggoodstudy   //用户名dashboard_pwd=xxxx         //密码enable_prometheus=truelog_file=/var/log/frps.log  //日志存放位置log_level=infolog_max_days=3     vhost_http_port=9998         //http服务端口

启动

./frps -c frps.ini

如果后台运行

nohup ./frps -c frps.ini &

访问面板

http://xx.xxx.xx.xx:9666

输入账号密码登录

此时服务端的配置已成功,客户端配置

[common]server_addr = xx.xxx.x.xserver_port = 9666token = 123[rdp]type = tcplocal_ip = 127.0.0.1           local_port = 3389remote_port = 7004

这里设置代理本机的3389和8077端口

mstsc连接到主机

抓取数据包

host xx.xx.xx.xx

主机ip192.168.43.246

这里我们可以看到请求的流量包,在请求服务端的9666端口

详情内容就是

可以看到详细数据包中src_addr为受害主机出口地址,目的端口dst_port为vps的穿透端口7004端口,目的ip为vps的私网地址。

此时的连接状态显示的,同时,查看远程时的连接远程桌面时会产生这样流量特征run_id

另外有特别的发现,虚拟机winserver 2012 R2在运行客户端之后,vps在连接的过程中也能获取到宿主机的用户名

这是一个比较特别的点儿,剩余的流量就是vps和跳板机的流量交互,没有很明显的特征。

回头看某商设备对于frp内网穿透的告警

我们可以对比之前的流量包,缺少的字段且仅有udp端口

这里可能某商的规则id是基于udp_port或者说是version字段而产生的告警行为。

魔改

从几个方面规避流量监测

1.交互量加密

对frp的认证使用tls加密,修改服务端frps.ini

tlsonly = true

客户端配置frpc.ini

tlsenable = true

2.重写服务端

在上面的流量包中可以看到,在进行交互的时候

服务端会请求客户端配置文件内容proxy_name,那么在定义变量的服务端,可以重写方法

case *msg.NewVisitorConn:                      if err = svr.RegisterVisitorConn(conn, m); err != nil {                                 xl.Warn("register visitor conn error: %v", err)                                 msg.WriteMsg(conn, &msg.NewVisitorConnResp{                                            ProxyName: m.ProxyName,                                            Error:     util.GenerateResponseErrorString("register visitor conn error", err, svr.cfg.DetailedErrorsToClient),                                 })                                 conn.Close()                      } else {                                 msg.WriteMsg(conn, &msg.NewVisitorConnResp{                                            ProxyName: m.ProxyName,                                            Error:     "",                                 }) 

在客户端和服务器连接的时候流量特征变成自定义变量即可。

总结

frp的特征比较明显,所以就单纯魔改frp的话除了流量上做加密外,简单的修改特征bypass设备也是可以实现的。

流量frp
本作品采用《CC 协议》,转载必须注明作者和本文链接
声明本文仅限于技术讨论与分享,严禁用于非法途径。若读者因此作出任何危害网络安全行为后果自负,与本人无关。前言也是第一次使用某商设备,不同厂商的规则库不一样,总的来说流量监控很大一部分是基于规则库来实现的,所以在进行内网穿透的时候就要考虑如何bypass设备告警。总结frp的特征比较明显,所以就单纯魔改frp的话除了流量上做加密外,简单的修改特征bypass设备也是可以实现的。
以上两种代理方式虽均能实现内网穿透的目的,但是代理质量相对来说并不稳定,难以满足内网渗透的需求。FRP反向代理 FRP 的 中文官方文档 可了解其作用和用法。
frp是一个高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务,?支持tcp, udp, http, https等协议类型,可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网;
实战|某次攻防的经历
2023-03-20 10:04:32
得到公司的域名,进行子域名爆破和ip相关信息收集。访问一下,发现该站在主页暴露了开发使用的相关框架等信息,其中,存在shiro框架。发现存在shiro的反序列化nday漏洞。Shiro利用工具:https://github.com/j1anFen/shiro_attack同样的,通过子域名扫到59.xx.xx.xx的ip,通过扫描c段,发现了59.xx.xx.101。该ip搭载的网站也是该企业的资产,通过全端口扫描,发现4308端口开启的服务与60.xx.xx.130一样,怀疑存在同一shiro漏洞,使用shiro漏洞检测工具。通过frp代理流量,成功登上远程桌面。扫描指纹使用的whatweb。
frp 是一个可用于内网穿透的高性能的反向代理应用,支持TCP、UDP协议,为HTTP和HTTPS应用协议提供了额外的能力,且尝试性支持了点对点穿透。frp 采用go语言开发。更多的人使用 frp 是为了进行反向代理,满足通过公网服务器访问处于内网的服务,如访问内网web服务,远程ssh内网服务器,远程控制内网NAS等,实现类似花生壳、ngrok等功能。而对于内网渗透来讲,这种功能恰好能够满足我
在此基础上,FRP支持 TCP、UDP、HTTP、HTTPS 等多种协议,提供了加密、压缩、身份认证、代理限速和负载均衡等众多能力。FRP开源项目地址: ?
搭建socks5代理配置文件如下:服务端:./frps -c frps.ini?#最大同时连接数。我们本机设置代理: socks5 xxx.xxx.xxx.xxx?另一台win配置代理用内网地址连接另一台主机的3389连接成功?查看控制台流量信息等
常用的隧道工具
VSole
网络安全专家