DNS tunnel的原理及实战

摘自:http://netsec.ccert.edu.cn/zhengming/2011/11/01/%E8%BD%AC%E8%BD%BD%EF%BC%9Adns-tunnel%E7%9A%84%E5%8E%9F%E7%90%86%E5%8F%8A%E5%AE%9E%E6%88%98/

什么是DNS tunnel?

DNS tunnel 即 DNS隧道。从名字上来看就是利用DNS查询过程建立起隧道,传输数据。

为什么使用DNS tunnel?

当你在酒店、机场等公共场所,通常有Wifi信号,但是当你访问一个网站时,如http://hi.baidu.com/, 可能会弹出个窗口,让你输入用户名、密码,登陆之后才可以继续上网(该技术一般为透明http代理,不在本文讨论范围之内,以后再讲)。这时,你没有账号,就无法上网。但是有时你会发现,你获取到得DNS地址是有效的,并且可以用以进行DNS查询,这时你便可以用DNS tunnel技术来实现免费上网了!

DNS tunnel的原理

首先,要知道DNS系统的工作原理,见:[DNS系统(服务器)的工作原理及攻击防护方法论] 。你在做 DNS 查询的时候,如果查的域名在 DNS 服务器本机的 cache 中没有,它就会去互联网上查询,最终把结果返回给你。如果你在互联网上有台定制的服务器。只要依靠 DNS 的这层约定,就可以交换数据包了。从 DNS 协议上看,你是在一次次的查询某个特定域名,并得到解析结果。但实际上,你在和外部通讯。你没有直接连到局域网外的机器,因为网关不会转发你的 IP 包出去。但局域网上的 DNS 服务器帮你做了中转。这就是 DNS Tunnel 了。

上 图简单介绍了DNS tunnel的原理。当你连接上wifi后,你可以使用DNS服务器,向这个服务器的53端口发送数据,请求一个域名,比如b.xxx.org 。这台DNS服务器上没有b.xxx.org,那么它将向root,也就是根域名服务器请求,看看根知道不。root一看是.org的域名,就交 给.org域名服务器进行解析。.org的域名服务器一看是.xxx.org那么就会去找.xxxi.org的域名服务器 (f1g1ns1.dnspod.net),看看它有没有这条记录。.xxx.org的域名服务器上一看是b.xxx.org,如果它有这 条A记录,那么就会返回b.xxx.org的地址。

但是,如果没有,你可以再在guanwei.org的域名服务器上设定一个NS 类型的记录人,如:xxx.org NS 111.222.333.444(通常这里不让设置为地址,那么也好办,你可以先在DNS服务器上添加一条A记录,如ns.xxx.org 111.222.333.444,再添加NS记录:guanwei.org NS ns.xxx.org),这里指定一个公网服务器,也就是上图绿色的服务器,这台服务器中跑着DNS tunnel的server端,是一台假的DNS服务器,他不会返回b.xxx.org的地址,但是它会将你的请求转发到已经设定的端口中,比如 SSH的22端口,22端口返回的数据它将转发到53端口返回给客户端(也就是你的电脑)。这时,你就可以用这台公网服务器的资源了,如果是一台http 或者sock代理,那么你就可以用这个代理免费上网了。

DNS tunnel实现的工具

DNS tunnel实现的工具有很多,比如:OzymanDNS、tcp-over-dns、heyoka、iodine、dns2tcp。由于BT4、5系统自带了dns2tcp工具。这里仅介绍dns2tcp的使用方法。

DNS2TCP的DNS tunnel实验

环境准备

一个已经申请好的公网域名,在这里我就用本blog的域名了xxx.org。给该域名指定一个DNS服务器(在域名管理的控制面板即可看到),本 环境为DNSpod的服务器:f1g1ns1.dnspod.net。一个公网服务器server(运行着BT4系统,主要使用里面的dns2tcpd V4程序)。这里使用局域网中的一台PC,在防火墙上做端口映射,将UDP的53端口映射出去。公网IP为111.222.333.444一 个客户端client(运行着BT4系统,主要使用里面的dns2tcpc V4程序)。这里模拟在机场的环境,能连接局域网(与上面的服务器不在一个局域网内,是另一个连接公网的局域网),能够获取到DNS服务器,如辽宁网通的202.96.64.68,并可以通过它进行DNS查询(测试方法:nslookup www.xxx.org 202.96.64.68,后面的域名服务器请根据实际情况替换)。

。。。可以让你实现一个反弹木马,可免费上网。

DNS tunnel的原理及实战的更多相关文章

  1. DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置

    DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置 一.DNS简介 1.DNS    DNS是域名系统(Domain Name System)的简称,它是一个将域名和IP相互映射的分布式数据库 ...

  2. DNS Tunnel隧道隐蔽通信实验 && 尝试复现特征向量化思维方式检测

    1. DNS隧道简介 DNS隧道技术是指利用 DNS协议建立隐蔽信 道,实现隐蔽数据传输.最早是在2004年 DanKaminsky 在 Defcon大会上发布的基于 NSTX 的 DNS隐蔽 隧道工 ...

  3. iodine免费上网——本质就是利用dns tunnel建立tcp,然后tcp proxy来实现通过访问虚拟dns0网卡来访问你的dns 授权server

    我的命令: server端: sudo iodined -P passwd -f -DD 10.0.0.100 abc.com client端(直连模式,-r表示使用xxx.abc.com的xxx来转 ...

  4. Keepalived 原理与实战

    Keepalived 原理与实战 随着系统架构的逐渐演化,服务器的数量和结构会越来越复杂,例如 Web 服务器集群的搭建,提高了系统的性能,同时也提高了系统维护的复杂度,我们需要对集群中各台服务器进行 ...

  5. DNS Rebinding漏洞原理

    目录 SSRF过滤器设计 背景知识 DNS TTL 公网DNS服务器 DNS重绑定 自建DNS服务器 利用步骤图解 实战中的注意事项 防御 参考 DNS Rebinding 广泛用于绕过同源策略.SS ...

  6. jQuery源码:从原理到实战

    jQuery源码:从原理到实战 jQuery选择器对象 $(".my-class"); document.querySelectorAll*".my-class" ...

  7. Keepalived原理与实战精讲--VRRP协议

    . 前言 VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还简 ...

  8. DNS服务基础原理介绍

    FQDN 全称域名 localhost(主机名或者是别名).localdomain(域名)    FQDN=主机名.域名 根域               . 顶级域名       .com   .n ...

  9. Spark MLlib特征处理:OneHotEncoder OneHot编码 ---原理及实战

    http://m.blog.csdn.net/wangpei1949/article/details/53140372 Spark MLlib特征处理:OneHotEncoder OneHot编码 - ...

随机推荐

  1. Redis 字符串结构和常用命令

    字符串是 Redis 最基本的数据结构,它将以一个键 和一个值 储存在 Redis 内部. 字符串的一些基本命令 命令 说明 备注 set key value 设置键值对 最常用的写入命令 get k ...

  2. 【转载】排名Top 16的Java实用类库

    *转载自HollisChuang 链接:http://www.hollischuang.com/archives/1606 1. org.apache.commons.io.IOUtils close ...

  3. Android 集成GoogleMap,实现定位和获取位置信息

    1.准备 我使用的是AS2.2.2,首先FQ注册google开发者帐号,准备获取API Key,网上有许多相关资料我就不再赘述,这里讲一个比较小白级的获取方法,可以减少许多输入 1.1. AS创建项目 ...

  4. 日期对话框(DatePickerDialog)和时间对话框(TimePickerDialog)

    效果图 布局 <Button android:id="@+id/btn_date" android:text="弹出日期选择对话框" android:la ...

  5. 【Linux】七种运行级别

    运行级别:即系统的运行模式. 级别类型: 0:关机状态. 1:单用户模式. 2:字符界面的多用户模式(不支持网络). 3:字符界面的多用户模式(运行最完整的模式). 4:未分配使用,系统保留. 5:图 ...

  6. selenium获取页面通过样式隐藏获取不到元素解决方案

    如图更换图像这个按钮通过bottom:-30px隐藏了,通过如下代码获取不到页面元素,后台会报错 driver.findElement(By.className("js-avator-lin ...

  7. Arduino ULN2009驱动步进电机

    一.实物图 二.例子代码 注:代码来自老外 http://www.4tronix.co.uk/arduino/Stepper-Motors.php 功能:控制电机正反转 // This Arduino ...

  8. 用了那么多项目管理工具,还是CORNERSTONE这款最好用

    在与软件开发有关的项目,往往会出现很难管理情况.许多事情都需提前计划.控制与管理,所以许多项目经理很容易迷失在计划的过程中.幸运的是,市场上提供了各种各样的项目管理工具.但不幸的是,工具实在是太多了. ...

  9. CodeIgniter-CI之MySQL

    首先我们需要进行一下配置,这里需要修改的文件为application目录下的config目录下的database.php文件,我们修改相应的配置项,比如这里是我的配置情况: 通常我们在操作数据库之前, ...

  10. [Ynoi2011]D1T1

    题目大意: 给定一个序列$a_1,a_2,\dots,a_n$,进行$m$次操作,每次操作如下: 1. 给定$x,y,z$,对所有下标为$y,y+x,y+2x,\dots$的元素加上$z$(保证$y\ ...