李建春,謝瑞云,張旭博
隨著物聯網、云計算等新一代信息技術的發展,互聯網的規模和應用場景不斷擴大和延伸。作為網絡通信中的中轉節點和傳輸媒介,路由器應用日趨廣泛。它的安全性、健壯性決定了整個網絡的安全性和可靠性。
由于路由器在網絡通信中至關重要的地位和日益增長的數量,使得路由交換設備的安全性問題受到越來越多的關注。因此,借助管理手段,加強對路由器的安全管理變得尤為重要。在家用路由器中,一般采用web管理接口登錄的方式登錄管理路由器。這種方式方便快捷、便于操作,但背后存在著較大的安全隱患。攻擊者利用路由器系統中存在的漏洞及后門,可以獲得路由器的管理權限,對網絡安全造成了極大威脅。
本文提出了一種基于固件分析的路由器web頁面評估技術,并利用此方法分析了D-link系列路由器web頁面漏洞。
路由器作為網絡層的一種互聯設備,是網絡中信息傳遞的中樞,在網絡通信中扮演著至關重要的作用。為了維護網絡中路由設備的正常運作,網絡管理員經常需要通過各種方式登錄路由器進行相關配置和管理。
登錄管理路由器一般有以下5種方式[1],其特點如表1所示:

表1 路由器登錄管理方式對比
(1)使用串口管理路由器。通過路由器的console口,直接將路由器與計算機的串口相連,在計算機上運行終端仿真軟件(例:windows操作系統的超級終端)登錄路由器,采用命令行的方式對路由器進行管理。
(2)使用Telnet方式管理路由器。通過網絡,利用路由器對Telnet服務的支持,在已知路由器接口IP地址的情況下,使用遠程登錄方式訪問路由器。
(3)使用SSH方式管理路由器。Telnet因為采用明文發送口令和數據,存在安全隱患,容易被人截獲。很多網絡設備都不開放Telnet服務,而改用更安全的SSH方式。SSH是建立在應用層和傳輸層基礎上的安全協議,使用了多種加密和認證方式,解決了傳輸數據加密和身份認證的問題,以保證遠程登錄管理路由器的安全。
(4)通過專門的網絡設備管理軟件管理路由器。一些大型路由器廠商為管理特定設備而開發和實現專門管理程序來管理設備。這種方式能夠最有效地管理特定的網絡設備。
(5)使用web方式管理路由器。通過網絡,利用路由器對Http服務的支持,使用瀏覽器登錄到web用戶界面管理路由器。
在路由器中,使用嵌入式web服務器實現設備圖形化界面的遠程登錄和管理。web服務器工作流程,如圖1所示。路由器內嵌的web服務器,具有界面友好、操作方便的特點。但是,便捷的背后卻存在較大的安全隱患[2]。

圖1 嵌入式web服務器工作流程
通過流程分析可知,web方式登錄管理路由設備的安全威脅主要來自于兩方面:
(1)Http認證過程。Http認證通過明文方式實現且是基于一次性的口令保護,容易在傳輸過程中被監聽截獲。即使采用Https服務代替非加密的Http,為web服務器與HTML瀏覽器提供一個安全傳輸通道,也可通過某些降解方式被監聽。
(2)路由器系統漏洞及后門。目前,路由設備的安全狀況不容樂觀,主要威脅來自于層出不窮的安全漏洞和后門。路由器發展到現在,其固件代碼的安全性并沒有像普通計算機。智能手機發展迅速,一些漏洞利用緩沖機制如NX、alsr、stackcanary等,沒有在路由器中大規模啟用,使得路由器的漏洞利用變得非常簡單。利用路由器的漏洞及后門,攻擊者可以獲取路由器的控制權限,從而監聽、截獲及修改經過該設備的所有用戶數據,通過篡改路由器關鍵配置參數,進行網絡劫持和網絡釣魚攻擊,嚴重威脅個人用戶和企業單位的數據安全。攻擊者甚至可以利用大量被劫持的設備對整個網絡發起DDoS攻擊,從而威脅整個網絡的安全。
為了分析路由器web漏洞,常見的路由器評估方法有三種,即黑盒分析、白盒分析和灰盒分析[3]。
白盒分析。從代碼級別(可能是反匯編代碼、
反編譯的偽代碼或源代碼),通過動態調試或靜態反匯編,分析和理解程序的功能、邏輯,找到程序的安全問題等。
黑盒分析。從程序的外部,通過觀察程序運行時的行為、規則等,猜測和斷定程序可能的實現方法,從而判斷是否存在脆弱點等。
灰盒分析。借助一些專有工具(可能需要自己編寫),如api監視工具、陷阱工具、內存比較工具、文件監視工具等,對目標程序進行監控,看其發生了什么操作、調用了哪些api、產生了哪些結果、在系統哪些地方安插了HOOK或過濾等,以此猜測和斷定程序可能的實現細節
本文提出的分析方法是基于白盒分析的一種方法。
基于固件分析的路由器安全評估技術,在沒有源代碼的情況下,通過對固件進行分析,獲取web應用程序;對程序的行為、數據流進行分析,獲取程序的功能、流程、規則及技術實現細節等。利用該技術,可實現對web功能的安全評估,并可對其進行優化、功能增強和漏洞填補等,其中主要包含兩項技術。
動態調試。通過調試器對固件中的web應用程序進行追蹤分析,清楚了解程序運行后的內部狀態、運算結果等信息。
靜態反匯編/反編譯工具。把程序變為可讀的匯編代碼或偽代碼,然后分析程序的結構、流程和邏輯等。
路由器固件分析是指通過對固化在設備文件系統中可執行程序進行解析從而獲取設備的運行機制和功能實現過程,有助于檢測設備中隱藏的安全漏洞,從而提高設備的安全性。固件分析流程如圖2所示。

圖2 路由器固件分析流程
(1)固件獲取。固件獲取通常采用兩種方式,一種是從路由器廠商提供的官方直接下載,本文所使用的D-link系列路由器固件就是通過這種方式獲取。二是針對其他無法從官網上直接下載的固件,采用以硬件接入的方式,通過UART串口,直接從路由器閃存中獲取。
(2)固件解包及文件系統提取。文件系統中包含路由器實現各種功能所依賴的全部可執行程序和配置文件信息。這些信息對路由器固件的分析至關重要。然而,不同的路由器所使用的文件系統格式和文件系統的壓縮算法不盡相同,增加了文件系統提取的難度。文件系統提取一般采取兩種方式——手動提取和自動提取。自動提取是使用Binwalk這一全自動固件分析實現文件系統的提取[4]。Binwalk工具能夠自動識別固件中所包含的所有可識別的文件類型,然后遞歸提取。相比于手動提取方式,簡單地使用file命令識別文件類型。Binwalk利用libmagic動態庫獲取所有幻數簽名列表,分段掃描路由器固件文件的內存鏡像,并對比列表判斷每一段是否含有文件幻數標識,最后根據記錄的偏移量確定固件文件布局,具體算法流程如圖3所示。

圖3 Binwalk算法流程
(3)可執行程序分析。在提取出固件的文件系統后,得到了一系列可執行程序和配置文件信息。隨后,可以采用動態或靜態的方式對這些可執行程序進行分析。路由設備固件中,可執行程序一般是編譯后的二進制代碼。通過使用ida反編譯工具對可執行代碼進行反匯編。因為一般家用路由器采用的是MIPS架構,所以可以得到相應的MIPS匯編代碼,然后解析匯編代碼,可生成函數之間的調用關系圖和函數內部的控制流圖。對控制流圖中MIPS指令進行語法分析和程序指令的語義分析,即可解析出程序中各函數的功能和執行過程。
從D-link官網獲取DIR-100型路由器固件,使用Binwalk工具提取出固件的文件系統,提取過程
及結果如圖4所示。據圖4結果顯示,成功從固件中提取出了Squashfs文件系統——squashfsroot。Squashfs是一種只讀格式的文件系統,因其較高的壓縮率,被多種網絡設備所采用。

圖4 DIR-100型路由器文件系統提取過程及結果
在提取的文件系統中,可以發現許多實現路由器各種功能的可執行程序。其中,webs程序作為控制路由器web頁面登錄的可執行程序尤其引人關注。運用IDA工具對webs程序進行反匯編,得到了webs中各函數的調用關系圖,發現了一個與登錄驗證相關的自定義函數alpha_auth_check,其調用關系如圖5所示。
通過對alpha_auth_check函數控制流圖(如圖6所示)中的MIPS指令進行進一步分析,得出該函數從自定義函數alpha_httpd_parse_request中接收一個參數。

圖5 登錄驗證相關函數調用關系

圖6 alpha_auth_check函數控制流程
它是一個指向一個數據結構體的指針,里面有一個字符串指針,會指向從Http請求里接收到的各種數據,如Http頭信息和請求地址URL,參數存儲在寄存器$s2中;然后再將接收到的參數進行字符串strcmp比較操作,調用check_login函數,實際上就是身份驗證檢查。如果一旦有字符串比較成功或check_login成功,它會返回1;否則,它會重定向瀏覽器到登錄頁,返回-1。因此,如果字符串比較成功,就能夠跳過身份驗證直接登錄到路由器的web頁面。
按照2.2中所述流程,分別提取出D-link系列DI-524UP、DI-604+、DI-604UP及 TM-G5240等幾款路由器多型固件版本文件系統。發現各型固件文件系統中都是由可執行程序webs提供路由器管理員界面操作功能。將webs程序二進制文件加載到IDA中進行分析,得到可執行程序中各功能函數調用關系圖。它與3.1中DIR-100型路由器webs程序函數調用圖類似,認證功能都是由自定義函數alpha_auth_check實現的。
在深入分析各型路由器較早版本固件中alpha_auth_check函數控制流圖后發現,在調用后續函數進行身份認證前,都會從自定義函數alpha_httpd_parse_reques中接收到的參數同固定字符串“xmlset_roodkcableoj28840ybtide”做字符串比較操作,比較操作控制流程如圖7所示。如果比對成功,將會跳過接下來的身份認證過程直接登錄到路由器web管理界面。

圖7 D-link系列路由器特殊字符串比較過程
在對D-link系列路由器不同型號固件對比分析的基礎上,針對各型路由器不同版本固件進行對比分析,分析結果如表2所示。

表2 D-link系列各型路由器固件對比
從表2的對比結果可以發現,更新前后的固件差異主要體現在兩方面。一方面是新固件自定義認證函數中沒有Http頭信息、請求地址URL等參數傳遞,另一方面新固件中也沒有特殊字符串的比較過程。
如圖8所示,一方面在alpha_httpd_parse_request函數跳轉到alpha_auth_check的過程,老版本固件中可以看到alpha_auth_check函數接收了一個參數。它是一個指向一個數據結構體的指針,里面有一個char*指針會指向從Http請求中接收到的各種數據。比如,Http頭信息和請求地址URL,參數存儲在寄存器$s2中。此處,最大的區別在于更新后的固件在跳轉過程中沒有包含Http頭信息和請求地址URL信息的參數傳遞到alpha_auth_check函數,即Http頭信息、請求地址URL等信息不再作為校驗的依據。

圖8 alpha_httpd_parse_request函數中的alpha_auth_check函數
如圖9所示,另一方面,通過使用Biniff二進制文件比較工具對比更新前后固件中認證函數控制流圖后發現,更新后固件刪去了對特殊字符串的比較驗證,而在老版本中正是通過將Http頭信息和請求地址URL中所包含的User-Agent值與特殊字符串進行比較。一旦比對成功,將跳過后續的身份認證。而固件的更新也正是主要通過對上述webs可執行程序中上述兩方面內容進行的修改,從而修補了老版本固件中存在的驗證繞過后門的情況。

圖9 alpha_auth_check函數更新前后對比
本文首先分析了路由器的多種登錄方式和web頁面登錄所面臨的安全威脅,然后介紹了常見的評估方法和技術流程,并在此基礎上提出了基于固件分析的路由web安全評估方法,且利用該方法對D-link系列多款路由器進行了安全評估,發現了其存在的web頁面漏洞。最后,通過對比分析驗證了該方法的可行性和有效性。該方法可用于安全廠商或者安全評估人員對路由器的安全評估和分析,以提高路由產品的安全防護能力。
[1] 夏虹.路由器的登錄訪問與安全[J].網絡安全技術與應用,2008(02):32-33.XIA Hong.Logon Access and Security of Routers[J].Network Security Technology and Application,2008(02):32-33.
[2] 夏暄.基于嵌入式Linux的無線寬帶SOHO路由器的設計與實現[D].蘇州:蘇州大學,2008.XIA Xuan.The Design and Implementation of Wireless Wideband SOHO Router Based on Embadded Linux[D].Suzhou:Soochow University,2008.
[3] 陳銘.軟件漏洞逆向分析技術研究[D].成都:電子科技大學,2007.CHEN Ming.Research on Reverse Analysis of Software Vulnerabilities[D].Chengdu:University of Electronic Science and Technology of China,2007.
[4] 吳少華.揭秘家用路由器0day漏洞挖掘技術[M].北京:電子工業出版社,2015.WU Shao-hua.Disclosure of 0day Vulnerabilities in Home Routers[M].Beijing:Publishing House of Electronics Industry,2015.