原文地址:https://docs.ioin.in/writeup/blog.heysec.org/_archives_854/index.html
前两天和朋友说到代理,随之讨论了一下关于隧道技术,之前也发过一篇关于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”的正向解析域
新建一个主机:IP为攻击者kali的IP
新建一个委托
此时我们的DNS服务器就配置好了!
Kali:攻击者&&客户端 192.168.10.135
攻击端配置
修改dns2tcpd配置文件:
resources的IP为目标机的IP
启动dns隧道的服务端
客户端配置
删除ssh连接的known_hosts文件
修改DNS解析文件:vim /etc/resolv.conf
配置dns隧道客户端程序,在kali2.0中,没有配置文件,需要自己写配置文件
vim /etc/dns2tcpc.conf
测试是否可以提供服务
这个时候我们就已经配置成功了!成功效果
0x03 分析结论
这个时候的流量走向
本文中介绍的是DNS隧道服务器,和DNS隧道客户端是同一台机器,并不能说明问题,当DNS隧道服务器存在于防火墙之后,这个时候我们就可以利用此种技术来绕过大部分的防火墙。并且可绕过不开端口,隐蔽性好等;
这里我使用另外一台客户机去连接目标机时,服务端监听的数据如下:
目标机:192.168.10.133
DNS隧道服务端:192.168.10.135
DNS隧道客户端:192.168.10.134
DNS服务器:192.168.10.132
客户端监听数据如下:
发现能够监听到的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/ 可能需要翻墙
后面还有有关于其他的隧道技术解析~~~
1 条评论:
有一些梯子的推荐还不错,可以看看
发表评论