1. 程式人生 > >淺談HTTP劫持、DNS汙染的影響及解決辦法

淺談HTTP劫持、DNS汙染的影響及解決辦法

首先我們說一下“牆:防火長城”,它是由 網際網路科學家(比如:方濱興)、工作人員、五毛、分散式超級計算機、三大運營商組成的。

我們可以看到,牆並不是一個獨立的單獨存在的一個組織,而是由國內各領域的網際網路重要結構組成的。

網際網路科學家:專門研究如何低成本高效率的更有效的過濾稽核。 工作人員:一些非機器替代的人工操作,比如人工稽核。 五毛:五毛。 分散式超級計算機:要知道每一秒經過大陸各國際出口經過的流量是非常龐大的,需要很多超級計算機進行運算過濾。 三大運營商:這個是最重要的組成部分,沒有運營商的支援,牆就是個屁。大陸各國際出口都是三大運營商建立和控制的,如果他們不點頭,牆又如何在“大門口”(國際寬帶出口處)建立“過濾稽核檢查站”,當然運營商也是國家控制的,所以還是一家人。

所以,牆就相當於在 大陸的各個國際寬帶出口處建立的 過濾稽核檢查站。


還有我發現一個很有趣的事情,很多人以為只有中國和朝鮮存在牆,這很無知。

如果你把 遮蔽Google、Facebook、Youtube、Twitter的國家 就當作這個國家存在牆的話,那我無話可說。

牆或者說 網際網路防火長城,是任何一個擁有網際網路主權國家的必備組成。

如果你的國家沒有牆,沒有資訊稽核過濾機制,那政權隨時可能推翻,這不是吹牛,有好幾個國家的總統或者總理因為不注重這個問題,導致不僅下位還坐牢了。

美國是個自稱最自由的國家,所以他就沒有牆了嗎?不,他們對盜版網站,兒童色情網站等也是遮蔽。

還有韓國,在網際網路方面最發達的國家之一,同樣也是針對色情行業大力清理遮蔽。

就算是越南、緬甸、泰國,這種網際網路相對不發達的國家,依然存在牆。

牆是必然的,你不可能阻止牆的存在,我並不是為 中國防火長城開脫什麼,我只是闡述牆必須存在的事實。

同時牆也是一種變相的保護國內網際網路產業的發展,否則微博,百度哪那麼容易發展起來。

因為一些話太敏感,不能說的太直白,否則就要拆水錶了,理解不了就反過來站在領導人的角度思考,所以上面說的你們能理解多少那就是多少吧。

HTTP劫持

大家都知道,我的 dou-bi.com 域名在前段時間的G20期間被HTTP劫持和DNS汙染了,而我也簡單的研究了一下這兩個。

HTTP劫持很容易理解,因為HTTP傳輸協議是明文的,並且我的網站伺服器是在海外,要訪問我的網站就要通過中國的國際寬帶出口,出去與我的網站建立連線。

但是那G20期間因為戒嚴,所以加強了HTTP關鍵詞審查,我的網站也是因為關鍵詞的原因在經過出口的時候,被“檢查站:牆”掃描到了違規關鍵詞,於是掐斷了TCP連結。

所以當時使用者訪問網站會遇到:連結已重置、該網站已永久移動到其他地址等等。

解決方法

而HTTP劫持很容易解決,那就是加上SSL證書,網站連結全部內容加密,這樣“檢查站:牆”就無法解密資料分析關鍵詞了。

但是這不是絕對能解決這個問題的,如果你的網站只是誤殺或者違規擦邊球,那還好,如果是大型網站,就會特殊對待了。

HTTPS在建立加密連線的時候,需要一次握手,也就是達成連結協議建立加密連線,但是這次握手是明文的(建立加密連結首先就是連結雙方信任,比如網站的SSL證書是自己籤的,或者SSL證書到期或偽造的,在訪問這個網站的時候瀏覽器就會進行提示,表示此網站不安全啥的。)

握手是明文的就意味著,如果你的域名被重點關注,即使你加上了SSL證書,也會在首次握手的時候,被關鍵詞匹配然後掐斷連結。

還有一種方式,就是域名備案,使用國內伺服器。這樣使用者在訪問你的網站時,根本不需要經過牆,自然也沒有了攔截。

DNS汙染

DNS汙染,又稱為域名伺服器快取汙染(DNS cache pollution)或者域名伺服器快照侵害(DNS cache poisoning)。

DNS汙染是指一些刻意製造或無意中製造出來的域名伺服器分組,把域名指往不正確的IP地址。

一般來說,網站在網際網路上一般都有可信賴的域名伺服器,但為減免網路上的交通,一般的域名都會把外間的域名伺服器資料暫存起來,待下次有其他機器要求解析域名時,可以立即提供服務。一旦有相關網域的局域域名伺服器的快取受到汙染,就會把網域內的電腦導引往錯誤的伺服器或伺服器的網址。

原理解析

我們假設 A為使用者端也就是你的電腦裝置,B為DNS伺服器,C為A到B鏈路中一個節點的網路裝置(路由器、交換機、閘道器等)。

然後我們模擬一次被汙染的DNS請求過程。

A訪問一個網站,比如 google.com ,然後,A向B通過UDP方式傳送查詢請求,比如查詢內容 A google.com ,這個資料庫在前往B的時候要經過數個節點網路裝置比如C,然後繼續前往DNS伺服器B。

然而在這個傳輸過程中,C針對這個資料包進行特徵分析,(DNS埠為53,進行特定埠監視掃描,對UDP明文傳輸的DNS查詢請求進行特徵和關鍵詞匹配分析,比如“google.com”是關鍵詞,也或者是“A記錄”),從而立刻返回一個錯誤的解析結果(比如返回了 A 233.233.233.233 )。

眾所周知,作為鏈路上的一個節點,網路裝置C 必定比真正的 DNS伺服器B 更快的返回結果到 使用者電腦A,而目前的DNS解析機制策略有一個重要的原則,就是隻認第一。因此 節點網路裝置C所返回的查詢結果就被 使用者電腦A當作了最終結果,於是使用者電腦A因為獲得了錯誤的IP,導致無法正常訪問 google.com 。

驗證汙染

我的 www.dou-bi.com 主域名雖然在大部分地區解除了DNS汙染,但是我的兩個SS站域名並沒有,所以我嘗試對我的SS 子域名進行nslookup測試。

C:\Users\Administrator>nslookup ss.dou-bi.com 8.8.8.8
伺服器: google-public-dns-a.google.com
Address: 8.8.8.8

非權威應答:
名稱: ss.dou-bi.com
Addresses: 200:2:9f6a:794b::
8.7.198.45

我使用的是谷歌的 8.8.8.8 DNS,但是我得到的A記錄 IP卻是8.7.198.45,這個明顯不是我的IP,看一下其他被DNS汙染的域名就會發現都會有這個IP。

所以很明顯,我的 ss.dou-bi.com 域名受到了DNS汙染。

解決方法

  • 使用加密代理,比如Shadowsocks,在加密代理裡進行遠端DNS解析,或者使用VPN上網。
  • 修改hosts檔案,作業系統中Hosts檔案的許可權優先順序高於DNS伺服器,作業系統在訪問某個域名時,會先檢測HOSTS檔案,然後再查詢DNS伺服器。

可以在hosts新增受到汙染的DNS地址來解決DNS汙染和DNS劫持。

  • 通過一些軟體程式設計處理,可以直接忽略返回結果是虛假IP地址的資料包,直接解決DNS汙染的問題。
  • 如果你是Firefox使用者,並且只用Firefox,又懶得折騰,直接開啟Firefox的遠端DNS解析就行了。在位址列中輸入:about:config

找到 network.proxy.socks_remote_dns 一項改成true。

  • 使用DNSCrypt軟體,此軟體與使用的OpenDNS直接建立相對安全的TCP連線並加密請求資料,從而不會被汙染。 對於被DNS汙染的網站站長來說,最有效的方法就是 換域名或者IP 了。

汙染攻擊大事記

2010年3月,當美國和智利的使用者試圖訪問熱門社交網站如 http://facebook.com 和 http://youtube.com 還有 http://twitter.com 等域名,他們的域名查詢請求轉交給中國控制的DNS根映象伺服器處理,由於這些網站在中國被封鎖,結果使用者收到了錯誤的DNS解析資訊,這意味著防火長城的DNS域名汙染域名劫持已影響國際網際網路。

2010年4月8日,中國大陸一個小型ISP的錯誤路由資料,經過中國電信的二次傳播,擴散到了整個國際網際網路,波及到了AT&T、Level3、Deutsche Telekom、Qwest Communications和Telefonica等多個國家的大型ISP。

2012年11月9日下午3點半開始,防火長城對Google的泛域名 http://google.com 進行了大面積的汙染,所有以 http://google.com 結尾的域名均遭到汙染而解析錯誤不能正常訪問,其中甚至包括不存在的域名,而Google為各國定製的域名也遭到不同程度的汙染(因為Google通過使用CNAME記錄來平衡訪問的流量,CNAME記錄大多亦為 http://google.com 結尾),但Google擁有的其它域名如 http://googleusercontent.com 等則不受影響。有網友推測這也許是自防火長城建立以來最大規模的汙染事件,而Google被大面積阻礙連線則是因為18大 。 ——摘取自:知乎

當然,DNS汙染的大事件肯定不會只有這幾個,但是這也說明了DNS汙染的力量和危害之大。

IP黑名單

即使沒有DNS汙染 或者 你獲得了正確的IP,你就能正常訪問這些被遮蔽的網站了嗎?

不,牆目前已經有了IP黑名單,針對谷歌這種網站已經不再是普通的DNS汙染了,因為總會有辦法訪問被DNS汙染的網站(比如指定Hosts)。

那麼就直接把所有的谷歌IP拉黑不就好了?就算你獲得了正確的谷歌IP,但是當你去訪問這個IP的時候,牆會發現這個IP存在於黑名單中,於是直接阻斷,於是瀏覽器就會提示:www.google.com的響應時間過長等等。

當然谷歌的IP非常多,而且有很多都是隱藏的。

像Goagent、XX-NET、Hosts方式訪問谷歌或者其他被遮蔽的網站,都是使用的谷歌IP,當大量谷歌IP被拉黑後,這三種方式就會衰敗。

現在這三種方式依然在不停的掃描那些隱藏的谷歌IP,但是谷歌IP再多也不是無窮無盡的,遲早會消耗完畢,坐吃山空。到時候就是這幾種方法的死期了。

在普通使用者掃描的時候,“牆”中的工作人員和超級計算機何嘗也不是在掃描?正是看到了這種依賴於谷歌IP方式的末路,所以我網站到現在也沒有一篇和這幾種方式有關的教程和文章。

轉載自 https://www.dou-bi.co/sxsx-08/