文/姜開達
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安全體系的進一步研究,是網絡安全研究人員當前工作的重點,也具有很大的挑戰性。