DNS隧道绕过校园网认证破解校园WiFi

无为WiFi让你不再为昂贵的WiFi买单了

<近日突发奇想,想试着能不能绕过校园网的这个网页认证,实现诸如免费上网、在上网区间外上网等的操作

由于本人对web安全方面所知甚少,遂又是一番搜寻,发现在此之前已经有许多先辈完成了这方面的目标。自己也试着折腾了一通

于是便拾人牙慧,凑成这篇文章

经过一番搜寻,我找到了一些方法。而这些方法,虽说用的软件工具各不相同,但总体看下来,利用的都是一个原理:

为了实现网页认证,网关Gateway设备必须要给终端Terminal分配IP,同时劫持80、443端口的数据包并跳转至认证页(这也是http页才能跳转至认证页的原因,https将会无法跳转或报证书Certificate错误)。在认证通过后放行这两个端口,其他的端口也是如此,但一般情况下有一些端口却并非如此,比如本文的主角——UDP 53端口

类似这样的端口还有一些,比如UDP 67,用于DHCP

学过计算机网络Network基础Base知识的同学应该知道,在UDP 53上运行的是DNS协议,域名解析的数据包就通过这个端口进行传输,一般情况下网关都会放行这个端口的UDP通信,甚至是整个端口(注意是一般情况,这点之后会详细说明)。对于此类网关,要绕过认证就很简单了,只需一台使用53端口通信的代理服务Services【校园网免认证】器即可。这种情况过于简单,没有单独写一篇文章的必要,下面我们就来谈一谈那些的情况(我校正是这种情况)

部分网关虽然放行了53端口,却在网关处劫持了53端口的通信,这使得终端的数据根本到达不了远端Origin,DNS解析请求Request会被网关抢答,而其他数据则是直接丢弃。表现就是使用等命令能查询到正确的解析结果,使用等TCP数据包测试工具也能看到端口开放,延迟却是神奇的1ms(即本机到网关的延迟)

那么就没有办法了吗?非也,要知道劳动人民的智慧是无穷的,为了能够免费上网,这些极客们发明了许多神奇的,堪称黑科技的,甚至细细品味一番会发现有些搞笑的方法。

这段是在调侃,只是表面,背后的思想及技术验证才是最可贵的

比如给我个人印象颇深的利用ICMP报文(即命令的数据包)和本文介绍的利用DNS查询请求报文来进行数据通信,这两种通信方式被形象的称为和

但需要说明的是,这两种方法虽然实践证明可行,但由于对应的协议设计不是用来传输数据的,强行使其支持数据传输后,速度也是慢的离谱,并且大量频繁的Ping请求或DNS查询也很容易被甄别为异常流量从而遭到封锁。因此本文的意义更在于的过程,而不是结果。买一张无限流量卡开AccessPoint,相比这些体验要强多了,毕竟能用钱解决的事都不算事嘛~

实现DNS隧道有许多种方法,这里使用工具dns2tcp来实现

这种方法需要一台Linux系统的外部VPS来作为代理服务器、一个可配置NS解析的域名作为传输中介

【校园网破解】另请注意,本文出现的配置文件Profile及命令的参数Parameter值不可直接套用,需根据实际情况进行修改

国内支持NS记录解析的DNS解析服务据我所知有DNSPod和CloudXNS,这里使用CloudXNS

如图所示,需要添加两条记录:

一条A记录,主机Host名任意,这里使用,值为VPS的IP

一条NS记录,主机名任意但需牢记,这里使用,值为A记录的主机名对应的完整域名,这里是

域名解析

防火墙配置

首先需要在安全组和防火墙规则中放行53端口的UDP连接,安全组参考各IDC的配置教程,防火墙若使用iptables的话,添加如下规则:

安装dns2tcp

一般Linux发行版Distribution的软件仓库Repository里都带了dns2tcp,直接安装即可,若无的话可以自行编译Compiler,项目地址为alex-sector/dns2tcp

Windows系统不支持dns2tcp的服务端dns2tcpd,这点需要注意

在Debian系的发行版中使用下列命令安装:

工具不大,很【校园WiFi连接】快就会安装完毕

配置dns2tcpd

配置文件默认目录为,也可在随后启动时以参数指定配置文件路径

配置文件内容为:

其中的字段值为口令,可以防止不知道口令的人连接到本机的dns2tcp服务

运行dns2tcpd

调用说明

执行下列命令测试启动服务端进程Progress

如果配置文件无误,应当会输出类似如下的内容:

实际使用时执行下列命令以守护进程的方式在后台运行:

从这一步开始就可以断网操作了,断网指的是连接热点或插上网线,但不进行认证的状态

dns2tcp的安装过程不再赘述,Windows系统用户可以自行从源代码编译或点击下载直接下载到编译好的dns2tcpc.exe

配置dns2tcpc

配置文件默认目录为,也可在随后启动时以参数指定配置文件路径

配置文件内容为:

运行dns2tcpc

调用说明

执行下列命令测试与服务端的连接是否通畅:

如果一切正常,将输出类似下面的内容:

如果输出类似下面的内容,请检查操作是否有误,若操作无误,请等待一段时间,DNS解析缓存需要一定时间来刷新和传递:

测试成功之后,执行下列命令启动客户端进程:

将会输出类似下面的内容:

保持这个终端窗口打开,不要关闭

转换为SOCKS v5通用代理

Linux
?

新打开一个终端窗口并执行下列命令是不是有点似曾相识

Windows

使用SSH连接工具的隧道功能,这里给一个Xshell的配置示例:

连接至dns2tcpc转发的ssh端口

SSH隧道配置

如果一切正常,SSH隧道将连接成功,同时可以观察到dns2tcpc的终端打印出大量日志信息

配置系统代理或软件代理

在系统或软件的代理设置中配置为SOCKS v5,地址,端口

具体配置方法不再详述,完成后即可正常上网

首先泼一盆凉水,体验可以用来形容:(

本文开头曾提到:

而具体体验如何,我就贴两张图吧,一切尽在不言中

浏览器的下载速度

百度首页首次加载时间

虽然体验不尽如人意,但是生命在于折腾嘛。在折腾的过程中,能够了解到在小小的Web认证的背后还有如此多的、有趣的知识,比起最初的目的而言,要重要的多了。

人生也应大抵如此吧

无为WiFi软件交流Q群:699186161 <点击加入>
无为WiFi破解软件<点击下载>