智慧路由器安全特性分析

wyzsk發表於2020-08-19
作者: 騰訊安全中心 · 2015/07/21 14:09

博文作者:zhuliang

0x00 前言


隨著網際網路的發展,越來越多公司推出了智慧路由器,這些智慧路由器給使用者帶來了眾多便利的功能,同時也採用了一些傳統路由器不具備的安全特性,本文在簡要分析下這些安全特性,供相關技術人員參考。

0x01 概述


傳統路由器有意或無意地使用了種種不安全的特性,如預留後門,這些後門原本是為了現場除錯方便,但是也開放了駭客進入的通道。又比如某些路由器WPS(Wi-Fi Protected Setup)的PIN碼是可以根據路由器MAC地址推匯出來的,這使得即使使用者設定了複雜的WiFi密碼,駭客也可以輕易破解進而滲透。另外,大部分路由器在韌體更新時都沒進行簽名校驗,這使得駭客可以透過韌體更新來植入木馬,進而永久控制使用者的路由器……等等這些不安全特性,是導致使用者隱私洩露和財產損失的幫兇。 在這樣的背景下,智慧路由器採用了一些安全特性,特別值得讚賞。

0x02 安全特性


下面以路由器生產商為單位,介紹其採用的安全特性及其安全特性帶來的好處。只做純技術的探討,不涉及其他。

0x03 360安全路由器


現場除錯介面RSA-1024加密和校驗

路由器生產商為了在排錯或除錯時能直接得到rootshell,通常會在路由器上預留後門,參考https://github.com/elvanderb/TCP-32764/http://www.cnvd.org.cn/flaw/show/CNVD-2013-15013,這些後門能為生產商所用,也能被駭客所利用。特別是能遠端利用的後門,駭客能遠端獲得路由器的所有許可權,配合其它攻擊能造成使用者財產上的損失。

360的C301路由器是這樣做的:公鑰/etc/defdata/debug_telnet.pub.key存在於路由器的韌體裡,生產廠商用與debug_telnet.pub.key對應的私鑰加密特定隨身碟的序列號,並把加密結果存放到該隨身碟根目錄下的telnet.boot檔案中,向C301路由器的USB介面插入該隨身碟,後臺自動執行如下的命令列,也就是啟動telnet的服務端:

#!bash
/usr/sbin/telnetd -l/usr/sbin/login -u 360user:alpha360 -i br0 &

見程式debug_telnet如下程式碼:

enter image description here

enter image description here

telnet服務端啟動後,只要telnet路由器的ip地址再輸入使用者名稱和密碼(360useralpha360)便可以獲得root shell

不難看出,要獲得路由器的root shell有兩個條件,一是要插入隨身碟,這要求能接觸到路由器,同時也防止了遠端利用;二是隨身碟根目錄下的telnet.boot檔案必須是用私鑰加密隨身碟序列號的結果,而私鑰掌握在生產商手中,駭客不能輕易獲取到。

公鑰的詳情如下圖所示:

enter image description here

總的來說,C301路由器採用非對稱加密實現既能得到路由器的root許可權,又能防止駭客獲得root許可權,相對於預留後門的做法,表現出值得傳統路由器學習之處。

韌體更新簽名校驗

C301路由器的韌體採用了AES加密,解密後的韌體裡含有對該韌體的簽名,韌體更新時會先進行簽名校驗,校驗不透過則認為韌體是篡改過的,從而拒絕韌體更新。

0x04 小米路由器


韌體更新簽名校驗

小米路由器進行韌體更新時同樣會進行簽名校驗,檔案/usr/share/xiaoqiang/public.pem是它的公鑰,用來校驗簽名正確與否。正因為這樣,駭客如果想在不拆機的前提下刷入已植入木馬的韌體,只有兩條路可走,一是透過入侵、社工或破解得到對應的私鑰,然後對修改後的韌體進行簽名再刷入;二是透過漏洞,挖掘新的漏洞或者刷入有漏洞的舊版韌體,然後再透過漏洞利用得到root shell進而刷入任意韌體。一般來講,第一條路是很難的,而為了堵住第二條路,可以透過限制降級來實現。

由此可見,在限制降級的前提下,在韌體更新時進行簽名校驗,能有效地防止路由器被植入木馬。

0x05 極路由


韌體更新Hash校驗

極路由進行韌體升級的時候同樣會進行校驗,只不過是進行MD5的HASH檢驗,而不是用非對稱演算法來校驗,雖然它下載韌體時,用的是HTTP下載,可被劫持,但是韌體的HASH資訊是透過HTTPS來傳輸的,可保證安全,韌體下載後會驗證MD5值是否匹配,不匹配則不升級。這樣只要保證升級伺服器不被入侵就能保證刷入的韌體是官方的。

韌體升級時的校驗被多次提到是因為它很重要。因為如果路由器被駭客透過管理介面刷入了被植馬的韌體,那麼駭客就擁有了所有的許可權,這樣,我們平常教育使用者使用複雜密碼所付出的努力便付諸東流,不管設定多麼複雜的密碼、怎麼經常修改密碼駭客都可以透過木馬獲取到。

配置資訊加密儲存

極路由如mac地址、fac_uuid等配置資訊是用DES演算法加密後存在路由器的NOR FLASH上的,相對於傳統路由器直接明文儲存的,在有root shell的許可權後,便可輕易得到WiFi密碼、Web登入密碼等敏感資訊,加密儲存在一定程度上提高了門檻。

WPS功能關閉

極路由是不提供WPS功能的,這樣可以防止駭客透過WPS的PIN碼破解,從而得到WiFi的WPA密碼入侵。非要提供WPS功能的話,也應該做到下面兩點,一是啟用WPS防護,二是預設的PIN碼要隨機,不能推匯出來。http://www.devttys0.com/2014/10/reversing-d-links-wps-pin-algorithm/和http://www.devttys0.com/2015/04/reversing-belkins-wps-pin-algorithm/就是兩個反面例子,因為使用者一般不會去修改預設的PIN碼的,駭客只要根據MAC地址推匯出PIN碼後,便可以輕易破解出WiFi密碼,不管密碼有多複雜。

0x07 總結


儘管智慧路由器在安全方面還有很大改進的空間,它所採用的安全特性,值得傳統路由器生產商學習。

安全設計

為了保護使用者的安全和防止使用者因駭客入侵而造成損失,筆者認為,路由器廠商可以參考以下的安全設計規範。

enter image description here

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章