防不勝防瞭解DNS快取中毒攻擊原理

狼人2007發表於2019-05-13

網路上出現史上最強大的網際網路漏洞——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伺服器需要更智慧化,能夠準確分析每個查詢響應,以便剔除攻擊者傳送的非法應答中的有害資訊。


相關文章