天天看點

防不勝防 了解DNS緩存中毒攻擊原理

網絡上出現史上最強大的網際網路漏洞——DNS緩存漏洞,此漏洞直指我們應用中網際網路脆弱的安全系統,而安全性差的根源在于設計缺陷。利用該漏洞輕則可以讓使用者無法打開網頁,重則是網絡釣魚和金融詐騙,給受害者造成巨大損失。

緩存中毒攻擊者(cache poisoning)給DNS伺服器注入非法網絡域名位址,如果伺服器接受這個非法位址,那說明其緩存就被攻擊了,而且以後響應的域名請求将會受黑客所控。當這些非法位址進入伺服器緩存,使用者的浏覽器或者郵件伺服器就會自動跳轉到DNS指定的位址。

這種攻擊往往被歸類為域欺騙攻擊(pharming attack),由此它會導緻出現很多嚴重問題。首先,使用者往往會以為登陸的是自己熟悉的網站,而它們卻并不是。與釣魚攻擊采用非法URL不同的是,這種攻擊使用的是合法的URL位址。

另外一個問題是,成百上千的使用者會被植入緩存中毒攻擊的伺服器重定向,引導至黑客設立的圈套站點上。這種問題的嚴重性,會與使用域名請求的使用者多少相關。在這樣的情況下,即使沒有豐富技術的黑客也可以造成很大的麻煩,讓使用者稀裡糊塗的就把自己網銀帳号密碼,網遊帳号密碼告訴給他人。

用這種類似的方法,郵件系統也會受到黑客攻擊。隻不過不是給Web伺服器,而是給郵件伺服器非法位址,進而讓系統引導至受到控制的郵件伺服器中。

那麼,黑客究竟是怎麼做到使緩存伺服器接受非法位址呢?當一個DNS緩存伺服器從使用者處獲得域名請求時,伺服器會在緩存中尋找是否有這個位址。如果沒有,它就會上級DNS伺服器送出請求。

在出現這種漏洞之前,攻擊者很難攻擊DNS伺服器:他們必須通過發送僞造查詢響應、獲得正确的查詢參數以進入緩存伺服器,進而控制合法DNS伺服器。這個過程通常持續不到一秒鐘,是以黑客攻擊很難獲得成功。

但是,現在有安全人員找到該漏洞,使得這一過程朝向有利于攻擊者轉變。這是因為攻擊者獲悉,對緩存伺服器進行持續不斷的查詢請求,伺服器不能給與回應。比如,一個黑客可能會發出類似請求:1q2w3e.google.com,而且他也知道緩存伺服器中不可能有這個域名。這就會引起緩存伺服器發出更多查詢請求,并且會出現很多欺騙應答的機會。

當然,這并不是說攻擊者擁有很多機會來猜測查詢參數的正确值。事實上,是這種開放源DNS伺服器漏洞的公布,會讓它在10秒鐘内受到危險攻擊。

要知道,即使1q2w3e.google.com受到緩存DNS中毒攻擊危害也不大,因為沒有人會發出這樣的域名請求,但是,這正是攻擊者發揮威力的地方所在。通過欺騙應答,黑客也可以給緩存伺服器指向一個非法的伺服器域名位址,該位址一般為黑客所控制。而且通常來說,這兩方面的資訊緩存伺服器都會存儲。

由于攻擊者現在可以控制域名伺服器,每個查詢請求都會被重定向到黑客指定的伺服器上。這也就意味着,黑客可以控制所有域名下的子域網址:www.bigbank.com,mail.bigbank.com,ftp.bigbank.com等等。這非常強大,任何涉及到子域網址的查詢,都可以引導至由黑客指定的任何伺服器上。

如何應對?

為了解決這些問題,用于查詢的UDP端口不應該再是預設的53,而是應該在UDP端口範圍内随機選擇(排除預留端口)

但是,很多企業發現他們的DNS伺服器遠落後于提供網絡位址轉換(network address translation ,NAT)的各種裝置。大部分NAT裝置會随機選擇NDS伺服器使用的UDP端口,這樣就會使得新的安全更新檔會失去效果。IT經理也不會在防火牆中開放全方位的UDP端口。更嚴重的是,有安全研究員證明,即使提供64000UDP端口中随機選擇的保護,DNS伺服器也照樣有可能受到中毒攻擊。

現在是時候考慮保護DNS的其他方案了。UDP源端口随機化選擇是一種比較有用的防護舉措,但是這會打破UDP源端口随機化給與DNS伺服器的保護,同由此全方位開放端口面臨的風險或者降低防火牆性能這兩者間的平衡關系。還有一種比較有效的防護措施就是,當檢測到面臨潛在攻擊風險時,讓DNS伺服器切換到使用TCP連接配接。

如果攻擊者猜測到了必要的參數以欺騙查詢響應,那麼就需要額外的防禦措施了。這意味着DNS伺服器需要更智能化,能夠準确分析每個查詢響應,以便剔除攻擊者發送的非法應答中的有害資訊。

繼續閱讀