实际上,欺骗 DNS 有多难?
哪些场景比其他场景风险更大?例如:
吸引用户点击超链接的网络钓鱼电子邮件或 Twitter 链接
不同子网上的内部共享点站点上的链接
恶意用户可能位于同一子网中。
其他场景...(请添加您自己的)
实际上,欺骗 DNS 有多难?
哪些场景比其他场景风险更大?例如:
吸引用户点击超链接的网络钓鱼电子邮件或 Twitter 链接
不同子网上的内部共享点站点上的链接
恶意用户可能位于同一子网中。
其他场景...(请添加您自己的)
如果受害者使用的是开放的无线网络,那么欺骗 DNS 很容易。 攻击者很容易发起中间人攻击并发送伪造的 DNS 响应。因此,如果您使用的是开放式无线网络,则根本不应该信任 DNS:欺骗是微不足道的。
同样,如果攻击者与您在同一子网中,则欺骗 DNS 很容易:在这种情况下,攻击者很容易窃听您的 DNS 请求,然后欺骗响应并玩中间人游戏。
如果受害者正在使用其他网络,则欺骗 DNS 并不容易,但可能是可行的。 如果受害者通过有线网络连接到网络,在大多数情况下,攻击者无法轻易安排窃听您的网络通信。在这种情况下,简单的中间人攻击不再适用,攻击者必须更加努力。还有一些其他可能的攻击,但它们并不容易安装:
卡明斯基攻击。如果您有一个较旧的 DNS 客户端(不使用源端口随机化的客户端),则唯一防止欺骗的保护措施是 16 位 ID 字段。16 位不足以抵御随机猜测,Dan Kaminsky 展示了如何在这些条件下欺骗 DNS。因此,如果您有一个不使用源端口随机化的旧 DNS 客户端,您应该认为它很容易欺骗 DNS。
幸运的是,在 Kaminsky 发现他的攻击之后,人们齐心协力增加了针对他的攻击的防御(例如,通过随机化源端口 ID),并且大多数现代客户端确实使用源端口随机化。因此,对于现代 DNS 客户端,虽然 Kaminsky 的攻击在原则上仍然是可能的,但它需要大量的流量,因此发起这样的攻击是可能的,但并非易事;除非您是高价值目标,否则如果您的 DNS 客户端使用源端口随机化,您可能会非常安全。但是,仍然有一些系统没有部署针对 Kaminsky 攻击的保护,要么因为它们非常老旧,要么因为它们是尚未更新的嵌入式系统,
DNS缓存中毒。 过去,许多 DNS 缓存容易受到缓存中毒攻击,攻击者可以欺骗他们接受对 DNS 查询的恶意回复,然后缓存该恶意回复。然后,使用该 DNS 缓存并查询该名称的所有后续客户端都会得到错误和恶意的答案。
这些天来,现代 DNS 软件已经更新以防御所有已知的缓存中毒攻击,因此缓存中毒攻击在今天应该很难发动。可能仍然有一些 DNS 缓存运行非常旧的软件,但我希望它们非常罕见。
客户端恶意软件。 某些客户端恶意软件所做的一件事是修改系统的配置,以便所有 DNS 查询都转到攻击者的 DNS 服务器。因此,如果您的机器感染了这种恶意软件,攻击者就可以轻松地欺骗 DNS。
驾驶式制药。 如果您通过消费者/SOHO 级电缆调制解调器、DSL 调制解调器、个人无线接入点或类似设备连接到 Internet,则您可能容易受到称为“偷渡”的恶意攻击。在路过式域名攻击中,攻击者重新配置您的路由器以更改其 DNS 设置,以便所有 DNS 查询都转到攻击者的 DNS 服务器。如果攻击者可以做到这一点,那么他就很容易欺骗 DNS。
这怎么可能发生?一种方法:如果您运行一个开放的无线网络,那么物理上就在附近的攻击者可能会跳到您的网络上,以标准地址(例如http://192.168.0.1)连接到您的路由器,如果您没有不要在上面设置强密码,猜测您的密码并更改其配置。更巧妙的是,即使您选择了强密码,如果您已登录,攻击者仍然可以通过利用许多路由器的本地 Web 配置界面无法防御 CSRF 攻击的事实来更改配置。
更糟糕的是,在某些情况下,这些攻击可以由位于世界另一端的攻击者远程发起。如果您使用的是易受攻击的路由器,并且您当前已登录浏览器,或者您没有在路由器上设置强密码,如果您访问恶意网站,该恶意网站可能会使用 Javascript 和Java 连接到您的路由器(从内部界面),猜测您的密码或利用 CSRF 攻击,并更改其 DNS 配置 - 以一种您不知道的方式在不可见的情况下发生。
不幸的是,许多已部署的路由器容易受到这些攻击,并且由于没有部署安全更新的良好渠道,这一事实不太可能很快改变。我将这次攻击评为中等难度;找到一些您可以通过这种方式攻击的用户可能并不难,但可能很难攻击目标用户(除非您物理上就在附近)。
服务器端黑客攻击。 如果攻击者可以破解负责的 DNS 服务器example.com
,那么攻击者可以控制客户端请求 IP 地址时发送的响应example.com
。对于大多数站点来说,这种攻击可能相对困难,但难度会因目标而异。一项研究发现,17% 的 DNS 服务器存在已知漏洞。
这种攻击比最初看起来更糟糕,因为 DNS 中有大量的传递信任。例如,乌克兰政府的网站间接依赖于 Dreamhost 的 DNS 服务器(的DNS由kmu.gov.ua
位于 的服务器提供服务adament.net
;adament.net
的 DNS由依赖),以及许多其他 DNS 服务器。因此,如果您可以破解任何这些 DNS 服务器,您就可以为乌克兰政府的网站欺骗 DNS。这种信任的数量因站点而异。一项研究发现,由于这类对易受攻击的 DNS 服务器的间接依赖,45% 的 DNS 名称容易受到黑客攻击。dreamhost.com
ua
sunet.se
nordu.net
no
底线。总的来说,我想说,如果您使用的是攻击者可以窃听您的开放网络,那么欺骗 DNS 是微不足道的——而如果您使用的是攻击者无法窃听您的其他网络,那么欺骗DNS 相当困难,但远非不可能。
因此,我认为有充分的理由使用 DNSSEC 和 SSL/TLS 等解决方案。
从技术意义上讲,DNS 很容易被欺骗。它(几乎总是)使用 UDP 作为传输协议,与 TCP 相比,这对于欺骗来说是微不足道的。而且 DNS 本身没有提供任何防止欺骗的预防措施,所以如果攻击者可以先返回自己的数据包,他们就赢了。请注意,DNSSEC旨在解决这个问题和其他几个问题。
因此,成功的 DNS 欺骗依赖于网络访问。以允许他们查看客户端请求和欺骗响应数据包的方式访问网络的攻击者可以欺骗客户端进入他们预期之外的地方。鉴于这一事实,您可以确定它的威胁程度。例如,网络钓鱼电子邮件通常来自没有优先网络访问权限的人,因此两者一起工作的威胁较低。另一方面,同一子网中的恶意用户可能能够获得执行欺骗所需的网络访问级别,因此这更有可能是危险的。
DNS 是一种低级协议,一些更高级别的协议具有针对这种欺骗的保护。例如,攻击者可能能够欺骗 DNS 以将https://bigbank.com的用户重定向到他们自己的站点,但他们需要有效的 SSL 证书以避免警告,如果用户确实检查了证书,他们'将检测到攻击。同样,如果攻击者以重定向客户端的 SSH 连接为目标进行欺骗,他们将收到主机密钥已更改的警报,除非攻击者以某种方式设法窃取了真正的 SSH 服务器的主机密钥。如果他们使用 Telnet,他们将没有这样的保护......
据我所知,大多数与 DNS 相关的公开妥协是由于某种 DNS 中毒,通常不是欺骗。当然,由于中毒本质上更加公开,并且欺骗更适合安静的有针对性的攻击,我们不能假设这意味着不使用欺骗。然而,我会大胆猜测,如果攻击者拥有欺骗所需的网络访问权限,他们可能还有一些其他攻击媒介,这些攻击媒介可能比 DNS 欺骗更具吸引力。也许这就是为什么我们还没有使用 DNSSEC 的原因。