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