一. 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的標誌
學網安就來合天網安實驗室