ICMP隧道通信原理與通信特徵

一. ICMP 隧道技術解析

1.1 ICMP協議

ICMP(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議簇的一個子協議,用於在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起着重要的作用。

 

主要概念有:

1.確認ip數據包是否成功到達目的地

2.通知源主機發送ip數據包丟失的原因

3.ICMP是基於IP協議工作的

4.ICMP只能作用於IPV4,IPV6下,使用ICMPv6

 

ICMP幀格式如下所示

 

 

其中,類型和代碼字段決定了ICMP報文的類型,如下圖所示

 

 

1.2 ICMP隧道技術原理

由於ICMP報文自身可以攜帶數據,而且ICMP報文是由系統內核處理的,不佔用任何端口,因此具有很高的隱蔽性。

 

通常ICMP隧道技術採用ICMP的ICMP_ECHO和ICMP_ECHOREPLY兩種報文,把數據隱藏在ICMP數據包包頭的選項域中,利用ping命令建立隱蔽通道。

 

 

進行隱蔽傳輸的時候,肉雞(防火牆內部)運行並接受外部攻擊端的ICMP_ECHO數據包,攻擊端把需要執行的命令隱藏在ICMP_ECHO數據包中,肉雞接收到該數據包,解出其中隱藏的命令,並在防火牆內部主機上執行,再把執行結果隱藏在ICMP_ECHOREPLY數據包中,發送給外部攻擊端。

 

 

簡單的說就是,利用ICMP的請求和應答數據包,僞造Ping命令的數據包形式,實現繞過防火牆和入侵檢測系統的阻攔。

1.3 ICMP隧道優缺點

優點:

1.防火牆對ICMP_ECHO數據包是放行的,並且內部主機不會檢查ICMP數據包所攜帶的數據內容,隱蔽性高。

缺點:

1.ICMP隱蔽傳輸是無連接的,傳輸不是很穩定,而且隱蔽通道的帶寬很低

2.利用隧道傳輸時,需要接觸更低層次的協議 ,這就需要高級用戶權限

二. ICMP隧道攻擊實現以及流行工具展示

二. ICMP隧道攻擊實現以及流行工具展示

這一工具簡單並且便攜。受控端(客戶端)使用C語言實現。只能運行在目標Windows機器上,而主控端(服務端)由於已經有C和Perl實現的版本,而且之後又移植到了Python上,因此可以運行在任何平臺的攻擊者機器中。

 

2.1.1 icmpsh建立隧道及數據包分析

 

 

可以看到已經實現成功。

抓包,可以看到我們輸入的命令

 

 

2.2 icmptunnel

icmptunnel是通過創建虛擬網卡,將所有流量都經過這個虛擬網卡。即ICMP隧道

2.2.1 icmptunnel建立隧道及數據包分析

客戶端主機上的所有用戶流量都路由到虛擬網卡tun0。icmptunnel在此接口上偵聽IP數據包。這些數據包封裝在ICMP回顯數據包中。

 

 

建立ICMP隧道

 

 

此時所有流量都通過虛擬網卡,即icmp隧道

 

 

 

2.3 ptunnel

ptunnel支持大多數具有libpcap的操作系統,從版本0.7開始,ptunnel也可以在Windows上編譯

前提是需要裝WinPcap

2.3.1 petunnel 建立隧道及數據包分析

 

 

 

使用命令建立ICMP隧道

 

 

三. 檢測icmp隧道通信特徵

3.1 icmp會話中數據包的總數

一個正常的 ping 每秒最多隻會發送兩個數據包,而使用 ICMP隧道的瀏覽器在同一時間會產生大量 ICMP 數據包。

 

 

3.2 隧道數據通常比較大

ICMP隧道 數據包中DATA 往往大於 64 比特

 

 

3.3 請求包和響應包內容不一致

 

 

 

而正常的icmp數據包裏,請求和迴應部分數據是一致的

 

 

 

3.4 部分隧道工具會顯示tun的標誌

 

 

學網安就來合天網安實驗室

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