DNS 隧道通信特征与检测

一、DNS 隧道技术解析

1.1 DNS协议解析过程

DNS协议解析过程分为两种,迭代查询和递归查询。                        

                                                                      

1.1.1 迭代查询

本地域名服务器向根域名服务器发送请求报文,根域名服务器要么给出ip地址要么告诉本地域名服务器下一步应该去查询另一个域名服务器(假设这个域名服务器为A)。本地域名服务器会向A域名服务器发送请求报文,A域名服务器要么给出ip地址要么告诉本地域名服务器下一步应该去查询B域名服务器。过程以此类推,直到查找到ip地址为止。

1.1.2 递归查询

客户机向本地域名服务器查询,如果本地服务器的缓存中没有需要查询的ip地址,那么本地域名服务器会以客户机的身份(代替本机查询),向根域名服务器发送请求报文。递归查询返回的结果要么是查询到的ip地址,要么报错。客户端只发一次请求,要求对方给出最终结果

  • 本机查询本地域名服务器,这部分属于递归查询。
  • 本地域名服务器查询根域名服务器,这部分属于迭代查询。

1.2 DNS隧道

DNS隧道是隐蔽信道的一种,通过将其他协议封装在DNS协议中进行通信。封装由客户端完成,将DNS流量还原成正常的流量由服务器完成。

1.2.1 DNS隧道攻击实现流程

大多数防火墙和入侵检测设备对DNS流量是放行的。而隧道攻击正式利用了放行的特点以及协议解析流程来实现的。

IP直连型DNS隧道:

直连也就是客户端直接和指定的目标DNS Server(Authoritative NS Server)连接,通过将数据编码封装在DNS协议中进行通信,这种方式速度快,但是隐蔽性比较弱,很容易被探测到,另外限制比较高,很多场景不允许自己指定DNS Server。客户端使用UDP socket建立连接,实际上是基于UDP的,但是利用53端口。

域名型DNS隧道(中继):

通过DNS迭代查询实现的中继隧道,比较隐蔽,但同时因为数据包到达目标DNS Server前需要经过多个节点,所以速度上较直连慢很多。

                                                                                     

step 1 : 受控PC机将数据封装进DNS数据包里,向局域网内部的本地域名服务器请求查询aaa.com。

step 2:本地域名服务器透过防火墙向根域名服务器发送查询请求。

step 3:经过大量重定向,查询请求最终要aaa.com的权威域名服务器。

step 4:aaa.com权威域名服务器是在攻击者的控制下,解析发送过来的DNS数据包并发送回应包。

Step 5:DNS回应包穿透防火墙

Step 6::DNS回应包进入内网

Step 7:本地域名服务器将回应包返回给受控PC机

Step 8:受控PC机解析DNS回应包里的数据,得到新的指令

1.2.2 典型恶意程序

  • Trojan.Win32.Ismdoor.gen:使用了多层C&C通信协议结构,使用了DNS隧道技术,C&C服务器的命令会被协议为IPv6地址。
  • Backdoor.Win32.ClIEcker:允许恶意程序从服务器接收随机类型的DNS数据包,该木马没有逻辑上的子协议,只有发送和接收数据包的请求。
  • Backdoor.Win32.Denis:该恶意程序只使用一个DNS格式的数据包与DNS服务器通信,这种格式汇总,回应的大小被限制为只有4个字节,这只是一个常规的木马下载器,而且下载文件的速度很慢。
  • PlugX远控变种: 该后门木马结合DNS隧道传输技术和PlugX远控程序,通过建立的DNS隧道进行攻击控制。利用DNS请求应答机制作为攻击渗透的命令控制通道,把C&C服务器指令封装到DNS相应报文中,以此控制被控端主机。并且依托DNS协议的特性,该木马可以有效穿透防火墙,躲避常规的安全检测。

1.2.3 经典的攻击事件

  • 2016年5月,Palo Alto曝光了一起APT攻击,Webky团队利用DNS请求应答作为攻击渗透的命令控制通道。攻击者把CC服务器的指令封装在DNS响应报文里。
  • 2017年3月,思科Talos团队发现一起名为DNSMessenger的攻击,该恶意软件的所有命令与控制通信都经过DNS TXT类型查询和响应。以此来躲避检测

早在2012的RSA会议上,基于DNS协议的远程控制恶意软件就被视为未来六种最危险的攻击之一。

二、DNS隧道攻击实现以及流行工具展示

DNS隐蔽隧道主要是封装其他协议流量来完成传输。

从2004年Dan Kaminsky在Defcon大会上发布的基于NSTX的DNS隐蔽隧道工具,目前来看,基于DNS隧道的木马分成两种类型:IP Over DNS(允许通过隐蔽隧道传输IP数据包)和TCP Over DNS(提供单一的TCP通信的隐蔽隧道)两大类。

IP Over DNS 是将IP数据包封装到DNS报文的构造技术,在构建DNS隐蔽隧道时,通信双方需要解决数据分片,封装,重组等问题。IP Over DNS通用使用TUN/TAP设备(操作系统内核中的虚拟网络设备)将数据包重定向到指定的虚拟网卡中来解决发送端数据分片和接受数据的问题。

DNS域名中的字符限定在字母a-z,A-Z,0-9以及’-’共63个字符,一般采用base32,base64来封装要传输的信息,域名长度最大为255。每一个子域最长为63个字符。发送端将隐蔽数据信息切分并且编码后封装到DNS报文域名中进行传输,接收端收到DNS报文后提取域名中的隐蔽信息字段进行解码重组还原得到IP报文。主要的工具有DNSCat,Iodine等。

TCP Over DNS只有将TCP作为传输协议封装在隐蔽隧道中。由于DNS采取的是不可靠的UDP协议,为了保证传输过程中的数据不丢失不乱码,还要兼顾传输效率,保证通道稳定可用。一般利用SSH的端口重定向技术或者SOCKS代理技术将TCP信道重定向到DNS通道中来。除此之外,TCP Over DNS涉及的编码,数据分割,重组和IP Over DNS类似。主要的工具有OzyManDNS,DNS2TCP等。

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值