欢迎光临
我们一直在努力

隧道技术(一) – DNS隧道

0x00 前言

前两天和朋友说到代理,随之讨论了一下关于隧道技术,之前也发过一篇关于DNS隧道技术的文章,不过感觉没有写好,今天就重写一下关于隧道技术的总结;

首先这篇文章是以前写的,也发在乌云过,最近为博客更新一些隧道技术的东西,所以先把这篇老文章拿出来,后面会更新一些新的东西,也欢迎大家提出新的思路;

0x01 概念

隧道技术(Tunneling)是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。新的帧头提供路由信息,以便通过互联网传递被封装的负载数据。

主要是通过对DNS查询机制的特殊性来利用的一种技术,如果我们的请求数据包中的数据,不含过滤规则时,有限制的ISP或者防火墙则不会进行丢包处理。所以,我们在发起请求时,将请求数据包内容通过标准的DNS协议进行加密,标记解析请求的DNS地址,则有限制的ISP在解析客户端发起的域名请求时,无法识别地址,而去指定的DNS服务器上进行请求查询。此时,我们在指定的DNS服务器上进行数据包解密。再将查询内容返回,此时,有限制的ISP或者防火墙会再次检测内容是否为非认证状态,如果是非认证状态,则将查询结果内容进行丢包处理。

0x02 实例分析- DNS隧道技术

环境:客户机(Kali)192.168.10.135+DNS服务器(window2003)192.168.10.132+目标机(redhat7)192.168.10.133

DNS服务器:192.168.10.132

新建一个名字为”bloodzero.com”的正向解析域

12-8 隧道技术(一) – DNS隧道

新建一个主机:IP为攻击者kali的IP

12-8 隧道技术(一) – DNS隧道

新建一个委托

12-8 隧道技术(一) – DNS隧道

此时我们的DNS服务器就配置好了!

Kali:攻击者&&客户端 192.168.10.135

攻击端配置

修改dns2tcpd配置文件:

12-8 隧道技术(一) – DNS隧道

resources的IP为目标机的IP

12-8 隧道技术(一) – DNS隧道

启动dns隧道的服务端

12-8 隧道技术(一) – DNS隧道

客户端配置

删除ssh连接的known_hosts文件

12-8 隧道技术(一) – DNS隧道

修改DNS解析文件:vim /etc/resolv.conf

12-8 隧道技术(一) – DNS隧道

12-8 隧道技术(一) – DNS隧道

12-8 隧道技术(一) – DNS隧道

配置dns隧道客户端程序,在kali2.0中,没有配置文件,需要自己写配置文件

vim /etc/dns2tcpc.conf

12-8 隧道技术(一) – DNS隧道

测试是否可以提供服务

12-8 隧道技术(一) – DNS隧道

这个时候我们就已经配置成功了!成功效果

12-8 隧道技术(一) – DNS隧道

12-8 隧道技术(一) – DNS隧道

12-8 隧道技术(一) – DNS隧道

0x03 分析结论

这个时候的流量走向

12-8 隧道技术(一) – DNS隧道

本文中介绍的是DNS隧道服务器,和DNS隧道客户端是同一台机器,并不能说明问题,当DNS隧道服务器存在于防火墙之后,这个时候我们就可以利用此种技术来绕过大部分的防火墙。并且可绕过不开端口,隐蔽性好等;

12-8 隧道技术(一) – DNS隧道

这里我使用另外一台客户机去连接目标机时,服务端监听的数据如下:

  • 目标机:192.168.10.133
  • DNS隧道服务端:192.168.10.135
  • DNS隧道客户端:192.168.10.134
  • DNS服务器:192.168.10.132

12-8 隧道技术(一) – DNS隧道

客户端监听数据如下:

12-8 隧道技术(一) – DNS隧道

发现能够监听到的ssh数据包是DNS隧道服务端与目标机之间的通信;

而客户端与目标机之间的通信是DNS数据;

这就是简单的配置DNS隧道;

发在乌云大家提出了iodine实现的思路,我这里也做了一个简单的实验;

特点:iodine可以通过一台DNS服务器制造一个IPv4数据通道,这个工具可帮助渗透测试人员用于穿越防火墙等情景。这款工具运行于 Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD和Windows,并需要一个TUN/TAP设备。同时对带宽也有一定要求。

下载地址:http://code.kryo.se/iodine/

条件:

服务器端:需要安装虚拟网卡:下载openvpn,安装TAP-Win32 driver;安装iodine服务器端,输入命令:iodined -c -f IP(设置的虚拟网卡IP)

dnstunnel.bloodzero.com (这个域名的ns记录一样为服务器端的IP);然后设置一个密码

客户端:下载openvpn,安装TAP-Win32 driver;安装iodine客户端,输入命令:iodined -f -P password(服务器端设置的密码)

dnstunnel.bloodzero.com

软件附件:https://openvpn.net/ 可能需要翻墙

后面还有有关于其他的隧道技术解析~~~

 

未经允许不得转载:杂术馆 » 隧道技术(一) – DNS隧道
分享到: 更多 (0)