利用SSH加密實現(xiàn)的HTTP隧道分析與檢測
1.隧道介紹
Chisel是一個快速穩(wěn)定的TCP/UDP隧道工具,該工具基于HTTP實現(xiàn),并通過SSH加密保證通信安全。Chisel可以進行端口轉(zhuǎn)發(fā)、反向端口轉(zhuǎn)發(fā)以及SOCKS流量代理,使用GO語言編寫,具備較好的跨平臺特性。該工具的主要用于繞過防火墻,也可以用于向網(wǎng)絡(luò)中提供安全終端節(jié)點。
實戰(zhàn)對抗中,攻擊者獲得資產(chǎn)控制權(quán)后,需要建立失陷資產(chǎn)與外部控制端的通信通道,為了有效躲避IPS、WAF、全流量檢測等安全設(shè)備,常使用加密通道、隱蔽隧道等。Chisel可以將木馬回連的通信流量隱藏在HTTP協(xié)議中,并通過SSH進行加密,保證了通信流量的隱蔽性和安全性。該工具還支持websocket協(xié)議,有效地提升了通信信息的交換效率。
2.隧道原理分析
隧道的搭建需要客戶端和服務(wù)端兩端,客戶端負責(zé)接收待轉(zhuǎn)發(fā)的數(shù)據(jù),解析后將數(shù)據(jù)利用ssh進行加密、封裝成HTTP/WebSocekt(s)協(xié)議發(fā)送到服務(wù)端,服務(wù)端接收后解析成原始流量并轉(zhuǎn)發(fā)。
圖 1 隧道示意圖
隧道搭建時,客戶端會率先向服務(wù)端建立WebSocket連接,在WebSocket協(xié)議升級中,包含隧道工具的版本信息“chisel-v3”。利用該特征可以對隧道流量進行有效檢出,但有經(jīng)驗的攻擊者往往會抹除該特征,規(guī)避檢測。
圖 2 WebSocket協(xié)議升級
WebSocket協(xié)議是Http協(xié)議的補充,相較于Http協(xié)議,WebSocekt實現(xiàn)了長連接、全雙工通信通道,具有更高效的通信效率。chisel隧道中的WebSocket協(xié)議是基于”github.com/gorilla/websocket”包實現(xiàn)的。
圖 3 WebSocket實現(xiàn)
WebSocke連接建立后,chisel工具會在WebSocket信道內(nèi)進行SSH加密協(xié)商,協(xié)商中SSH的版本信息為“SSH-chisel-v3-server”。和WebSocke升級協(xié)議類似,其中包含了chisel工具的特征字符串,可以通過該特征實現(xiàn)檢測,但該特征也較易被攻擊者抹去。
chisel工具中實現(xiàn)SSH協(xié)商是基于GO語言的默認庫”golang.org/x/crypto/ssh”,這也導(dǎo)致SSH協(xié)商產(chǎn)生的指紋為GO語言的默認指紋。
圖 4 SSH加密協(xié)商
SSH加密協(xié)商后,chisel客戶端會持續(xù)監(jiān)聽,接收待轉(zhuǎn)發(fā)流量,ssh加密后發(fā)送到服務(wù)端。目前該工具支持的轉(zhuǎn)發(fā)協(xié)議包括:SOCKS、UDP、TCP。
圖 5 等待轉(zhuǎn)發(fā)流量
3.隧道檢測
根據(jù)分析結(jié)果,我們通過利用主動探測、特征匹配、異常HTTP協(xié)議篩查、SSH指紋篩查等多種檢測方法,實現(xiàn)了對chisel隧道的有效檢測。
圖 6 chisel檢出結(jié)果
4.總結(jié)
利用chisel工具搭建HTTP隧道,攻擊者可以將攻擊流量加密隱藏在隧道之中,從而規(guī)避流量監(jiān)測設(shè)備,大幅度降低被發(fā)現(xiàn)的可能性。目前,越來越多的攻擊者開始利用隱蔽隧道,來提高攻擊的隱蔽性。建議安全人員保持對此類工具的密切跟蹤研究,持續(xù)更新和學(xué)習(xí)新的檢測技術(shù)和工具,力爭在這類隱蔽隧道流量檢測方面做出突破。