放大器

一种扩大和隐蔽性的技术,叫作DNS放大,它是Anonymous的主要手段。DNS放大劫持互联网全球地址簿的一个组成部门,把一个从攻击机发送的相对较小的请求转变成大量数据发送到目标机器上,可能造成每秒几十或几百G的网络拥堵,且不会暴露攻击源头。它之所能够如此,全是因为使用一种在至少2002年就已被得知的脆弱的DNS服务造成的。

DNS系统是有层次组织起来的。在层次结构的顶部是“根”域名服务器。这些服务器包含了可以找到下一层次域名服务器的所有信息,如“.com”,“.org”和“.uk”之类的。按顺序,这些域名服务器包括了下一层的信息,因此“.com”域名服务器提供了可以找到“arstechnica”域名服务器的信息。之后“arstechnica”域名服务器就可以提供实际的从一个描述性的名字到一个以数字表示的IP地址的映射。

做一次DNS查询需要访问所有这些不同的层次。有两种DNS解析的方式(一种软件查找DNS条目,它可以是一台客户机上的独立存在,也可以成为DNS服务器的一部分)可行:迭代模式和递归模式。在迭代模式下,解析器首先在根域名服务器下查询顶级域名服务器,然后在顶级域名服务器下查询二级域名服务器,等等。解析器直接与不同的域名服务器联系,一个接一个,直到它要么找到了它需要的应答,要么因为应答不存在而放弃。

在递归模式中,解析器的工作是非常简单的:它询问一个域名解析服务器的全称,然后把它交给服务器,代表它来执行所有必要的要求(无论是递归或迭代)。

所有牵涉其中的服务器都有广泛缓存;许多请求都由存储在缓存中的信息受理,而不必每次在一个机器想知道比如“google.com”时都要查询其它服务器。

通常情况下,DNS解析器内建于客户操作系统中,让域名服务器(通常由互联网服务提供商提供)代表它们来进行递归查询。在这些服务器完成查询之后,再来满足通常地迭代请求。

这里就是问题所在。对于一个DNS查询的回应可以大大超过查询本身。在最好(或最坏)情况下,只有十几个字节的查询可以请求一个域名内的每个名字,并收到成百上千字节的回应。发送到DNS服务器每个请求都有一个源地址——一个回应要发送到这的IP地址——但是这些源地址可以被伪造。那样的话,从一个IP地址发来的请求却被DNS服务器当成是由另一个不同地址发送来的。

利用这两种方式——小的请求却返回大量数据的递归查询,和伪造源地址——攻击将得以实现。攻击者首先找到一个被配置成递归查询的服务器,然后他向服务器发送大量请求,伪造源地址,另服务器认为受害目标计算机正在发送请求。这些请求中的每一个都会被选中,因此它将产生大量回应,远远大于查询自身。之后,服务器将把这些大量回应发送给受害计算机,使之被大量数据瘫痪。请求和回应之间的大小差距是这些攻击被称为“放大”攻击的原因。

虽然共识是公开访问的DNS服务器应该关闭递归查询,这是为了避免类似问题,但现实是,不是所有服务器都这样做。有了足够的使用递归的服务器,大量的数据拥堵就会被这些相对轻微数量的查询制造出来。


相关内容