现在我们可以确定授权数据已然进入DNS服务器的缓存当中。乘胜追击,删除新建的子域。目前授权数据的TTL应该还存在,但处于不断减少之中。因为我们知道授权数据包含着域的NS记录以及域名服务器的A记录,因此它可以表示如下:

在子域被删除一段时间之后,授权数据可能如下图所示:

下一步是改变域名服务器的名称,比如改成test2.searching-eye.com。使用与之前同样的DNS服务器4.2.2.4),我们向其查询域名服务器的A记录,即test2.searching-eye.com。

解析程序将观察授权数据并向testns.searching-eye.com的IP地址发送查询指令,但此时该IP地址已经被test2.searching-eye.com所占用。接着解析程序会返回域名服务器的IP地址,但它也将同时发现存在一个新的域名服务器因为服务器名称已经经过改动),最终结果是它会用新服务器覆盖掉原有的缓存内容不同的DNS服务器可能使用不同的缓存更新逻辑机制)。在缓存内容被覆盖之后,授权数据将如下图所示前提是DNS服务器并没有严格遵循缓存更新逻辑,也就是说本文所讨论的漏洞在该服务器中确实存在):
 

请注意,新的授权数据被赋予了新的TTL值。如果多次重复上述过程,那么就能够避免该TTL归零当然有某些特殊情况下,该值在很长一段时间后仍然会归零,详细情况请阅读文章结尾提供的论文链接)。

为了让这种攻击模式大范围起效,攻击者必须向尽可能多的漏洞DNS服务器发送查询指令,旨在尽量避免授权数据的TTL有效时间耗尽。由于众多DNS服务器的缓存中仍然保留着授权数据,因此攻击者就能够让自己的恶意域始终有IP地址可用,进而使更多用户顺利访问进来。


相关内容