DNS隧道技术绕过上网认证限制

 Author:Pax.Mac Team核心--Conqu3r

在OWASP2013的沙龙上,某牛分享了一个好的tips。记录了下来,回来学习了下,然后分享出来,知道这是干什么用的同学,可以学习下。

一、DNS隧道实现原理

DNS隧道技术的实现:主要是通过对DNS查询机制的特殊性来利用的一种技术。DNS的隧道的工作原理:

DNS查询是一种递归查询机制,如果本地没有记录,就会其它服务器发起请求查询结果。然后,在需要认证的ISP或者防火墙,发现过滤规则的请求时,它们就会将查询结果的TCP或者UDP包返回结果内容进行丢弃,保返回域名的查询IP地址。查询方式如下图所示:

DNS隧道技术绕过上网认证限制_第1张图片

也就是说,如果我们的请求数据包中的数据,不含过滤规则时,有限制的ISP或者防火墙则不会进行丢包处理。所以,我们在发起请求时,将请求数据包内容通过标准的DNS协议进行加密,标记解析请求的DNS地址,则有限制的ISP在解析客户端发起的域名请求时,无法识别地址,而去指定的DNS服务器上进行请求查询。此时,我们在指定的DNS服务器上进行数据包解密。再将查询内容返回,此时,有限制的ISP或者防火墙会再次检测内容是否为非认证状态,如果是非认证状态,则将查询结果内容进行丢包处理。所以,在特定的DNS服务器上,我们需要将结果进行标准DNS协议加密返回客户端。此时ISP无法识别结果,而直接返回客户端进行解密处理。这样我们就完成了一次DNS隧道请求,而完全绕过的ISP服务商的认证。加密传输方式数据包如下图:

DNS隧道技术绕过上网认证限制_第2张图片

 

二、建立DNS隧道的环境需求

1、可以连接有限制的ISP服务商,比如连接CMCC的无线信号

2、需要一台高速的性能较高的安装好java的服务器(当然也可以随便一台国内的就行了,目的是为了提高查询的延迟速度)

3、Tcp-over-dns工具,用来提供客户端、服务器通信加解密操作

4、客户端全局代理工具Proxifier(非必需条件,只是我觉得可以用这个来让本机所有程序都代理上网)

三、实现步骤

1、设置自己的DNS服务器域名

方法a:如果你有直接修改DNS记录的权限,可以在dns记录中加入:

;set up the DNS tunnel
$ORIGIN dnstunnel.analogbit.com.
@ IN NS ns.analogbit.com.
ns IN A 

paxmactun.mooo.com     NS   mypaxmac.mooo.com

mypaxmac.mooo.com      A    xx.xx.xx.xx(服务器IP)

 

方法c:直接修改我们购买域名时的DNS解析记录

Dnstun    NS  ns.paxmac.org

Ns       A      xx.xx.xx.xx(服务器IP)

2、设置服务器

下载tcp-over-dns软件,执行命令:

Java -jar tcp-over-dns-server.jar  –domain  dnstun.paxmac.org  –forward-port  22(为了服务器安全,端口应设置在1024以下)

必须包含–forward-port参数

3、设置客户端

在需要上网的主机上下载tcp-over-dns软件,执行

Java -jar tcp-over-dns-client.jar  –domain dnstun.paxmac.org  –listen-port  8888  –interval 100(如果服务器性能较高,可以设置最低数值到5或者10)

4、设置上网

DNS隧道技术绕过上网认证限制_第3张图片

或者直接在全局代理服务器中设置全局代理。这样就可以上网了,不过速度不会很快,毕竟要进行加解密。


 

方法b:设置两个域名记录,其中一个NS记录,一个A记录


你可能感兴趣的:(dns)