ICMP隱蔽隧道攻擊分析與檢測(三)

巴韭特發表於2023-04-03

 • ICMP隧道攻擊工具特徵分析


 

一、原理

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

透過改變作業系統預設填充的Data,替換成自己構造的資料,這就是ICMP隱蔽隧道的原理。

 

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

進行隱蔽隧道傳輸的時候,被控端(防火牆內部)執行並接受外部攻擊端的ICMP_ECHO資料包,攻擊端把需要執行的命令隱藏在ICMP_ECHO資料包中,被控端接收到該資料包,解出其中隱藏的命令,並在防火牆內部主機上執行,再把執行結果隱藏在ICMP_ECHOREPLY資料包中,傳送給外部攻擊端。(本質上就是利用防火牆不禁止ICMP協議的安全漏洞,透過ICMP的請求和應答資料包,偽造Ping命令的資料包形式,實現繞過防火牆和入侵檢測系統的阻攔。)

 

優點:

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

缺點:

  1. ICMP隱蔽傳輸是無連線的,傳輸不是很穩定,而且隱蔽通道的頻寬很低
  2. 利用隧道傳輸時,需要接觸更低層次的協議 ,這就需要高階使用者許可權

 

二、隱蔽隧道工具使用及流量特徵分析

1、icmpsh建立隧道及資料包分析

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

 

攻擊機:172.16.159.129/24

靶機:172.16.159.153/24

 

攻擊機執行命令建立隱蔽隧道連線

 

靶機執行命令建立隱蔽隧道連線

 

執行" whoami "命令抓包檢視

 

Wireshark抓包分析

 

2、icmptunnel建立隧道及資料包分析

  • icmptunnel透過建立一個虛擬的隧道介面來工作
  • 客戶端主機上的所有使用者流量都路由到虛擬網路卡tun0
  • icmptunnel在此介面上偵聽IP資料包
  • 這些資料包封裝在ICMP回顯資料包中

 

攻擊機:172.16.159.2/24

靶機:172.16.159.3/24

 

整體架構:

  

攻擊機執行命令建立隱蔽隧道連線

 

觀察路由表

 

靶機執行命令建立隱蔽隧道連線

 

 觀察路由表

 

此時攻擊機和靶機之間透過虛擬網路卡tun0建立連線,IP地址為:

攻擊機:10.0.1.1/24

靶機:10.0.1.2/24

 

在攻擊機執行ssh登陸靶機

抓包物理網路卡eth0,可以發現通訊連線全部變成ICMP協議,所有通訊流量都被封裝在ICMP協議中傳輸

 

 

抓包虛擬網路卡tun0,流量仍然為正常的協議通訊

 

3、ptunnel建立隧道及資料包分析

ptunnel 全稱 PingTunnel,Kali下自帶該工具

假設場景,當前已經拿下了一臺外網 Web Linux 伺服器,想透過它利用 ICMP 協議連線內網的一臺已經開啟遠端桌面的 Windows ,網路結構簡化如下:

 

 PC 本機
||              
||
||
Kali 攻擊機       172.16.159.2 (外網)
||              
||
||
Linux Web 跳板機  172.16.159.3 (外網)
||               172.16.30.3  (內網)
||
||
Win RDP 目標機    172.16.30.2 (內網)

 

在 Kali 攻擊機上執行以下命令

ptunnel -p 172.16.159.3 -lp 3389 -da 172.16.30.2 -dp 3389 -x pass

-p 指定跳板機外網IP

-lp 指定本機的監聽埠

-da 指定目標機的內網IP

-dp 指定目標機的埠

-x 設定隧道密碼

 

在 Linux Web 跳板機上執行以下命令

ptunnel -x pass

 

 之後訪問 Kali 攻擊機 172.16.159.2 的 3389 埠就會連線到 Windows RDP 目標機 192.168.30.2 的 3389 埠了,不過實測發現此ICMP隧道建立的通訊速度慢且不夠穩定

 

抓取 Linux Web 跳板機和 Windows RDP 目標機之間的流量,可以發現流量傳輸的是TPKT協議

(TPKT協議是一個傳輸服務協議,我們常用的RDP協議(Remote Desktop Protocol,Windows的遠端桌面協議)就是基於TPKT)

 

抓取 Kali Linux 攻擊機和 Linux Web 跳板機之間的流量,可以發現流量傳輸已經變成ICMP協議

 

三、HW行動之ICMP隧道攻擊的應用

2022年HW病毒木馬在反連C2過程中使用的協議呈現出多樣化的趨勢,不再侷限於經典的TCP、HTTP和HTTPS,少量樣本開始使用ICMP隧道和DNS隧道進行通訊。

樣本描述
樣本資訊
Sha256 d145e9a2a6e9e904aa2984ae9282d384631f757a978adf24a09dd2600011834a
SHA1 44bacb493e84a14f9f0dc384b0f9648b50dade8e
MD5 70804a1efac34e4f0e24fd0af5286692
檔案型別 EXE
檔案大小 4.67MB
檔名稱 投訴舉報證據.dоcxㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ                        ...ㅤㅤ       ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ    .exe
功能描述 後門木馬
技術特點 Go語言載入器,會將後門樣本釋放本地執行,樣本可進行icmp通訊

 

這是一個使用ICMP協議進行通訊的樣本。樣本外層使用Go語言編寫的載入器,負責將誘餌Word文件和木馬模組釋放執行。

 

之後,木馬將在C:\Users\Public目錄下釋放名為svchost.exe木馬並啟動執行。

  

樣本利用ICMP協議同C2進行通訊,ICMP協議中的data欄位可寫入任意自定義資料,樣本會將上線資料填充1024個位元組放在ICMP協議的data欄位,並且返回的ICMP資料包的data欄位也是固定的1024個位元組。

C2會對接收的ICMP流量進行判斷,如果data資料不符合其格式,將不會發迴響應包。在接收到到響應後,樣本會基於C2返回的資料執行不同的功能。

 

相關文章