一、如何查询DNS
(1)当用户试图访问互联网上的计算机时,例如,通过在浏览器的地址栏中键入ipdatacloud.com,将启动DNS查询。
(2)DNS查询的第一站是本地DNS缓存。当用户访问网络上不同的域名时,这些域名对应的IP地址会存储在本地缓存中。如果用户以前访问过ipdatacloud.com,这个网站的IP地址将被存储在缓存中。
(3)如果在本地DNS缓存中没有该域名的IP,将由递归DNS服务器检查该DNS。在互联网上,ISP服务提供商通常会构建和运行递归DNS服务器。
(4)递归DNS服务器有自己的缓存。如果用户查询的IP地址存储在它的缓存中,它将直接返回给用户。否则,将查询其他DNS服务器。
(5)下一站是TLD域名服务器。当用户查询ipdatacloud.com域名时,TLD域名服务器存储。cn地址将响应查询请求。这个服务器没有存储我们需要的IP地址,但是可以把查询请求转发给正确的域名服务器。
(6)授权域名服务器以ipdatacloud.com的IP地址响应此查询,递归DNS服务器将其存储在本地DNS缓存中,并将地址返回给用户的计算机。
(7)用户计算机的本地DNS服务获得ipdatacloud.com的IP地址并访问它。然后在本地缓存中记录该域名的IP地址,同时也记录其生存时间(TTL),即本地DNS记录的生效时间。如果用户下次访问该域名的时间超过TTL,DNS将在他下次访问ipdatacloud.com时再次执行上述过程。
二、DNS查询的分类
DNS查询需要传递给DNS服务器的信息包括:
当前查询的类型;
返回什么信息。
有三种类型的标准DNS查询用于:
递归查询:在递归查询中,计算机请求DNS服务器返回一个IP地址,或者确认DNS服务器不知道IP地址。
迭代查询:在迭代查询中,查询者请求DNS服务器返回最佳答案。如果在DNS服务器中找不到查询的IP,它将返回到权威域名服务器或TLD域名服务器。查询将继续这个迭代过程,直到它找到被查询的IP或超时。
非递归查询:DNS解析服务器使用此查询来查找没有存储在自己缓存中的IP。
三、DNS缓存
每次任何用户试图访问ipdatacloud.com,他必须向授权的域名服务器发出查询请求,这将产生大量的网络流量!因此,为了防止计算机每次访问一个域名就向DNS服务器发起IP查询请求,计算机通常会存储自己的域名-IP映射库,称为“DNS缓存”。
加速DNS请求响应。
减少互联网上DNS请求占用的带宽。
但是,DNS缓存方法存在一些问题,包括:
DNS信息的变化需要一些时间来传播,这意味着在所有DNS服务器将它们的缓存更新到最新的IP数据之前,通常需要一些时间。
攻击者可以使用DNS缓存发起攻击。
有几种不同类型的DNS缓存:
浏览器DNS缓存:目前大部分浏览器都内置了DNS缓存功能,使用本地缓存解析DNS通常是快速高效的。
操作系统(OS)DNS缓存:目前大部分用户电脑操作系统都有DNS客户端,可以用来管理DNS解析和请求。这种DNS缓存也是本地化的,所以速度快,不需要带宽。
解析DNS缓存:每个DNS递归服务器都有一个DNS缓存,用于存储可以向其发出下一个请求的IP。
动词 (verb的缩写)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域(如ipdatacloud.com),并创建一个特权域名服务器。
(2)在攻击者控制的主机上,攻击者可以将数据分成小块,并插入到一系列DNS查询中
(3)用户单元的DNS服务器将接收这些请求,并将它们转发回ipdatacloud.com的授权域名服务器。攻击者的域名服务器收到上述流量后,可以运行程序提取查询信息的第一部分(之前的内容。ipdatacloud.com)并重新组合,从而将用户网络内的数据不着痕迹地传输到网络外(这种情况下,传输的数据是“我的秘密是我知道你的数据。”).用户可能永远不会意识到他们的DNS服务器被用来泄露他们自己的数据。