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

点击蓝字
关注我们

声明

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


前言

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

环境搭建

ubuntu 公网vps

win10内网主机

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


服务端配置

image.png


启动

./frps -c frps.ini

如果后台运行

nohup ./frps -c frps.ini &


访问面板

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

输入账号密码登录



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

image.png

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


mstsc连接到主机


抓取数据包

host xx.xx.xx.xx


主机ip192.168.43.246


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


详情内容就是


可以看到详细数据包中src_addr为受害主机出口地址,目的端口dst_portvps的穿透端口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设备也是可以实现的。

本文作者:dingjiacan@antvsion.com

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/185408.html

Tags:
评论  (0)
快来写下你的想法吧!

dingjiacan@antvsion.com

文章数:344 积分: 877

蚁景网安实验室(www.yijinglab.com)网络安全靶场练习平台,涉及CTF赛前指导、职业技能训练、网安专项技能提升等。

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号