收费WiFi绕过Portal认证、UDP:53、DNS 隧道经验谈

发布于 2017-11-09  2.11k 次阅读


一. 原理简介

在连接到某个需要 Web 认证的热点之前,我们已经获得了一个内网 IP,此时,如果我们访问某个 HTTP 网站,网关会对这个 HTTP 响应报文劫持并篡改,302 重定向给我们一个 web 认证界面(所以点 HTTPS 的网站是不可能跳转到 web 认证页面的)。详细原理可以戳这里

我们看到了,网关(或者说交换机)都默认放行 DHCP 和 DNS 报文,也就是 UDP53 与 UDP 67。有些网关甚至不会报文进行检查,这也就意味着任何形式的数据包都可以顺畅通过。

既然如此,我们就可以在公网搞一台服务器,然后借此来免费上网,顺便还能防止网络审计——再一次画了删除线的 "免费",其实只是把钱花在服务器上了。我们这次免费上网的主要突破点就是 UDP 53,当然了,据一位朋友实践,UDP 67 也可以绕过 Web 认证,甚至是那些 UDP 53 无法绕过的热点。当然啦,TCP 53 也行,毕竟 DNS 也有 TCP 的。

 

二. 环境检测

废话不多说了,连上热点并且不要进行认证,打开 cmd(或者 GNU/Linux 的终端),输入如下内容

  1. nslookup www.baidu.com

 

 

我在没有进行 Web 认证的情况下成功查询到的 IP 地址,但是我们并无法确定网关是放行了 UDP 53 的所有数据包还是只放行了 DNS 报文。所以我们要进一步测试下!如果连这都过不了,那还是洗洗睡吧。

2016 年 9 月 10 日更新:用我的这个小工具试试吧(此工具测试的其实是 TCP53,但是如果允许 TCP,那么 UDP 也肯定没问题)

项目地址
去 Git 仓库下载源码,之后 Linux 用户运行

  1. python UDP53.py

Windows 用户直接双击 dist 下的 udp.exe 吧!

注意事项

1. 速度

允许所有数据包通过 UDP 53 的情况下,速度主要取决于你的服务器的出网带宽热点本身的网速

2.IP 问题

服务器在外地,所以淘宝支付宝之类的需要验证码之类的。以后如果申诉也要记得把登陆地区选上服务器所在地。

3. 安全问题

某些热点是公开的、没有密码保护的,所以可以很轻松的搞中间人攻击——甚至是 root 的 Android 手机都可以做到。而 OpenVPN 可以防止中间人攻击(配置文件里有服务器的证书),同时我使用了 AES-128-CBC 加密,搞定网络审计简直是轻轻松松的。


因为喜欢所以折腾。。。