為了提高工程檔案的利用率,公司決定對檔案這邊庫存的工程底圖進行數字化,數字化后的電子圖會掛接到掃描圖管理系統中,以便設計人員查詢和利用。在使用這個掃描圖管理系統的過程中,我們選用了360安全瀏覽器,結果在使用系統的在線瀏覽功能進行前后翻頁的時候,出現了瀏覽器會自動跳轉到某個特定的體育網站(310pe.com)的情況。但用殺毒軟件對服務器和客戶端進行查殺,并未發現任何木馬或病毒,對系統源代碼進行檢查,也未發現植入了那個體育網站。最后通過修改服務器和客戶端的Host文件后,問題才得到完美解決。
當這次事件發生時,本以為是和“DNS劫持”有關,于是選擇了對付“DNS劫持”的方法,但效果很不理想,反反復復多次后,還是無法徹底解決。最后,筆者查閱了相關資料才發現,此事件實際上是一次“DNS污染”,而非“DNS劫持”。
DNS是計算機域名系統或域名解析服務器(Domain Name Server或Domain Name System)的縮寫。
DNS的作用打個比方說:當你在地址欄輸入 www.baidu.com 時,電腦不是直接就連接到百度服務器里的,而是先向DNS服務器查詢www.baidu.com的IP地址,然后再按照這個IP地址轉到百度的服務器里。一般每個地區都會有一個特定的DNS服務器,是由ISP提供的,想知道自己地區DNS的話,可以去咨詢自己的網絡服務提供商。
DNS劫持就是通過某些手段取得某域名的解析記錄控制權,進而修改此域名的解析結果,導致對該域名的訪問由原IP地址轉入到修改后的指定IP,其結果就是對特定的網址不能訪問或訪問的是假網址,從而實現竊取資料或者破壞原有正常服務的目的。
DNS劫持通過篡改DNS服務器上的數據、返回給用戶一個錯誤的查詢結果來實現。
DNS被劫持后的表現有很多,例如:打開正常網站的時候,會莫名出現一些彈窗廣告;點擊下載鏈接,下載的并不是所需要的東西;瀏覽器輸入一個網址后回車網頁跳轉到其他網址的頁面。這樣的網址,有時甚至會劫持購物網站的鏈接,導致打開虛假網站,泄露個人隱私、威脅個人財產安全等。
DNS污染是一種讓用戶由于得到虛假目標主機IP而導致不能與真正主機通信的方法,DNS受污染的途徑主要有兩種:
一是攻擊者監測到DNS查詢的請求報文時,偽裝成DNS服務器向發出請求主機發送響應報文。因為DNS報文通常是無連接的UDP報文,沒有確認機制,源主機不能識別出這個報文并非出自DNS服務器。攻擊者并不需要丟棄真正DNS服務器發回來的響應報文,因為DNS的機制會導致源主機只接受最先到達的響應報文(甚至不管是誰發的)而忽略后繼到達的其他報文。這樣,源主機得到的就是攻擊者偽造的域名解析結果。DNS污染是發生在用戶請求的第一步上,直接從協議上對用戶的DNS請求進行干擾。目前一些被禁止訪問的網站很多就是通過DNS污染來實現的。
二是本地DNS服務器的緩存已受到污染,里面緩存的是錯誤的結果。DNS服務器通常將DNS查詢的結果緩存在本地一段時間,這本意是為了減少重復DNS查詢,從而降低DNS報文占用的網絡帶寬,可如果某次DNS查詢的結果受到污染,則后繼一段時間內向該DNS服務器查詢的結果都會受到污染。

圖1 正常的DNS返回值
我們可以在命令行下,通過下面這樣的命令來驗證是否受到了“DNS污染”:nslookup144.223.234.234,即可判斷該域名是否被污染,由于144.223.234.234不存在,理應沒有任何返回,如圖1所示。但如果我們得到了一個錯誤的IP(不確定),即可證明已經被DNS污染了。
1.對于DNS劫持,只需要把系統的DNS設置手動切換為國外的DNS服務器的IP地址即可解決。
2.對 于DNS污 染,可以說,個人用戶很難單靠設置解決,通常可以使用VPN或者域名遠程解析的方法解決,但這大多需要購買付費的VPN上網或使用各種SSH加密代理進行遠程DNS解析等。如果你只是某瀏覽器的用戶,又懶得折騰,可以直接打開此瀏覽器的遠程DNS解析就行了。在地址欄中輸入:

當然,我們也可以通過修改Hosts的方法來解決。操作系統中Hosts文件的權限優先級高于DNS服務器,操作系統在訪問某個域名時,會先查詢Hosts文件,然后再查詢DNS服務器,我們可以在Hosts屏蔽受到污染的DNS地址來解決DNS污染,或手動設置域名對應的正確IP地址。
其中幾個Hosts里可屏蔽的地址,復制到本地的host文 件(如 Windows 7 X64中,Host文 件 路 徑 為“C:WindowsSystem32driversetc”)保存即可。
“DNS劫持”和“DNS污染”,在我們的日常工作、生活中都可能會遇到。由于“兩兄弟”長得比較像,我們很容易弄混淆,在進行處理的時候容易犯“張冠李戴”的錯誤,時間耗費了、問題卻沒解決。通過本文的探討,希望能讓大家重新認識它們,并選擇合適的方法來解決問題。