首页 > 其他分享 >DNS隧道技术原理及其典型应用场景剖析

DNS隧道技术原理及其典型应用场景剖析

时间:2024-10-13 20:18:13浏览次数:3  
标签:场景 隧道 查询 剖析 域名 DNS 攻击者 服务器

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隧道原理

接下来我们再以攻击者的视角来详细介绍下DNS隧道的工作流程。

前提条件

  • 为了创建隧道,攻击者需要先创建并注册域名,假设注册的域名是malicious.com;
  • 此外,攻击者还需要设置一个权威域名服务器,该服务器可以解码和处理特制的DNS查询和响应(如5byA5aeL5pS75Ye7.malicious.com)。

关键步骤

  1. 编码数据:受感染的客户端将要传输的数据编码(如Base64)为合法的域名格式。由于DNS消息有大小限制(一般不超过253个字符),原始数据会被分为多个小块进行编码传输。
  2. 制作DNS查询:编码后的数据块将作为子域附加到域名中。例如,如果攻击者的域名是malicious.com,则查询可能类似于5byA5aeL5pS75Ye7.malicious.com。这些查询类型通常设计为TXT或CNAME记录。
  3. 发送查询:受感染的客户端将这些精心设计的DNS查询发送到本地域名服务器,本地域名服务器用于将此查询通过迭代方式转发到更高级别的域名服务器,直到可被攻击者控制的权威域名服务器。
  4. 接收和处理查询:攻击者的域名服务器接收到查询请求后,解析其隐藏的数据,然后创建一个DNS响应并通过DNS层次结构发送回客户端。
  5. 解码响应:受感染的客户端接收到响应后解码出隐藏的数据。此过程可以重复,从而允许持续交换信息。

图片来源:https://www.akamai.com/glossary/what-is-dns-tunneling#accordion-76a7acf228-item-2984740af8

4. 为什么DNS会成为对黑客有吸引力的攻击媒介?

来源:A survey of domain name system vulnerabilities and attacks

  • 许多应用程序和服务都依赖于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都暂停提供免费域名了,因其托管了大量滥用域名被起诉了。而收费的域名又需要进行实名认证,认证及审核流程复杂暂且就算了吧~

后续有机会博主会再利用文中提到的隧道工具进行实战演练,敬请关注~


标签:场景,隧道,查询,剖析,域名,DNS,攻击者,服务器
From: https://blog.csdn.net/u013129300/article/details/142903460

相关文章

  • zookeeper 都有哪些使用场景?思考13
    大致来说,zookeeper的使用场景如下,我就举几个简单的,大家能说几个就好了:分布式协调分布式锁元数据/配置信息管理HA高可用性分布式协调这个其实是zookeeper很经典的一个用法,简单来说,就好比,你A系统发送个请求到mq,然后B系统消息消费之后处理了。那A系统如何知道B系统......
  • zookeeper 都有哪些使用场景?思考5
    大致来说,zookeeper的使用场景如下,我就举几个简单的,大家能说几个就好了:分布式协调分布式锁元数据/配置信息管理HA高可用性分布式协调这个其实是zookeeper很经典的一个用法,简单来说,就好比,你A系统发送个请求到mq,然后B系统消息消费之后处理了。那A系统如何知道B系统......
  • zookeeper 都有哪些使用场景?思考9
    大致来说,zookeeper的使用场景如下,我就举几个简单的,大家能说几个就好了:分布式协调分布式锁元数据/配置信息管理HA高可用性分布式协调这个其实是zookeeper很经典的一个用法,简单来说,就好比,你A系统发送个请求到mq,然后B系统消息消费之后处理了。那A系统如何知道B系统......
  • zookeeper 都有哪些使用场景?思考6
    大致来说,zookeeper的使用场景如下,我就举几个简单的,大家能说几个就好了:分布式协调分布式锁元数据/配置信息管理HA高可用性分布式协调这个其实是zookeeper很经典的一个用法,简单来说,就好比,你A系统发送个请求到mq,然后B系统消息消费之后处理了。那A系统如何知道B系统......
  • 高级java每日一道面试题-2024年10月11日-数据库篇[Redis篇]-Redis都有哪些使用场景?
    如果有遗漏,评论区告诉我进行补充面试官:Redis都有哪些使用场景?我回答:Redis是一个开源的、基于键值对的数据结构存储系统,,它支持多种数据类型,包括字符串、散列、列表、集合和有序集合。它可以用作数据库、缓存和消息中间件。由于其高性能、丰富的数据结构支持以及多种......
  • UCI-HAR数据集深度剖析:训练仿真与可视化解读
    在本篇文章中,我们将深入探讨如何使用Python对UCI人类活动识别(HAR)数据集进行分割和预处理,以及运用模型网络CNN对数据集进行训练仿真和可视化解读。一、UCI-HAR数据集分析及介绍UCI-HAR数据集是一个公开的数据集,旨在通过智能手机传感器数据进行人类活动识别。这个数据集由30......
  • 域名系统DNS服务
    1名字解析介绍和DNS1.根域:全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本2.一级域名:TopLevelDomain:tld三类:组织域、国家域(.cn,.ca,.hk,.tw)、反向域com,edu,mil,gov,net,org,int,arpa3.二级域名:wang.org4.三级域名:study.wang.org5.最多可......
  • 高清图解28个高并发之数据结构/数据结构场景匹配技巧分析(高并发精通篇一)
    ​Java集合以ArrayList、LinkedList、HashSet、TreeSet和HashMap等组件为核心,构筑了强大而灵活的数据结构体系。这些组件精心设计以满足不同的性能和功能需求,如ArrayList的动态数组支持快速随机访问,而LinkedList的双向链表结构则擅长于频繁的插入和删除操作。HashSe......
  • 企业网络服务搭建(一)OpenWRT uhttpd ddns firewall wireguard
    简介:最近要给媳妇的企业重新搞一搞信息化,这个也写个系列文章吧。为什么要写openwrt呢?小公司,搞不起托管、搞不起上云。也不算搞不起,主要是自己手边各种垃圾材料多啊。自己家,公司,父母家,3处家用宽带。本着垃圾佬的心态,能省则省。其实更多的是模拟大型异地办公需求的一种探索。Ope......
  • Kafka 消费者位置提交方式及适用场景
    《Kafka消费者位置提交方式及适用场景》在使用Kafka进行消息处理时,消费者的位置提交是一个非常重要的环节。它决定了消费者在下次启动时从哪里开始读取消息。今天,我们就来深入探讨一下Kafka消费者位置提交方式有哪些,以及在什么场景下使用。一、Kafka消费者位置提交的重要性......