何長(zhǎng)鵬
(甘肅政法大學(xué)公安技術(shù)學(xué)院,甘肅蘭州 730070)
隨著移動(dòng)互聯(lián)網(wǎng)的迅猛發(fā)展,互聯(lián)網(wǎng)的影響正逐步從消費(fèi)領(lǐng)域向傳統(tǒng)的社會(huì)核心領(lǐng)域滲透,并逐漸向產(chǎn)業(yè)互聯(lián)網(wǎng)轉(zhuǎn)型。產(chǎn)業(yè)互聯(lián)網(wǎng)時(shí)代的到來,把人類帶入了智能時(shí)代。以智能手機(jī)為代表的智能終端設(shè)備是移動(dòng)互聯(lián)網(wǎng)的入口設(shè)備,它們不僅具有傳統(tǒng)的通訊功能,還具有和個(gè)人計(jì)算機(jī)類似的功能,體積小、可穿戴、攜帶方便等諸多優(yōu)點(diǎn)。由于移動(dòng)設(shè)備包含大量敏感的個(gè)人信息,電子商務(wù)、移動(dòng)支付等業(yè)務(wù)涉及錢財(cái)交易,使得惡意攻擊者往往選擇移動(dòng)互聯(lián)網(wǎng)作為攻擊目標(biāo)。一方面智能終端設(shè)備的操作系統(tǒng)和應(yīng)用程序存在大量的安全漏洞,以及一些移動(dòng)惡意軟件的出現(xiàn),導(dǎo)致移動(dòng)互聯(lián)網(wǎng)的安全形勢(shì)更加嚴(yán)峻。另一方面,終端用戶接入網(wǎng)絡(luò)變的容易,人們所生活的環(huán)境中到處都有WiFi熱點(diǎn)。
智慧城市、智慧校園以及智慧家庭都離不開小型的SOHO無線路由器,SOHO無線接入路由器作為家庭和中小型辦公環(huán)境中普及度極高的網(wǎng)絡(luò)接入設(shè)備,它的安全影響著整個(gè)互聯(lián)網(wǎng)的安全。然而SOHO無線路由器的安全問題往往會(huì)被人們所忽略,研究者們關(guān)注的重點(diǎn)是大型骨干路由交互設(shè)備漏洞攻擊技術(shù),針對(duì)SOHO無線接入路由交換設(shè)備的軟硬件漏洞挖掘分析研究較少[1-4]。
據(jù)調(diào)查研究發(fā)現(xiàn),大部分對(duì)于智能手機(jī)等終端設(shè)備的入侵,其源頭是攻擊者從小型無線接入路由器進(jìn)行滲透,進(jìn)而控制用戶的手機(jī)從而竊取用戶隱私數(shù)據(jù)、獲取賬號(hào)密碼信息、實(shí)施網(wǎng)絡(luò)劫持和網(wǎng)絡(luò)釣魚等攻擊行為[5]。因此,針對(duì)普通的、小型的SOHO無線接入路由器的安全漏洞挖掘及漏洞相關(guān)攻防技術(shù)的研究具有重要的意義和必要性。
安全漏洞[6]是指信息系統(tǒng)在設(shè)計(jì)、實(shí)現(xiàn)或者運(yùn)行管理過程中存在的缺陷或不足,從而使攻擊者能夠在未授權(quán)的情況下利用這些缺陷破壞系統(tǒng)的安全策略,它是研究安全問題的生命線,是網(wǎng)絡(luò)攻擊和防御的核心問題。漏洞挖掘是指采用一定的信息技術(shù)方法去發(fā)現(xiàn)、分析和利用信息系統(tǒng)中漏洞的過程。漏洞挖掘技術(shù)分為白盒測(cè)試、黑盒測(cè)試、灰盒測(cè)試三種類型,其區(qū)別是由測(cè)試者所得到的資源決定的[7]。傳統(tǒng)漏洞挖掘的目標(biāo)對(duì)象僅僅針對(duì)軟件系統(tǒng)本身,但目前越來越多的人開始關(guān)注存在于電子設(shè)備硬件電路或固件系統(tǒng)中的漏洞,不再局限于軟件本身[4]。
近些年來,出現(xiàn)了大量的漏洞挖掘系統(tǒng),也涌現(xiàn)了種類繁多的挖掘技術(shù)及方法[1-3,7-9],但一直以來很少有研究者去探索和研究SOHO無線路由器存在的漏洞,挖掘分析SOHO無線路由的漏洞,找出對(duì)應(yīng)的防護(hù)策略。SOHO無線路由器作為一臺(tái)嵌入式微型計(jì)算機(jī),存在各種類型的漏洞,包括身份脆弱性漏洞、Web配置界面漏洞、緩沖區(qū)溢出漏洞和固有后門型漏洞等[10]。在遭受攻擊者針對(duì)漏洞和后門的攻擊時(shí)卻缺少有效的防御手段。
人們通常依據(jù)分析對(duì)象維度,把漏洞挖掘分為基于源代碼和基于可執(zhí)行代碼的挖掘,這就定義了一個(gè)相對(duì)狹義的漏洞挖掘?qū)ο蠓懂牐粗会槍?duì)軟件系統(tǒng)的漏洞挖掘[8]。從漏洞的分析角度,將無線路由器系統(tǒng)漏洞分為軟硬件漏洞、設(shè)備運(yùn)行的協(xié)議漏洞以及配置管理漏洞三類是較為合理的[4]。
目前,廣泛應(yīng)用的漏洞挖掘技術(shù)主要分為兩大類[4]:一是靜態(tài)代碼審計(jì);二是模糊測(cè)試[8,11,12](Fuzzing)。模糊測(cè)試是一種介于完全的手工滲透測(cè)試與完全的自動(dòng)化測(cè)試之間的安全性黑盒測(cè)試類型,與靜態(tài)代碼審核相比,模糊測(cè)試有許多的優(yōu)點(diǎn)[13]。模糊測(cè)試通過向目標(biāo)程序發(fā)送大量的畸形數(shù)據(jù),以觸發(fā)異常崩潰來發(fā)現(xiàn)程序潛在的漏洞[14]。模糊測(cè)試中測(cè)試用例的有效性是發(fā)現(xiàn)協(xié)議或系統(tǒng)未知漏洞的關(guān)鍵。文獻(xiàn)[15]通過深度學(xué)習(xí)方法省略了傳統(tǒng)網(wǎng)絡(luò)協(xié)議漏洞挖掘過程中的人工對(duì)網(wǎng)絡(luò)協(xié)議的分析。
文獻(xiàn)[3,4]認(rèn)為設(shè)備的逆向剖析及代碼抽取、仿真成為挖掘的基礎(chǔ)。漏洞挖掘重要的前提之一是要能夠識(shí)別、提取、分析和運(yùn)行設(shè)備中的代碼,而這些代碼在研究過程的測(cè)試必須是一個(gè)能夠滿足漏洞挖掘需求的仿真環(huán)境或一個(gè)在線的真實(shí)環(huán)境。然而,生活中接觸到大量的網(wǎng)絡(luò),漏洞挖掘必須面對(duì)種類繁多的硬件設(shè)備和軟件系統(tǒng)對(duì)于設(shè)備的逆向剖析,并從中抽取代碼,提供仿真、調(diào)試和分析環(huán)境成為洞挖掘必須要做的重要的基礎(chǔ)工作[16]。
因此,本文將重點(diǎn)研究家用路由交互設(shè)備所面臨的安全問題,挖掘分析路由設(shè)備運(yùn)行的固件和協(xié)議漏洞。通過搭建真實(shí)運(yùn)行環(huán)境,分析SOHO接入無線路由器體系架構(gòu)、固件、運(yùn)行環(huán)境等,實(shí)現(xiàn)對(duì)網(wǎng)路協(xié)議安全漏洞掃描分析,并根據(jù)挖掘的漏洞研究相應(yīng)的防護(hù)技術(shù)。
SOHO無線寬帶路由器作為一種嵌入式設(shè)備,硬件部分通常選擇支持ARM或MIPS體系架構(gòu)的微處理器,系統(tǒng)軟件部分則基于Linux內(nèi)核定制裁剪以后進(jìn)行移植[17]。上層軟件架構(gòu)是主要包括:路由模塊、防火墻模塊以及用戶遠(yuǎn)程管理模塊。SOHO無線路由設(shè)備作為一種嵌入式設(shè)備,包含文件系統(tǒng)在內(nèi)的核心內(nèi)容均以固件的形式存儲(chǔ)在閃存(Flash)中[3]。固件通常為二進(jìn)制數(shù)據(jù)流文件,包括固件頭部、引導(dǎo)程序、內(nèi)核鏡像、文件系統(tǒng)等幾部分。固件的核心內(nèi)容是文件系統(tǒng),其中包含全部的可執(zhí)行程序、配置文件等信息。文件系統(tǒng)提取的方法較多,除了手動(dòng)提取外,還可以利用一些現(xiàn)有的比較優(yōu)秀的工具,比如Binwalk、Firmware-analysis-toolkit等。Binwalk可以協(xié)助安全人員從固件鏡像文件中提取數(shù)據(jù)及進(jìn)行逆向工程。
為了實(shí)現(xiàn)SOHO路由器的漏洞挖掘分析,本文參考文獻(xiàn)[4]提供的方法搭建運(yùn)行環(huán)境。與文獻(xiàn)[4]不同之處本文建立了真實(shí)的Linux運(yùn)行環(huán)境,安裝配置模擬處理器軟件QEMU、交互式反匯編編譯工具IDA Pro以及MIPS交叉編譯環(huán)境。其中,模擬處理器軟件QEMU具有高速及跨平臺(tái)的特性,能模擬真實(shí)計(jì)算機(jī)的速度;IDA Pro具備強(qiáng)大的腳本功能,實(shí)現(xiàn)漏洞自動(dòng)化分析,支持用戶快速開發(fā)Python腳本程序來驗(yàn)證發(fā)掘的漏洞;配置MIPS交叉編譯環(huán)境,方便后期shellcode的編譯執(zhí)行。
模糊測(cè)試的理論和應(yīng)用都已經(jīng)比較成熟,基于模糊測(cè)試方法實(shí)現(xiàn)的工具種類也很多,比如SPIKE、Sulley、AFL、Burp Suit和ClusterFuzz等。模糊測(cè)試中生成有效的測(cè)試數(shù)據(jù)至關(guān)重要,可以利用測(cè)試用例設(shè)計(jì)、隨機(jī)生成輸入、人工協(xié)議變異、自動(dòng)協(xié)議生成等方法來建立測(cè)試集。測(cè)試用例設(shè)計(jì)的好壞直接影響測(cè)試的效果,使用各種不同的測(cè)試用例對(duì)目標(biāo)進(jìn)行測(cè)試,通過監(jiān)測(cè)目標(biāo)執(zhí)行情況來發(fā)現(xiàn)漏洞。
隨機(jī)生成輸入則需要考慮如何生成隨機(jī)但有效的輸入。人工協(xié)議變異需要測(cè)試工程師能夠通過自己豐富的工作經(jīng)驗(yàn)針對(duì)測(cè)試目標(biāo)協(xié)議生成有效的測(cè)試數(shù)據(jù)。自動(dòng)協(xié)議生成協(xié)議在理解測(cè)試程序的協(xié)議規(guī)約和文件格式的前提下,通過識(shí)別數(shù)據(jù)包或者文件中的靜態(tài)和動(dòng)態(tài)部分來創(chuàng)建一個(gè)描述協(xié)議如何工作的語法模板,之后測(cè)試工具動(dòng)態(tài)解析這些語法模板,進(jìn)行改變數(shù)值變量來生成測(cè)試數(shù)據(jù)。根據(jù)目標(biāo)對(duì)象的特點(diǎn)和挖掘工作的一般流程,需要考慮如何能夠?qū)δ繕?biāo)程序監(jiān)控以保證及時(shí)發(fā)現(xiàn),定位目標(biāo)程序錯(cuò)誤。模糊測(cè)試是一種黑盒測(cè)試方法,如果盲目地進(jìn)行測(cè)試效率低下。因此,本文選擇以D-Link無線路由器為研究對(duì)象,根據(jù)信息安全漏洞共享平臺(tái)發(fā)布的安全公告,選擇一個(gè)可利用的安全漏洞來說明設(shè)計(jì)的模糊測(cè)試方法的可行性。
通常無線路由器漏洞的分析與利用的關(guān)鍵環(huán)節(jié)包括獲取固件、提取文件系統(tǒng)、漏洞分析與利用以及漏洞挖掘等幾個(gè)階段[4]。固件獲取的方法可以手工提取,也可以從路由器廠商專門的技術(shù)支持網(wǎng)站下載。一般情況下可以從路由器廠商獲取可用的固件,但是在廠商沒有提供固件下載時(shí),就需要手工來提取。
手工提取主要是通過路由器硬件提供的接口將計(jì)算機(jī)與主板連接,從路由器的Flash中提取固件。手工提取方法要求安全人員熟悉與路由器硬件相關(guān)的基礎(chǔ)知識(shí),操作難度較大。因此,如果能獲取到廠商提供的固件,就可以降低漏洞挖掘的難度。從D-Link技術(shù)服務(wù)網(wǎng)站獲取到了相應(yīng)的固件文件,并使用Binwalk從固件中提取出了文件系統(tǒng)。接下來使用QEMU運(yùn)行無線路由器中的應(yīng)用程序,但出現(xiàn)應(yīng)用程序運(yùn)行失敗的情況,需要利用IDA Pro動(dòng)態(tài)調(diào)試和靜態(tài)反匯編對(duì)函數(shù)代碼進(jìn)行分析,編寫劫持函數(shù)動(dòng)態(tài)庫來修復(fù)路由器運(yùn)行環(huán)境。
上述內(nèi)容已完成漏洞挖掘分析前期準(zhǔn)備工作,接下來詳細(xì)介紹設(shè)計(jì)基于模糊測(cè)試方法的漏洞挖掘分析過程。基于模糊測(cè)試方法實(shí)現(xiàn)的工具種類很多,其中Sulley是一款使用Python語言開發(fā)的專用于網(wǎng)絡(luò)協(xié)議的模糊測(cè)試框架,其設(shè)計(jì)目標(biāo)是為了簡(jiǎn)化數(shù)據(jù)生成,簡(jiǎn)化與目標(biāo)系統(tǒng)之間的數(shù)據(jù)傳輸,以及目標(biāo)系統(tǒng)的監(jiān)控,給用戶提供友好的API編程接口。
本文研究的目標(biāo)是挖掘分析SOHO無線路由器通信協(xié)議、應(yīng)用服務(wù)方面的潛在漏洞。因此,參考文獻(xiàn)[18]給出的基于Sulley改進(jìn)的工控協(xié)議模糊測(cè)試架構(gòu)設(shè)計(jì)思路,同樣設(shè)計(jì)了基于Sulley的SOHO無線路由器進(jìn)行模糊測(cè)試的方法。首先根據(jù)通信協(xié)議類型來自定義請(qǐng)求。通信協(xié)議類型發(fā)現(xiàn)通??梢圆捎靡恍└呒?jí)算法的智能協(xié)議分析理論和工具。由于SOHO接入無線路由器廣泛使用HTTP、HTTPS應(yīng)用層協(xié)議和D-Link MYDLINK云協(xié)議,并且從已發(fā)布的漏洞公告可知上述三種協(xié)議存在安全漏洞。因此,本文僅針對(duì)這三種協(xié)議進(jìn)行模糊測(cè)試,降低了挖掘分析難度,但是缺乏普遍性。
在基于模糊測(cè)試的漏洞挖掘分析中,測(cè)試用例的設(shè)計(jì)至關(guān)重要,好的測(cè)試用例可以提高漏洞挖掘的效率。構(gòu)造測(cè)試用例時(shí),不應(yīng)該局限于邊界附近區(qū)域的數(shù)據(jù),而是分析在該協(xié)議中有哪些位置可能成為模糊測(cè)試的數(shù)據(jù)輸入點(diǎn),以此來構(gòu)建輸入矩陣。輸入矩陣盡可能包含引起程序奔潰的各種輸入向量。然后編寫適合模糊測(cè)試器讀取并產(chǎn)生測(cè)試用例的腳本文件,之后測(cè)試的過程就可以通過自動(dòng)化方式進(jìn)行。測(cè)試腳本文件中實(shí)現(xiàn)各個(gè)請(qǐng)求的導(dǎo)入,會(huì)話管理以及設(shè)置代理參數(shù)等。
其次使用QEMU啟動(dòng)MIPS系統(tǒng)并完成網(wǎng)絡(luò)配置以后,執(zhí)行Sulley網(wǎng)絡(luò)監(jiān)視代理和進(jìn)程監(jiān)視代理模塊,開始監(jiān)聽網(wǎng)絡(luò)數(shù)據(jù)包的傳輸和監(jiān)視測(cè)試目標(biāo)程序的運(yùn)行情況。
最后開始運(yùn)行測(cè)試腳本,此時(shí)Sulley會(huì)生成一個(gè)有向無環(huán)會(huì)話圖,Sulley模糊測(cè)試器將遍歷整個(gè)會(huì)話圖。在整個(gè)測(cè)試腳本執(zhí)行過程中,網(wǎng)絡(luò)監(jiān)視代理和進(jìn)程監(jiān)視代理模塊會(huì)分別記錄測(cè)試用例的發(fā)送順序編號(hào),并將這些測(cè)試用例保存在特定為文件夾中。如果有測(cè)試用例導(dǎo)致目標(biāo)程序出錯(cuò)或者異常,進(jìn)程監(jiān)視代理模塊就會(huì)反饋給測(cè)試系統(tǒng)一個(gè)高層信息,并且將錯(cuò)誤信息記錄到測(cè)試日志中,事后調(diào)出引起錯(cuò)誤的測(cè)試用例并查看錯(cuò)誤信息。
一旦確定被檢測(cè)目標(biāo)出錯(cuò)或者異常,則需要確定所發(fā)現(xiàn)的漏洞是否重現(xiàn)。漏洞重現(xiàn)成功之后,還需要進(jìn)一步判斷該漏洞是否可以利用。在上一步的模糊測(cè)試過程中模糊器捕獲并保存了幾個(gè)異常情況的網(wǎng)絡(luò)交互過程數(shù)據(jù)包。通過對(duì)D-Link系列SOHO無線接入路由器相關(guān)歷史漏洞的檢索,發(fā)現(xiàn)這些異常情況可能是由函數(shù)引起的緩沖區(qū)溢出。因此,需要進(jìn)一步根據(jù)異常數(shù)據(jù)來編寫驗(yàn)證腳本驗(yàn)證猜測(cè)是否正確。
從已知漏洞公告可知,漏洞產(chǎn)生的可能原因是HTTP協(xié)議的POST參數(shù)中名為“password”參數(shù)過長(zhǎng)導(dǎo)致的。因此,在構(gòu)造完成HTTP請(qǐng)求的地址之后,設(shè)置POST參數(shù),使用urllib庫提供的urlencode()函數(shù)偽造超長(zhǎng)的參數(shù),接著發(fā)起HTTP連接請(qǐng)求。從Boa服務(wù)器反饋的結(jié)果來看,程序運(yùn)行異常情況與模糊測(cè)試捕獲到的異常情況相同,并查看當(dāng)前堆棧情況,偽造的超長(zhǎng)的“password”參數(shù)覆蓋了部分內(nèi)存地址,導(dǎo)致程序執(zhí)行出現(xiàn)異常,驗(yàn)證了此緩沖區(qū)溢出漏洞可以被利用。
緩沖區(qū)溢出漏洞的利用通常是攻擊者根據(jù)漏洞特征編寫基于MIPS指令系統(tǒng)的shellcode,劫持程序正常執(zhí)行流程,使程序跳轉(zhuǎn)到攻擊者注入的shellcode執(zhí)行任務(wù)。SOHO無線接入路由器為了防止惡意代碼攻擊,在系統(tǒng)當(dāng)中啟用了數(shù)據(jù)執(zhí)行保護(hù)技術(shù),因此攻擊者提前需要構(gòu)建一個(gè)特殊的輸入向量以填充函數(shù)的??臻g,利用ROP Chain[1,4]將原有的各個(gè)gadget代碼片段按照順序拼接起來,最終完成復(fù)雜的功能。
現(xiàn)如今,互聯(lián)網(wǎng)技術(shù)已經(jīng)深入滲透到了各行各業(yè),互聯(lián)網(wǎng)作為社會(huì)經(jīng)濟(jì)產(chǎn)業(yè)的支撐點(diǎn),面臨著巨大的網(wǎng)絡(luò)安全風(fēng)險(xiǎn)。SOHO無線接入路由器作為互聯(lián)網(wǎng)的入口,它的安全會(huì)影響到整個(gè)互聯(lián)網(wǎng)的安全。因此,有必要針對(duì)無線接入路由設(shè)備的安全開展研究,重點(diǎn)分析挖掘潛在的一些安全漏洞,并針對(duì)這些安全漏洞提出相應(yīng)的防護(hù)技術(shù)。
基于上述目的,本文針對(duì)SOHO無線路由設(shè)備的網(wǎng)絡(luò)協(xié)議進(jìn)行漏洞挖掘,提出一種基于Sulley模糊測(cè)試的漏洞挖掘分析框架,可實(shí)現(xiàn)安全協(xié)議漏洞自動(dòng)掃描分析。該方法僅對(duì)已知的網(wǎng)絡(luò)安全漏洞進(jìn)行挖掘分析,驗(yàn)證了其設(shè)計(jì)的有效性,并未深入挖掘分析未知的一些安全漏洞。因此,未來需要將此方法應(yīng)用于不同種類的無線路由器,深入挖掘分析這些無線路由設(shè)備潛在的一些安全漏洞。