ღ Miranda

用dns2tcp建立DNS隧道

Dns2tcp is a tool for relaying TCP connections over DNS. There is no
authentications nor encryption mecanisms : DNS encapsulation must be
considered as an unsecure and anonymous transport layer. Ressources should be public external services like ssh, ssltunnel etc.

本次试验利用了工具dns2tcp可以下载源码安装,也可以使用apt-get安装。

dns2tcp利用合法的DNS服务器实现了DNS隧道,利用了dns2tcpcdns2tcpd作为客户端和服务端,通过TXT记录机密传输数据。

场景一

实验拓扑图如下:

用一个2003作为外网受我们控制的DNS服务器,内网有两台机器,防火墙规则为只允许UDP 53端口的DNS流量,现在如何使内网的1.1.1.11这台机器越过防火墙访问外网呢,这就要使用dns2tcp这个工具了。

首先需要在在2003安装DNS服务,并且添加lab.com域,指定二级域test.lab.com,配置转发器,把非lab.com域的查询转发到真正的DNS服务器上,NS记录指向192.168.1.114,然后需要修改1.1.1.11resolv.conf文件,把nameserver指向192.168.1.117

1.1.1.11上检查配置是否正确:

发现lab.com域和外网域名都解析正常说明配置生效了。

现在切换到192.168.1.114上,配置服务端:

看到接收到的ssh请求会转发到本地的22端口,先以ssh服务作为例子,先打开ssh服务并且运行服务端:

指定了配置文件,也可以在家目录下建立.dns2tcprcp文件,不指定配置文件会默认使用这个。

1.1.1.11上运行客户端:

基于隧道给客户端提供资源,指定了各种服务的连接端口

看到只监听本地2222端口,所以不可以作为网关使用,下面我们用ssh连接本地2222端口:

隧道已经建立,在192.168.1.114上看到输出:

为了将1.1.1.11作为网关使用,让内网机器通过这台机器上网,我们需要在dns隧道里建立ssh隧道,利用动态端口转发:

这时候在xp上配置socks代理,就可以上外网了。

场景二

企业网络内网有自己的DNS服务器,我们构造另一个场景,拓扑图:

防火墙只允许1.1.1.12192.168.1.117DNS查询,在1.1.1.12上配置转发器,1.1.1.12如下:

192.168.1.114上用squid3设置转发,把/etc/dns2tcpd.conf里的http资源设为本地3128端口:

1.1.1.11上把DNS服务器设置为1.1.1.12:

域名解析正常:

同场景一,运行客户端和服务端后可以用ssh连接本地端口:

发表评论

电子邮件地址不会被公开。