某安全設備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-20220803131305941.png

服務端配置

bind_port = 9666    //frp服務端端口
token = 123         //客戶端連接時的token認證
dashboard_port=9999 //面板服務端口
dashboard_user=Ggoodstudy   //用戶名
dashboard_pwd=xxxx         //密碼
enable_prometheus=true
log_file=/var/log/frps.log //日誌存放位置
log_level=info
log_max_days=3    
vhost_http_port=9998         //http服務端口

image-20220803170717845.png

啓動

./frps -c frps.ini

如果後臺運行

nohup ./frps -c frps.ini &

image-20220803142552496.png

訪問面板

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

輸入賬號密碼登錄

image-20220803161613310.png

image-20220803142443148.png

此時服務端的配置已成功,客戶端配置

[common]
server_addr = xx.xxx.x.x
server_port = 9666
token = 123
[rdp]
type = tcp
local_ip = 127.0.0.1          
local_port = 3389
remote_port = 7004  

這裏設置代理本機的3389和8077端口

image-20220803151704866.png

mstsc連接到主機

image-20220803151630337.png

抓取數據包

host xx.xx.xx.xx

image-20220803154450739.png

主機ip192.168.43.246

image-20220803154642740.png

這裏我們可以看到請求的流量包,在請求服務端的9666端口

image-20220803155112096.png

詳情內容就是

image-20220803160707870.png

可以看到詳細數據包中src_addr爲受害主機出口地址,目的端口dst_portvps的穿透端口7004端口,目的ip爲vps的私網地址

image-20220803161214576.png

此時的連接狀態顯示的,同時,查看遠程時的連接遠程桌面時會產生這樣流量特徵run_id

image-20220803163900688.png

另外有特別的發現,虛擬機winserver 2012 R2在運行客戶端之後,vps在連接的過程中也能獲取到宿主機的用戶名

image-20220803164958158.png

這是一個比較特別的點兒,剩餘的流量就是vps和跳板機的流量交互,沒有很明顯的特徵。

回頭看某商設備對於frp內網穿透的告警

image-20220803170847459.png

image-20220803165516341.png

我們可以對比之前的流量包,缺少的字段且僅有udp端口

image-20220803165634213.png

這裏可能某商的規則id是基於udp_port或者說是version字段而產生的告警行爲。

【----幫助網安學習,以下所有學習資料免費領!加vx:yj009991,備註 “博客園” 獲取!】

 ① 網安學習成長路徑思維導圖
 ② 60+網安經典常用工具包
 ③ 100+SRC漏洞分析報告
 ④ 150+網安攻防實戰技術電子書
 ⑤ 最權威CISSP 認證考試指南+題庫
 ⑥ 超1800頁CTF實戰技巧手冊
 ⑦ 最新網安大廠面試題合集(含答案)
 ⑧ APP客戶端安全檢測指南(安卓+IOS)

魔改

從幾個方面規避流量監測

1.交互量加密

對frp的認證使用tls加密,修改服務端frps.ini

tlsonly = true

客戶端配置frpc.ini

tlsenable = true

2.重寫服務端

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

image-20220808161235834.png

服務端會請求客戶端配置文件內容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設備也是可以實現的。

本文僅限於技術討論與分享,嚴禁用於非法途徑。若讀者因此作出任何危害網絡安全行爲後果自負,與本人無關。

更多靶場實驗練習、網安學習資料,請點擊這裏>>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章