APP下载

一种基于DNS隧道的远程访问方法

2015-12-02胡宗辉

成都信息工程大学学报 2015年6期
关键词:字段域名IP地址

胡宗辉, 甘 刚

(成都信息工程大学信息安全工程学院,四川成都610225)

0 引言

计算机网络从1969年美国开始建立ARPANet开始,到现在短短几十年中,计算机网络技术的发展和普及可谓是“一日千里”,网络发展的早起,网络的使用限制于一个比较小的范围内,对网络的安全缺乏足够的重视。当时设计之初的主要目的是“方便共享资源和交换信息”,而在于保障信息安全方面的设计也非常有限。互联网自身的特征是方便、自由开放,这就显示出互联网的软弱性特征,在互联网使用过程中受到各方面的袭击[1]。由于在早起网络协议的开放性和共享性,协议在设计的时候在安全方面考虑不足,比如:缺乏认证机制和加密机制,使计算机网络在设计之初就存在一些安全隐患。随着计算机网络的爆发式发展,网络不在被地理位置限制,到现在计算机网络已经遍布全世界。由于网络开放的环境,如果要在网络上传递一些敏感信息的时候,信息安全就会受到很大的威胁。因此确保信息在使在网络中安全传输变得越来越重要[2]。

随着2013年斯诺登事件的爆发,信息安全已经被提升为一个国家战略层的高度。由于网络的普及,网络安全已经成为计算机技术中一个重要的研究领域。随着网络攻击的发展,防火墙技术也是“日新月异”,我们平时在访问网络的时候,一般都会使用防火墙。一般公司内使用的防火墙从大的方面来讲分为内部防火墙和外部防火墙。当访问网络的时候,一般都会使用防火墙进行网络访问的限制;比如:进行端口过滤,IP过滤等限制。

文中探讨使用DNS隧道,在DNS隧道中封装数据,来打破防火墙的限制[3]。当访问互联网的时候,大多数的防火墙和网络都开放DNS服务[4];就是利用防火墙对DNS协议的信任关系建立DNS隧道,以达到数据传输的目的。

1 DNS协议基本原理

域名系统(Doain Name System,DNS)是一种把计算机名解析为对应的IP地址的服务[5]。

图1 dns解析示意图

DNS解析原理:

(1)当输入域名,按下enter键访问网址的时候,客户端先向本地的DNS服务器发送查询请求。

(2)本地DNS服务器收到请求,先查询缓存是否有该域名的记录;有的话,就直接返回;没有就向配置的根DNS发送请求;根DNS会先查询得到顶级域名DNS服务器的IP地址,然后返回给本地DNS服务器[6]。

(3)本地DNS服务器就根据返回的IP,继续请求顶级域名服务器;顶级域名服务器也做类似的过程:先查缓存,没有就返回二级域名DNS服务器的地址给本地DNS服务器。

(4)然后本地域名服务器就向二级域名DNS发送请求,继续类似的过程。

(5)直到最后权威DNS服务器向本地服务器返回对应的IP地址。

(6)然后本地DNS服务器返回给主机,然后主机在访问这个IP地址。

DNS解析就是这样逐层递归的方式,最终把域名的对应的IP地址返回到本机。

例如:当主机首次访问www.baidu.com时,就会按照上边的递归查询方式进行递归查询。

(1)当首次访问的时候,主机先向本地DNS服务器发送查询请求。

(2)本地域名服务器收到请求后,先查询缓存是否有该域名的记录;有的话,就直接返回;没有就向配置的根DNS发送请求;根DNS先查询得到顶级域名DNS服务器(.com)的IP地址,然后返回给本地DNS服务器[6]。

(3)本地域名服务器就根据返回的IP,继续请求顶级域名服务器;顶级域名服务器也会做类似的过程:先查缓存,没有就返回二级域名DNS服务器(baidu.com)的地址给本地DNS服务器。

(4)然后本地DNS服务器就向二级域名DNS服务器发送请求;二级域名DNS服务器就先查询自己的缓存,发现有www.baidu.com对应的IP地址;就直接返回给本地DNS服务器。

(5)本地DNS服务器把查询到的IP地址返回给主机。

(6)主机获得了www.baidu.com域名的IP地址,就可以访问该网站了。

2 DNS隧道传输数据的具体实现

2.1 DNS隧道建立的原理

根据DNS查询过程,利用专门解析某种类型域名的DNS服务器,在DNS的查询过程中建立起DNS隧道。

图2 dns隧道通信示意图

假设运行在内部主机上的客户端,想与外网的DNS服务器进行通信;在内部网络中存在一个本地DNS服务器,所有想上网进行域名查询的主机都要经过这个本地DNS服务器;在网络边缘存在一个防火墙;外网的定制的DNS服务器相当于服务端,负责某种所有定制类型的域名的解析(比如:定制的testuu.com这种类型的域名)。

由于防火墙的限制,一般边界防火墙都会限制内部网络的提供的服务:比如对ftp服务的20和21端口过滤,对telnet服务的23端口进行过滤;而对从外部网络访问内部网络可能会对IP地址的限制。但是如果内部网络要上网,那么就要使用DNS服务,那么防火墙一般对DNS服务是信任的。利用DNS服务的查询和递归解析的过程,建立起这个DNS隧道。

过程如下:

(1)首先要注册个域名,比如在美橙域名注册机构中注册一个qh.cn的域名,然后设置qh.cn的域名服务器的IP地址为自己的主机IP地址。这样类似于*.qh.cn域名查询都会到自己的主机中[4]。

(2)配置定制服务器,在服务器上设置监听DNS的53端口,接受DNS请求,并且只解析类似于qh.cn这样的域名。

(3)运行在网络内部主机上的客户端,查询定制类型的域名*.up.qh.cn(表示上行数据);由于这个域名是定制的;在查询的时候,本地DNS是查询不到的;那么根据上边的DNS递归查询过程,本地DNS就先通过边界防火墙,然后从根域名服务器一层一层的去查询;最终会传递给定制的DNS;定制DNS通过域名解析,得到这个域名中存储的信息。

(4)然后定制DNS,把要返回的信息封装成DNS报文*.down.qh.cn(表示下行数据)返回给内部网络的客户端。

(5)这样通过DNS域名查询和返回,就建立起DNS隧道了。

2.2 DNS数据报文格式

如果要把传输的数据封装到DNS隧道中,就要知道DNS协议数据包的结构,DNS报文的基本格式如图3所示。

图3 dns报文格式

在图3,Header是DNS报文的报头部分。报头部分的第一个字段是ID,表示是DNS每次查询的时候分配的一个16位的标识符;第二个字段是“标识字段”,由 QR,Opcode,AA,TC,RD,RA,000,Rcode 这些标识符组成。QR是报文类型标志,请求报文QR=0,应答报文QR=1。Opcode是操作码标志位,主要用于设置查询的种类。AA授权应答标志位,仅在应答报文中有意义。TC截断标志位,表示报文是否被分段。RD期望递归标志位,在请求报文中有意义;表示建议域名使用递归查询方法。RA在应答报文中设置,表示服务器是否支持递归查询。Rcode是应答码标志位,在应答报文中设置。QDcount表示报文数据部分的查询消息字段中的问题条数。ANcount表示报文数据部分应答消息字段中的资源记录数。NScount表示表示报文数据部分授权应答字段中的名称服务器资源记录数。ARcount表示报文数据部分附加消息字段中的资源记录数。

Query是DNS请求报文中的请求消息部分,包含QName、Qtype、QClass。QName 表示请求的域名,以ASCII码表示;Qtype表示查询的资源记录类型;QClass表示查询类别。

Response、Authority、Additional是 DNS 应答报文中显示所应答的记录信息,这些记录格式是一样的。NAME表示记录对应的域名,与请求报文中的QName一致;TYPE是记录类型;CLASS是记录数据的类型;TTL表示该记录信息缓存的时间;Rdlength表示Rdata字段的长度;Rdata表示具体的记录数据。

在RFC1023中规定:为和现有的域名相互兼容,域名以分隔号分开,并且各个分隔号之间的长度(labels)小于63个字符,并且一个域名的总长度不能超过255个字符[7],因此一个QName最多能够携带200多个字符;并且还需要对存放的信息进行编码(base32/base64编码);比较新的 RFC2181和RFC4343中规定,域名部分还可以使用二进制编码的方式。

QName的格式如图4所示。

图4 QName(请求域名)的格式

由图4中可以看出域名都是由一系列:域名长度对应的域名ASCII码,这种类似的标签(labels)组成。

当DNS中出现重复的域名的时候,为了减小报文的长度,DNS使用一种压缩方式来压缩报文,这种压缩方式可以消除域名中重复的报文;使用这种方式,后边重复出现的域名就变成之前重复出现的域名偏移位置的指针(pointer),以wireshark抓包结果为例,如图5所示。

图5 DNS报文压缩的格式

由于DNS压缩的时候,把重复的labels变为这些域名出现的位置相对于DNS报文开始的偏移值(pointer)。

labels和pointer的区别是,由于labels最大长度为63[8],因此长度字段的前2bit位一定0;而pointer是由2个字节组成,并且前2bits为11,后边的14bits是偏移值。这样labels就与偏移指针区分开来了。

2.3 DNS报文存储数据原理

当DNS报文中出现重复的域名,DNS报文就使用压缩方式;在DNS压缩报文中可以利用pointer指向的偏移位置,来构造松弛空间(松弛空间的作用就是存放要通信的数据)。

图6 DNS报文存储数据原理图

按照图6的格式,通过操作pointer指针的指向位置,在DNS数据包中创建松弛空间,然后把通信的数据(Injected data)放到这部分松弛空间中[1];这样就把数据封装到DNS数据包中了,然后在经过DNS隧道的传递,就能实现信息的交互。

松弛空间的构造过程如下:

(1)先根据图5的DNS协议的报文格式,构造原始DNS请求数据,格式如图6上半部分表格的样子,如下:

(2)然后把原始DNS请求数据按照图6中下本部分表格的样式修改,如下:

(3)这样按照图6的指针偏移位置就形成了松弛空间。

(4)然后把要传输的数据经过编码等变形之后,放到松弛空间中,如下:

(5)这样就利用DNS隧道的方式实现了数据的传输。

3 环境搭建与实现

3.1 实现方法

在linux下使用C语言实现

(1)搭建环境,首先要建立一个域名服务器,比如在美橙域名注册机构中注册一个定制的的域名,然后设置这个域名服务器的IP地址为自己的主机IP地址。这样查询这个域名的时候,最终访问这个定制的域名服务器。

(2)然后利用C语言按照下边的程序流程图编写程序。

图7 程序实现流程

3.2 测试结果与分析

图8 访问端

下面对前面研究所提出的访问程序的有效性与可行性,配置了一个虚拟环境进行研究与分析,虚拟环境为Windows XP、Windows 7,代码使用C编写。

通过实验测试,服务端和客户端成功连接,可以浏览目标主机的目录,进行相应的访问操作。结果如图2所示。

同时,实验通过在不同环境下进行测试,可以成功通过安装有表1中3种防火墙环境的内网。并且实现了在XP、WIN7等不同操作系统下的访问。

表1 穿透内网防火墙测试结果

4 结束语

主要介绍通过DNS的查询和应答过程建立起DNS隧道,结合DNS报文压缩的格式,通过操作pointer指针来存储数据,然后利用防火墙对DNS的信任关系;以达到穿透防火墙进行通信的目的。随着网络技术的不断发展,相关研究领域的技术也在发生深刻变化。一方面要求提供更高的稳定性;另一方面要求提供高的兼容性,为了支持更高的传输速率和可靠性,以满足多种需求,该技术具有良好的应用前景[8]。

[1] 刘西青.浅谈计算机网络安全问题[J].软件,2013,34(12):239.

[2] 黄存东.关于计算机网络信息安全问题的技术研究[J].软件,2011.

[3] Dusi M,Crotti M,Gringoli F,et al.Tunnel hunter:Detecting application-layer tunnels with statistical fingerprinting[J]. Computer Networks.2009.

[4] 谷传征,王轶骏,薛质.基于DNS协议的隐蔽信道研究[J].信息安全与通信保密.2011.

[5] Eastlake D.Domain name system security extensinas[J].RFC 2535,1999.

[6] 李海明,苏开宇.DNS安全威胁与防护[J].计算机安全.2011.

[7] 王永杰,刘京菊.基于DNS协议的隐蔽通道原理及性能分析[J].计算机工程2014,(7).

[8] 章思宇,邹福泰,王鲁华,等.基于DNS的隐蔽通道流量检测[J].通信学报.2013.

[9] Born K,Gustafson D.Detecting DNS tunnels u-sing character frequency analysis[C].Proceedings of the 9th Annual Security Conference.2010.

[10] 孔政,姜秀柱.DNS欺骗原理及其防御方案[J].计算机工程.2010.

[11] 刘晓丽.基于DNS代理的网络访问控制系统的实现[J].华东科技:学术版.2013.

[12] 蔡昭权,王美珍,梅松,等.一种新的基于DNS协议的IPSec隐蔽通信研究[J].计算机应用.2008,(7).

[13] 吴其祥,李祖猛,马华.基于HTTP协议的隐蔽信道研究[J].信息安全与通信保密.2009.

[14] 史晓敏,刘飞.浅析基于DNS协议的隐蔽通道及监测技术[J].保密科学技术.2011.

[15] 刘静,裘国永.基于反向连接、HTTP隧道和共享DNS的防火墙穿透技术[J].郑州轻工业学院学报2007,(10).

猜你喜欢

字段域名IP地址
图书馆中文图书编目外包数据质量控制分析
铁路远动系统几种组网方式IP地址的申请和设置
Combosquatting域名抢注的测量研究
如何购买WordPress网站域名及绑定域名
公安网络中IP地址智能管理的研究与思考
《IP地址及其管理》教学设计
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述
关于CNMARC的3--字段改革的必要性与可行性研究
顶级域名争夺战:ICANN放出1930个通用顶级域名,申请者有上千家