• ICMP隧道攻擊工具特徵分析
一、原理
由於ICMP報文自身可以攜帶資料,而且ICMP報文是由系統核心處理的,不佔用任何埠,因此具有很高的隱蔽性。
透過改變作業系統預設填充的Data,替換成自己構造的資料,這就是ICMP隱蔽隧道的原理。
通常ICMP隧道技術採用ICMP的ICMP_ECHO和ICMP_ECHOREPLY兩種報文,把資料隱藏在ICMP資料包的資料域中,利用ping命令建立隱蔽通道。
進行隱蔽隧道傳輸的時候,被控端(防火牆內部)執行並接受外部攻擊端的ICMP_ECHO資料包,攻擊端把需要執行的命令隱藏在ICMP_ECHO資料包中,被控端接收到該資料包,解出其中隱藏的命令,並在防火牆內部主機上執行,再把執行結果隱藏在ICMP_ECHOREPLY資料包中,傳送給外部攻擊端。(本質上就是利用防火牆不禁止ICMP協議的安全漏洞,透過ICMP的請求和應答資料包,偽造Ping命令的資料包形式,實現繞過防火牆和入侵檢測系統的阻攔。)
優點:
- 通常防火牆對ICMP_ECHO資料包是放行的,並且內部主機不會檢查ICMP資料包所攜帶的資料內容,隱蔽性高
缺點:
- ICMP隱蔽傳輸是無連線的,傳輸不是很穩定,而且隱蔽通道的頻寬很低
- 利用隧道傳輸時,需要接觸更低層次的協議 ,這就需要高階使用者許可權
二、隱蔽隧道工具使用及流量特徵分析
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返回的資料執行不同的功能。