「華安解密之DDoS攻防」04 DNS原理篇 緩存投毒

楊哥關注的華為官方的【華安解密之DDoS攻防】非常實用,純純的乾貨,決定每天一篇分享給愛看頭條並且愛學習的條友們。

正文如下:


上一篇中,咱們聊過了DNS reply flood的攻擊原理,那麼黑客們還有什麼常見的DNS攻擊手段呢?今天華安就來給大家說說緩存投毒。

0x01 事件回顧

一提起Lizard Squad,他可算是最近兩年最活躍的黑客組織之一了。這個自詡為“DDoS攻擊之王”的黑客組織在過去一段時間裡,可是沒少幹壞事。2014年的聖誕節,Lizard Squad成功“調戲”了IT巨頭微軟和索尼,攻陷了PlayStation Network和Xbox在線服務,影響了全球數億用戶上網。去年2月,Lizard Squad又調戲了一把越南Google。越南網民在訪問Google主頁的時候,看到的不是Google搜索頁面,而是一個男人的***照。

根據Google的DNS服務商OpenDNS所述,這名自稱Lizard Squad成員的黑客通過將Google的域名服務器(ns1.google.com, ns2.google.com)修改成CloudFlare的IP(173.245.59.108, 173.245.58.166)來重定向訪客。

「華安解密之DDoS攻防」04 DNS原理篇 緩存投毒

圖片來源自網絡,如涉及版權問題,請聯繫我們儘快刪除

不過Google受攻擊可不止這一次,4月,馬來西亞的Google也遭受了黑客攻擊。這次攻擊和越南那次攻擊如出一轍,不同的是,這次網民訪問主頁時,看到的不是***照,而是下面這個黑底紅字的頁面。

「華安解密之DDoS攻防」04 DNS原理篇 緩存投毒

圖片來源自網絡,如涉及版權問題,請聯繫我們儘快刪除

這些事件的發生,其實都是由於黑客篡改了域名和IP地址的映射關係,將用戶訪問的域名指向了其他IP地址。DNS篡改可能發生在各個環節,比如在客戶端側篡改、在授權服務器端篡改,或者在緩存服務器端篡改。今天我們就來聊聊比較常見的幾種篡改方式。

0x02 路由器DNS劫持

黑客利用路由器的漏洞入侵受害者的路由器,篡改路由器中設置的DNS服務器的地址,將DNS服務器地址指向惡意的DNS服務器。這種篡改對於一個用戶來說是最可怕的,一旦發生了這種情況,那麼這個用戶訪問的每一個域名,可能都會被解析成其他惡意地址。

之前的TP-Link路由器的劫持事件,就是黑客構造了一個惡意Web頁面,頁面的功能是自動登錄路由器並修改DNS地址。然後,黑客再構造一個URL發送給受害者,當受害者點擊這個鏈接的時候就訪問了惡意頁面。攻擊要想成功的前提是黑客必須知道TP-link路由器的登錄賬號和密碼,才能完成惡意Web頁面的構造。實際上,大多數人都會使用TP-link路由器廠商預置的默認密碼,所以這就給了黑客實施攻擊的機會,導致路由器的DNS服務器的IP地址更改為惡意的IP地址。

這種劫持方式不容易被發現,受害者只要輸入真實域名或者合法網站地址,黑客就可將其重定向到一個釣魚網站上。一旦發生了這種情況,那麼對於受害者來說後果是非常可怕的。受害者訪問的每一個域名,可能都是假的。他看到的淘寶不再是淘寶,登錄的網銀也不再是網銀,用戶的各種敏感信息都會受到嚴重威脅。

對於這種方式,最有效的防禦辦法就是路由器設置安全係數高的密碼,然後定期修改密碼。另外,對於不明鏈接,也不要隨便點擊。

「華安解密之DDoS攻防」04 DNS原理篇 緩存投毒

直接在授權服務器上修改域名和IP地址的映射關係,這是最直接,最暴力的一種方式。這種方式如果作為攻擊的手段的話,需要黑客通過特殊手段獲取授權服務器的管理員權限,難度係數其實是非常大的。

當然,也有另一種可能,就是出於某種特殊目的,管理員直接修改授權服務器上的域名和IP地址映射關係,這種類型比較少見,也不是我們能控制的,這裡就不做詳細介紹。

0x04 修改緩存服務器

這就是常見的DNS緩存投毒,是一種典型的DNS攻擊,也是我們今天要講解的重點。下面我們就一起來看一下黑客如何篡改緩存服務器。

前面我們也講過,緩存服務器並不知道域名和IP地址的映射關係,一旦從授權服務器獲取了映射關係後,會存儲在內存中一段時間。直到記錄老化。老化時間由DNS reply報文中的TTL決定。在這個有效期內如果再有客戶端請求這個相同域名的解析,緩存服務器就會直接用緩存中的IP地址進行回應。老化以後,如果有客戶端再次請求這個域名時,緩存服務器就會重新向授權服務器請求。

緩存投毒攻擊就是黑客偽造了惡意的DNS reply報文,導致緩存服務器無意中將惡意的域名和IP地址映射關係存儲到自己的緩存中。當客戶端再通過緩存服務器請求這個域名解析時,就會被指向惡意主機。

「華安解密之DDoS攻防」04 DNS原理篇 緩存投毒

1. 黑客向DNS緩存服務器發送一個不存在的子域名(gh1.ddos.com),請求解析。

2. 緩存服務器查找本地緩存項查不到,就會向授權服務器發起查詢請求。

3. 在授權服務器回應這個請求前,黑客就會偽造大量的DNS reply報文發向緩存服務器。

為了達到攻擊的目的,黑客偽造的DNS reply報文的源IP地址必須是授權服務器的源IP地址;目的端口也必須是緩存服務器的源端口;同時DNS reply報文的Query ID和DNS request報文的Query ID也要一致。

源IP地址和目的端口都很好偽造,但是Query ID偽造成功是有一定難度的。所以黑客偽造大量DNS reply報文時,會不斷變換Query ID字段。可能就會有一個Query ID字段命中DNS request的Query ID。一旦先於授權服務器發送給緩存服務器,緩存服務器就會將黑客發送的偽解析IP地址作為解析地址,保存到本地的緩存表中。

4. 後續當授權服務器再將真正的回應報文發送到緩存服務器時,緩存服務器也不會接收,直接丟棄。

在DNS緩存服務器中,如果僅僅gh1.ddos.com的解析地址是假的,這個其實也沒有多大影響。畢竟黑客利用投毒的這個子域名gh1.ddos.com通常都是不存在的,正常客戶端也不會請求這個不存在的子域名。

但是我們再仔細看一下下面這個DNS reply報文就會發現,藍框內是對子域名gh1.ddos.com的解析地址,而紅框內則是主域名ddos.com所在的DNS授權服務器和IP地址的對應關係。授權服務器在回答緩存服務器請求時,也會將這部分內容一起發送過去。而緩存服務器不僅僅存儲子域名的解析地址,還會將主域名的解析地址一併更新到自己的緩存列表中。

這樣後續再有客戶端請求這個主域名時,也會一併被指向虛假的IP地址。

「華安解密之DDoS攻防」04 DNS原理篇 緩存投毒

對於緩存投毒,Anti-DDoS系統採用會話檢查模式進行防禦。在防禦過程中,檢查DNS reply報文的會話五元組信息(源IP地址、目的IP地址、源端口號、目的端口號、協議),Query ID和域名是否和緩存服務器發出的DNS request報文一致。

「華安解密之DDoS攻防」04 DNS原理篇 緩存投毒

1. 當緩存服務器向授權服務器發出域名查詢請求時,Anti-DDoS系統記錄會話信息及請求報文中的Query ID和域名。

2. 當Anti-DDoS系統收到回應報文時,檢查會話五元組、回應報文中的Query ID和域名與請求報文中的Query ID和域名是否匹配。

a. 如果命中會話五元組,並且Query ID和域名與記錄的請求報文中的Query ID和域名匹配,則放行該報文。

b. 如果沒有命中會話,則丟棄該報文。

c. 如果命中會話,但是域名或Query ID與請求報文不匹配,則丟棄該報文,同時要刪除該會話,以免後續投毒報文完成投毒。

好啦,到今天為止,連續四周的介紹,我們基於DNS類攻擊和防禦的講解告一段落了。從DNS報文基礎到DNS類攻防原理,再到網絡中如何利用DNS基礎設施架構製造DDoS攻擊,大家是不是有了一個全新的認識?那麼,從下一週開始我們就要進入新的篇章HTTP篇,敬請期待。


往期連接:







分享到:


相關文章: