李建春,謝瑞云,張旭博
隨著物聯(lián)網(wǎng)、云計(jì)算等新一代信息技術(shù)的發(fā)展,互聯(lián)網(wǎng)的規(guī)模和應(yīng)用場(chǎng)景不斷擴(kuò)大和延伸。作為網(wǎng)絡(luò)通信中的中轉(zhuǎn)節(jié)點(diǎn)和傳輸媒介,路由器應(yīng)用日趨廣泛。它的安全性、健壯性決定了整個(gè)網(wǎng)絡(luò)的安全性和可靠性。
由于路由器在網(wǎng)絡(luò)通信中至關(guān)重要的地位和日益增長(zhǎng)的數(shù)量,使得路由交換設(shè)備的安全性問(wèn)題受到越來(lái)越多的關(guān)注。因此,借助管理手段,加強(qiáng)對(duì)路由器的安全管理變得尤為重要。在家用路由器中,一般采用web管理接口登錄的方式登錄管理路由器。這種方式方便快捷、便于操作,但背后存在著較大的安全隱患。攻擊者利用路由器系統(tǒng)中存在的漏洞及后門,可以獲得路由器的管理權(quán)限,對(duì)網(wǎng)絡(luò)安全造成了極大威脅。
本文提出了一種基于固件分析的路由器web頁(yè)面評(píng)估技術(shù),并利用此方法分析了D-link系列路由器web頁(yè)面漏洞。
路由器作為網(wǎng)絡(luò)層的一種互聯(lián)設(shè)備,是網(wǎng)絡(luò)中信息傳遞的中樞,在網(wǎng)絡(luò)通信中扮演著至關(guān)重要的作用。為了維護(hù)網(wǎng)絡(luò)中路由設(shè)備的正常運(yùn)作,網(wǎng)絡(luò)管理員經(jīng)常需要通過(guò)各種方式登錄路由器進(jìn)行相關(guān)配置和管理。
登錄管理路由器一般有以下5種方式[1],其特點(diǎn)如表1所示:
表1 路由器登錄管理方式對(duì)比
(1)使用串口管理路由器。通過(guò)路由器的console口,直接將路由器與計(jì)算機(jī)的串口相連,在計(jì)算機(jī)上運(yùn)行終端仿真軟件(例:windows操作系統(tǒng)的超級(jí)終端)登錄路由器,采用命令行的方式對(duì)路由器進(jìn)行管理。
(2)使用Telnet方式管理路由器。通過(guò)網(wǎng)絡(luò),利用路由器對(duì)Telnet服務(wù)的支持,在已知路由器接口IP地址的情況下,使用遠(yuǎn)程登錄方式訪問(wèn)路由器。
(3)使用SSH方式管理路由器。Telnet因?yàn)椴捎妹魑陌l(fā)送口令和數(shù)據(jù),存在安全隱患,容易被人截獲。很多網(wǎng)絡(luò)設(shè)備都不開(kāi)放Telnet服務(wù),而改用更安全的SSH方式。SSH是建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議,使用了多種加密和認(rèn)證方式,解決了傳輸數(shù)據(jù)加密和身份認(rèn)證的問(wèn)題,以保證遠(yuǎn)程登錄管理路由器的安全。
(4)通過(guò)專門的網(wǎng)絡(luò)設(shè)備管理軟件管理路由器。一些大型路由器廠商為管理特定設(shè)備而開(kāi)發(fā)和實(shí)現(xiàn)專門管理程序來(lái)管理設(shè)備。這種方式能夠最有效地管理特定的網(wǎng)絡(luò)設(shè)備。
(5)使用web方式管理路由器。通過(guò)網(wǎng)絡(luò),利用路由器對(duì)Http服務(wù)的支持,使用瀏覽器登錄到web用戶界面管理路由器。
在路由器中,使用嵌入式web服務(wù)器實(shí)現(xiàn)設(shè)備圖形化界面的遠(yuǎn)程登錄和管理。web服務(wù)器工作流程,如圖1所示。路由器內(nèi)嵌的web服務(wù)器,具有界面友好、操作方便的特點(diǎn)。但是,便捷的背后卻存在較大的安全隱患[2]。
圖1 嵌入式web服務(wù)器工作流程
通過(guò)流程分析可知,web方式登錄管理路由設(shè)備的安全威脅主要來(lái)自于兩方面:
(1)Http認(rèn)證過(guò)程。Http認(rèn)證通過(guò)明文方式實(shí)現(xiàn)且是基于一次性的口令保護(hù),容易在傳輸過(guò)程中被監(jiān)聽(tīng)截獲。即使采用Https服務(wù)代替非加密的Http,為web服務(wù)器與HTML瀏覽器提供一個(gè)安全傳輸通道,也可通過(guò)某些降解方式被監(jiān)聽(tīng)。
(2)路由器系統(tǒng)漏洞及后門。目前,路由設(shè)備的安全狀況不容樂(lè)觀,主要威脅來(lái)自于層出不窮的安全漏洞和后門。路由器發(fā)展到現(xiàn)在,其固件代碼的安全性并沒(méi)有像普通計(jì)算機(jī)。智能手機(jī)發(fā)展迅速,一些漏洞利用緩沖機(jī)制如NX、alsr、stackcanary等,沒(méi)有在路由器中大規(guī)模啟用,使得路由器的漏洞利用變得非常簡(jiǎn)單。利用路由器的漏洞及后門,攻擊者可以獲取路由器的控制權(quán)限,從而監(jiān)聽(tīng)、截獲及修改經(jīng)過(guò)該設(shè)備的所有用戶數(shù)據(jù),通過(guò)篡改路由器關(guān)鍵配置參數(shù),進(jìn)行網(wǎng)絡(luò)劫持和網(wǎng)絡(luò)釣魚(yú)攻擊,嚴(yán)重威脅個(gè)人用戶和企業(yè)單位的數(shù)據(jù)安全。攻擊者甚至可以利用大量被劫持的設(shè)備對(duì)整個(gè)網(wǎng)絡(luò)發(fā)起DDoS攻擊,從而威脅整個(gè)網(wǎng)絡(luò)的安全。
為了分析路由器web漏洞,常見(jiàn)的路由器評(píng)估方法有三種,即黑盒分析、白盒分析和灰盒分析[3]。
白盒分析。從代碼級(jí)別(可能是反匯編代碼、
反編譯的偽代碼或源代碼),通過(guò)動(dòng)態(tài)調(diào)試或靜態(tài)反匯編,分析和理解程序的功能、邏輯,找到程序的安全問(wèn)題等。
黑盒分析。從程序的外部,通過(guò)觀察程序運(yùn)行時(shí)的行為、規(guī)則等,猜測(cè)和斷定程序可能的實(shí)現(xiàn)方法,從而判斷是否存在脆弱點(diǎn)等。
灰盒分析。借助一些專有工具(可能需要自己編寫(xiě)),如api監(jiān)視工具、陷阱工具、內(nèi)存比較工具、文件監(jiān)視工具等,對(duì)目標(biāo)程序進(jìn)行監(jiān)控,看其發(fā)生了什么操作、調(diào)用了哪些api、產(chǎn)生了哪些結(jié)果、在系統(tǒng)哪些地方安插了HOOK或過(guò)濾等,以此猜測(cè)和斷定程序可能的實(shí)現(xiàn)細(xì)節(jié)
本文提出的分析方法是基于白盒分析的一種方法。
基于固件分析的路由器安全評(píng)估技術(shù),在沒(méi)有源代碼的情況下,通過(guò)對(duì)固件進(jìn)行分析,獲取web應(yīng)用程序;對(duì)程序的行為、數(shù)據(jù)流進(jìn)行分析,獲取程序的功能、流程、規(guī)則及技術(shù)實(shí)現(xiàn)細(xì)節(jié)等。利用該技術(shù),可實(shí)現(xiàn)對(duì)web功能的安全評(píng)估,并可對(duì)其進(jìn)行優(yōu)化、功能增強(qiáng)和漏洞填補(bǔ)等,其中主要包含兩項(xiàng)技術(shù)。
動(dòng)態(tài)調(diào)試。通過(guò)調(diào)試器對(duì)固件中的web應(yīng)用程序進(jìn)行追蹤分析,清楚了解程序運(yùn)行后的內(nèi)部狀態(tài)、運(yùn)算結(jié)果等信息。
靜態(tài)反匯編/反編譯工具。把程序變?yōu)榭勺x的匯編代碼或偽代碼,然后分析程序的結(jié)構(gòu)、流程和邏輯等。
路由器固件分析是指通過(guò)對(duì)固化在設(shè)備文件系統(tǒng)中可執(zhí)行程序進(jìn)行解析從而獲取設(shè)備的運(yùn)行機(jī)制和功能實(shí)現(xiàn)過(guò)程,有助于檢測(cè)設(shè)備中隱藏的安全漏洞,從而提高設(shè)備的安全性。固件分析流程如圖2所示。
圖2 路由器固件分析流程
(1)固件獲取。固件獲取通常采用兩種方式,一種是從路由器廠商提供的官方直接下載,本文所使用的D-link系列路由器固件就是通過(guò)這種方式獲取。二是針對(duì)其他無(wú)法從官網(wǎng)上直接下載的固件,采用以硬件接入的方式,通過(guò)UART串口,直接從路由器閃存中獲取。
(2)固件解包及文件系統(tǒng)提取。文件系統(tǒng)中包含路由器實(shí)現(xiàn)各種功能所依賴的全部可執(zhí)行程序和配置文件信息。這些信息對(duì)路由器固件的分析至關(guān)重要。然而,不同的路由器所使用的文件系統(tǒng)格式和文件系統(tǒng)的壓縮算法不盡相同,增加了文件系統(tǒng)提取的難度。文件系統(tǒng)提取一般采取兩種方式——手動(dòng)提取和自動(dòng)提取。自動(dòng)提取是使用Binwalk這一全自動(dòng)固件分析實(shí)現(xiàn)文件系統(tǒng)的提取[4]。Binwalk工具能夠自動(dòng)識(shí)別固件中所包含的所有可識(shí)別的文件類型,然后遞歸提取。相比于手動(dòng)提取方式,簡(jiǎn)單地使用file命令識(shí)別文件類型。Binwalk利用libmagic動(dòng)態(tài)庫(kù)獲取所有幻數(shù)簽名列表,分段掃描路由器固件文件的內(nèi)存鏡像,并對(duì)比列表判斷每一段是否含有文件幻數(shù)標(biāo)識(shí),最后根據(jù)記錄的偏移量確定固件文件布局,具體算法流程如圖3所示。
圖3 Binwalk算法流程
(3)可執(zhí)行程序分析。在提取出固件的文件系統(tǒng)后,得到了一系列可執(zhí)行程序和配置文件信息。隨后,可以采用動(dòng)態(tài)或靜態(tài)的方式對(duì)這些可執(zhí)行程序進(jìn)行分析。路由設(shè)備固件中,可執(zhí)行程序一般是編譯后的二進(jìn)制代碼。通過(guò)使用ida反編譯工具對(duì)可執(zhí)行代碼進(jìn)行反匯編。因?yàn)橐话慵矣寐酚善鞑捎玫氖荕IPS架構(gòu),所以可以得到相應(yīng)的MIPS匯編代碼,然后解析匯編代碼,可生成函數(shù)之間的調(diào)用關(guān)系圖和函數(shù)內(nèi)部的控制流圖。對(duì)控制流圖中MIPS指令進(jìn)行語(yǔ)法分析和程序指令的語(yǔ)義分析,即可解析出程序中各函數(shù)的功能和執(zhí)行過(guò)程。
從D-link官網(wǎng)獲取DIR-100型路由器固件,使用Binwalk工具提取出固件的文件系統(tǒng),提取過(guò)程
及結(jié)果如圖4所示。據(jù)圖4結(jié)果顯示,成功從固件中提取出了Squashfs文件系統(tǒng)——squashfsroot。Squashfs是一種只讀格式的文件系統(tǒng),因其較高的壓縮率,被多種網(wǎng)絡(luò)設(shè)備所采用。
圖4 DIR-100型路由器文件系統(tǒng)提取過(guò)程及結(jié)果
在提取的文件系統(tǒng)中,可以發(fā)現(xiàn)許多實(shí)現(xiàn)路由器各種功能的可執(zhí)行程序。其中,webs程序作為控制路由器web頁(yè)面登錄的可執(zhí)行程序尤其引人關(guān)注。運(yùn)用IDA工具對(duì)webs程序進(jìn)行反匯編,得到了webs中各函數(shù)的調(diào)用關(guān)系圖,發(fā)現(xiàn)了一個(gè)與登錄驗(yàn)證相關(guān)的自定義函數(shù)alpha_auth_check,其調(diào)用關(guān)系如圖5所示。
通過(guò)對(duì)alpha_auth_check函數(shù)控制流圖(如圖6所示)中的MIPS指令進(jìn)行進(jìn)一步分析,得出該函數(shù)從自定義函數(shù)alpha_httpd_parse_request中接收一個(gè)參數(shù)。
圖5 登錄驗(yàn)證相關(guān)函數(shù)調(diào)用關(guān)系
圖6 alpha_auth_check函數(shù)控制流程
它是一個(gè)指向一個(gè)數(shù)據(jù)結(jié)構(gòu)體的指針,里面有一個(gè)字符串指針,會(huì)指向從Http請(qǐng)求里接收到的各種數(shù)據(jù),如Http頭信息和請(qǐng)求地址URL,參數(shù)存儲(chǔ)在寄存器$s2中;然后再將接收到的參數(shù)進(jìn)行字符串strcmp比較操作,調(diào)用check_login函數(shù),實(shí)際上就是身份驗(yàn)證檢查。如果一旦有字符串比較成功或check_login成功,它會(huì)返回1;否則,它會(huì)重定向?yàn)g覽器到登錄頁(yè),返回-1。因此,如果字符串比較成功,就能夠跳過(guò)身份驗(yàn)證直接登錄到路由器的web頁(yè)面。
按照2.2中所述流程,分別提取出D-link系列DI-524UP、DI-604+、DI-604UP及 TM-G5240等幾款路由器多型固件版本文件系統(tǒng)。發(fā)現(xiàn)各型固件文件系統(tǒng)中都是由可執(zhí)行程序webs提供路由器管理員界面操作功能。將webs程序二進(jìn)制文件加載到IDA中進(jìn)行分析,得到可執(zhí)行程序中各功能函數(shù)調(diào)用關(guān)系圖。它與3.1中DIR-100型路由器webs程序函數(shù)調(diào)用圖類似,認(rèn)證功能都是由自定義函數(shù)alpha_auth_check實(shí)現(xiàn)的。
在深入分析各型路由器較早版本固件中alpha_auth_check函數(shù)控制流圖后發(fā)現(xiàn),在調(diào)用后續(xù)函數(shù)進(jìn)行身份認(rèn)證前,都會(huì)從自定義函數(shù)alpha_httpd_parse_reques中接收到的參數(shù)同固定字符串“xmlset_roodkcableoj28840ybtide”做字符串比較操作,比較操作控制流程如圖7所示。如果比對(duì)成功,將會(huì)跳過(guò)接下來(lái)的身份認(rèn)證過(guò)程直接登錄到路由器web管理界面。
圖7 D-link系列路由器特殊字符串比較過(guò)程
在對(duì)D-link系列路由器不同型號(hào)固件對(duì)比分析的基礎(chǔ)上,針對(duì)各型路由器不同版本固件進(jìn)行對(duì)比分析,分析結(jié)果如表2所示。
表2 D-link系列各型路由器固件對(duì)比
從表2的對(duì)比結(jié)果可以發(fā)現(xiàn),更新前后的固件差異主要體現(xiàn)在兩方面。一方面是新固件自定義認(rèn)證函數(shù)中沒(méi)有Http頭信息、請(qǐng)求地址URL等參數(shù)傳遞,另一方面新固件中也沒(méi)有特殊字符串的比較過(guò)程。
如圖8所示,一方面在alpha_httpd_parse_request函數(shù)跳轉(zhuǎn)到alpha_auth_check的過(guò)程,老版本固件中可以看到alpha_auth_check函數(shù)接收了一個(gè)參數(shù)。它是一個(gè)指向一個(gè)數(shù)據(jù)結(jié)構(gòu)體的指針,里面有一個(gè)char*指針會(huì)指向從Http請(qǐng)求中接收到的各種數(shù)據(jù)。比如,Http頭信息和請(qǐng)求地址URL,參數(shù)存儲(chǔ)在寄存器$s2中。此處,最大的區(qū)別在于更新后的固件在跳轉(zhuǎn)過(guò)程中沒(méi)有包含Http頭信息和請(qǐng)求地址URL信息的參數(shù)傳遞到alpha_auth_check函數(shù),即Http頭信息、請(qǐng)求地址URL等信息不再作為校驗(yàn)的依據(jù)。
圖8 alpha_httpd_parse_request函數(shù)中的alpha_auth_check函數(shù)
如圖9所示,另一方面,通過(guò)使用Biniff二進(jìn)制文件比較工具對(duì)比更新前后固件中認(rèn)證函數(shù)控制流圖后發(fā)現(xiàn),更新后固件刪去了對(duì)特殊字符串的比較驗(yàn)證,而在老版本中正是通過(guò)將Http頭信息和請(qǐng)求地址URL中所包含的User-Agent值與特殊字符串進(jìn)行比較。一旦比對(duì)成功,將跳過(guò)后續(xù)的身份認(rèn)證。而固件的更新也正是主要通過(guò)對(duì)上述webs可執(zhí)行程序中上述兩方面內(nèi)容進(jìn)行的修改,從而修補(bǔ)了老版本固件中存在的驗(yàn)證繞過(guò)后門的情況。
圖9 alpha_auth_check函數(shù)更新前后對(duì)比
本文首先分析了路由器的多種登錄方式和web頁(yè)面登錄所面臨的安全威脅,然后介紹了常見(jiàn)的評(píng)估方法和技術(shù)流程,并在此基礎(chǔ)上提出了基于固件分析的路由web安全評(píng)估方法,且利用該方法對(duì)D-link系列多款路由器進(jìn)行了安全評(píng)估,發(fā)現(xiàn)了其存在的web頁(yè)面漏洞。最后,通過(guò)對(duì)比分析驗(yàn)證了該方法的可行性和有效性。該方法可用于安全廠商或者安全評(píng)估人員對(duì)路由器的安全評(píng)估和分析,以提高路由產(chǎn)品的安全防護(hù)能力。
[1] 夏虹.路由器的登錄訪問(wèn)與安全[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2008(02):32-33.XIA Hong.Logon Access and Security of Routers[J].Network Security Technology and Application,2008(02):32-33.
[2] 夏暄.基于嵌入式Linux的無(wú)線寬帶SOHO路由器的設(shè)計(jì)與實(shí)現(xiàn)[D].蘇州:蘇州大學(xué),2008.XIA Xuan.The Design and Implementation of Wireless Wideband SOHO Router Based on Embadded Linux[D].Suzhou:Soochow University,2008.
[3] 陳銘.軟件漏洞逆向分析技術(shù)研究[D].成都:電子科技大學(xué),2007.CHEN Ming.Research on Reverse Analysis of Software Vulnerabilities[D].Chengdu:University of Electronic Science and Technology of China,2007.
[4] 吳少華.揭秘家用路由器0day漏洞挖掘技術(shù)[M].北京:電子工業(yè)出版社,2015.WU Shao-hua.Disclosure of 0day Vulnerabilities in Home Routers[M].Beijing:Publishing House of Electronics Industry,2015.