DNS隧道
DNS协议基础域名系统(服务)协议(DNS)是一种分布式网络,主要用于域名与 IP 地址的相互转换。 DNS域名解析流程本地DNS缓存-递归查询-迭代查询
本地DNS缓存 包含浏览器缓存,本地host文件,系统dns缓存
递归查询 该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。
迭代查询 本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它在根据结果逐层向下查询,直到得到最终结果。每次它都是以dns客户机的身份去各个服务器查询,即迭代查询是本地服务器进行的操作。 基本解析流程
1、检查浏览器缓存,本地host文件和本机的dns缓存,失败后,向本地设置的dns服务器(如114.114.114.114)发送查询请求,dns服务器到自身解析数据库中查询,查询成功返回IP地址(此过程成为递归查询)查询失败则触发迭代查询过程。2、本地dns服务器向根域名服务器发送关于space的查询请求。3、根域名服务器接收到查询请求,并把查询结果返回给dns服务器。4、本地dns服务器收到根域名服务器返回的顶级域名服务器的地址,并向它查询关于cseroad的域名服务器地址。5、顶级域名服务器接收到请求,进行查询,并把查询结果返回到dns服务器。6、本地dns服务器收到关于cseroad的权限域名服务器地址,并发起查询test的请求。7、权限域名服务器收到请求,并把test对应的A记录的ip返回给dns服务器。8、本地dns服务器把权限域名服务器返回的ip地址发送到个人电脑。9、个人电脑成功解析到http://test.cseroad.space对应的ip地址,在浏览器中进行访问。
DNS隧道DNS隧道(DNS Tunneling)是将其他协议的内容封装在DNS协议中,然后以DNS请求和响应包完成传输数据(通信)的技术。当前某公司中的DNS是一项必不可少的服务,所以防火墙和入侵检测设备处于可用性和用户友好的考虑将很难做到完全过滤掉DNS流量,因此,攻击者可以利用它实现远程控制,文件传输等操作。
DNS隧道的两大类型
直连隧道:用户端直接和指定的目标DNS服务器建立连接,然后将需要传输的数据编码封装在DNS协议中进行通信。这种方式的优点是具有较高速度,但蔽性弱、易被探测追踪的缺点也很明显。另外直连方式的限制比较多,如目前很多的企业网络为了尽可能的降低遭受网络攻击的风险,一般将相关策略配置为仅允许与指定的可信任DNS服务器之间的流量通过。
中继隧道:通过DNS迭代查询而实现的中继DNS隧道,这种方式及其隐秘,且可在绝大部分场景下部署成功。但由于数据包到达目标DNS服务器前需要经过多个节点的跳转,数据传输速度和传输能力较直连会慢很多。
在实战用到DNS隧道的场景,对隐蔽性要求很高,速度相对来说没那么重要,因此主要使用中继隧道。
技术要点DNS缓存机制的规避 再使用中继隧道时,如果需要解析的域名在本地的DNS Server中已经有缓存时,本地的DNS Server就不会转发数据包。所以在构造的请求中,每次查询的域名都是不一样的。
DNS载荷的编码 从高层来看,载荷只是客户端和服务器通信的正常流量。例如客户端发送一个A记录请求给服务器,查询的主机名为2roAUSwVqwOWCaaDC.test.nuoyan.com,其中2roAUSwVqwOWCaaDc则是客户端传递给服务器的信息,这串字符解码后的信息便是DNS隧道。
可利用DNS查询类型 DNS的记录类型有很多,常见的有A,AAAA,CNAME,MX,NS等。DNS隧道可以利用其中的一些记录类型来传输数据。例如A,MX,CNAME,TXT等。
A 记录 指定主机名(或域名)对应的IPV4地址记录AAAA 记录 指定主机名(或域名)对应的IPV6地址记录NS 记录 指定该域名由哪个DNS服务器来进行解析MX 记录 指向一个邮件服务器PTR 记录 将一个IP地址映射到对应的域名,也可以看成是A记录的反向CNAME 记录 允许将多个名字映射到同一台计算机TXT 记录 一般指主机名或域名的说明
常用工具dnscat2,iodine,DeNise,dns2tcp等单独的DNS隧道工具。 cs,msf,empire等集合了DNS隧道功能的安全工具。 本次分别演示使用dnscat2和cs的DNS隐藏隧道。 |