DNS隧道(DNS Tunneling)本质为一种网络通信技术,它利用DNS协议在客户端和服务器之间传输数据,主要用来绕过网络限制进行数据隐蔽传输,但在实际场景中,DNS隧道已经成为黑客忠爱的攻击媒介。
1. 概览
DNS是互联网的关键和基础协议,用于将域名映射到IP地址,所以经常被称为"互联网电话簿"。DNS协议已经成为互联网上使用最广泛且最受信任的协议之一。
在多数网络环境中,网管一般会对HTTP、HTTP等常用协议进行严格的审查和限制,但通常不会对DNS流量进行同样严格的管理,因为正常业务也经常要使用DNS协议,所以防火墙大多对DNS的流量是放行状态。
DNS隧道是众多隧道技术中的一种,它利用DNS的查询和响应,在客户端和域名服务器之间传输数据。主要用于以下应用场景:
- 网络诊断和测试:IT专业人员使用DNS隧道可解决网络问题,尤其是在其他协议受到限制的环境中,它可以帮助他们分析流量模式并诊断连接问题,而无需直接访问受限网络;
- 绕过网络限制:企业或校园网络中,通过DNS隧道访问被封锁的网站或服务;
- 安全数据传输:通过在DNS查询和响应中对数据进行编码,可以确保敏感信息的安全传输,绕过可能针对更常用协议的潜在安全威胁。
虽然DNS隧道可以用于以上合法用途,但它经常被用于恶意目的。DNS隧道在僵尸网络和APT攻击中应用比较广泛,用于C&C服务器(攻击者)和C&C客户端(受害者)之间的隐蔽通信,从而实现远程控制和文件传输等操作,同时可减少被拦截发现的概率。
2. DNS隧道分类
DNS隧道又可细分为直连隧道和中继隧道。
- 直连隧道:客户端直接和指定的DNS服务器建立连接,然后将需要传输的数据通过DNS协议进行通信。这种方式的优点是具有较高速度,但蔽性弱、易被探测追踪的缺点也很明显。
- 中继隧道:客户端通过DNS迭代查询而实现的DNS隧道,这种方式非常隐秘,而且可在绝大部分场景下部署成功。但由于数据包到达目标DNS服务器前需要经过多个节点的跳转,所以数据传输速度会比直连方式慢不少。
在实际攻击行为中对隐蔽性要求很高,而速度相对来说没那么重要,所以更多使用的是中继隧道方式。
3. 工作机制
DNS隧道的工作原理其实很简单,在进行DNS查询时如果查询的域名不在DNS服务器本机的缓存中就会查询域名服务器获取结果,如果在互联网上有一台定制的服务器(我们称其为控制服务器),就可以依靠DNS协议进行数据隐蔽传输。
注:从DNS协议本身来看,以上过程的重复也只是一次次地查询某个特定的域名并得到解析结果,但其本质问题是预期的返回结果应该是一个IP地址,而事实上返回的可以是任意字符串,不清楚为何是字符串的可以参阅
RFC 1034
。
为了直观理解,还是手工绘制下DNS隧道实现原理吧!(如下所示)
接下来我们再以攻击者的视角来详细介绍下DNS隧道的工作流程。
前提条件:
- 为了创建隧道,攻击者需要先创建并注册域名,假设注册的域名是malicious.com;
- 此外,攻击者还需要设置一个权威域名服务器,该服务器可以解码和处理特制的DNS查询和响应(如5byA5aeL5pS75Ye7.malicious.com)。
关键步骤:
- 编码数据:受感染的客户端将要传输的数据编码(如Base64)为合法的域名格式。由于DNS消息有大小限制(一般不超过253个字符),原始数据会被分为多个小块进行编码传输。
- 制作DNS查询:编码后的数据块将作为子域附加到域名中。例如,如果攻击者的域名是malicious.com,则查询可能类似于5byA5aeL5pS75Ye7.malicious.com。这些查询类型通常设计为TXT或CNAME记录。
- 发送查询:受感染的客户端将这些精心设计的DNS查询发送到本地域名服务器,本地域名服务器用于将此查询通过迭代方式转发到更高级别的域名服务器,直到可被攻击者控制的权威域名服务器。
- 接收和处理查询:攻击者的域名服务器接收到查询请求后,解析其隐藏的数据,然后创建一个DNS响应并通过DNS层次结构发送回客户端。
- 解码响应:受感染的客户端接收到响应后解码出隐藏的数据。此过程可以重复,从而允许持续交换信息。
4. 为什么DNS会成为对黑客有吸引力的攻击媒介?
- 许多应用程序和服务都依赖于DNS,并且DNS流量受到广泛信任;
- DNS协议并不是为了安全而设计的,主要目的是快速准确地解析IP地址请求,而非质疑发出请求的用户或设备;
- 除了解析域名之外,DNS查询还可以在设备、服务器之间传输少量数据。由于多数组织并没有充分分析这些数据包的恶意活动,因此DNS隧道是一种高效的DNS攻击媒介。
5. 黑客用DNS隧道到底想要做哪些事情?
- 安装恶意软件:攻击者可能会使用DNS隧道在其他系统上安装恶意软件;
- 收集凭证:一旦掌握了系统的控制权,攻击者就可以使用键盘记录器或其他方法来收集用户凭据,这些凭据可用以发起其他攻击,甚至可将其在暗网上出售;
- 探索网络:来自受感染网络内的DNS查询可以帮助攻击者构建网络地图,识别出系统及价值资产;
- 泄露数据:攻击者可使用DNS隧道将机密或敏感数据输出网络;
6. 常用的DNS隧道工具
以下为几款主流的DNS隧道工具,大家在实际使用过程中应遵守相关法律法规,不要违反公司或组织的政策规定,避免违规通报。
- iodline:iodine是一款开源的DNS隧道工具,可以通过DNS查询在客户端和服务器之间传输IPv4数据包。
- 特点:支持多种操作系统,并能提供较高的传输速率
- 官方网站:https://code.kryo.se/iodine/
- dns2tcp:开源免费,支持通过DNS查询在客户端和服务器之间进行TCP流量传输。
- 特点:简单易用,配置简单,支持多操作系统。
-** 项目地址**:https://github.com/alex-sector/dns2tcp
- 特点:简单易用,配置简单,支持多操作系统。
- dnscat2:开源免费,主要用于渗透测试和隐蔽通信。
- 特点:支持加密通信,提供丰富的命令和控制功能
- 项目地址:https://github.com/iagox86/dnscat2
7. 如何检测DNS隧道
7.1. 流量分析
- 异常流量:分析DNS流量的频率、大小来发现异常情况。正常的DNS查询一般短小且具有间歇性,而DNS隧道会产生大量持续的查询。高级网络监控系统(如Snort、Suricata等)可以通过流量分析检测到异常的DNS流量,从而识别到DNS隧道。
注:通过Wireshark等网络流量分析工具也能捕获并识别,不过相比IPS/IDS较为低效。
- 域名长度:检查域名长度和结构。由于DNS隧道需要编码数据到域名中,这些域名通常比正常域名更长且复杂。
- 查询类型:正常情况下,A记录(IPv4地址)和AAAA记录(IPv6地址)最为常见,而TXT记录和其他不常见的记录类型可能暗示着DNS隧道活动。
7.2. 数据包内容检查
许多DNS隧道工具使用Base64或其他编码方式将数据嵌入到域名中。所以可以检查子域名部分是否包含非典型字符或看起来像加密或编码的数据来识别DNS隧道活动。
8. 参考文档和链接
文档: DNS隧道技术参考文档打包.zip (访问密码: 6277)
链接: https://www.akamai.com/glossary/what-is-dns-tunneling#accordion-76a7acf228-item-2984740af8
9. 写在最后
博主原计划通过搭建一条DNS隧道来详解其工作原理,花了些时间尝试了几个免费域名申请网站,均无法正常使用。就连Freenom都暂停提供免费域名了,因其托管了大量滥用域名被起诉了。而收费的域名又需要进行实名认证,认证及审核流程复杂暂且就算了吧~
后续有机会博主会再利用文中提到的隧道工具进行实战演练,敬请关注~