利用Ptunnel建立ICMP隧道实现联通校园网免流

利用Ptunnel建立ICMP隧道实现联通校园网免流

在学校也待了一年多了,关于上网认证的漏洞我自己也挖了不少。但是我通常都是不公开的,毕竟留着可以自己用嘛。我只会把一些通用型的漏洞写到博客里来,就比如之前我在大一时用udp 53,67,68这些端口来绕过认证一样。而这个想法我在上学期就想过了,但最近这几天终于做出来了。

在讲利用过程之前还是先分析原理和方法。

同样需要一台有公网ip的vps,我特别推荐阿里云的学生机,很便宜才9.5元一个月,最近出了个轻量应用服务器,用5m的带宽而且价格还没变。链接在点这里

使用工具:Ptunnel,Proxifier


什么是ICMP 协议?

ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息

我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

那么我是怎么想到利用icmp隧道来实现上网的呢?
之前在挖我们学校联通的漏洞时,发现联通的认证页面提供了两种认证。一种是内外网认证,另一种是单纯的内网认证。但是要想正常上网的话就必须用前一种方式,而这就必须去我们学校的联通营业厅开通上网业务才行,当然这肯定是需要每个月交网费的呢。听说好像还挺贵的,不过我没交过,就不bb了。
所以我们选择仅内网认证。我们学校每个人的学号都可以使用仅内网认证,这是给我们正常访问学校的内网资源用的,就像学校的正方教务系统(外网不能访问,但内网可以)。
其实不仅联通,学校的移动CDTU也可以,但是我相信大部分人都没注意到。
昨天我在测试icmp隧道时,就是用的cdtu而且效果很好,不过我刚在我协会群里说了这件事,学校网管中心就把教育资源这个选项给禁用了。我。。。。。还能说什么。
不过原理都是一样的,我就用联通的校园网来再次复现。
在仅内网认证,无法访问外网的情况下,发现ping命令可以正常使用。这说明了防火墙是默认放行了icmp的流量。这是我们该方法能成功的基本条件。

服务器端搭建过程

ICMP隧道工具 ptunnel

在一些网络环境中,如果不经过认证,TCP和UDP数据包都会被拦截。如果用户可以ping通远程计算机,就可以尝试建立ICMP隧道,将TCP数据通过该隧道发送,实现不受限的网络访问。Kali Linux提供了一款ICMP隧道专用工具ptunnel。用户需要在受限制网络之外,预先启动该工具建立代理服务器。再以客户端模式运行该工具,就可以建立ICMP隧道。为了避免该隧道被滥用,用户还可以为隧道设置使用密码。

ptunnel的GitHub地址 :传送门           可自行研究源码,分析原理。

安装需要的依赖包并编译 Ptunnel

wget  http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz

yum install libpcap libpcap-devel flex bison -y
tar xvf PingTunnel-0.72.tar.gz
cd PingTunnel 

make && make install

现在直接运行 ptunnel 啥参数也不用加 ,开启ptunnel隧道监听。

建议将ptunnel用 screen 或 nohub 命令放入后台。

因为我们是通过建立ICMP隧道来实现上网,所以就必须VPS上开启SOCKS5代理服务,使得内网可以直接通过代理访问外网。

配置SS5(SOCKS5)代理服务器

从官网下载源码

wget https://nchc.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz

yum -y install gcc automake make

yum -y install pam-devel openldap-devel cyrus-sasl-devel openssl-devel

tar xvf ss5-3.8.9-8.tar.gz

cd ss5-3.8.9-8

./configure && make && make install

修改认证方式vim /etc/opt/ss5/ss5.conf,查找取消下面两行注释,去掉前面的#即可。

默认是:无用户密码认证。

不过我在搭建的过程中为了方便就暂时没有设用户密码认证。
如果想要使用 username/password 用户认证方法,需要将上面两行修改成下面这样:

auth 0.0.0.0/0 – u

permit u 0.0.0.0/00.0.0.0/0 – – –

添加用户名及密码vim /etc/opt/ss5/ss5.passwd,每行一个用户+密码(之间用空格)

zgao1    12345

zgao2    56789

修改ss5启动的参数,自定义代理端口 /etc/sysconfig/ss5(如果不设置,默认是1080)
此文件ss5启动时会主动加载,将  #SS5_OPTS=” -u root”    取消注释,修改成下面这样

SS5_OPTS=” -u root -b 0.0.0.0:10808″       

不过这个10808这个端口可以自己随便设。因为原理就是将ICMP隧道的流量转发到这个端口拿给ss5来处理。

给bash文件增加可执行权限 /etc/rc.d/init.d/ss5

chmod 755 /etc/rc.d/init.d/ss5

服务器端的操作就基本over了。

开始启动 ss5。

systemctl start ss5

查看端口,刚启动应该什么都看不到。

netstat -an | grep 10808

客户端搭建过程

链接:https://pan.baidu.com/s/1ynC8e4C5KBn-mWX-GLUOOQ    提取码:n3wi

下载后解压打开,先安装Proxifier。

Proxifier介绍

Proxifier是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。支持 64位系统,支持Xp,Vista,Win7,MAC OS ,支持socks4,socks5,http代理协议,支持TCP,UDP协议,可以指定端口,指定IP,指定域名,指定程序等运行模式,兼容性非常好,和之前介绍的SocksCap属于同类软件,不过SocksCap已经很久没更新了。有许多网络应用程序不支持通过代理服务器工作,Proxifier 解决了这些问题和所有限制,让您有机会不受任何限制使用你喜爱的软件。此外,它让你获得了额外的网络安全控制,创建代理隧道,并添加使用更多网络功能的权力。

说简单一点就是让本地的流量经过socks5代理,再进行ICMP隧道封装。

给大家说个在当前目录下快速打开cmd的小技巧。

接下来在cmd下打开该目录开启ptunnel并输入参数。

此时看到有流量在走就说明基本成功了。同时服务器端也可观察到连接信息。

可以百度ip看外网ip是否为自己vps的ip,如果是则说明已经成功了。

用wireshark进行流量分析会看到一大堆的ICMP数据包,其实就是封装了ICMP报文后的流量。

整个过程基本上就是这样了。如果大家在搭建过程中遇到了什么问题都欢迎和我探讨哦!

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。