【Java核心面試寶典】Day20、如何進行DNS劫持并預防?
Hello,你好呀,我是灰小猿!一個超會寫bug的程序猿!
用堅持締造技術、用指尖敲動未來!
和很多小伙伴們一樣,我也是一名奔波在Java道路上的“創造者”。也想靠技術來改未來,改變世界!因為我們堅信每一次敲動鍵盤都能讓生活變得更智能、世界變得更有趣!
在此專欄《Java核心面試寶典》記錄我們備戰夢想的【day 20】!
DNS大家都聽說過吧?但是你知道他們的具體查詢方式以及如何實現劫持嗎?
一、說一下DNS域名解析查詢的兩種方式?
(1)遞歸查詢: 如果主機所詢問的本地域名服務器不知道被查詢域名的IP地址,那么本地域名服務器就以DNS客戶端的身份,向其他根域名服務器繼續發出查詢請求報文,即代替主機繼續查詢,而不是讓主機查詢。
(2)迭代查詢: 當根域名服務器收到本地域名服務器發出的迭代查詢請求報文時,要么給出所要查詢的IP地址,要么告訴本地域名服務器下一步應該找哪個域名服務器進行查詢。然后讓本地服務器進行后續查詢。
IP地址的查詢過程如下:
二、DNS使用什么傳輸協議?
DNS既使用TCP協議又使用UDP協議。
當進行區域傳送(主域名服務器向輔助域名服務器傳送變化的那部分數據)的時候會使用TCP協議,因為數據同步傳輸的數據量比一個請求和應答的數據量更多,而TCP允許的報文長度更長,因此為了保證數據的正確性,會使用基于可靠連接的TCP。
當客戶端向服務器查詢域名(域名解析)的時候,一般返回的內容不會超過UDP報文的最大長度,即512字節。同時用UDP傳輸時不需要經過TCP的三次握手,大大的提高了響應速度。但是這也要求域名解析器和域名服務器能夠自己解決超時和重傳,從而保證可靠性。
三、如何實現DNS劫持?
DNS 劫持即域名劫持,是通過將原域名對應的 IP 地址進行替換從而使得用戶訪問到錯誤的網站或者使得用戶無法正常訪問網站的一種攻擊方式。域名劫持往往只能在特定的網絡范圍內進行,范圍外的 DNS 服務器能夠返回正常的 IP 地址。攻擊者可以冒充原域名所屬機構,通過電子郵件的方式修改組織機構的域名注冊信息,或者將域名轉讓給其它組織,并將新的域名信息保存在所指定的 DNS 服務器中,從而使得用戶無法通過對原域名進行解析來訪問目的網址。
具體實施步驟如下:
獲取要劫持的域名信息:攻擊者首先會訪問域名查詢站點查詢要劫持的域名信息。
控制域名相應的 e-mail賬號:在獲取到域名信息后,攻擊者通過暴力破解或者專門的方法破解公司注冊域名時使用的 e-mail賬號所對應的密碼。更高級的攻擊者甚至能夠直接對 e-mail 進行信息竊取。
修改注冊信息:當攻擊者破解了 e-mail后,會利用相關的更改功能修改該域名的注冊信息,包括域名擁有者信息,DNS 服務器信息等。
使用e-mail收發確認函:在修改完注冊信息后,攻擊者在 e-mail真正擁有者之前收到修改域名注冊信息的相關確認信息,并回復確認修改文件,待網絡公司恢復已成功修改信件后,攻擊者便成功完成 DNS 劫持。
四、追問:用戶端有哪些預防手段?
直接通過 IP 地址訪問網站,避開 DNS 劫持。
由于域名劫持往往只能在特定的網絡范圍內進行,因此一些高級用戶可以通過網絡設置讓 DNS指向正常的域名服務器以實現對目的網址的正常訪問,例如將計算機首選 DNS 服務器的地址固定為 8.8.8.8。
今日總結
今天主要就是要了解DNS域名解析的過程,了解所使用的傳輸協議,了解如何進行DNS劫持,,以及如何避免和預防等。
如果小伙伴們有遇到其他相關的面試題,歡迎在評論區留言提出,我會把大家提出的總結到文章內, 歡迎小伙伴們一起評論區打卡學習!小伙伴們可也在左方加我好友一起探討學習!
我是灰小猿,我們下期見!
DNS Java 域名注冊服務
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。