安全矩阵

 找回密码
 立即注册
搜索
查看: 1214|回复: 0

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

[复制链接]

189

主题

191

帖子

903

积分

高级会员

Rank: 4

积分
903
发表于 2022-8-16 20:57:53 | 显示全部楼层 |阅读模式
某安全设备frp流量告警分析
​声明
本文仅限于技术讨论与分享,严禁用于非法途径。若读者因此作出任何危害网络安全行为后果自负,与本人无关。

前言
也是第一次使用某商设备,不同厂商的规则库不一样,总的来说流量监控很大一部分是基于规则库来实现的,所以在进行内网穿透的时候就要考虑如何bypass设备告警。
环境搭建
ubuntu 公网vps
win10内网主机
wget https://github.com/fatedier/frp/ ... _linux_amd64.tar.gz
编辑

服务端配置

  1. bind_port = 9666    //frp服务端端口
  2. token = 123         //客户端连接时的token认证
  3. dashboard_port=9999 //面板服务端口
  4. dashboard_user=Ggoodstudy   //用户名
  5. dashboard_pwd=xxxx         //密码
  6. enable_prometheus=true
  7. log_file=/var/log/frps.log  //日志存放位置
  8. log_level=info
  9. log_max_days=3     
  10. vhost_http_port=9998         //http服务端口
复制代码

编辑

启动
./frps -c frps.ini
如果后台运行
nohup ./frps -c frps.ini &
编辑

访问面板
http://xx.xxx.xx.xx:9666
输入账号密码登录
编辑

编辑

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

  1. [common]
  2. server_addr = xx.xxx.x.x
  3. server_port = 9666
  4. token = 123
  5. [rdp]
  6. type = tcp
  7. local_ip = 127.0.0.1           
  8. local_port = 3389
  9. remote_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,那么在定义变量的服务端,可以重写方法
  1. case *msg.NewVisitorConn:
  2.                       if err = svr.RegisterVisitorConn(conn, m); err != nil {
  3.                                  xl.Warn("register visitor conn error: %v", err)
  4.                                  msg.WriteMsg(conn, &msg.NewVisitorConnResp{
  5.                                             ProxyName: m.ProxyName,
  6.                                             Error:     util.GenerateResponseErrorString("register visitor conn error", err, svr.cfg.DetailedErrorsToClient),
  7.                                  })
  8.                                  conn.Close()
  9.                       } else {
  10.                                  msg.WriteMsg(conn, &msg.NewVisitorConnResp{
  11.                                             ProxyName: m.ProxyName,
  12.                                             Error:     "",
  13.                                  })
  14.                       }
复制代码
在客户端和服务器连接的时候流量特征变成自定义变量即可。
总结
frp的特征比较明显,所以就单纯魔改frp的话除了流量上做加密外,简单的修改特征bypass设备也是可以实现的。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 23:49 , Processed in 0.016424 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表