SSH加密隧道流量攻擊與檢測技術——這玩意和思科加密流量檢測沒有本質區別啊,可借鑒CNN圖像


隧道類型:

SSH隧道 4 0 0% 通過SSH協議實現的隧道
HTTP(S)隧道 7 0 0% 通過HTTP/HTTPS協議實現的隧道
DNS隧道 17 1 5.9% 通過DNS協議實現的隧道
唯一檢出的一項由於內部調用了sh執行了命令
ICMP隧道 7 0 0% 通過ICMP協議實現的隧道
NTP隧道 2 0 0% 通過NTP協議實現的隧道
TCP隧道 9 1 12.5% 通過TCP協議實現的隧道
KCP隧道 2 0 0% 通過KCP協議實現的隧道
UDP隧道 3 0 0% 通過UDP協議實現的隧道

這玩意看起來要專門做一個檢測啊。

 

【技術向】SSH加密隧道流量攻擊與檢測技術

from:https://zhuanlan.kanxue.com/article-15152.htm
 

一.   總體概述

 

1.1網絡隱蔽通道技術

隱蔽通道是指系統的一個用戶用違反系統安全策略的方式傳送信息給另外一個用戶的機制。

 

隱蔽通道分為如下兩種類型:

1.存儲隱蔽通道:一個進程對某客體進行寫操作,而另一個進程可以觀察到寫的結果。

2.時間隱蔽通道:一個進程對系統性能產生的影響可以被另外一個進程觀察到並且可以利用一個時間基准進行測量。

以上這兩種類型的隱蔽通道的產生,都必須符合一個條件:即發送進程和接收進程之間無法以符合系統安全機制的方式進行通信,否則他們之間就可以利用正常的通道通信了。

 

網絡隱蔽通道的構建主要利用網絡協議漏洞或者報文的時間特性來建立,其常見方式如下:

1.利用未用或保留字段建立隱蔽通道:

由於網絡檢測系統一般不會對保留字段和未用字段進行檢查,因此網絡攻擊者可將要傳遞的信息隱蔽在報文中的未用字段或者保留字段中,例如:IP報頭的TOS字段和DF字段均可用於隱蔽信息的傳輸。

 

2.利用擴展和填充字段建立隱蔽通道:

由於大部分網絡協議都支持對報文的擴展,以滿足網絡通信中的特殊需求,而擴展方式卻很少有明確的定義。因此,網絡攻擊者可以對某協議報文進行自行擴展,將信息作為填充內容隱蔽到填充字段中,從而建立網絡隱蔽通道。

 

3.在協議規范允許下,對報文相關字段或者負載大小進行調制來隱蔽信息的傳輸,以此來建立網絡隱蔽通道。

 

4.利用報文的收發時間特性,通過調整正常數據包的發送接收時間來隱蔽信息,從而建立網絡隱蔽通道。

 

5.其它方式建立隱蔽通道:

例如,利用網絡沖突檢測機制或無線局域網的Traceback機制將信息隱蔽其中,這也是建立網絡隱蔽通道的方式。

 

 1.2  SSH協議簡介

由於部分重要網絡協議在通信過程中使用明文傳輸,往往會造成一定程度的信息泄露與被攻擊劫持的風險,在此背景下,由IETF 的網絡工作小組(Network Working Group)設計了一種雙向加密的保證非安全網絡環境中上進行安全遠程通信等通信服務的協議,即SSH(Secure  Shell) 。SSH協議屬於應用層協議,應用於TCP傳輸層的基礎上。SSH通信過程包含5個階段的通信協商,以保證其兩端認證機制的不可欺騙性。此外SSH經過相關設計,在加密的過程中,還對傳輸的數據進行壓縮,以提高傳輸的速度。 

 

 1.3  SSH隧道簡介

SSH 的功能多樣,不僅對遠程登陸、文件傳輸進行安全加密,此外SSH還能夠將其他TCP端口的網絡數據通過SSH連接來轉發,並且自動提供了相應的加密及解密服務,即加密隧道。SSH隧道的實現主要使用SSH的參數配置進行端口轉發,即將所需傳輸的數據內容通過加密的SSH隧道進行轉發。

 

SSH 端口轉發能夠提供以下兩大功能:

1.加密SSH Client端至SSHServer端之間的通訊數據。

2.突破防火牆的限制完成一些之前無法建立的 TCP 連接。由於SSH的安全性,在數據跨越公網時其他人無法得知數據內容。SSH端口轉發有本地轉發、遠程轉發和動態端口轉發三種。"遠程轉發"也稱為"SSH反向隧道"。

圖片

 

 

二.   攻擊設計方案

 

 

 

2.1  攻擊方案背景

假設有主機A與主機B,主機A上安裝有mysql客戶端,主機B上安裝有mysql服務端,主機A中的mysql客戶端需要與主機B中的mysql服務端進行通訊,則需要從mysql的客戶端連接到mysql服務端。

 

由於mysql在傳輸數據時使用明文傳輸,暴露在公網的mysql通訊是不安全的,因此為了提高訪問mysql服務時的安全性,可以利用SSH搭建"通道",然后將mysql的客戶端與服務端通過這條"SSH通道"連接起來,如下圖所示:

圖片

mysql的客戶端與服務端的連接方式從原來直連的方式變成了如上圖所示的連接方式,它們之間並不直接進行通訊,而是借助SSH隧道將通訊數據轉發,雖然仍然跨越了公網,但是由於SSH本身的安全特性,所以別人無法看到明文傳輸的數據,數據依靠SSH隧道實現了加密的效果,達到了保護數據安全的作用,提升了mysql的客戶端與服務端通訊的安全性。

 

 2.2  攻擊方案設計

 

本方案主要使用openSSH工具利用SSH協議的三種端口轉發方式,搭建隧道。

實驗環境如下:

角色

系統版本

ip

服務

Server A

kali

192.168.43.38

Mysql 客戶端

Server B

ubuntu

192.168.43.25

Mysql 服務端

 

2.3  本地轉發

在ServerA中執行如下命令,即可在ServerA與ServerB之間建立一條SSH隧道:

ssh -L 9906:192.168.43.25:3306 jiang@192.168.43.25

上述命令表示從本機(ServerA)建立一個到ServerB(192.168.43.25)的SSH隧道,使用本地端口轉發模式,監聽ServerA本地的9906端口,訪問本機的9906端口時,通訊數據將會被轉發到ServerB(192.168.43.25)的3306端口。

 

圖片

 

在Server A上通過SSH本地轉發連接Server B上的數據庫:

 

圖片

 

2.4 遠程轉發

假設Server B在內網,Server B可以訪問外網,Server A在外網,ServerA有自己的公網IP。這種情況下,在Server A上是不能通過SSH本地轉發連接Server B的,但是Server B可以SSH連接ServerA。因此,我們可以在Server B中主動連接到Server A,即在Server B中執行創建隧道的命令,連接到Server A。隧道創建后,轉發端口需要監聽在Server A中,以便利用Serve rA訪問到內網的Server B。

使用SSH的"-R選項",可以創建一個"遠程轉發"模式的SSH隧道,我們在ServerB中,執行如下命令即可:

ssh  -R9906:192.168.43.25:3306 jiang@192.168.43.38

 

圖片

 

上述命令在Server B中執行,執行后,即可在ServerA與Server B之間建立SSH隧道,此時,Server B是SSH客戶端,ServerA是SSH服務端,隧道建立后,Server A中的9906端口會被監聽。

在Server A中訪問本地回環地址的9906端口,即可訪問到內網ServerB中的mysql服務,如下圖所示:

 

圖片

 

2.5  動態轉發

本地轉發和遠程轉發都要求有一個固定的應用服務端的端口號,例如前面例子中的mysql服務端的3306端口,但是某些應用沒有這個端口號,例如用瀏覽器進行Web瀏覽。當我們在一個不安全的網絡環境下上網,用SSH動態轉發來保護我們的網頁瀏覽是十分必要的。

SSH動態轉發的命令格式:

ssh -D <local port> <SSH Server>

我們在Server B上開啟SSH動態轉發:

 

圖片

 

我們可以直接使用localhost:8000作為正常的SOCKS代理來使用,直接在瀏覽器上設置代理即可:

 

圖片

 

需要注意的是,此時 SSH 所包護的范圍只包括從瀏覽器端(SSH Client端)到SSH Server端的連接,並不包含從SSH Server端到目標網站的連接。如果后半截連接的安全不能得到充分的保證的話,該方案仍不合適。

 

2.6  autossh

在實際的使用過程中,如果使用遠程轉發穿透到內網,SSH隧道將會非常不穩定,特別是在沒有固定IP的網絡內,autossh工具是一個很好的解決方法。autossh是一個用來監控SSH連接,並自動進行重連的工具。autossh的參數與SSH的參數是一致的,但是不同的是,在隧道斷開的時候,autossh會自動重新連接而SSH不會。

安裝方法:

apt  installautossh

在內網主機Server B上,利用autossh 建立一條SSH反向隧道:

autossh -M 4010 -R 9906:192.168.43.25:3306 jiang@192.168.43.38

“-M”參數的意思是使用內網主機Server B的4010端口監視SSH連接狀態,連接出問題了會自動重連。

 

 

 

 

 

 

三. 檢測方案設計

 

 

 

 

 

本檢測方案主要是基於會話行為的模式識別檢測。

 

3.1  基於會話的行為的識別檢測

 

由於其加密性,對於加密流量的識別往往無法使用基於載荷的識別檢測方式對其載荷內容進行識別。但是隧道與SSH其他功能在握手、交互方式設計的不同,數據包到達時間、分組大小等統計特征也會因此不同。

 

傳統方案是使用機器學習技術、利用DPI技術提取數據會話流,並按時間序列提取包數與每包的載荷,捕捉流內數據包的包間隔時間,總包長度等統計數據(最大值,最小值,平均值,標准差等),按上下行方向形成按會話划分提取特征值,構建特征工程,利用機器學習有監督分類模型,挖掘特定協議的獨特模式,進行分類。

 

此外,隨着計算機科學的發展與技術進步,深度學習模型的不斷發展與應用,目前也有較多的深度學習模型被應用於流量識別上,相比於傳統的機器學習方法,深度學習模型的學習能力更高,可以學習更復雜的模式。

 

深度學習對流量識別上主要有基於CNN網絡與基於RNN網絡兩類。

 

基於RNN網絡的主要是將每種不同的流量數據流視作不同的語言模型,將數值序列看作映射到數值空間的語句,然后生成學習不同設備語言語義和句法語法的模型。

 

基於CNN的主要是通過流量每個字節與圖片的灰度數據進行轉化,將流量識別分類問題轉化為圖像分類問題,利用成熟的CNN網絡進行分類識別。

 

本文針對SSH隱蔽隧道的深度學習模型,使用2維卷積神經網絡搭建深度學習模型,構建SSH隧道與非隧道流量二分類識別模型,未來還會針對SSH隧道內所使用應用流量進行多分類模型搭建。

 

3.2  檢測流程

圖片

 

 

3.3 模型設計

使用深度學習算法搭建多層2維卷積神經網絡,並在卷積層后添加dropout層,減少神經元之間的共適應關系,消除部分過擬合對模型結果的影響,具體模型設計如下圖:

圖片

3.4 實驗結果

在本地網路中,搭建SSH客戶端與服務端,通過第二部分方案進行SSH隧道構建,同時使用其他設備進行正常SSH服務通信,並利用wireshark抓包,使用自研深度包解析工具按會話進行提取。最終經數據預處理、特征工程生成模型輸入數據,其模型准確率與損失曲線如下圖:

圖片

圖片

 

 

 

 

 

 

 

 

五.   參考鏈接

 

 

 

 

 

 

[1]Alshammari R , Zincirheywood A N . A flow based approach for SSH traffic detection[J]. 2007.

[2]Dusi M , Crotti M , Gringoli F , et al. Tunnel Hunter: Detecting application-layer tunnels with statistical fingerprinting[J]. Computer Networks, 2009, 53(1):81-97.

[3]譚小兵. SSH隧道流量檢測與識別技術研究[D]. 中國科學院研究生院(西安光學精密機械研究所), 2012.

[4] http://www.zsythink.net/archives/2450

[5] https://www.freebuf.com/articles/network/207850.html

[6] https://blog.csdn.net/sunansheng/article/details/50927687

[7]Lopez-Martin M , Carro B , Sanchez-Esguevillas A , et al. Network Traffic Classifier With Convolutional and Recurrent Neural Networks for Internet of Things[J]. IEEE Access, 2017, PP(99):1-1.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM