透過瀏覽器所執行的JavaScript程式碼,使得駭客得以修改許多路由器的上層DNS伺服器設定。
對於想要發動網路釣魚(Phishing)的駭客來說,網域名稱系統(Domain Name System,DNS)可以說是一個很有價值的目標,因為一旦成功,就可以在很短的時間內,影響大量使用者瀏覽網路的安全,而除了架設於網路上的DNS伺服器之外,近年來也有研究結果指出,部署在閘道端,提供多種網路服務的路由器,也將可能成為新一波DNS攻擊的主要對象。
這類的威脅並非空想,最早在2008年的RSA大會,資安研究員Dan Kaminsky便提出,如何透過瀏覽器的漏洞攻擊路由器,使得駭客可以從遠端操作設備,或者強迫更新韌體。
而今年7月在美國召開的黑帽大會,任職於Seismic的Craig Heffner也利用相同的做法,以「How to Hack Millions of Routers」為題,說明數百萬臺家用路由器(IP分享器)可能遭受DNS重新綁定(DNS rebinding)這類由來已久的DNS攻擊,其目的是竄改路由器的上層DNS伺服器設定,讓使用者瀏覽正常網站的連線,轉向到偽冒的釣魚網站,當使用者透過網站的表單輸入資料,就會外流到駭客手中。
透過多重手法,成功入侵設備
Dan Kaminsky、Craig Heffner這2人是利用跨網站請求偽造(Cross-Site Request Forgery,CSRF)的方式,發動DNS重新綁定的攻擊,根據他實際測試數十臺家用路由器,並公布於Google Docs的結果,遭到攻陷的設備型號,其中也不乏知名品牌的產品。
想要攻擊路由器,首先駭客必須註冊一個用來偽冒正常網站的網域名稱,例如「www.g00gle.com」。另外還需要架設用來管理該網域的DNS伺服器,及放置假網頁、惡意程式碼的網頁伺服器。因此當原本要瀏覽Google網站的使用者不小心連結到此處時,內藏於網頁伺服器的程式就會在DNS伺服器,設定2筆指向test.g00gle.com特定網址的A記錄,其中第1筆指向的IP仍然是駭客架設的網頁伺服器,第2筆則是指向使用者一開始連結www.g00gle.com時,向網頁伺服器表明的訪問來源,也就是路由器的外部IP位址。
隨後,使用者所在的網頁會轉址到test.g00gle.com,此時DNS伺服器會根據該網址的正向查詢結果,將2筆A記錄都提供給使用者電腦的瀏覽器,當第1筆記錄指向的網頁內容在瀏覽器載入完畢之後,會發送出一個TCP reset訊息,使得瀏覽器更新網頁的動作完全停止。
因為先前接收到的TCP reset訊息,使得瀏覽器認定第1筆A記錄是無效的,於是開始執行第2筆的A記錄,同時透過瀏覽器執行惡意的JavaScript程式碼,由於網頁畫面不再更新,所以使用者完全不會查覺這個動作,在路由器密碼仍是預設值的情況下,就可以修改DNS伺服器的設定,指向駭客架設的站臺,此後便能透過上層DNS伺服器所給予的錯誤解析資料,讓使用者連接到釣魚網站,以DNS重新綁定的方式,達成盜取資料的目的。
網路安全專家李倫銓表示,「對於駭客來說,DNS重新綁定攻擊最有效率的做法,就是運作在色情網站這一類有很多人會去瀏覽的地方,如此一來才能提高使用者受駭的比例」。
路由器被入侵之後,所帶來的影響除了DNS設定被修改之外,也有可能被用來做為其他型式的網路攻擊,因此達友科技資深產品經理黃繼民便認為,「除了將木馬、網站惡意程式植入電腦,現在要以路由器做為殭屍電腦,發動攻擊的機率恐怕也很高」。
除了搭配路由器出貨的原廠韌體之外,像是可以運作在多款Linux-based路由器的第3方韌體DD-WRT、OpenWRT,及架設在x86平臺的FreeBSD-based軟體防火牆套件PFSense,也都被Craig Heffner發現可以用來發動DNS重新綁定攻擊。
修改預設密碼,就能避免攻擊
要避免這類型DNS重新綁定攻擊的做法,只要修改路由器的預設密碼,就可以達成目的,但這並不是造成Dan Kaminsky、Craig Heffner能夠成功入侵路由器的主要原因,除了一開始所提到的瀏覽器漏洞之外,另外一個原因,則是和路由器韌體撰寫時產生的邏輯漏洞有關。
對於路由器來說,由內而外的連線,預設是全部允許的,因此造成許多使用者,在沒有開放遠端管理功能的情況下,仍然可以在內部網路,使用路由器的外部IP位址連接網頁介面,許多工程師撰寫韌體時,並沒有注意到這點,以致於產生安全上的嚴重問題,因此除了仰賴使用者修改設定之外,廠商也必須提供新版的系統韌體,才能真正解決此一問題。
為了避免像這樣針對路由器而發動的自動攻擊,許多路由器的設定精靈操作時都會在一開始要求使用者修改預設密碼,只不過這樣的機制多半不是強制性的;另外,像是D-Link等網路設備廠商,會在網頁介面的登入首頁,加上隨機產生的圖片密碼驗證機制,它必須和管理者密碼同時輸入,才能登入設備,因此就算使用者不去變更預設帳號的密碼,也能減少設備被入侵的機率。
其實,不僅是家用端的路由器會遭受DNS的重新綁定攻擊,就連企業端等級的設備(例如防火牆)也有可能受害,不過一般來說,企業端的設備對於安全的控管比較嚴謹,加上設備上線時,修改預設密碼,幾乎已經成為網管人員的基本常識,因此使得受害的機率相對降低很多,黃繼民對此也表示,「就算是測試環境,很多企業也不允許使用預設密碼登入設備」。
另外,在一些大型企業的環境,有時會額外架設DHCP伺服器,因此不像中、小型的企業環境一樣,多半依賴路由器提供DNS解析的服務,就算路由器真的被包含DNS重新綁定在內的各種手法攻陷,也不會影響到個人端電腦的對外連線。
根據iThome以往對於企業端設備的測試經驗,像是Check Point的NGX防火牆,在安裝設備時即會強制要求企業重新設定一組管理者帳號,取代原本內建的預設帳號admin,而能夠連接到Smart Center主控臺的來源,也可以僅限於指定的少數IP位址,所以不會因為一般使用者誤入這類型的惡意網站,造成閘道端設備的DNS設定被任意修改;而前幾期報導過的Juniper SRX系列,對於管理介面的連線管制,可以做到僅有透過特定埠連線的使用者,才能登入設備進行管理。
儘管如此,企業對於這種家用端路由器所發動的攻擊,仍舊不能輕忽大意,這是因為很多企業,尤其像是個人工作室,及人數不多的小型企業,這一類少有網管人員編制的環境,也是採用這樣的設備提供網路連線的服務,在設備可能缺乏妥善設定,仍然使用預設密碼的情況下,就有可能受到攻擊。
利用套件漏洞,污染DNS快取
除了DNS重新綁定的攻擊之外,路由器韌體的套件漏洞,也有可能成為駭客發動DNS攻擊的門戶,例如Dnsmasq這個套件,就潛藏這樣的危機。
它的可怕之處在於,駭客並不需要得知登入設備的帳號密碼,只要漏洞存在,設備便會受害,駭客可以利用網域名稱系統快取中毒(DNS cache poisoning)的方式發動這項攻擊,透過DNS所使用的UDP 53埠,將錯誤的DNS解析回應傳送給路由器,達成竄改快取內容的目的。
由於所有的路由器,預設會擋掉外來的UDP 53埠連線,因此這類型的攻擊必須在內部網路的環境發動,駭客可以在個人端電腦植入惡意程式,使其成為殭屍電腦,在Dnsmasq有漏洞的情況下,設備就不會按照正常的做法,丟棄從內部私有IP位址所發出的DNS解析回應,反而會將其接收,成為DNS快取內容的一部分,於是當個人端電腦的瀏覽器向設備要求解析網址時,結果就會被錯置,被綁架連結到偽造的釣魚網站。
許多網路設備的Flash記憶體容量都很有限,沒有辦法內建我們一般所使用的套件,而在大多數的Linux-based網路設備身上,體積小巧的Dnsmasq是這一類嵌入式平臺極為常見的主流套件,而且不僅是家用端的設備,就連許多的企業端設備也用它提供DNS快取的服務,因此一旦發現這種漏洞時,受到影響的設備數量,甚至比Craig Heffner所宣稱的數百萬臺要更多。
根據一位不具名的受訪者向我們表示,其實這個問題並不難處理,對於廠商而言,除了更換新版套件之外,修改原有韌體的設定也可以解決問題,網路上也有現成的修正檔可供取用,只是大多數廠商對於舊型號的設備早已沒有更新韌體,最多僅是主動修補新型號的問題而己,因此要有效解決這個問題並不容易。
由於這類型的DNS攻擊必須迂迴進入內部網路才能發動,流程較為複雜,因此這位受訪者也坦白表示,直接針對路由器發動的可能性其實不高,比較可能的做法,是先攻擊網路上其他防禦較弱的DNS伺服器,最後再影響到路由器,另外,他也指出,「相較於網路上的DNS伺服器,路由器的DNS快取資料僅是短暫存放,因此發生的機率並不會比常見的ARP(Address Resolution Protocol)攻擊要來得高」。
DNS Security Extensions(DNSSEC)被視為是解決DNS快取中毒攻擊的徹底方式,目前正逐漸由最頂端的root伺服器而下推動,而除了DNS伺服器之外,網路設備未來也會支援這項技術,確保快取內容的正確性。
設定不當,造成門戶洞開
使用者的不當設定,也是造成路由器遭到DNS攻擊的原因之一。除了網頁介面,大多數的網路設備也有提供Telnet/SSH的文字介面,做為遠端管理的其他方式,當該介面被開啟,而又沒有變更過預設密碼的情形下,駭客就可以直接登入,改掉路由器的DNS等網路設定。
另外,當路由器連上網路時,駭客可以很輕易地透過網頁介面所使用的TCP 80埠,或者是443埠,試圖登入設備,就算是你已經修改過密碼,但是仍有可能遭到突破, 屆時一樣是門戶洞開。
由於大多數的網路設備都是在Linux-based上開發,因此只要可以透過這種方式登入設備,就等於掌控了一臺Linux工作站,對於熟悉Unix操作的人來說,不僅可以變更DNS設定,也可以發動更多不同型式的攻擊,或者將其變成攻擊內部其他主機的跳板。
發動DNS重新綁定攻擊路由器的6個步驟
透過6個簡短的步驟,駭客可以在極短的時間內以攻擊路由器的方式綁架使用者的網路連線,由於瀏覽器畫面始終顯示一般的正常網頁,因此很難察覺。
●使用者連接駭客架設的網頁伺服器。
●利用程式在DNS伺服器加入2筆A記錄。
●將A記錄傳送給瀏覽器,瀏覽器畫面開始轉址。
●傳送TCP reset訊息給瀏覽器終止連線,
●開始執行第2筆A記錄
●利用JavaScript,修改路由器的上層DNS設定。
關鍵字
TCP reset
透過這項訊息,可以用來重置TCP/IP的連線,而這項設定位於封包的表頭當中,預設值是沒有作用的0,但如果為1的情況下,就可以切斷連線,因此經常被許多駭客用來發動惡意攻擊。
Dnsmasq
Dnsmasq是Simon Kelley所開發的免費套件,主要功能為提供DNS快取,及DHCP伺服器的服務,2.55是它的最新版本。
該套件可以安裝於Linux、BSD,乃至於Mac OS一類的Unix-based平臺,相較於BIND等傳統使用的伺服器套件,它的體積要輕巧許多,對於硬體資源有限的Linux-based嵌入式平臺,像是路由器等網路設備來說便很適用,不僅如此,其設定也很簡便。
從內部網路污染路由器DNS快取的步驟
由於套件存在的漏洞,儲存於路由器內部的DNS快取也有可能成為受攻擊的對象,使得網路連線被錯置到釣魚網站。
●將惡意程式植入個人端電腦。
●開始向路由器傳送錯誤的DNS解析回應傳送給路由器,替代原本正常的快取內容。
●污染成功之後,當使用者下一次連結同一網址,就會轉向到釣魚網站。
DNS快取中毒
和DNS重新綁定攻擊一樣,DNS快取中毒也是傳統DNS攻擊手法的一種,以現有主要的DNS伺服器套件來說,大多都有針對這項攻擊提供解決方式。
像是微軟的伺服器作業系統平臺,在Windows Server 2003版本之後的DNS伺服器進階設定,就有一項叫做「保護快取以防侵害」的功能,可以避免架設於內部,也就是Windows AD網域環境下的DNS伺服器快取遭到竄改。
這項功能預設就已經啟用(Windows 2000亦支援這項功能,但需要修改機碼設定才能啟用)。
而在Unix-based平臺廣為使用的BIND(Berkeley Internet Name Domain),其做法是要求使用者以更新版本的方式修補這項漏洞。
在Windows Server 2003的DNS伺服器設定選項中,就有提供相關保護的功能,可以使得2臺DNS伺服器能夠在相互信任的情況下,傳送快取資料。
哪些路由器版本有問題?
在Craig Heffner的測試中,超過一半的平臺被證實能用來發動DNS重新綁定攻擊。
熱門新聞
2024-12-24
2024-12-22
2024-08-14
2024-12-20
2024-11-29