1. 程式人生 > >什麼是域名劫持和域名汙染

什麼是域名劫持和域名汙染

域名劫持

域名伺服器上都會儲存一大堆的域名記錄(每條記錄包含“域名”和“IP地址”)。當收到域名查詢的時候,域名伺服器會從這堆記錄中找到對方想要的,然後迴應給對方。

如果域名伺服器上的某條記錄被【人為修改】了(改成錯的),那麼一旦要查詢這條記錄,得到的就是錯誤的結果。這種情況稱之為“域名劫持”。

★誰有“域名劫持”的企圖?

“域名劫持”通常是電信運營商(ISP)乾的好事兒。很多寬頻使用者用的域名伺服器就是 ISP 提供給你的。

舉例:

前幾年曾經出現過:某個 ISP 跟某網站勾結,把維基百科的流量重定向到XX。具體搞法是:該 ISP 篡改自己的域名伺服器的記錄,把裡面跟維基百科 相關的域名記錄的 IP地址 修改為XX的 IP地址。如此一來,假設你用的是這個 ISP 的域名伺服器,當你在瀏覽器輸入 http://zh.wikipedia.org/的時候,你的電腦查詢到的 IP地址 其實是XX的 IP地址,所以瀏覽器開啟的是“XX”的主頁。

★如何對付“域名劫持”?

剛才說了,“域名劫持”的根源在於:域名伺服器上的記錄被人給改了。要對付這種耍流氓,最直接的辦法就是不要使用這種流氓 ISP 提供的域名伺服器,改用國外那些比較靠譜的。目前口碑最好的,大概是 Google 提供的兩個域名伺服器,IP地址 分別是 8.8.8.8 和 8.8.4.4 ——這倆不光是地址好記,更重要的是,不會耍流氓。

域名汙染

先提醒一下:“域名汙染”這個詞還有其它幾個別名,分別是“域名欺騙”、“域名快取投毒”(洋文叫:DNS cache poisoning)。今後看到這幾個別名,要曉得是同一個意思。

“域名汙染”的原理,簡單說來是這樣滴:當你的電腦向域名伺服器傳送了“域名查詢”的請求,然後域名伺服器把迴應傳送給你的電腦,這之間是有一個時間差的。如果某個攻擊者能夠在域名伺服器的“DNS應答”還沒有到達你的電腦之前,先偽造一個錯誤的“DNS應答”發給你電腦。那麼你的電腦收到的就是錯誤的資訊,並得到一個錯誤的 IP地址。

★誰有“域名汙染”的企圖?

從技術上講,只要攻擊者能夠位於“你”和“域名伺服器”的傳輸線路中間,那麼攻擊者就有機會搞“域名汙染”。能夠做到這點的,可能是一個黑客/駭客,也可能是 ISP。

★某國家防火牆的兩種“域名汙染”

剛才俺解釋了“域名汙染”的原理,那種形式不妨稱為“直接汙染”。由於某國家防火牆的特殊性,它不但可以做到“直接汙染”,還可以做到“間接汙染”。而普通的駭客頂多只能做到“直接汙染”,難以做到“大範圍的間接汙染”。

那麼這兩種汙染有啥區別捏?且聽俺細細道來。

◇某國家防火牆部署在哪?

首先有必要先掃盲一下“某國家防火牆(其實是一種IDS,也就是入侵檢測系統)的部署位置”。X國網際網路只有少數幾個國際出口(名氣較大的是:A出口、B出口、C出口)。如果你要訪問國外網站,你的網路資料流就必定會經過其中的某個“國際出口”。

◇某國家防火牆的直接汙染

因為某國家防火牆部署在國際出口。如果你用的是【國外的】域名伺服器,你的“DNS請求”必定會經過國際出口;同樣,域名伺服器的“DNS應答”必定也會經過國際出口才能到你的電腦。這一來一回就給某國家防火牆 提供了機會。

這種汙染就是俺所說的“直接汙染”。

◇某國家防火牆 的間接汙染

剛才介紹了“使用國外域名伺服器會被直接汙染”。那如果你用的是【國內的】域名伺服器捏?就會被“間接汙染”。過程如下:

1. 比方說你用的是電信的 DNS伺服器,然後你想要訪問某個被不受歡迎的網站。

2. 對於不受歡迎的網站,其網站伺服器必定在國外,而且網站的域名肯定也不會使用 CN 之下的域名。所以,被封鎖的網站,其上級域名的“權威域名伺服器”肯定也是在國外。

3. 當你向“電信的DNS伺服器”查詢反共網站的域名,這臺“電信的DNS伺服器”就會去找這個不受歡迎的網站的上一級域名對應的“權威域名伺服器”去進行“域名查詢”。

4. 因為是從國外進行域名查詢,相關的資料流必定要經過國際出口。一旦經過國際出口,就會被 某國家防火牆 汙染。

5. 如此一來,“電信的域名伺服器”拿到的是已經被汙染的域名記錄(裡面的IP是錯的)。而且“電信的域名伺服器”會把這條錯誤的記錄儲存在自己的域名快取中。

6. 下次如果有另一個網友也找這臺“電信的域名服務”查詢這個不受歡迎的網站,也會查到錯誤的結果。

上述過程不斷重複,最終會導致:全國所有的域名伺服器,它們的快取中只要是包含了不受歡迎的網站的記錄,記錄中的 IP地址 必定是錯的(這個錯誤的 IP地址 也就是 某國家防火牆 偽造的那個)。所以說“間接汙染”是很牛逼的,可以把錯誤的域名記錄擴散到全國。

剛才俺說了,“域名汙染”也叫“域名快取投毒”。“投毒”一詞真的非常形象——就好象在某條河流的源頭下毒,從而把整條河流的水都汙染。“域名汙染”直接破壞了網際網路的基礎設施。