前言
web搞太多了,发现csdn上面很少内网的内容,所以今天来整点内网的隧道技术,ICMP隧道。
由于网络上很多人用的是老工具Ptunnel,现在最新的是Pingtunnel了,所以我就打算用最新的Pingtunnel工具来做这个ICMP隧道技术实验。
提示:以下是本篇文章正文内容,下面案例可供参考
一、ICMP隧道概念
在一些网络环境中,如果不经过认证,TCP和UDP数据包都会被拦截。如果用户可以ping通远程计算机,就可以尝试建立ICMP隧道,将TCP数据通过该隧道发送,实现不受限的网络访问。用户需要在受限制网络之外,预先启动该工具建立代理服务器。再以客户端模式运行该工具,就可以建立ICMP隧道。为了避免该隧道被滥用,用户还可以为隧道设置使用密码。
一、imcptunnel可以将IP流量封装进ICMP的ping数据包中,旨在利用ping穿透防火墙的检测,因为通常防火墙是不会屏蔽ping数据包的。
二、请求端的ping工具会在ICMP数据包后面附加上一段随机的数据作为payload,而响应端则会拷贝这段payload到ICMP响应数据包中返还给请求端,用于识别和匹配ping请求。
三、在使用pingtunnel进行内网穿透时,客户端会将IP帧封装在ICMP请求数据包汇总发送给服务端,而服务端则会使用相匹配的ICMP响应数据包进行回复。这样子在旁人看来,网络中传播的仅仅只是正常的ICMP数据包。
二、复现前的准备工作&相关环境介绍
首先,先看网络拓扑图:
假设,主机A是黑客主机,A与B能通信,B与C能通信,但是A与C不能,这里我在主机C上放了一个hello文件,当访问它时,就会显示以下内容:
为了方便复现,我选择了3台kali系统的虚拟机来做测试,从左往右,分别代表拓扑图里的主机A、B、C。
访问C主机的80端口,hello文件,会出现
hello this is : 192.168.25.138
这些内容,而192.168.25.138就是C主机的ip地址。
所以到这里来做个小结:
kali_主机A(左边第一台):192.168.25.130
kali_主机B(左边第二台):192.168.25.137
kali_主机C(左边第三台):192.168.25.138
主机B成功访问C的80端口hello文件:
主机A则访问不到:
怎么样设置主机A不能访问主机C呢?下面的命令就是禁止主机A通过tcp协议来访问主机C的命令。
-s 参数后面的ip地址是主机A的地址
iptables -A INPUT -p tcp -s 192.168.25.130 -j DROP
查看当前防火墙策略:
iptables -L
清空还原默认的防火墙策略:
iptables -F
因为ICMP隧道的核心就是防火墙没有拦截ICMP协议,所以可以用ping命令来做测试,如果A能ping通C,则可以使用ICMP隧道。
各个主机之间的测试:
A与B(通):
B与C(通):
A与C(通):
三、复现步骤
由于三者之间都能ping通的,说明防火墙没有拦截ICMP协议。接下来就要用到ICMP协议的工具,pingtunnel。
这个工具是github上面的项目,支持多种系统版本,只需要找到自己版本的下载就行:
https://github.com/esrrhs/pingtunnel/releases/tag/2.6
下载完成之后,就可以进行后续的操作了。
在主机B上执行:
./pingtunnel -type server -key 1234 #设置密码
-key参数后面跟的是密码,我设置的是1234
在主机A上执行:
pingtunnel.exe -type client -l :4455 -s 192.168.25.137 -t 192.168.25.138:80 -tcp 1 -key 1234 #监听本地的 4455 端口,发送到4455端口的流量将通过 ICMP 隧道转发到 47.244.96.168 服务器的 80 端口
所以所以所以,在执行完上面两条命令之后,在主机A上访问http://localhost:4455即可访问C的目标80端口。
nice!没毛病,这个时候加上hello文件试试:
完美。这样我们就突破了防火墙的限制,直接访问到了。
三、总结
隧道是一个非常有魅力的技术,无论是我刚学那会还是我现在做总结,两次给我的感觉都非常美妙,ICMP隧道是所有隧道里面最简单理解登录,后面我还会写一些dns的和其他协议的隧道,当做补充吧。
文章原创,欢迎转载,请注明文章出处: 【Pingtunnel工具-隧道技术】利用ICMP隧道技术进行ICMP封装穿透防火墙.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。