很久之前写的文章,因为其他平台被和谐了,修改一些内容重新发布,其中使用的软件版本可能比较低。

一.原理

1.1.dns概述

dns协议最基本的作用是将域名映射为ip地址,让我们在访问网页的时候无需记住复杂的ip地址。
在一些地方,需要我们认证才能上网(例如校园网)。假如我们没有认证,大部分的流量都会被过滤,但是往往都会放行dns流量,windows下可通过nslookup或者ping命令查看dns流量是否被过滤:

C:\>nslookup
默认服务器:  UnKnown
Address:  2001:250:6801:5501:2e0:4cff:fe51:c4
> baidu.com
服务器:  UnKnown
Address:  2001:250:6801:5501:2e0:4cff:fe51:c4
非权威应答:
名称:    baidu.com
Addresses:  123.125.115.110          //能够返回ip地址则说明dns流量没有被过滤220.181.57.216C:\>ping baidu.com
正在 Ping baidu.com [220.181.57.216] 具有 32 字节的数据:
//如果没有认证,一般icmp流量也会被禁用,但是我们可以看到域名成功解析为ip地址,则dns流量没有被过滤。
1.2.dns隧道原理
  • dns隧道工具将进入隧道的其他协议流量封装到dns协议内,在隧道上传输。这些数据包出隧道时进行解封装,还原数据。
  • 在建立隧道之前,我们需要让dns隧道的客户端找到隧道的服务端,其过程大致如下:
  1. 本地主机A发送一条dns请求,查询一个我们设定好的域名。
  2. 因为沿途的dns服务器都没有这个域名的相关信息,最终这条请求被转发到权威域名服务器B(假如是腾讯云上注册的域名,腾讯的域名服务器就是针对你的域名的权威服务器)。
  3. 我们添加了一条NS记录,关于要查询的域名,需要转到我们的公务服务器C做解析,B就会把C的地址返回给A。
  4. A知道了C的地址,就可以建立起dns隧道了。

二.实现步骤

2.1.工具准备
  • 一个域名
  • 一台公网服务器,并且拥有公网地址。
  • dns隧道工具:这里使用iodine(拥有速度快、支持多平台等特点)
  • 代理工具,需要使用代理,让我们的应用程序走代理才能利用该隧道
2.2.添加域名解析

假设申请的域名是abc.com
a.abc.com和b.abc.com都是子域名(三级域名)
这里需要添加两条记录:

主机记录           记录类型            记录值
b                   A              云主机公网IP
a                   NS           b.abc.com

两条记录组合的含义如下:
当我们的主机去查询a.abc.com时,由于该域名对应的是一条NS记录,记录值是b.abc.com,此时,dns查询请求就会转发到b.abc.com这个域名服务器,而这个域名对应一条A记录,该记录值为云主机的公网地址,所以最终dns查询请求最会转发到我们的服务器。

2.3.安装iodine

iodine是一个集成客户端和服务端的工具。这里使用的服务端为linux,客户端为windows,要下载两个版本。

2.3.1.iodine服务端

服务器直接使用wget下载即可,如果有问题,可以先下载好压缩包再传到服务器上。

wget https://code.kryo.se/iodine/iodine-0.7.0.tar.gz
tar -zxvf iodine-0.7.0.tar.gz
cd iodine-0.7.0
make install

安装后之后就会出现一个bin目录,该目录下有两个iodine应用程序,iodine(客户端)和iodined(服务端)。接着运行服务端:

./iodined -f -c -P Password123 192.168.0.1 a.abc.com &

参数说明:

-f to keep running in foreground
-c to disable check of client IP/port on each request
-P password used for authentication (max 32 chars will be used)
Password123就是客户端连接服务器时需要用到的密码


此时DNS隧道服务端就部署完成了,等待客户端的连接。
可以使用iodine官方提供的工具测试服务端是否搭建成功:测试工具

2.3.1.iodine客户端

客户端需要一个TAP网卡,安装完之后就会多出一块网卡。
解压windows版iodine后在管理员模式下运行命令:

iodine -P Password123 -f 公网地址 a.abc.com

至此,DNS隧道就搭建完成了。这时候应该要能够ping通刚刚我们在服务器指定的IP:192.168.0.1。

创建dns隧道客户端时,其与服务端协商,并自动帮我们配置好了TAP网卡的IP地址。

刚刚ping的时候使用的就是这个虚拟网卡。

2.4.使用代理

我们已经把dns隧道搭建好了。但是现在应用程序的流量没有被指定通过这个隧道来走,可以使用一些代理工具让流量从隧道走。

利用DNS隧道绕过上网认证相关推荐

  1. 建立DNS隧道绕过校园网认证

    建立DNS隧道绕过校园网认证 因为之前在本科的时候破解过校园网三次,主要就是利用其业务逻辑上的漏洞.53端口未过滤包.重放攻击的手段,然后就是一个博弈的过程,这三次加起来用了大概有一年的时间就被完全堵 ...

  2. 利用DNS隧道免费上网

    1.1.dns概述 dns协议最基本的作用是将域名映射为ip地址,让我们在访问网页的时候无需记住复杂的ip地址. 在一些地方,需要我们认证才能上网.假如我们没有认证,大部分的流量都会被过滤,但是往往都 ...

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

    Author:Pax.Mac Team核心--Conqu3r 在OWASP2013的沙龙上,某牛分享了一个好的tips.记录了下来,回来学习了下,然后分享出来,知道这是干什么用的同学,可以学习下. 一 ...

  4. dns2tcp搭建DNS隧道绕过校园网

    1.问题场景 在学校是如果校园网没钱了,难道就不能上网了???? 对于从事技术的人来说尤其是学计算机出身的人来说这是不能容忍的 我们看下面场景:当我们校园网没有认证时,连接百度时会出现下面情景: 并且 ...

  5. 使用DNS2TCP搭建DNS隧道,绕过网络认证,实现免验证上网

    使用DNS2TCP搭建DNS隧道,绕过网络认证,实现免验证上网 正常情况下,当我们连上酒店或者其他需要验证才可以使用的网络后,虽然上不了网,但是我们的计算机却分配到了IP地址(不分配IP地址web认证 ...

  6. 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来转 ...

  7. DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网...

    我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...

  8. 红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)

    文章目录 隧道应用 reGeorg内网穿透 SSH本地转发(正向) 场景一 场景二 SSH远程转发(反向) Earthworm Socks5代理 正向代理 反向代理 Tunna正向代理 ICMP隧道 ...

  9. dns隧道攻击原理及常用工具流量分析

    今天看到一个关于Lyceum组织的文章,这个组织擅长使用dns隧道攻击,这种攻击方式还是头一次听说,于是搜集了一些文章来看看. 原文https://www.cnblogs.com/HighnessDr ...

最新文章

  1. opencv隔点采样(下采样)
  2. JavaScript初学者编程题(4)
  3. 让浏览器变身代码编辑器
  4. tourist取模模板
  5. Android Train—notification通知
  6. 软件_聚合搜索引擎[博]
  7. GitHub 源代码疑遭泄漏
  8. kafka 主从同步入门
  9. 手把手玩转win8开发系列课程(9)
  10. 1537 学生干部虚基类
  11. ofo现在还有退路吗?
  12. 多媒体技术的应用领域有哪些?
  13. mmdetection - config配置文件之schedule(learning rate)
  14. C语言左右对齐、占位
  15. [转载]matlab中分号、冒号、逗号等常用标点符号的作用
  16. Vuex Actions使用
  17. 20210212web04mysql多表,事务
  18. 微信android 7.0版本下载地址,微信7.0官方版本下载,微信7.0官方版本下载 v7.0.15-安卓乐园安卓软件网...
  19. 【JS 逆向百例】医保局 SM2+SM4 国产加密算法实战
  20. SERC 2013 E Skyscrapers

热门文章

  1. 梅特勒电子称维修梅特勒天平维修XS64故障及处理办法
  2. 机器人制作入门--初学者
  3. 终端运行pip提示:LookupError: unknown encoding: cp65001 解决方案
  4. Elasticsearch(二)——安装与下载
  5. 急性子的人,不妨来点“佛系”的心态
  6. 计算机用户文件夹加密,怎么把文件夹加密(怎么给电脑文件夹加密)
  7. 计算机专业需要英语口语成绩,什么专业需要英语口试成绩 一定要参加口试吗...
  8. 锐捷云课堂服务器装什么系统,锐捷云课堂2.0系列产品详细介绍
  9. 《Google重新定义公司》
  10. VS-code出现注释乱码以及VS调试过程中出现汉字乱码问题