如果说好莱坞电影教会我们一件事的话,那就是黑客很聪明,他们有各种各样的伎俩来绕过我们的安全。在现实世界中,安全问题往往归结为机会,而不是发展技能。“DNS中毒”攻击符合这一描述,事实上,您需要具备防止域被欺骗的技能。
这个概念很简单:访问者看到的是你的网站,但它是欺诈和有害的,而这个假网站看起来很相似。因此,您需要采用多种技术来确保用户的安全,并且您的站点不会受到攻击。
在这篇文章中,我们将深入探讨DNS污染(英文DNS Poisoning),又或者称作DNS中毒和域欺骗的概念。我们还将讨论一些相关概念,以帮助您理解为什么您的最终响应是最佳方法。
域名系统(DNS)入门
在我们进入DNS污染的细节之前,让我们先谈谈域名系统。虽然浏览一个网站似乎是一项简单的任务,但在服务器的引擎盖下有很多事情在进行。
从“A”到“B”涉及很多因素:
- IP地址。这是一个数字串,是你的实际网址。把它们当作你房子的坐标。例如,127.0.0.1:8080是标准的“本地主机”地址(即您的计算机)。
- 域名。如果IP地址代表坐标,则域名就是信封上显示的地址。当然,“wbolt.com”就是其中的一个例子。
- DNS请求。这是一个高级前端任务和复杂的低级流程的极好例子。现在,考虑一个请求是浏览器请求一个专用服务器地址是一组坐标。
- DNS服务器。这与您网站的服务器不同,它是四台服务器合一的。它的工作是处理DNS请求。我们将在后面的章节中更详细地讨论这一点。
- 递归服务器。您还将看到这些名为“解析名称服务器”的服务器。它是DNS查找过程的一部分,负责在服务器上查询与IP地址相关的域名。
总的来说,DNS使最终用户获取域名变得简单。它是Web的核心部分,因此,它有许多活动部分。
接下来我们将介绍查找过程本身,尽管您已经看到DNS如何完成一项重要任务。
DNS查找的过程
请容忍我们,我们提供的是一个抽象的类比。
把人们带到偏远地区的活动,如登山或航海,都有一个共同的危险:迷路和不能及时找到。定位被困人员的传统方法是使用坐标。它们是明确的,并提供精确的准确性。
然而,这个过程也有缺点。首先,你需要知道如何计算你在任何地点的坐标——如果你在世界的偏远地区,那就很棘手了。第二,你必须向救援队清楚说明这些坐标。一个错误的数字和后果是可怕的。
what3words应用程序需要计算和传递坐标的复杂过程,并将其转换为一个三个单词的大致位置摘要。例如,以Automatic的总部为例:
Apple地图中的自动化办公室
该位置的坐标为37.744159, -122.421555。不过,除非你是一名专业的航海家,否则你不太可能知道这一点。即使你这样做了,把它交给能帮助你的人也是一个渺茫的提议。
简言之,What3单词需要一组抽象的坐标,并将它们翻译成三个值得记忆的单词。就Automatic的办公室而言,就是decent.transfers.sleeps:
what3words网站,展示Automatic的办公室
这使得几乎所有能够访问该应用程序的人都能掌握复杂的全球定位。它已经拯救了很多平民的生命。
这与DNS查找相关联,因为过程类似。在what3words的情况下,救援者向应用程序询问字串的坐标。请求通过服务器发送,以查找坐标,并在找到坐标后返回给最终用户。
DNS查找具有类似的流程:
- 您的浏览器请求域名的IP地址。
- 您的操作系统(OS)要求递归服务器查找域名,并开始运行其服务器集合。
- 当它找到域名时,它将返回到浏览器。
what3words的缺点之一是一个单词字符串不如一组坐标精确。这意味着您可以快速确定一个大致位置,但可能需要花费更长的时间才能找到被困人员。
DNS查找也有缺点,恶意攻击者可以利用这些缺点进行攻击。不过,在我们看这个之前,让我们先简单地绕道讨论一下缓存,以及它如何加快查找速度。
DNS缓存
与Web缓存非常相似,DNS缓存可以帮助您向服务器调用常规查询。这将使每次新访问获取IP地址的过程更快。
简而言之,缓存位于DNS服务器系统内,并减少了到递归服务器的额外行程。这意味着浏览器可以直接从DNS服务器获取IP地址,并更快地完成GET请求。
您将在整个系统中找到DNS缓存。例如,您的计算机将具有DNS缓存,路由器和internet服务提供商(ISP)也将具有DNS缓存。你通常不会意识到你的浏览体验有多依赖DNS缓存,直到你成为DNS中毒的受害者。
什么是DNS污染
现在,您已经了解了DNS查找的概念和获取IP地址的整个过程,我们可以了解如何利用它。
你经常会看到DNS污染(DNS Poisoning)也被称为“欺骗”或者“中毒”,因为链中有一个欺诈性的“相似”网站是攻击的一部分。
我们将更详细地讨论所有这些方面,但要知道DNS中毒或欺骗是一种有害的攻击,可能会给用户和互联网带来精神、金钱和资源方面的问题。
首先,让我们进入缓存中毒的过程。
DNS污染的工作原理
鉴于整个污染过程非常复杂,攻击者创造了许多不同的方法来实现其目标:
- 机器在中间。这是攻击者在浏览器和DNS服务器之间进行攻击、毒害两者并将用户重定向到其自己服务器上的欺诈站点的地方。
- 服务器劫持。如果攻击者进入DNS服务器,他们可以重新配置该服务器,将所有请求发送到自己的站点。
- 通过垃圾邮件中毒。与服务器劫持不同,这种方法会毒害客户端(即浏览器)。访问权限通常通过垃圾邮件链接、电子邮件和欺诈性广告授予。
- “Birthday attacks.”。这是一种复杂的加密攻击,需要进一步解释。
Birthday attacks基于“生日问题”。这是一个概率场景,即(简而言之)如果一个房间里有23个人,两个人共享同一个生日的概率为50%。如果房间里有更多的人,机会就会增加。
显示生日问题的图表(图片来源:维基百科)
这将转换为基于将DNS查找请求连接到GET响应的标识符的DNS中毒。如果攻击者发送一定数量的随机请求和响应,则很有可能匹配导致中毒尝试成功。从大约450个请求中,概率约为75%,在700个请求中,攻击者几乎可以保证破解服务器。
简而言之,在大多数情况下都会发生对DNS服务器的攻击,因为这使恶意用户能够更灵活地操纵您的站点和用户数据。DNS数据也没有验证,因为请求和响应不使用传输控制协议(TCP)。
链中的弱点是DNS缓存,因为它充当DNS条目的存储库。如果攻击者可以将伪造条目注入缓存,则访问该缓存的每个用户都会发现自己处于欺诈站点,直到缓存过期。
攻击者通常会寻找一些信号、弱点和数据点来攻击目标。它们用于发现尚未缓存的DNS查询,因为递归服务器必须在某个时候执行查询。通过扩展,攻击者还将查找查询将转到的名称服务器。一旦他们有了这个,解析程序使用的端口和请求ID号是至关重要的。
虽然满足所有这些要求并不是必需的——毕竟,攻击者可以通过多种方法访问服务器——但勾选这些框可以使他们的工作更轻松。
DNS污染的真实世界示例
在过去的几年里,DNS中毒已经有了一些引人注目的例子。在某些情况下,这是一种故意的行为。例如,一些国家或者地区大规模运行防火墙,以控制互联网用户接收的信息。
简言之,他们通过将访问者重定向到Twitter和Facebook等未经批准的网站,污染自己的服务器。
瑞典ISP从这些国家或者地区服务器提供根DNS信息时出现网络错误。这意味着智利和美国的用户在访问某些社交媒体网站时会被重定向到其他地方。
在另一个例子中,抗议马来西亚虐待的孟加拉国黑客毒害了许多与微软、谷歌、YouTube和其他知名网站相关的域名。这似乎是服务器劫持事件,而不是客户端问题或垃圾邮件。
即使是维基解密也不能免疫DNS中毒攻击。几年前,一次潜在的服务器劫持导致该网站的访问者被重定向到一个专门针对黑客的页面。
DNS污染不一定是一个复杂的过程。所谓的“道德黑客”——即那些希望暴露安全缺陷而不是造成损害的人——有在自己的计算机上测试欺骗的简单方法。
不过,除了被重定向之外,DNS中毒表面上似乎没有任何长期影响。事实上,有——我们将在下一步讨论它们。
为什么DNS污染有害
攻击者希望在服务器上执行DNS中毒有三个主要目标:
- 传播恶意软件。
- 将你转到另一个网站,这将在某种程度上使他们受益。
- 从您或其他实体窃取信息。
当然,要理解为什么DNS中毒或欺骗对ISP、服务器运营商和最终用户来说是一个问题并没有超出想象。
正如我们所指出的,欺骗对ISP来说是一个巨大的问题,以至于有像CAIDA Spoofer这样的工具可以提供帮助。
CAIDA网站
几年前,统计数字显示每天大约有30000起袭击。自报告发表以来,这一数字几乎肯定会增加。更重要的是,正如前一节中的示例一样,通过网络交付伪造的站点会带来用户信任问题以及隐私问题。
无论你是谁,当你成为中毒和欺骗的受害者时,都有一些风险:
- 就像某些国家防火墙一样,你可能会受到审查。这意味着你得到的信息将不准确,这会对许多社会和政治领域产生连锁反应。
- 数据盗窃是人们最关心的问题,对于那些想要获取用户银行信息和其他敏感数据的人来说,这是一项有利可图的冒险。
- 您可能容易感染系统上的恶意软件和其他特洛伊木马病毒。例如,攻击者可以通过伪造的站点在您的系统上注入键盘记录器或其他形式的间谍软件。
DNS污染还有其他相关影响。例如,在恢复过程全面展开时,您可能无法对系统应用任何安全更新。这会使您的计算机更长时间处于易受攻击状态。
此外,考虑这个清理过程的成本和复杂性,因为它会影响到每个人在链条上。所有联网服务的更高价格只是负面因素之一。
消除DNS污染的努力是巨大的。鉴于欺骗同时影响客户端和服务器端设置,将其从一个设置中删除并不意味着它从所有设置中消失。
如何预防DNS污染
有两个区域受到DNS污染的影响-客户端和服务器端。我们将看看你能做些什么来防止这种对硬币两面的破坏性攻击。
让我们从互联网作为一个整体在服务器端做什么开始。
互联网如何防止DNS污染和服务器端欺骗
尽管在本文中我们已经讨论了很多关于DNS的内容,但我们还没有注意到这项技术有多么过时。简而言之,由于一些因素,DNS并不是最适合现代网络浏览体验的。首先,它是未加密的,并且没有一些重要的验证考虑,这将阻止许多DNS中毒攻击的继续。
防止攻击变得更强的一种快速方法是通过简单的日志策略。这将在请求和响应之间进行简单的比较,以查看它们是否匹配。
然而,长期的答案(根据专家的说法)是使用域名系统安全扩展(DNSSEC)。这是一项旨在对抗DNS中毒的技术,简单来说,它提供了不同级别的验证。
更深入地说,DNSSEC使用“公钥加密”作为验证。这是一种将数据视为真实可信的方式。它与您的其他DNS信息一起存储,递归服务器使用它来检查它接收到的信息是否未被更改。
与其他互联网协议和技术相比,DNSSEC是一个相对的婴儿,但它已经足够成熟,可以在互联网的根级别实现,尽管它还不是主流。谷歌的公共DNS是一项完全支持DNSSEC的服务,而且随时都会有更多的服务出现。
即便如此,DNSSEC仍存在一些值得注意的缺点:
- 该协议不编码响应。这意味着攻击者仍然可以“监听”流量,尽管要绕过DNSSEC,攻击必须更加复杂。
- 由于DNSSEC使用额外的记录来收集DNS数据,因此存在另一个称为“区域枚举”的漏洞。该漏洞使用一条记录来“遍历”并收集特定“区域”内的所有DNS记录。此记录的某些版本会加密数据,但其他版本尚未加密。
- DNSSEC是一个复杂的协议,因为它也是新的,所以有时可能会配置错误。当然,这会削弱使用它的好处,并带来进一步的问题。
即便如此,DNSSEC至少在服务器端是未来的趋势。作为最终用户,您还可以采取一些预防措施。
如何防止客户端的DNS污染
有更多的方法可以在客户端防止DNS中毒,尽管没有一种方法能够像专家实现的服务器端DNSSEC那样强大。不过,作为网站所有者,您可以勾选一些简单的框:
- 对任何请求和回复使用端到端加密。安全套接字层(SSL)证书在这里做得很好。
- 使用欺骗检测工具,如Xarp。这些扫描程序在发送数据包之前扫描接收到的数据包。这可以减轻任何恶意数据传输。
- 增加DNS缓存的生存时间(TTL)值将有助于在恶意条目到达最终用户之前清除它们。
- 您应该有一个好的DNS、DHCP和IPAM(DDI)策略。这包括DNS策略、动态主机配置协议和IP地址管理。这是一个由系统管理员和服务器安全专家处理的复杂但必要的过程。
作为最终用户,您还可以做一些事情来帮助防止中毒和欺骗:
- 使用虚拟专用网络(VPN),因为您的数据将被端到端加密。您还可以使用私有DNS服务器,同样使用端到端加密。
- 采取简单的预防措施,例如不要单击无法识别的链接并定期进行安全扫描。
- 定期刷新DNS缓存也会清除系统中的恶意数据。这需要几秒钟,而且很容易实现。
虽然不能完全消除DNS污染,但可以防止最坏的情况发生。作为最终用户,您无法控制服务器如何处理攻击。同样,系统管理员无法控制浏览器中发生的事情。因此,团队努力阻止这种最有害的攻击影响整个链。
小结
互联网攻击是司空见惯的。DNS污染(中毒或欺骗)是一种常见的攻击,如果不加以制止,可能会影响数百万用户。这是因为DNS协议很旧,不适合现代网络浏览——尽管新技术即将问世。
简而言之,DNS污染将最终用户重定向到现有网站的欺诈版本。这是一种窃取数据并用恶意软件感染系统的方法。没有万无一失的方法可以完全防止它,但是你可以通过一些简单的措施来控制它。
您是否曾经是DNS污染的受害者,如果是,原因是什么?请在下面的评论部分与我们分享您的经验!