在 2008 年之前,所有DNS请求包都使用固定源端口53发送解析请求。因此,除了ID之外,欺骗DNS回复所需的所有信息都是有限的。用这种弱点攻击 DNS 被称为“生日悖论”,平均需要256次来猜测ID。为了使攻击成功,伪造的DNS回复必须在合法权威DNS服务器响应之前到达缓存DNS服务器。如果伪造响应首先到达,它将由缓存DNS缓存,并且直到其生存时间(TTL)到期,递归DNS不会向权威DNS请求解析相同的域名。
2、Kaminsky缓存投毒
2008年,在Black Hat上有人公布了一种新型缓存投毒的原理。其中基本的随机猜测技术不变。该攻击利用了 DNS 响应包的AUTHORITY SECTION字段,因为 DNS 响应可以是直接应答(请求的直接IP地址)或引用(对给定区域具有权威性的服务器)。基本思想是攻击者选择他们希望攻击的域,然后向目标解析器查询尚未被解析器缓存的子域(查询不存在的子域是一个很好的选择,因为不存在的子域记录是没有被DNS服务器缓存的)。由于子域不在缓存中,因此DNS递归服务器向该域的权威服务器发送查询。正是在这一点上,攻击者用大量伪造的响应来淹没正常应答,每个伪造的响应都有不同的伪造ID号。如果攻击者成功注入伪造响应,则递归DNS服务器将为权威服务器缓存错误的IP。对受感染域的递归DNS服务器的未来 DNS 查询将导致所有请求被转发到攻击者控制器权威解析器,使攻击者能够提供恶意响应,而无需为每个新 DNS 记录注入假条目。