文/姜开达
3月底发生了互联网有史以来最大的300G DDoS攻击事件。此次黑客利用了DNS放大攻击(DNS Amplification attack,也叫反射攻击)技术,这种攻击方式其实由来已久,早在2002年就已引起研究人员的关注,但是造成这么大的攻击流量还是首次被发现。由于这种攻击模式成本低,效果好,追踪溯源困难,而且由于脆弱的DNS体系具有开放式特点,难以彻底杜绝。潘多拉魔盒已经被打开,在未来相当长一段时间内,预计这种DNS放大攻击会得到越来越多攻击者的青睐,被广泛利用。
根据我们近期对校园网的监测,大量开放式递归DNS服务器都被频繁利用进行放大攻击。从近期统计结果来看,最频繁利用的域名是 isc.org。
比如我们向某递归DNS服务器发送一个类型为ANY的域名查询请求(64 byte),
dig any isc.org @202.120.2.101
DNS服务器返回应答报文为3336 byte, 放大倍数为52倍。
;; Query time: 1 msec
;; SERVER: 202.120.2.101#53(202.120.2.101)
;; WHEN: Mon Apr 29 21:30:42 2013
;; MSG SIZE rcvd: 3336
图1是从上海交通大学校园网截获的DNS放大攻击流量。可以看到攻击者伪造源地址,不断发送小的请求查询包,从而获得DNS服务器的大量返回报文,实现定向流量攻击。
图1 DNS放大攻击报文
表1 Queries per second具体测试结果
由于DNS查询请求通常为无连接的UDP类型,所以攻击者只要使用1G的伪造源地址DNS查询流量,理论上就可能获得超过50G的UDP流量,并且可以控制其流向导引到攻击目标。对于拥有成千上万台被控主机的僵尸木马网络来说,发出几个G乃至数十G的DNS查询流量并不困难,而开放式递归服务器在全球数量超过千万台,并且这些服务器接入带宽往往较高。如果控制每台DNS只产生30M的应答攻击流量(太大的DNS流量会被管理员发现并可能影响服务器正常工作),那么只需要1万台就可以达到300G DDoS流量攻击的效果。
针对DNS放大攻击,一种主流解决方案是控制递归DNS有限度开放来降低被利用程度,但是对于提供授权服务的DNS来说,必须要公开,还是可能会被利用。我们在实际网络中也的确监测到大量针对授权DNS的流量攻击。
为了评估放大攻击对目前DNS的服务影响,我们使用2台服务器做了一次性能测试。一台安装DNS服务,使用unbound的最新稳定发行版本1.4.20;另一台安装Nominum出的主流DNS性能测试工具dnsperf 2.0.0.0进行压力测试,每次批量发送不同的查询请求,测试时间都为60秒钟。评价DNS性能的关键指标为无丢包情况下的最大查询能力,也就是Queries per second(qps),具体测试结果如表1所示。
从这张表中,我们可以简单看出,随着查询返回包长度的增加,DNS服务器的整体性能是在显著下降的。DNS放大攻击利用的一般都是较高放大比的请求包,因此无疑会干扰DNS服务器的正常运行。
作为互联网基础设施的DNS,正常服务关系到整个互联网的安全稳定运行。对DNS安全体系的进一步研究,是网络安全研究人员当前工作的重点,也具有很大的挑战性。