概述
PingTunnel也是一款ICMP隧道建立工具,但是它和icmpsh不同的是,pingtunnel工具能够设置隧道密码,避免隧道被其他同行利用。此次实验我们使用一台VPS服务器(kali攻击机)去攻击一台Windows Server2008主机。在访问攻击者VPS的1080端口时,会把2008服务器的3389端口的数据封装在ICMP隧道里,以Web服务器为跳板机进行传送。
隧道搭建准备
首先我们在VPS攻击机上安装PingTunnel这款工具,因为我使用的是新版的Kali机,所以只需要解决一个依赖问题即可,这个是PingTunnel工具的下载地址
http://freshmeat.sourceforge.net/projects/ptunnel/
我们下载解压完压缩包后,执行make && make install
命令进行安装和编译,因为我们这里已经安装成功了,第一次安装时会提示缺少pcap
这个依赖包
以下是libpcap
依赖包的下载地址,同样解压进入目录后,执行./configure
命令进行编译
http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
如果读者使用的是新版的kali_linux虚拟机,那么这里会报一个flex缺少依赖的错误
解决的方法是输入sudo apt-get install flex bison
安装这两个依赖即可,如果输入man pcap
出现帮助命令时,则表示安装成功
同样在我们的Web边界服务器(Ubuntu服务器)上搭建和VPS攻击机相同的服务
3389端口隧道搭建
首先我们在kali上输入命令ptunnel -p Web服务器IP地址 -lp 1080 -da Windows2008的IP地址 -dp 3389 -x shuteer
,这里解释一下,-x
是指定ICMP隧道连接的密码,-lp
是指定要监听的本地TCP端口,-da
是指定要转发的目标服务器的IP地址,-dp
是指定要转发的目标机器的TCP端口,-p
是指定ICMP隧道另一端的机器的IP地址。
同时也在我们的Web服务器上执行以下命令ptunnel -x shuteer
,开启监听服务
然后我们使用Win7连接我们的VPS的kali主机,可以看到,我们虽然连接的是我们的VPS主机,但是实际上反弹出来的shell是内网windows2008主机的权限,这里顺带一提的是,windows2008主机必须开启了3389端口并且允许赋予域用户远程连接到主机上的权利,出问题的可自行百度解决。
22端口隧道搭建
同理我们现在kali上开启监听
ubuntu边界服务器跳板机开启监听
然后我们在win7上使用putty进行连接,连接成功
防御ICMP隧道攻击
目前大多数的网络和边界设备不会过滤ICMP流量。在建立ICMP隧道时会产生大量的ICMP数据包,我们可以通过抓包分析检测恶意的ICMP流量,具体方法有:
- 检测同一来源的ICMP数据包的数量。一个正常的ping命令每秒最多发送两个数据包,而使用ICMP隧道的浏览器会在短时间内产生上千个ICMP数据包
- 注意哪些payload大于64bit的ICMP数据包
- 寻找响应数据包中的Payload与请求数据包中的payload不一致的ICMP数据包
- 检测ICMP数据包的协议标签。例如icmptunnel会在所有的ICMP Payload前面添加"TUNL"标记来标识隧道