作為《DNS攻擊防范科普系列》的最后一篇,今天我們來好好聊聊DNS劫持。先回顧一下DNS劫持的概念?DNS劫持即通過某種技術手段,篡改正確域名和IP地址的映射關系,使得域名映射到了錯誤的IP地址,因此可以認為DNS劫持是一種DNS重定向攻擊。DNS劫持通常可被用作域名欺詐,如在用戶訪問網頁時顯示額外的信息來賺取收入等;也可被用作網絡釣魚,如顯示用戶訪問的虛假網站版本并非法竊取用戶的個人信息。
那DNS劫持到底有多大的危害呢?我們來看兩個真實的大事件:
DNS劫持大事記
事件1、《AWS route53 BGP路由泄漏事件》
? 事件危害:據不完全統計,DNS劫持導致兩個小時內有多個用戶的以太坊錢包被轉賬清空,共計至少13000美元的資產被黑客盜取。
? 事件還原: 事件發生在2018年4月24日。黑客針對四段分配給AWS,本應作為AWS route53 DNS服務器服務地址的IP空間(205.251.192.0/23, 205.251.194.0/23, 205.251.196.0/23, 205.251.198.0/23)發布了虛假的BGP路由,導致在BGP泄漏的兩個小時期間,本應該AWS route53 DNS服務器的DNS查詢都被重定向到了黑客的惡意DNS服務器。且黑客DNS劫持的目標十分明確,惡意DNS服務器只響應對myetherwallet.com的查詢,其他域名的查詢均返回SERVFAIL。一旦用戶沒有注意“網站不安全”的提示而訪問myetherwallet.com登錄自己的以太坊錢包,黑客就可以輕易獲取用戶的私鑰進而竊取用戶的數字貨幣資產。正常情況的DNS,和劫持后的DNS的情況,請參考如下攻擊示意圖(來自cloudflare博客):
正常情況:
BGP泄漏后:
事件2、《巴西銀行釣魚事件》
? 事件危害:黑客誘導原本想訪問正常銀行網站的受害者訪問到釣魚網站,并惡意竊取受害者的銀行賬目密碼信息。
? 事件還原:事件發生在2018年。黑客利用D-Link路由器的漏洞,入侵了至少500個家用路由器。黑客入侵后更改受害者路由器上的DNS配置,將受害者的DNS請求重定向到黑客自己搭建的惡意DNS服務器上。黑客入侵后更改受害者路由器上的DNS配置,將受害者的DNS請求重定向到黑客自己搭建的惡意DNS服務器上,最終誘導原本想訪問正常銀行網站的受害者訪問到釣魚網站,并惡意竊取受害者的銀行賬目密碼信息。
上面兩個案例都是觸目驚心啊。接下來我們來介紹一下黑客們是怎么做到DNS劫持的?
DNS解析原理
介紹劫持原理前,你需要先了解典型的DNS解析流程。
客戶端發起遞歸DNS請求,本地遞歸DNS(大多數情況下為運營商DNS)或者公共DNS通過迭代查詢請求多級的DNS權威服務器,并最終將查詢結果返回給客戶端。可以看到,一次完整的DNS查詢:
• 鏈路長。查詢過程包含多次,多級的網絡通信。
• 參與角色多。查詢過程涉及客戶端,DNS遞歸服務器,權威服務器等角色。 在一次完整DNS查詢鏈路的各個環節,其實都有可能被DNS劫持,下面的章節會逐一分析各種類型的DNS劫持。
DNS劫持分類
我們按照客戶端側--遞歸DNS服務器--權威DNS服務器的路徑,將DNS劫持做如下分類:
【一、本地DNS劫持】
客戶端側發生的DNS劫持統稱為本地DNS劫持。本地DNS劫持可能是:
- 黑客通過木馬病毒或者惡意程序入侵PC,篡改DNS配置(hosts文件,DNS服務器地址,DNS緩存等)。
- 黑客利用路由器漏洞或者破擊路由器管理賬號入侵路由器并且篡改DNS配置。
- 一些企業代理設備(如Cisco Umbrella intelligent proxy)針對企業內部場景對一些特定的域名做DNS劫持解析為指定的結果。
【二、DNS解析路徑劫持】
DNS解析過程中發生在客戶端和DNS服務器網絡通信時的DNS劫持統一歸類為DNS解析路徑劫持。通過對DNS解析報文在查詢階段的劫持路徑進行劃分,又可以將DNS解析路徑劫持劃分為如下三類:
• DNS請求轉發
通過技術手段(中間盒子,軟件等)將DNS流量重定向到其他DNS服務器。
案例:
圖片來自《巫俊峰, 沈瀚. 基于旁路搶答機制的異網DNS管控實踐. 電信技術[J]》
• DNS請求復制
利用分光等設備將DNS查詢復制到網絡設備,并先于正常應答返回DNS劫持的結果。
案例:一個DNS查詢抓包返回兩個不同的應答。
• DNS請求代答
網絡設備或者軟件直接代替DNS服務器對DNS查詢進行應答。
案例:一些DNS服務器實現了SERVFAIL重寫和NXDOMAIN重寫的功能。
【三、篡改DNS權威記錄】
篡改DNS權威記錄 我們這里指的黑客非法入侵DNS權威記錄管理賬號,直接修改DNS記錄的行為。
案例:
黑客黑入域名的管理賬戶,篡改DNS權威記錄指向自己的惡意服務器以實現DNS劫持。
黑客黑入域名的上級注冊局管理賬戶,篡改域名的NS授權記錄,將域名授權給黑客自己搭建的惡意DNS服務器以實現DNS劫持。
黑客黑入域名的上級注冊局管理賬戶,篡改域名的NS授權記錄,將域名授權給黑客自己搭建的惡意DNS服務器以實現DNS劫持。(以上參考fireeye博客)
DNS劫持應對策略
DNS劫持在互聯網中似乎已經變成了家常便飯,那么該如何應對各種層出不窮的DNS劫持呢?如果懷疑自己遇到了DNS劫持,首先要做的事情就是要確認問題。
如何確認DNS劫持
查看路由器DNS配置是否被篡改。
可以使用一些全網撥測的工具確認DNS劫持和其影響范圍。在此隆重介紹一下,阿里的DNS域名檢測工具于國慶后已經正式上線,地址是:https://zijian.aliyun.com/#/domainDetect
通過工具查看回復DNS應答的DNS服務器,確認DNS解析是否被重定向。
• whatismydnsresolver http://whatismydnsresolver.com/
移動端可以安裝一些DNS相關的測試工具進行排查:
• Android/ target=_blank class=infotextkey>安卓 ping & dns
• IOS IOS iNetTools
DNS劫持防范
• 安裝殺毒軟件,防御木馬病毒和惡意軟件;定期修改路由器管理賬號密碼和更新固件。
• 選擇安全技術實力過硬的域名注冊商,并且給自己的域名權威數據上鎖,防止域名權威數據被篡改。
• 選擇支持DNSSEC的域名解析服務商,并且給自己的域名實施DNSSEC。DNSSEC能夠保證遞歸DNS服務器和權威DNS服務器之間的通信不被篡改。阿里云DNS作為一家專業的DNS解析服務廠商,一直在不斷完善打磨產品功能,DNSSEC功能已經在開發中,不日就會上線發布。
• 在客戶端和遞歸DNS服務器通信的最后一英里使用DNS加密技術,如DNS-over-TLS,DNS-over-HTTPS等。
作者:kimi_nyn